From: Jack Lange Date: Mon, 7 Dec 2009 23:10:58 +0000 (-0600) Subject: added test hypercall for debugging guest hypercall support X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?p=palacios.git;a=commitdiff_plain;h=798ebfe9dc90f8981881a31737230328a193b333 added test hypercall for debugging guest hypercall support --- diff --git a/palacios/src/palacios/vmm_hypercall.c b/palacios/src/palacios/vmm_hypercall.c index 65749c1..0d62ab3 100644 --- a/palacios/src/palacios/vmm_hypercall.c +++ b/palacios/src/palacios/vmm_hypercall.c @@ -21,8 +21,24 @@ #include #include + +#define HYPERCALL_TEST_HCALL 0x1 + +static int hcall_test(struct guest_info * info, uint_t hcall_id, void * private_data) { + info->vm_regs.rbx = 0x1111; + info->vm_regs.rcx = 0x2222; + info->vm_regs.rdx = 0x3333; + info->vm_regs.rsi = 0x4444; + info->vm_regs.rdi = 0x5555; + return 0; +} + + + void v3_init_hypercall_map(struct guest_info * info) { info->hcall_map.rb_node = NULL; + + v3_register_hypercall(info, HYPERCALL_TEST_HCALL, hcall_test, NULL); } @@ -124,5 +140,12 @@ int v3_handle_hypercall(struct guest_info * info) { return -1; } - return hcall->hcall_fn(info, hypercall_id, hcall->priv_data); + if (hcall->hcall_fn(info, hypercall_id, hcall->priv_data) == 0) { + info->vm_regs.rax = 0; + } else { + info->vm_regs.rax = -1; + } + + return 0; } +