-#ifndef DEBUG_SHADOW_PAGING
+#ifndef CONFIG_DEBUG_SHADOW_PAGING
#undef PrintDebug
#define PrintDebug(fmt, args...)
#endif
PrintDebug("Deleting Page Tables (32) -- PDE (%p)\n", pde);
for (i = 0; i < MAX_PDE32_ENTRIES; i++) {
- if ((pde[i].present) && (pde[i].large_page == 0)) {
+ if ((pde[i].present == 1) && (pde[i].large_page == 0)) {
// We double cast, first to an addr_t to handle 64 bit issues, then to the pointer
- V3_FreePage((void *)(addr_t)PAGE_ADDR_4KB(pde[i].pt_base_addr));
+ PrintDebug("Deleting PT Page %d (%p)\n", i, (void *)(addr_t)BASE_TO_PAGE_ADDR_4KB(pde[i].pt_base_addr));
+ V3_FreePage((void *)(addr_t)BASE_TO_PAGE_ADDR_4KB(pde[i].pt_base_addr));
}
}
-
V3_FreePage(V3_PAddr(pde));
}
continue;
}
- pde32pae_t * pde = (pde32pae_t *)V3_VAddr((void *)(addr_t)PAGE_ADDR_4KB(pdpe[i].pd_base_addr));
+ pde32pae_t * pde = (pde32pae_t *)V3_VAddr((void *)(addr_t)BASE_TO_PAGE_ADDR_4KB(pdpe[i].pd_base_addr));
for (j = 0; j < MAX_PDE32PAE_ENTRIES; j++) {
continue;
}
- V3_FreePage((void *)(addr_t)PAGE_ADDR_4KB(pde[j].pt_base_addr));
+ V3_FreePage((void *)(addr_t)BASE_TO_PAGE_ADDR_4KB(pde[j].pt_base_addr));
}
V3_FreePage(V3_PAddr(pde));
continue;
}
- pdpe64_t * pdpe = (pdpe64_t *)V3_VAddr((void *)(addr_t)PAGE_ADDR_4KB(pml4[i].pdp_base_addr));
+ pdpe64_t * pdpe = (pdpe64_t *)V3_VAddr((void *)(addr_t)BASE_TO_PAGE_ADDR_4KB(pml4[i].pdp_base_addr));
for (j = 0; j < MAX_PDPE64_ENTRIES; j++) {
if ((pdpe[j].present == 0) || (pdpe[j].large_page == 1)) {
continue;
}
- pde64_t * pde = (pde64_t *)V3_VAddr((void *)(addr_t)PAGE_ADDR_4KB(pdpe[j].pd_base_addr));
+ pde64_t * pde = (pde64_t *)V3_VAddr((void *)(addr_t)BASE_TO_PAGE_ADDR_4KB(pdpe[j].pd_base_addr));
for (k = 0; k < MAX_PDE64_ENTRIES; k++) {
if ((pde[k].present == 0) || (pde[k].large_page == 1)) {
continue;
}
- V3_FreePage((void *)(addr_t)PAGE_ADDR_4KB(pde[k].pt_base_addr));
+ V3_FreePage((void *)(addr_t)BASE_TO_PAGE_ADDR_4KB(pde[k].pt_base_addr));
}
V3_FreePage(V3_PAddr(pde));
int ret;
- if (guest_pa_to_host_va(info, guest_pde_pa, (addr_t *)&guest_pde) == -1) {
+ if (v3_gpa_to_hva(info, guest_pde_pa, (addr_t *)&guest_pde) == -1) {
PrintError("Could not get virtual address of Guest PDE32 (PA=%p)\n",
(void *)guest_pde_pa);
return -1;
addr_t large_page_pa = (addr_t)guest_pte_pa;
addr_t large_page_va = 0;
- if (guest_pa_to_host_va(info, large_page_pa, &large_page_va) == -1) {
+ if (v3_gpa_to_hva(info, large_page_pa, &large_page_va) == -1) {
PrintError("Could not get virtual address of Guest Page 4MB (PA=%p)\n",
(void *)large_page_va);
return -1;
pte32_t * guest_pte = NULL;
addr_t page_pa;
- if (guest_pa_to_host_va(info, guest_pte_pa, (addr_t*)&guest_pte) == -1) {
+ if (v3_gpa_to_hva(info, guest_pte_pa, (addr_t*)&guest_pte) == -1) {
PrintError("Could not get virtual address of Guest PTE32 (PA=%p)\n",
(void *)guest_pte_pa);
return -1;
} else {
addr_t page_va;
- if (guest_pa_to_host_va(info, page_pa, &page_va) == -1) {
+ if (v3_gpa_to_hva(info, page_pa, &page_va) == -1) {
PrintError("Could not get virtual address of Guest Page 4KB (PA=%p)\n",
(void *)page_pa);
return -1;
addr_t guest_pde_pa = 0;
int ret = 0;
- if (guest_pa_to_host_va(info, guest_pdpe_pa, (addr_t*)&guest_pdpe) == -1) {
+ if (v3_gpa_to_hva(info, guest_pdpe_pa, (addr_t*)&guest_pdpe) == -1) {
PrintError("Could not get virtual address of Guest PDPE32PAE (PA=%p)\n",
(void *)guest_pdpe_pa);
return -1;
pde32pae_t * guest_pde = NULL;
addr_t guest_pte_pa = 0;
- if (guest_pa_to_host_va(info, guest_pde_pa, (addr_t *)&guest_pde) == -1) {
+ if (v3_gpa_to_hva(info, guest_pde_pa, (addr_t *)&guest_pde) == -1) {
PrintError("Could not get virtual Address of Guest PDE32PAE (PA=%p)\n",
(void *)guest_pde_pa);
return -1;
addr_t large_page_pa = (addr_t)guest_pte_pa;
addr_t large_page_va = 0;
- if (guest_pa_to_host_va(info, large_page_pa, &large_page_va) == -1) {
+ if (v3_gpa_to_hva(info, large_page_pa, &large_page_va) == -1) {
PrintDebug("Could not get virtual address of Guest Page 2MB (PA=%p)\n",
(void *)large_page_va);
pte32pae_t * guest_pte = NULL;
addr_t page_pa;
- if (guest_pa_to_host_va(info, guest_pte_pa, (addr_t *)&guest_pte) == -1) {
+ if (v3_gpa_to_hva(info, guest_pte_pa, (addr_t *)&guest_pte) == -1) {
PrintError("Could not get virtual Address of Guest PTE32PAE (PA=%p)\n",
(void *)guest_pte_pa);
return -1;
} else {
addr_t page_va;
- if (guest_pa_to_host_va(info, page_pa, &page_va) == -1) {
+ if (v3_gpa_to_hva(info, page_pa, &page_va) == -1) {
PrintError("Could not get virtual address of Guest Page 4KB (PA=%p)\n",
(void *)page_pa);
return -1;
addr_t guest_pdpe_pa = 0;
int ret = 0;
- if (guest_pa_to_host_va(info, guest_pml4_pa, (addr_t*)&guest_pmle) == -1) {
+ if (v3_gpa_to_hva(info, guest_pml4_pa, (addr_t*)&guest_pmle) == -1) {
PrintError("Could not get virtual address of Guest PML4E64 (PA=%p)\n",
(void *)guest_pml4_pa);
return -1;
pdpe64_t * guest_pdp = NULL;
addr_t guest_pde_pa = 0;
- if (guest_pa_to_host_va(info, guest_pdpe_pa, (addr_t *)&guest_pdp) == -1) {
+ if (v3_gpa_to_hva(info, guest_pdpe_pa, (addr_t *)&guest_pdp) == -1) {
PrintError("Could not get virtual address of Guest PDPE64 (PA=%p)\n",
(void *)guest_pdpe_pa);
return -1;
addr_t large_page_pa = (addr_t)guest_pde_pa;
addr_t large_page_va = 0;
- if (guest_pa_to_host_va(info, large_page_pa, &large_page_va) == -1) {
+ if (v3_gpa_to_hva(info, large_page_pa, &large_page_va) == -1) {
PrintDebug("Could not get virtual address of Guest Page 1GB (PA=%p)\n",
(void *)large_page_va);
pde64_t * guest_pde = NULL;
addr_t guest_pte_pa = 0;
- if (guest_pa_to_host_va(info, guest_pde_pa, (addr_t *)&guest_pde) == -1) {
+ if (v3_gpa_to_hva(info, guest_pde_pa, (addr_t *)&guest_pde) == -1) {
PrintError("Could not get virtual address of guest PDE64 (PA=%p)\n",
(void *)guest_pde_pa);
return -1;
addr_t large_page_pa = (addr_t)guest_pte_pa;
addr_t large_page_va = 0;
- if (guest_pa_to_host_va(info, large_page_pa, &large_page_va) == -1) {
+ if (v3_gpa_to_hva(info, large_page_pa, &large_page_va) == -1) {
PrintDebug("Could not get virtual address of Guest Page 2MB (PA=%p)\n",
(void *)large_page_va);
pte64_t * guest_pte = NULL;
addr_t page_pa;
- if (guest_pa_to_host_va(info, guest_pte_pa, (addr_t *)&guest_pte) == -1) {
+ if (v3_gpa_to_hva(info, guest_pte_pa, (addr_t *)&guest_pte) == -1) {
PrintError("Could not get virtual address of guest PTE64 (PA=%p)\n",
(void *)guest_pte_pa);
return -1;
} else {
addr_t page_va;
- if (guest_pa_to_host_va(info, page_pa, &page_va) == -1) {
+ if (v3_gpa_to_hva(info, page_pa, &page_va) == -1) {
PrintError("Could not get virtual address of Guest Page 4KB (PA=%p)\n",
(void *)page_pa);
return -1;
return -1;
}
- if (guest_pa_to_host_va(info, guest_pde_pa, (addr_t *)&guest_pde) == -1) {
+ if (v3_gpa_to_hva(info, guest_pde_pa, (addr_t *)&guest_pde) == -1) {
PrintError("Could not get virtual address of Guest PDE32 (PA=%p)\n",
(void *)guest_pde_pa);
return -1;
addr_t large_page_pa = BASE_TO_PAGE_ADDR_4MB(large_pde->page_base_addr);
addr_t large_page_va = 0;
- if (guest_pa_to_host_va(info, large_page_pa, &large_page_va) == -1) {
+ if (v3_gpa_to_hva(info, large_page_pa, &large_page_va) == -1) {
PrintDebug("Could not get virtual address of Guest 4MB Page (PA=%p)\n",
(void *)large_page_pa);
// We'll let it through for data pages because they may be unmapped or hooked
addr_t pte_pa = BASE_TO_PAGE_ADDR(guest_pde[i].pt_base_addr);
pte32_t * tmp_pte = NULL;
- if (guest_pa_to_host_va(info, pte_pa, (addr_t *)&tmp_pte) == -1) {
+ if (v3_gpa_to_hva(info, pte_pa, (addr_t *)&tmp_pte) == -1) {
PrintError("Could not get virtual address of Guest PTE32 (PA=%p)\n",
(void *)pte_pa);
return -1;
addr_t page_pa = BASE_TO_PAGE_ADDR(tmp_pte[j].page_base_addr);
addr_t page_va = 0;
- if (guest_pa_to_host_va(info, page_pa, &page_va) == -1) {
+ if (v3_gpa_to_hva(info, page_pa, &page_va) == -1) {
PrintDebug("Could not get virtual address of Guest 4KB Page (PA=%p)\n",
(void *)page_pa);
// We'll let it through for data pages because they may be unmapped or hooked
return -1;
}
- if (guest_pa_to_host_va(info, guest_pdpe_pa, (addr_t *)&guest_pdpe) == -1) {
+ if (v3_gpa_to_hva(info, guest_pdpe_pa, (addr_t *)&guest_pdpe) == -1) {
PrintError("Could not get virtual address of Guest PDPE32PAE (PA=%p)\n",
(void *)guest_pdpe_pa);
return -1;
addr_t pde_pa = BASE_TO_PAGE_ADDR(guest_pdpe[i].pd_base_addr);
pde32pae_t * tmp_pde = NULL;
- if (guest_pa_to_host_va(info, pde_pa, (addr_t *)&tmp_pde) == -1) {
+ if (v3_gpa_to_hva(info, pde_pa, (addr_t *)&tmp_pde) == -1) {
PrintError("Could not get virtual address of Guest PDE32PAE (PA=%p)\n",
(void *)pde_pa);
return -1;
addr_t large_page_pa = BASE_TO_PAGE_ADDR_2MB(large_pde->page_base_addr);
addr_t large_page_va = 0;
- if (guest_pa_to_host_va(info, large_page_pa, &large_page_va) == -1) {
+ if (v3_gpa_to_hva(info, large_page_pa, &large_page_va) == -1) {
PrintDebug("Could not get virtual address of Guest 2MB Page (PA=%p)\n",
(void *)large_page_pa);
// We'll let it through for data pages because they may be unmapped or hooked
addr_t pte_pa = BASE_TO_PAGE_ADDR(tmp_pde[j].pt_base_addr);
pte32pae_t * tmp_pte = NULL;
- if (guest_pa_to_host_va(info, pte_pa, (addr_t *)&tmp_pte) == -1) {
+ if (v3_gpa_to_hva(info, pte_pa, (addr_t *)&tmp_pte) == -1) {
PrintError("Could not get virtual address of Guest PTE32PAE (PA=%p)\n",
(void *)pte_pa);
return -1;
addr_t page_pa = BASE_TO_PAGE_ADDR(tmp_pte[k].page_base_addr);
addr_t page_va = 0;
- if (guest_pa_to_host_va(info, page_pa, &page_va) == -1) {
+ if (v3_gpa_to_hva(info, page_pa, &page_va) == -1) {
PrintDebug("Could not get virtual address of Guest 4KB Page (PA=%p)\n",
(void *)page_pa);
// We'll let it through for data pages because they may be unmapped or hooked
return -1;
}
- if (guest_pa_to_host_va(info, guest_pml_pa, (addr_t *)&guest_pml) == -1) {
+ if (v3_gpa_to_hva(info, guest_pml_pa, (addr_t *)&guest_pml) == -1) {
PrintError("Could not get virtual address of Guest PML464 (PA=%p)\n",
(void *)guest_pml);
return -1;
pdpe64_t * tmp_pdpe = NULL;
- if (guest_pa_to_host_va(info, pdpe_pa, (addr_t *)&tmp_pdpe) == -1) {
+ if (v3_gpa_to_hva(info, pdpe_pa, (addr_t *)&tmp_pdpe) == -1) {
PrintError("Could not get virtual address of Guest PDPE64 (PA=%p)\n",
(void *)pdpe_pa);
return -1;
addr_t large_page_pa = BASE_TO_PAGE_ADDR_1GB(large_pdpe->page_base_addr);
addr_t large_page_va = 0;
- if (guest_pa_to_host_va(info, large_page_pa, &large_page_va) == -1) {
+ if (v3_gpa_to_hva(info, large_page_pa, &large_page_va) == -1) {
PrintDebug("Could not get virtual address of Guest 1GB page (PA=%p)\n",
(void *)large_page_pa);
// We'll let it through for data pages because they may be unmapped or hooked
addr_t pde_pa = BASE_TO_PAGE_ADDR(tmp_pdpe[j].pd_base_addr);
pde64_t * tmp_pde = NULL;
- if (guest_pa_to_host_va(info, pde_pa, (addr_t *)&tmp_pde) == -1) {
+ if (v3_gpa_to_hva(info, pde_pa, (addr_t *)&tmp_pde) == -1) {
PrintError("Could not get virtual address of Guest PDE64 (PA=%p)\n",
(void *)pde_pa);
return -1;
addr_t large_page_pa = BASE_TO_PAGE_ADDR_2MB(large_pde->page_base_addr);
addr_t large_page_va = 0;
- if (guest_pa_to_host_va(info, large_page_pa, &large_page_va) == -1) {
+ if (v3_gpa_to_hva(info, large_page_pa, &large_page_va) == -1) {
PrintDebug("Could not get virtual address of Guest 2MB page (PA=%p)\n",
(void *)large_page_pa);
// We'll let it through for data pages because they may be unmapped or hooked
addr_t pte_pa = BASE_TO_PAGE_ADDR(tmp_pde[k].pt_base_addr);
pte64_t * tmp_pte = NULL;
- if (guest_pa_to_host_va(info, pte_pa, (addr_t *)&tmp_pte) == -1) {
+ if (v3_gpa_to_hva(info, pte_pa, (addr_t *)&tmp_pte) == -1) {
PrintError("Could not get virtual address of Guest PTE64 (PA=%p)\n",
(void *)pte_pa);
return -1;
addr_t page_pa = BASE_TO_PAGE_ADDR(tmp_pte[m].page_base_addr);
addr_t page_va = 0;
- if (guest_pa_to_host_va(info, page_pa, &page_va) == -1) {
+ if (v3_gpa_to_hva(info, page_pa, &page_va) == -1) {
PrintDebug("Could not get virtual address of Guest 4KB Page (PA=%p)\n",
(void *)page_pa);
// We'll let it through for data pages because they may be unmapped or hooked