X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?a=blobdiff_plain;f=palacios%2Finclude%2Fpalacios%2Fvmm_hypercall.h;h=4304790faa77b8bbbef38a4ff9bd22f3fc8908a8;hb=c0e8207d10b6b077c3fac4fb013ba7485f3a6391;hp=c9646fa432f26d2a4893f54ff3473b3eb97d7794;hpb=f1e6da297651aadbc037f1635a82f41285a0a424;p=palacios.git diff --git a/palacios/include/palacios/vmm_hypercall.h b/palacios/include/palacios/vmm_hypercall.h index c9646fa..4304790 100644 --- a/palacios/include/palacios/vmm_hypercall.h +++ b/palacios/include/palacios/vmm_hypercall.h @@ -36,25 +36,34 @@ typedef enum { TEST_HCALL = 0x0001, SYMCALL_RET_HCALL = 0x0535, // args in GPRs SYMCALL_ERR_HCALL = 0x0536, // RBX: error code + + /* -- Symmod symbol table hypercall -- + * RBX: SymTable start + * RCX: SymTable size + * RDX: SymStrs start + * RSI: SymStrs size + */ + SYMMOD_SYMS_HCALL = 0x0600, + MEM_OFFSET_HCALL = 0x1000, // RBX: base addr(out) GUEST_INFO_HCALL = 0x3000, // no args TELEMETRY_HCALL = 0x3001, // no args BALLOON_START_HCALL = 0xba00, // RAX: size BALLOON_QUERY_HCALL = 0xba01, // RCX: req_pgs(out), RDX: alloc_pgs(out) - OS_DEBUG_HCALL = 0xc0c0 // RBX: msg_gpa, RCX: msg_len, RDX: buf_is_va (flag) + OS_DEBUG_HCALL = 0xc0c0, // RBX: msg_gpa, RCX: msg_len, RDX: buf_is_va (flag) + TIME_CPUFREQ_HCALL = 0xd000 //RCX: cpu freq (out) } hcall_id_t; void v3_init_hypercall_map(struct v3_vm_info * vm); - +int v3_deinit_hypercall_map(struct v3_vm_info * vm); int v3_register_hypercall(struct v3_vm_info * vm, hcall_id_t hypercall_id, int (*hypercall)(struct guest_info * info , hcall_id_t hcall_id, void * priv_data), void * priv_data); - - +int v3_remove_hypercall(struct v3_vm_info * vm, hcall_id_t hypercall_id); int v3_handle_hypercall(struct guest_info * info);