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.C14
1 files changed, 11 insertions, 3 deletions
diff --git a/src/kernel/syscall.C b/src/kernel/syscall.C
index 0a8e644a0..305e3c39a 100644
--- a/src/kernel/syscall.C
+++ b/src/kernel/syscall.C
@@ -532,10 +532,18 @@ namespace Systemcalls
void DevMap(task_t *t)
{
void *ra = (void*)TASK_GETARG0(t);
- uint64_t devDataSize = TASK_GETARG1(t);
+ uint64_t devDataSize = ALIGN_PAGE(TASK_GETARG1(t));
+ bool cacheable = (0 != TASK_GETARG2(t));
- kassert(TASK_SETRTN(t, (uint64_t)VmmManager::devMap(ra,devDataSize)) !=
- NULL);
+ if (devDataSize > THIRTYTWO_GB)
+ {
+ TASK_SETRTN(t, NULL);
+ }
+ else
+ {
+ TASK_SETRTN(t,
+ (uint64_t)VmmManager::devMap(ra,devDataSize,cacheable));
+ }
}
/**
OpenPOWER on IntegriCloud