Merge branch 'arrakis'
[barrelfish] / kernel / arch / x86_64 / syscall.c
index 7bfe564..8dd82b3 100644 (file)
@@ -14,6 +14,7 @@
 
 #include <kernel.h>
 #include <kcb.h>
+#include <sys_debug.h>
 #include <syscall.h>
 #include <barrelfish_kpi/syscalls.h>
 #include <mdb/mdb.h>
@@ -526,8 +527,9 @@ static struct sysret handle_frame_modify_flags(struct capability *to,
                              // page in mapped region
     size_t pages  = args[1]; // #pages to modify
     size_t flags  = args[2]; // new flags
+    genvaddr_t va = args[3]; // virtual addr hint
 
-    errval_t err = page_mappings_modify_flags(to, offset, pages, flags);
+    errval_t err = page_mappings_modify_flags(to, offset, pages, flags, va);
 
     return (struct sysret) {
         .error = err,
@@ -848,6 +850,20 @@ static struct sysret dispatcher_dump_ptables(struct capability *cap,
     return SYSRET(SYS_ERR_OK);
 }
 
+static struct sysret dispatcher_dump_capabilities(struct capability *cap,
+                                             int cmd, uintptr_t *args)
+{
+    assert(cap->type == ObjType_Dispatcher);
+
+    printf("dispatcher_dump_capabilities\n");
+
+    struct dcb *dispatcher = cap->u.dispatcher.dcb;
+
+    errval_t err = debug_print_cababilities(dispatcher);
+
+    return SYSRET(err);
+}
+
 /*
  * \brief Activate performance monitoring
  *
@@ -1018,6 +1034,7 @@ static invocation_handler_t invocations[ObjType_Num][CAP_MAX_CMD] = {
         [DispatcherCmd_SetupGuest] = handle_dispatcher_setup_guest,
 #endif
         [DispatcherCmd_DumpPTables]  = dispatcher_dump_ptables,
+        [DispatcherCmd_DumpCapabilities] = dispatcher_dump_capabilities
        [DispatcherCmd_Vmread] = handle_vmread,
        [DispatcherCmd_Vmwrite] = handle_vmwrite,
        [DispatcherCmd_Vmptrld] = handle_vmptrld,