-void Init_SVM();
+void Init_SVM(struct vmm_ctrl_ops * vmm_ops);
int is_svm_capable();
#define __vmm_sizes
#define KERNEL_LOAD_ADDRESS 0x2fe9d000
#define KERNEL_START (KERNEL_LOAD_ADDRESS)
-#define KERNEL_CORE_LENGTH ( 195 *512)
+#define KERNEL_CORE_LENGTH ( 204 *512)
#define KERNEL_END (KERNEL_LOAD_ADDRESS+KERNEL_CORE_LENGTH-1)
#define VM_KERNEL_LENGTH ( 97 *512)
#define VM_KERNEL_START (KERNEL_LOAD_ADDRESS + KERNEL_CORE_LENGTH)
uint_t vm_cr_low = 0, vm_cr_high = 0;
- return 1;
if ((ret & CPUID_FEATURE_IDS_ecx_svm_avail) == 0) {
PrintDebug("SVM Not Available\n");
return 0;
-void Init_SVM() {
+void Init_SVM(struct vmm_ctrl_ops * vmm_ops) {
reg_ex_t msr;
void * host_state;
Set_MSR(SVM_VM_HSAVE_PA_MSR, msr.e_reg.high, msr.e_reg.low);
+
+ // Setup the SVM specific vmm operations
+ vmm_ops->init_guest = &init_svm_guest;
+ vmm_ops->start_guest = &start_svm_guest;
+
+
return;
}
vmm_cpu_type = VMM_SVM_CPU;
PrintDebug("Machine is SVM Capable\n");
- Init_SVM();
-
- vmm_ops->init_guest = &init_svm_guest;
- vmm_ops->start_guest = &start_svm_guest;
+ Init_SVM(vmm_ops);
} else if (is_vmx_capable()) {
vmm_cpu_type = VMM_VMX_CPU;