summaryrefslogtreecommitdiffstats
path: root/src/kernel/syscall.C
diff options
context:
space:
mode:
Diffstat (limited to 'src/kernel/syscall.C')
-rw-r--r--src/kernel/syscall.C13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/kernel/syscall.C b/src/kernel/syscall.C
index dd3d10949..1ed68624e 100644
--- a/src/kernel/syscall.C
+++ b/src/kernel/syscall.C
@@ -101,6 +101,7 @@ namespace Systemcalls
void MmAllocBlock(task_t *t);
void MmRemovePages(task_t *t);
void MmSetPermission(task_t *t);
+ void MmFlushPages(task_t *t);
syscall syscalls[] =
@@ -134,6 +135,7 @@ namespace Systemcalls
&MmAllocBlock, // MM_ALLOC_BLOCK
&MmRemovePages, // MM_REMOVE_PAGES
&MmSetPermission, // MM_SET_PERMISSION
+ &MmFlushPages, // MM_FLUSH_PAGES
};
};
@@ -668,5 +670,16 @@ namespace Systemcalls
TASK_SETRTN(t, VmmManager::mmSetPermission(va,size, access_type));
}
+ /**
+ * Flush and Cast out 'old' pages
+ * @param[in] t: The task used.
+ */
+ void MmFlushPages(task_t* t)
+ {
+ VmmManager::castout_t sev = (VmmManager::castout_t)TASK_GETARG0(t);
+ VmmManager::flushPageTable();
+ VmmManager::castOutPages(sev);
+ TASK_SETRTN(t,0);
+ }
};
OpenPOWER on IntegriCloud