diff options
Diffstat (limited to 'src/kernel/syscall.C')
| -rw-r--r-- | src/kernel/syscall.C | 14 |
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)); + } } /** |

