diff options
| author | Missy Connell <missyc@us.ibm.com> | 2011-09-07 14:34:48 -0500 |
|---|---|---|
| committer | Melissa J. Connell <missyc@us.ibm.com> | 2011-09-15 23:19:29 -0500 |
| commit | a740789978e866ce8e9c278ecb05b0060751f090 (patch) | |
| tree | b3e6babc2767801f22ace9745dc56457e8eff218 /src/kernel/syscall.C | |
| parent | a5f6b8ec8b637628dd843ec8f187e01acb678b67 (diff) | |
| download | talos-hostboot-a740789978e866ce8e9c278ecb05b0060751f090.tar.gz talos-hostboot-a740789978e866ce8e9c278ecb05b0060751f090.zip | |
Adding new interface to update page permissions.. Interface only.
Added changes from review comments
Updated new enum for system call
Change-Id: I8a55b5e2f67427e59263eae31913e438ca782006
Reviewed-on: http://gfw160.austin.ibm.com:8080/gerrit/331
Tested-by: Jenkins Server
Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Reviewed-by: Douglas R. Gilbert <dgilbert@us.ibm.com>
Reviewed-by: Melissa J. Connell <missyc@us.ibm.com>
Diffstat (limited to 'src/kernel/syscall.C')
| -rw-r--r-- | src/kernel/syscall.C | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/src/kernel/syscall.C b/src/kernel/syscall.C index 0e3395d9e..ecfdd9b1b 100644 --- a/src/kernel/syscall.C +++ b/src/kernel/syscall.C @@ -82,6 +82,8 @@ namespace Systemcalls void CpuDDLevel(task_t *t); void MmAllocBlock(task_t *t); void MmRemovePages(task_t *t); + void MmSetPermission(task_t *t); + syscall syscalls[] = { @@ -116,7 +118,8 @@ namespace Systemcalls &MmAllocBlock, // MM_ALLOC_BLOCK &MmRemovePages, // MM_REMOVE_PAGES - }; + &MmSetPermission, // MM_SET_PERMISSION + }; }; extern "C" @@ -520,4 +523,17 @@ namespace Systemcalls TASK_SETRTN(t, VmmManager::mmRemovePages(oper,vaddr,size)); } + /** + * Set the Permissions on a block containing the virtual address passed in. + * @param[in] t: The task used to set Page Permissions for a given block + */ + void MmSetPermission(task_t* t) + { + void* va = (void*)TASK_GETARG0(t); + uint64_t size = (uint64_t)TASK_GETARG1(t); + PAGE_PERMISSIONS access_type = (PAGE_PERMISSIONS)TASK_GETARG2(t); + + TASK_SETRTN(t, VmmManager::mmSetPermission(va,size, access_type)); + } + }; |

