#include <palacios/vmm_config.h>
#include <palacios/svm_io.h>
+#include <palacios/vmm_sprintf.h>
// This is a global pointer to the host's VMCB
ctrl_area->svm_instrs.CLGI = 1;
ctrl_area->svm_instrs.SKINIT = 1;
ctrl_area->svm_instrs.RDTSCP = 1;
- ctrl_area->svm_instrs.CPUID = 1;
ctrl_area->svm_instrs.ICEBP = 1;
ctrl_area->svm_instrs.WBINVD = 1;
ctrl_area->svm_instrs.MONITOR = 1;
ctrl_area->svm_instrs.MWAIT_always = 1;
ctrl_area->svm_instrs.MWAIT_if_armed = 1;
ctrl_area->instrs.INVLPGA = 1;
-
+ ctrl_area->instrs.CPUID = 1;
ctrl_area->instrs.HLT = 1;
// guest_state->cr0 = 0x00000001; // PE
vmcb_ctrl_t * guest_ctrl = GET_VMCB_CTRL_AREA((vmcb_t*)(info->vmm_data));
addr_t host_addr;
addr_t linear_addr = 0;
-
+
info->run_state = VM_ERROR;
PrintDebug("SVM ERROR!!\n");
PrintDebug("Instr (15 bytes) at %p:\n", (void *)host_addr);
v3_dump_mem((uint8_t *)host_addr, 15);
+
+ v3_print_stack(info);
+
+
break;
}
}
/* Checks machine SVM capability */
/* Implemented from: AMD Arch Manual 3, sect 15.4 */
int v3_is_svm_capable() {
- // Dinda
uint_t vm_cr_low = 0, vm_cr_high = 0;
uint32_t eax = 0, ebx = 0, ecx = 0, edx = 0;