uint64_t get_pdpte_ia32e (vmi_instance_t vmi, addr_t vaddr, uint64_t pml4e)
{
    uint64_t value = 0;
    addr_t pdpte_address = get_bits_51to12(pml4e) | get_pdpt_index_ia32e(vaddr);
    dbprint("--PTLookup: pdpte_address = 0x%.16"PRIx64"\n", pdpte_address);
    vmi_read_64_pa(vmi, pdpte_address, &value);
    return value;
}
uint64_t get_pml4e (vmi_instance_t vmi, addr_t vaddr, reg_t cr3)
{
    uint64_t value = 0;
    addr_t pml4e_address = get_bits_51to12(cr3) | get_pml4_index(vaddr);

    dbprint("--PTLookup pml4e_address = 0x%.16"PRIx64"\n", pml4e_address);
    vmi_read_64_pa(vmi, pml4e_address, &value);
    return value;
}
Beispiel #3
0
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;
}
Beispiel #4
0
static inline
uint64_t get_pml4e (vmi_instance_t vmi,
    addr_t vaddr,
    reg_t cr3,
    addr_t *pml4e_address)
{
    uint64_t value;
    *pml4e_address = get_bits_51to12(cr3) | get_pml4_index(vaddr);
    dbprint(VMI_DEBUG_PTLOOKUP, "--PTLookup pml4e_address = 0x%.16"PRIx64"\n", *pml4e_address);
    if(VMI_FAILURE == vmi_read_64_pa(vmi, *pml4e_address, &value)) {
        value = 0;
    }
    return value;
}
Beispiel #5
0
static inline
uint64_t pdba_base_ia32e (uint64_t pdpe)
{
    return get_bits_51to12(pdpe);
}
Beispiel #6
0
static inline
uint64_t get_paddr_ia32e (addr_t vaddr, uint64_t pte)
{
    return get_bits_51to12(pte) | (vaddr & 0x0000000000000FFFULL);
}
Beispiel #7
0
static inline
uint64_t pte_pfn_ia32e (uint64_t pte)
{
    return get_bits_51to12(pte);
}