コード例 #1
0
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;
}
コード例 #2
0
ファイル: amd64.c プロジェクト: WaitXie/libvmi
static inline
uint64_t get_pdpte_ia32e (vmi_instance_t vmi,
    addr_t vaddr,
    uint64_t pml4e,
    addr_t *pdpte_address)
{
    uint64_t value;
    *pdpte_address = get_bits_51to12(pml4e) | get_pdpt_index_ia32e(vaddr);
    dbprint(VMI_DEBUG_PTLOOKUP, "--PTLookup: pdpte_address = 0x%.16"PRIx64"\n", *pdpte_address);
    if(VMI_FAILURE == vmi_read_64_pa(vmi, *pdpte_address, &value)) {
        value = 0;
    }
    return value;
}
コード例 #3
0
ファイル: amd64.c プロジェクト: chen0031/libvmi
static inline
status_t get_pdpte_ia32e (vmi_instance_t vmi,
    addr_t vaddr,
    uint64_t pml4e,
    addr_t *pdpte_address,
    uint64_t *pdpte_value)
{
    *pdpte_value = 0;
    *pdpte_address = (pml4e & VMI_BIT_MASK(12,51)) | get_pdpt_index_ia32e(vaddr);
    if(VMI_FAILURE == vmi_read_64_pa(vmi, *pdpte_address, pdpte_value)) {
        dbprint(VMI_DEBUG_PTLOOKUP, "--PTLookup: failed to read pdpte_address = 0x%.16"PRIx64"\n", *pdpte_address);
        return VMI_FAILURE;
    }
    dbprint(VMI_DEBUG_PTLOOKUP, "--PTLookup: pdpte_address = 0x%.16"PRIx64", pdpte_value = 0x%.16"PRIx64"\n",
            *pdpte_address, *pdpte_value);
    return VMI_SUCCESS;
}