X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?a=blobdiff_plain;f=palacios%2Finclude%2Fpalacios%2Fvmx.h;h=4384b13b8807b1341d8ed32bdf692c9dbabf66c9;hb=88648ddca6003a438826e7d86e28a2ba7b5bfcac;hp=c3b3254a51e02802f678051caf29e6a2c744fd97;hpb=6ee36e0a7e4585bd0e4235eeb60644fffe230af3;p=palacios.git diff --git a/palacios/include/palacios/vmx.h b/palacios/include/palacios/vmx.h index c3b3254..4384b13 100644 --- a/palacios/include/palacios/vmx.h +++ b/palacios/include/palacios/vmx.h @@ -188,6 +188,29 @@ struct vmcs_host_state { }; +struct vmcs_msr_save_area { + union { + struct vmcs_msr_entry guest_msrs[4]; + struct { + struct vmcs_msr_entry guest_star; + struct vmcs_msr_entry guest_lstar; + struct vmcs_msr_entry guest_fmask; + struct vmcs_msr_entry guest_kern_gs; + } __attribute__((packed)); + } __attribute__((packed)); + + union { + struct vmcs_msr_entry host_msrs[4]; + struct { + struct vmcs_msr_entry host_star; + struct vmcs_msr_entry host_lstar; + struct vmcs_msr_entry host_fmask; + struct vmcs_msr_entry host_kern_gs; + } __attribute__((packed)); + } __attribute__((packed)); + +} __attribute__((packed)); + struct vmx_data { vmx_state_t state; @@ -210,7 +233,8 @@ struct vmx_data { struct vmx_exception_bitmap excp_bmap; - void * msr_area; + addr_t msr_area_paddr; + struct vmcs_msr_save_area * msr_area; }; int v3_is_vmx_capable(); @@ -223,6 +247,8 @@ int v3_deinit_vmx_vmcs(struct guest_info * core); int v3_start_vmx_guest(struct guest_info* info); int v3_reset_vmx_vm_core(struct guest_info * core, addr_t rip); +void v3_flush_vmx_vm_core(struct guest_info * core); + int v3_vmx_enter(struct guest_info * info); int v3_vmx_load_core(struct guest_info * core, void * ctx);