PAGE_SIZE_4M
if (va < start || va >= start+PAGE_SIZE_4M)
return (int)(start+PAGE_SIZE_4M - va);
len = roundup2(len + (rva & PAGE_MASK_4M), PAGE_SIZE_4M);
pa = OF_alloc_phys(PAGE_SIZE_4M, PAGE_SIZE_4M);
mva = OF_claim_virt(va, PAGE_SIZE_4M);
kvamap_enter(va, PAGE_SIZE_4M);
len -= len > PAGE_SIZE_4M ? PAGE_SIZE_4M : len;
va += PAGE_SIZE_4M;
OF_free_phys(pa, PAGE_SIZE_4M);
pa = OF_alloc_phys(PAGE_SIZE_4M, PAGE_SIZE_4M);
mva = OF_claim_virt(va, PAGE_SIZE_4M);
kvamap_enter(va, PAGE_SIZE_4M);
len -= len > PAGE_SIZE_4M ? PAGE_SIZE_4M : len;
va += PAGE_SIZE_4M;
OF_free_phys(pa, PAGE_SIZE_4M);
len = roundup2(len + (rva & PAGE_MASK_4M), PAGE_SIZE_4M);
if (OF_claim((void *)(long)va, len, PAGE_SIZE_4M) == (void*)-1){
#define PAGE_MASK_4M (PAGE_SIZE_4M-1)
ektext = roundup((vaddr_t)etext, PAGE_SIZE_4M);
ektextp = roundup(pmap_kextract((vaddr_t)etext), PAGE_SIZE_4M);
ekdata = roundup(kernelend, PAGE_SIZE_4M);
ekdatap = roundup(pmap_kextract(kernelend), PAGE_SIZE_4M);