X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?a=blobdiff_plain;f=palacios%2Finclude%2Fpalacios%2Fvmx.h;h=4384b13b8807b1341d8ed32bdf692c9dbabf66c9;hb=88648ddca6003a438826e7d86e28a2ba7b5bfcac;hp=33b8654225268f5c41088e5d195ed458c5ea71db;hpb=fcc9962fe5d3b877f8f25de8745d0d4d1eaf394e;p=palacios.git diff --git a/palacios/include/palacios/vmx.h b/palacios/include/palacios/vmx.h index 33b8654..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; @@ -209,6 +232,9 @@ struct vmx_data { struct vmx_entry_ctrls entry_ctrls; struct vmx_exception_bitmap excp_bmap; + + addr_t msr_area_paddr; + struct vmcs_msr_save_area * msr_area; }; int v3_is_vmx_capable(); @@ -216,11 +242,21 @@ int v3_is_vmx_capable(); void v3_init_vmx_cpu(int cpu_id); void v3_deinit_vmx_cpu(int cpu_id); +int v3_init_vmx_vmcs(struct guest_info * info, v3_vm_class_t vm_class); +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_init_vmx_vmcs(struct guest_info * info, v3_vm_class_t vm_class); -int v3_deinit_vmx_vmcs(struct guest_info * core); +int v3_vmx_load_core(struct guest_info * core, void * ctx); +int v3_vmx_save_core(struct guest_info * core, void * ctx); + + + + #endif // ! __V3VEE__