Palacios Public Git Repository

To checkout Palacios execute

  git clone http://v3vee.org/palacios/palacios.web/palacios.git
This will give you the master branch. You probably want the devel branch or one of the release branches. To switch to the devel branch, simply execute
  cd palacios
  git checkout --track -b devel origin/devel
The other branches are similar.


more 64 bit guest support
[palacios.git] / palacios / src / palacios / vmm_shadow_paging.c
index 7baee58..faa48e1 100644 (file)
@@ -225,6 +225,11 @@ int v3_handle_shadow_pagefault(struct guest_info * info, addr_t fault_addr, pf_e
   
   if (info->mem_mode == PHYSICAL_MEM) {
     // If paging is not turned on we need to handle the special cases
+
+#ifdef DEBUG_SHADOW_PAGING
+    PrintPageTree(info->cpu_mode, fault_addr, info->ctrl_regs.cr3);
+#endif
+
     return handle_special_page_fault(info, fault_addr, fault_addr, error_code);
   } else if (info->mem_mode == VIRTUAL_MEM) {
 
@@ -244,7 +249,7 @@ int v3_handle_shadow_pagefault(struct guest_info * info, addr_t fault_addr, pf_e
   }
 }
 
-addr_t v3_create_new_shadow_pt32() {
+addr_t v3_create_new_shadow_pt() {
   void * host_pde = 0;
 
   host_pde = V3_VAddr(V3_AllocPages(1));
@@ -418,7 +423,7 @@ static int handle_shadow_pagefault32(struct guest_info * info, addr_t fault_addr
   
   if (shadow_pde_access == PT_ENTRY_NOT_PRESENT) 
     {
-      pte32_t * shadow_pt =  (pte32_t *)v3_create_new_shadow_pt32();
+      pte32_t * shadow_pt =  (pte32_t *)v3_create_new_shadow_pt();
 
       shadow_pde->present = 1;
       shadow_pde->user_page = guest_pde->user_page;
@@ -512,7 +517,7 @@ static int handle_shadow_pagefault32(struct guest_info * info, addr_t fault_addr
       return 0; 
     }
 
-  PrintDebug("Returning end of PDE function (rip=%p)\n", (void *)(info->rip));
+  PrintDebug("Returning end of PDE function (rip=%p)\n", (void *)(addr_t)(info->rip));
   return 0;
 }
 
@@ -681,7 +686,7 @@ int v3_handle_shadow_invlpg(struct guest_info * info)
 
        int ret = read_guest_va_memory(info, get_addr_linear(info, info->rip, &(info->segments.cs)), 15, instr);
        if (ret != 15) {
-               PrintError("Could not read instruction 0x%p (ret=%d)\n",  (void *)(info->rip), ret);
+         PrintError("Could not read instruction 0x%p (ret=%d)\n",  (void *)(addr_t)(info->rip), ret);
                return -1;
        }