summaryrefslogtreecommitdiffstats
path: root/src/kernel/syscall.C
diff options
context:
space:
mode:
authorMissy Connell <missyc@us.ibm.com>2012-09-10 16:05:01 -0500
committerA. Patrick Williams III <iawillia@us.ibm.com>2012-10-09 17:10:32 -0500
commit1bf8c6b8376efacd03e3ec62d5ded5b2be4bff39 (patch)
treec266815232142e67f15a61ffcbdf09407737f259 /src/kernel/syscall.C
parentfb1836fd7b1b8839815595db08ae740ec7b86347 (diff)
downloadtalos-hostboot-1bf8c6b8376efacd03e3ec62d5ded5b2be4bff39.tar.gz
talos-hostboot-1bf8c6b8376efacd03e3ec62d5ded5b2be4bff39.zip
Extend VMM to 32M
Add mmLinearMap to create block at a specified phys addr. Added iv_MaptoPhy in the block to indicate we are physically mapped block and to not apply the HRMOR. Change-Id: I75ddb19b82ae9a2035ff873edff8a34a33c74639 RTC:43401 Reviewed-on: http://gfw160.austin.ibm.com:8080/gerrit/1846 Tested-by: Jenkins Server Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com> Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Diffstat (limited to 'src/kernel/syscall.C')
-rw-r--r--src/kernel/syscall.C28
1 files changed, 28 insertions, 0 deletions
diff --git a/src/kernel/syscall.C b/src/kernel/syscall.C
index 4eb3b4fa8..23239a8a3 100644
--- a/src/kernel/syscall.C
+++ b/src/kernel/syscall.C
@@ -42,6 +42,7 @@
#include <kernel/intmsghandler.H>
#include <sys/sync.h>
+
extern "C"
void kernel_execute_decrementer()
{
@@ -92,6 +93,8 @@ namespace Systemcalls
void MmSetPermission(task_t *t);
void MmAllocPages(task_t *t);
void MmVirtToPhys(task_t *t);
+ void MmExtend(task_t *t);
+ void MmLinearMap(task_t *t);
syscall syscalls[] =
@@ -131,6 +134,8 @@ namespace Systemcalls
&MmSetPermission, // MM_SET_PERMISSION
&MmAllocPages, // MM_ALLOC_PAGES
&MmVirtToPhys, // MM_VIRT_TO_PHYS
+ &MmExtend, // MM_EXTEND
+ &MmLinearMap, // MM_LINEAR_MAP
};
};
@@ -794,5 +799,28 @@ namespace Systemcalls
uint64_t phys = VmmManager::findPhysicalAddress(i_vaddr);
TASK_SETRTN(t, phys);
}
+
+ /**
+ * Allocates a block of virtual memory that extends the VMM
+ * space upto 32MEG of Mainstore.
+ * @param[in] t: The task used to extend Memory
+ */
+ void MmExtend(task_t* t)
+ {
+ TASK_SETRTN(t, VmmManager::mmExtend());
+ }
+
+ /**
+ * Allocates a block of memory of the given size
+ * to at a specified physical address
+ */
+ void MmLinearMap(task_t* t)
+ {
+ void* paddr = (void *)TASK_GETARG0(t);
+ uint64_t size = (uint64_t)TASK_GETARG1(t);
+
+ TASK_SETRTN(t, VmmManager::mmLinearMap(paddr,size));
+ }
+
};
OpenPOWER on IntegriCloud