-
-
/*
* This file is part of the Palacios Virtual Machine Monitor developed
* by the V3VEE Project with funding from the United States National
typedef enum {
VMXASSIST_DISABLED,
VMXASSIST_ENABLED
+} vmxassist_state_t;
+
+typedef enum {
+ VMX_UNLAUNCHED,
+ VMX_LAUNCHED
} vmx_state_t;
struct tss_descriptor {
struct v3_segment tr;
};
+
+
+
+
struct vmx_data {
vmx_state_t state;
+ vmxassist_state_t assist_state;
struct vmcs_host_state host_state;
addr_t vmcs_ptr_phys;
uint8_t ia32e_avail;
+ v3_reg_t guest_cr4; /// corresponds to the CR4 Read shadow
+
+
/* VMX Control Fields */
struct vmx_pin_ctrls pin_ctrls;
struct vmx_pri_proc_ctrls pri_proc_ctrls;
};
int v3_is_vmx_capable();
+
void v3_init_vmx_cpu(int cpu_id);
+void v3_deinit_vmx_cpu(int cpu_id);
+
+int v3_start_vmx_guest(struct guest_info* info);
+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);
#endif // ! __V3VEE__