X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?a=blobdiff_plain;f=palacios%2Finclude%2Fpalacios%2Fvmm_paging.h;h=51e13d0529525f137799caa3ac3e1c945fbd0336;hb=f340744762cb6a6bf0116e2ad07b50a7e890780c;hp=caba35f6d175aa5b48dbf4e9b96259eda88283b7;hpb=074523a44f8e4e91f0945633b36cd39cc1d959f9;p=palacios.git diff --git a/palacios/include/palacios/vmm_paging.h b/palacios/include/palacios/vmm_paging.h index caba35f..51e13d0 100644 --- a/palacios/include/palacios/vmm_paging.h +++ b/palacios/include/palacios/vmm_paging.h @@ -187,12 +187,12 @@ the host state in the vmcs before entering the guest. -#define CR3_TO_PDE32_PA(cr3) ((addr_t)(((ulong_t)cr3) & 0xfffff000)) -#define CR3_TO_PDPTRE_PA(cr3) ((addr_t)(((ulong_t)cr3) & 0xffffffe0)) +#define CR3_TO_PDE32_PA(cr3) ((addr_t)(((uint_t)cr3) & 0xfffff000)) +#define CR3_TO_PDPE32PAE_PA(cr3) ((addr_t)(((uint_t)cr3) & 0xffffffe0)) #define CR3_TO_PML4E64_PA(cr3) ((addr_t)(((ullong_t)cr3) & 0x000ffffffffff000LL)) -#define CR3_TO_PDE32_VA(cr3) ((pde32_t *)V3_VAddr((void *)(addr_t)(((ulong_t)cr3) & 0xfffff000))) -#define CR3_TO_PDPTRE_VA(cr3) (V3_VAddr((void *)(((ulong_t)cr3) & 0xffffffe0))) +#define CR3_TO_PDE32_VA(cr3) ((pde32_t *)V3_VAddr((void *)(addr_t)(((uint_t)cr3) & 0xfffff000))) +#define CR3_TO_PDPE32PAE_VA(cr3) ((pdpe32pae_t *)V3_VAddr((void *)(addr_t)(((uint_t)cr3) & 0xffffffe0))) #define CR3_TO_PML4E64_VA(cr3) ((pml4e64_t *)V3_VAddr((void *)(addr_t)(((ullong_t)cr3) & 0x000ffffffffff000LL))) @@ -465,6 +465,18 @@ void delete_page_tables_32(pde32_t * pde); void delete_page_tables_32PAE(pdpe32pae_t * pdpe); void delete_page_tables_64(pml4e64_t * pml4); +struct guest_info; + +int v3_translate_guest_pt_32(struct guest_info * info, addr_t guest_cr3, addr_t vaddr, addr_t * paddr); +int v3_translate_guest_pt_32pae(struct guest_info * info, addr_t guest_cr3, addr_t vaddr, addr_t * paddr); +int v3_translate_guest_pt_64(struct guest_info * info, addr_t guest_cr3, addr_t vaddr, addr_t * paddr); + +int v3_translate_host_pt_32(addr_t host_cr3, addr_t vaddr, addr_t * paddr); +int v3_translate_host_pt_32pae(addr_t host_cr3, addr_t vaddr, addr_t * paddr); +int v3_translate_host_pt_64(addr_t host_cr3, addr_t vaddr, addr_t * paddr); + + +/* Should these be static? */ pt_entry_type_t pde32_lookup(pde32_t * pd, addr_t addr, addr_t * entry); pt_entry_type_t pte32_lookup(pte32_t * pt, addr_t addr, addr_t * entry);