Changeset View
Changeset View
Standalone View
Standalone View
sys/powerpc/aim/mmu_oea64.c
Show First 20 Lines • Show All 2,832 Lines • ▼ Show 20 Lines | |||||
void | void | ||||
moea64_sync_icache(mmu_t mmu, pmap_t pm, vm_offset_t va, vm_size_t sz) | moea64_sync_icache(mmu_t mmu, pmap_t pm, vm_offset_t va, vm_size_t sz) | ||||
{ | { | ||||
struct pvo_entry *pvo; | struct pvo_entry *pvo; | ||||
vm_offset_t lim; | vm_offset_t lim; | ||||
vm_paddr_t pa; | vm_paddr_t pa; | ||||
vm_size_t len; | vm_size_t len; | ||||
if (__predict_false(pm == NULL)) | |||||
pm = &td->td_proc->p_vmspace->vm_pmap; | |||||
PMAP_LOCK(pm); | PMAP_LOCK(pm); | ||||
while (sz > 0) { | while (sz > 0) { | ||||
lim = round_page(va+1); | lim = round_page(va+1); | ||||
len = MIN(lim - va, sz); | len = MIN(lim - va, sz); | ||||
pvo = moea64_pvo_find_va(pm, va & ~ADDR_POFF); | pvo = moea64_pvo_find_va(pm, va & ~ADDR_POFF); | ||||
if (pvo != NULL && !(pvo->pvo_pte.pa & LPTE_I)) { | if (pvo != NULL && !(pvo->pvo_pte.pa & LPTE_I)) { | ||||
pa = (pvo->pvo_pte.pa & LPTE_RPGN) | (va & ADDR_POFF); | pa = (pvo->pvo_pte.pa & LPTE_RPGN) | (va & ADDR_POFF); | ||||
moea64_syncicache(mmu, pm, va, pa, len); | moea64_syncicache(mmu, pm, va, pa, len); | ||||
▲ Show 20 Lines • Show All 77 Lines • Show Last 20 Lines |