summaryrefslogtreecommitdiffstats
path: root/src/kernel/syscall.C
diff options
context:
space:
mode:
authorMissy Connell <missyc@us.ibm.com>2011-09-07 14:34:48 -0500
committerMelissa J. Connell <missyc@us.ibm.com>2011-09-15 23:19:29 -0500
commita740789978e866ce8e9c278ecb05b0060751f090 (patch)
treeb3e6babc2767801f22ace9745dc56457e8eff218 /src/kernel/syscall.C
parenta5f6b8ec8b637628dd843ec8f187e01acb678b67 (diff)
downloadtalos-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.C18
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));
+ }
+
};
OpenPOWER on IntegriCloud