Example #1
0
static inline
uint64_t get_pte_ia32e (vmi_instance_t vmi,
    addr_t vaddr,
    uint64_t pde,
    addr_t *pte_address)
{
    uint64_t value;
    *pte_address = get_bits_51to12(pde) | get_pt_index_ia32e(vaddr);
    dbprint(VMI_DEBUG_PTLOOKUP, "--PTLookup: pte_address = 0x%.16"PRIx64"\n", *pte_address);
    if(VMI_FAILURE == vmi_read_64_pa(vmi, *pte_address, &value)) {
        value = 0;
    }
    return value;
}
Example #2
0
static inline
status_t get_pte_ia32e (vmi_instance_t vmi,
    addr_t vaddr,
    uint64_t pde,
    addr_t *pte_address,
    uint64_t *pte_value)
{
    *pte_value = 0;
    *pte_address = (pde & VMI_BIT_MASK(12,51)) | get_pt_index_ia32e(vaddr);
    if(VMI_FAILURE == vmi_read_64_pa(vmi, *pte_address, pte_value)) {
        dbprint(VMI_DEBUG_PTLOOKUP, "--PTLookup: failed to read pte_address = 0x%.16"PRIx64"\n", *pte_address);
        return VMI_FAILURE;
    }
    dbprint(VMI_DEBUG_PTLOOKUP, "--PTLookup: pte_address = 0x%.16"PRIx64", pte_value = 0x%.16"PRIx64"\n",
            *pte_address, *pte_value);
    return VMI_SUCCESS;
}