//info->page_tables = generate_guest_page_tables(&(info->mem_layout), &(info->mem_list));
//PrintDebugPageTables(info->page_tables);
-
PrintDebug("Initializing VMCB (addr=%x)\n", info->vmm_data);
Init_VMCB((vmcb_t*)(info->vmm_data), *info);
-
- info->vm_regs.rbx = 0;
- info->vm_regs.rcx = 0;
- info->vm_regs.rdx = 0;
- info->vm_regs.rsi = 0;
+ // info->rip = 0;
+
info->vm_regs.rdi = 0;
+ info->vm_regs.rsi = 0;
info->vm_regs.rbp = 0;
-
+ info->vm_regs.rsp = 0;
+ info->vm_regs.rbx = 0;
+ info->vm_regs.rdx = 0;
+ info->vm_regs.rcx = 0;
+ info->vm_regs.rax = 0;
+
return 0;
}
while (1) {
+ PrintDebug("SVM Launch Args (vmcb=%x), (info=%x), (vm_regs=%x)\n", info->vmm_data, &(info->vm_regs));
+ PrintDebug("Launching to RIP: %x\n", info->rip);
safe_svm_launch((vmcb_t*)(info->vmm_data), &(info->vm_regs));
//launch_svm((vmcb_t*)(info->vmm_data));
PrintDebug("SVM Returned\n");
if (handle_svm_exit(info) != 0) {
+ // handle exit code....
break;
}
}
uint_t i;
- guest_state->rsp = vm_info.rsp;
+ guest_state->rsp = vm_info.vm_regs.rsp;
guest_state->rip = vm_info.rip;
*bitmap |= 1 << (port % 8);
}
- // memset((uchar_t*)io_port_bitmap, 0xff, PAGE_SIZE * 2);
- //PrintDebugMemDump((uchar_t*)io_port_bitmap, PAGE_SIZE *2);
-
ctrl_area->instrs.instrs.IOIO_PROT = 1;
}
uint_t i;
- guest_state->rsp = vm_info.rsp;
+ guest_state->rsp = vm_info.vm_regs.rsp;
guest_state->rip = vm_info.rip;
uint_t i = 0;
- guest_state->rsp = vm_info.rsp;
+ guest_state->rsp = vm_info.vm_regs.rsp;
guest_state->rip = vm_info.rip;