X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?a=blobdiff_plain;f=palacios%2Fsrc%2Fpalacios%2Fvmm_ctrl_regs.c;fp=palacios%2Fsrc%2Fpalacios%2Fvmm_ctrl_regs.c;h=f56c5a62851ed463ea9bea133bb8f89429172e0e;hb=5c6233eb88fe33c60907d72e8b5d8b13d4084a9e;hp=1a287cd9e88a43f5db46e9257c8ae9828df32d17;hpb=f23a8a82a0edfc989e5d6631fcca8ad829e218e4;p=palacios-OLD.git diff --git a/palacios/src/palacios/vmm_ctrl_regs.c b/palacios/src/palacios/vmm_ctrl_regs.c index 1a287cd..f56c5a6 100644 --- a/palacios/src/palacios/vmm_ctrl_regs.c +++ b/palacios/src/palacios/vmm_ctrl_regs.c @@ -270,13 +270,20 @@ int v3_handle_cr3_write(struct guest_info * info) { } else if (cached == 0) { addr_t shadow_pt; - PrintDebug("New CR3 is different - flushing shadow page table\n"); + if( info->mem_mode == VIRTUAL_MEM ) + { + PrintDebug("New CR3 is different - flushing shadow page table %p\n", shadow_cr3 ); - delete_page_tables_pde32((pde32_t *)CR3_TO_PDE32(*(uint_t*)shadow_cr3)); + delete_page_tables_pde32((pde32_t *)CR3_TO_PDE32(*(uint_t*)shadow_cr3)); + } shadow_pt = v3_create_new_shadow_pt32(); shadow_cr3->pdt_base_addr = (addr_t)V3_PAddr((void *)(addr_t)PD32_BASE_ADDR(shadow_pt)); + PrintDebug( "Created new shadow page table %p\n", shadow_cr3->pdt_base_addr ); + //PrintDebugPageTables( (pde32_t *)CR3_TO_PDE32(*(uint_t*)shadow_cr3) ); + + } else { PrintDebug("Reusing cached shadow Page table\n"); }