diff options
| author | Missy Connell <missyc@us.ibm.com> | 2012-09-10 16:05:01 -0500 |
|---|---|---|
| committer | A. Patrick Williams III <iawillia@us.ibm.com> | 2012-10-09 17:10:32 -0500 |
| commit | 1bf8c6b8376efacd03e3ec62d5ded5b2be4bff39 (patch) | |
| tree | c266815232142e67f15a61ffcbdf09407737f259 /src/kernel/syscall.C | |
| parent | fb1836fd7b1b8839815595db08ae740ec7b86347 (diff) | |
| download | talos-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.C | 28 |
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)); + } + }; |

