diff options
author | Matthew Barth <msbarth@us.ibm.com> | 2011-08-10 11:22:49 -0500 |
---|---|---|
committer | MATTHEW S. BARTH <msbarth@us.ibm.com> | 2011-08-10 17:30:34 -0500 |
commit | b977bf9b78b1d7d57cefa3f8a2b7ebd0b7de4563 (patch) | |
tree | e15e50c0e9a80096c4a26db97d7c8686223a80d3 /src/kernel/syscall.C | |
parent | 2a7a99c1e088b8b87e4b019d24550c047fb86e0d (diff) | |
download | talos-hostboot-b977bf9b78b1d7d57cefa3f8a2b7ebd0b7de4563.tar.gz talos-hostboot-b977bf9b78b1d7d57cefa3f8a2b7ebd0b7de4563.zip |
Allocate block system call stub
Change-Id: Ief3476b5306bc231c9d3044b2736fcd195e840b1
Reviewed-on: http://gfw160.austin.ibm.com:8080/gerrit/243
Tested-by: Jenkins Server
Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Diffstat (limited to 'src/kernel/syscall.C')
-rw-r--r-- | src/kernel/syscall.C | 30 |
1 files changed, 23 insertions, 7 deletions
diff --git a/src/kernel/syscall.C b/src/kernel/syscall.C index 639845224..51009195d 100644 --- a/src/kernel/syscall.C +++ b/src/kernel/syscall.C @@ -54,6 +54,7 @@ namespace Systemcalls void Shutdown(task_t *t); void CpuCoreType(task_t *t); void CpuDDLevel(task_t *t); + void MmAllocBlock(task_t *t); syscall syscalls[] = { @@ -73,18 +74,20 @@ namespace Systemcalls &MmioMap, // MMIO_MAP &MmioUnmap, // MMIO_UNMAP - &DevMap, - &DevUnmap, + &DevMap, // DEV_MAP + &DevUnmap, // DEV_UNMAP &TimeNanosleep, // TIME_NANOSLEEP - &FutexWait, // FUTEX_WAIT - &FutexWake, // FUTEX_WAKE + &FutexWait, // FUTEX_WAIT + &FutexWake, // FUTEX_WAKE - &Shutdown, // MISC_SHUTDOWN + &Shutdown, // MISC_SHUTDOWN - &CpuCoreType, // MISC_CPUCORETYPE - &CpuDDLevel, // MISC_CPUDDLEVEL + &CpuCoreType, // MISC_CPUCORETYPE + &CpuDDLevel, // MISC_CPUDDLEVEL + + &MmAllocBlock, // MM_ALLOC_BLOCK }; }; @@ -398,4 +401,17 @@ namespace Systemcalls TASK_SETRTN(t, CpuID::getCpuDD()); } + /** + * Allocate a block of virtual memory within the base segment + * @param[in] t: The task used to allocate a block in the base segment + */ + void MmAllocBlock(task_t* t) + { + MessageQueue* mq = (MessageQueue*)TASK_GETARG0(t); + void* va = (void*)TASK_GETARG1(t); + uint64_t size = (uint64_t)TASK_GETARG2(t); + + TASK_SETRTN(t, VmmManager::mmAllocBlock(mq,va,size)); + } + }; |