struct cr3_32 * shadow_cr3 = (struct cr3_32 *)&(info->shdw_pg_state.shadow_cr3);
struct cr3_32 * guest_cr3 = (struct cr3_32 *)&(info->shdw_pg_state.guest_cr3);
+ PrintDebug("fooo1\n");
+
/* Delete the current Page Tables */
- delete_page_tables_pde32((pde32_t *)CR3_TO_PDE32(shadow_cr3));
+ delete_page_tables_pde32((pde32_t *)CR3_TO_PDE32(*(uint_t*)shadow_cr3));
+ PrintDebug("fooo2\n");
*guest_cr3 = *new_cr3;
// Something like this
extern struct vmm_os_hooks * os_hooks;
void delete_page_tables_pde32(pde32_t * pde) {
- int i, j;
+ int i;//, j;
if (pde == NULL) {
return;
for (i = 0; (i < MAX_PDE32_ENTRIES); i++) {
if (pde[i].present) {
pte32_t * pte = (pte32_t *)(pde[i].pt_base_addr << PAGE_POWER);
-
- for (j = 0; (j < MAX_PTE32_ENTRIES); j++) {
+
+ /*
+ for (j = 0; (j < MAX_PTE32_ENTRIES); j++) {
if ((pte[j].present)) {
- os_hooks->free_page((void *)(pte[j].page_base_addr << PAGE_POWER));
+ os_hooks->free_page((void *)(pte[j].page_base_addr << PAGE_POWER));
}
- }
-
+ }
+ */
+ //PrintDebug("Deleting PTE %d (%x)\n", i, pte);
os_hooks->free_page(pte);
}
}
+ // PrintDebug("Deleting PDE (%x)\n", pde);
os_hooks->free_page(pde);
}