static inline uint64_t get_pde_ia32e (vmi_instance_t vmi, addr_t vaddr, uint64_t pdpte, addr_t *pde_address) { uint64_t value; *pde_address = get_bits_51to12(pdpte) | get_pd_index_ia32e(vaddr); dbprint(VMI_DEBUG_PTLOOKUP, "--PTLookup: pde_address = 0x%.16"PRIx64"\n", *pde_address); if(VMI_FAILURE == vmi_read_64_pa(vmi, *pde_address, &value)) { value = 0; } return value; }
static inline status_t get_pde_ia32e (vmi_instance_t vmi, addr_t vaddr, uint64_t pdpte, addr_t *pde_address, addr_t *pde_value) { *pde_value = 0; *pde_address = (pdpte & VMI_BIT_MASK(12,51)) | get_pd_index_ia32e(vaddr); if(VMI_FAILURE == vmi_read_64_pa(vmi, *pde_address, pde_value)) { dbprint(VMI_DEBUG_PTLOOKUP, "--PTLookup: failed to read pde_address = 0x%.16"PRIx64"\n", *pde_address); return VMI_FAILURE; } dbprint(VMI_DEBUG_PTLOOKUP, "--PTLookup: pde_address = 0x%.16"PRIx64"pde_value= 0x%.16"PRIx64"\n", *pde_address, *pde_value); return VMI_SUCCESS; }