Changeset View
Changeset View
Standalone View
Standalone View
sys/powerpc/aim/mmu_oea64.c
Show First 20 Lines • Show All 1,556 Lines • ▼ Show 20 Lines | moea64_extract_and_hold(mmu_t mmu, pmap_t pmap, vm_offset_t va, vm_prot_t prot) | ||||
PMAP_LOCK(pmap); | PMAP_LOCK(pmap); | ||||
retry: | retry: | ||||
pvo = moea64_pvo_find_va(pmap, va & ~ADDR_POFF); | pvo = moea64_pvo_find_va(pmap, va & ~ADDR_POFF); | ||||
if (pvo != NULL && (pvo->pvo_pte.prot & prot) == prot) { | if (pvo != NULL && (pvo->pvo_pte.prot & prot) == prot) { | ||||
if (vm_page_pa_tryrelock(pmap, | if (vm_page_pa_tryrelock(pmap, | ||||
pvo->pvo_pte.pa & LPTE_RPGN, &pa)) | pvo->pvo_pte.pa & LPTE_RPGN, &pa)) | ||||
goto retry; | goto retry; | ||||
m = PHYS_TO_VM_PAGE(pvo->pvo_pte.pa & LPTE_RPGN); | m = PHYS_TO_VM_PAGE(pvo->pvo_pte.pa & LPTE_RPGN); | ||||
vm_page_hold(m); | vm_page_wire(m); | ||||
} | } | ||||
PA_UNLOCK_COND(pa); | PA_UNLOCK_COND(pa); | ||||
PMAP_UNLOCK(pmap); | PMAP_UNLOCK(pmap); | ||||
return (m); | return (m); | ||||
} | } | ||||
static mmu_t installed_mmu; | static mmu_t installed_mmu; | ||||
▲ Show 20 Lines • Show All 1,319 Lines • Show Last 20 Lines |