PrintDebug("Creating initial shadow page table\n");
vm_info->direct_map_pt = (addr_t)V3_PAddr(create_passthrough_pde32_pts(vm_info));
- vm_info->shdw_pg_state.shadow_cr3 |= (vm_info->direct_map_pt & ~0xfff);
+ //vm_info->shdw_pg_state.shadow_cr3 |= (vm_info->direct_map_pt & ~0xfff);
+ vm_info->shdw_pg_state.shadow_cr3 = 0;
vm_info->shdw_pg_state.guest_cr0 = 0x0000000000000010LL;
PrintDebug("Created\n");
- guest_state->cr3 = vm_info->shdw_pg_state.shadow_cr3;
+ //guest_state->cr3 = vm_info->shdw_pg_state.shadow_cr3;
+
+ guest_state->cr3 = vm_info->direct_map_pt;
+
//PrintDebugPageTables((pde32_t*)(vm_info->shdw_pg_state.shadow_cr3.e_reg.low));
v3_clgi();
- PrintDebug("SVM Entry to rip=%p...\n", (void *)info->rip);
+ //PrintDebug("SVM Entry to rip=%p...\n", (void *)info->rip);
v3_get_msr(0xc0000101, &vm_cr_high, &vm_cr_low);
rdtscll(tmp_tsc);
v3_set_msr(0xc0000101, vm_cr_high, vm_cr_low);
- PrintDebug("SVM Returned\n");
+ //PrintDebug("SVM Returned\n");
#if PrintDebug
v3_update_time(info, tmp_tsc - info->time_state.cached_host_tsc);
num_exits++;
- PrintDebug("Turning on global interrupts\n");
+ //PrintDebug("Turning on global interrupts\n");
v3_stgi();
- PrintDebug("SVM Exit number %d\n", num_exits);
+ //PrintDebug("SVM Exit number %d\n", num_exits);