static status_t linux_filemode_32bit_init(vmi_instance_t vmi,
        addr_t swapper_pg_dir,
        addr_t boundary,
        addr_t pa, addr_t va)
{
    addr_t test = 0;
    vmi->page_mode = VMI_PM_LEGACY;
    if (VMI_SUCCESS == arch_init(vmi)) {
        if ( VMI_SUCCESS == vmi_pagetable_lookup(vmi, swapper_pg_dir - boundary, va, &test) &&
                test == pa) {
            vmi->kpgd = swapper_pg_dir - boundary;
            return VMI_SUCCESS;
        }
    }
 
    vmi->page_mode = VMI_PM_PAE;
    if (VMI_SUCCESS == arch_init(vmi)) {
        if ( VMI_SUCCESS == vmi_pagetable_lookup(vmi, swapper_pg_dir - boundary, va, &test) &&
                test == pa) {
            vmi->kpgd = swapper_pg_dir - boundary;
            return VMI_SUCCESS;
        }
    }
 
    vmi->page_mode = VMI_PM_AARCH32;
    if (VMI_SUCCESS == arch_init(vmi)) {
        if ( VMI_SUCCESS == vmi_pagetable_lookup(vmi, swapper_pg_dir - boundary, va, &test) &&
                test == pa) {
            vmi->kpgd = swapper_pg_dir - boundary;
            return VMI_SUCCESS;
        }
    }
 
    return VMI_FAILURE;
}

arch_init()


🌱 Back to Garden

1 item under this folder.