FreeBSD/sys/powerpc/aim/mmu_oea.c
/*
 * Remove the given range of addresses from the specified map.
 */
Remove the given range of addresses from the specified map.
Remove the given range of addresses from the specified map .
void
moea_remove(mmu_t mmu, pmap_t pm, vm_offset_t sva, vm_offset_t eva)
{
	struct	pvo_entry *pvo, *tpvo, key;
	rw_wlock(&pvh_global_lock);
	PMAP_LOCK(pm);
	key.pvo_vaddr = sva;
	for (pvo = RB_NFIND(pvo_tree, &pm->pmap_pvo, &key);
	    pvo != NULL && PVO_VADDR(pvo) < eva; pvo = tpvo) {
		tpvo = RB_NEXT(pvo_tree, &pm->pmap_pvo, pvo);
		moea_pvo_remove(pvo, -1);
	}
	PMAP_UNLOCK(pm);
	rw_wunlock(&pvh_global_lock);
}
void moea_remove ( mmu_t mmu , pmap_t pm , vm_offset_t sva , vm_offset_t eva ) { struct pvo_entry * pvo , * tpvo , key ; rw_wlock ( & pvh_global_lock ) ; PMAP_LOCK ( pm ) ; key . pvo_vaddr = sva ; for ( pvo = RB_NFIND ( pvo_tree , & pm -> pmap_pvo , & key ) ; pvo != NULL && PVO_VADDR ( pvo ) < eva ; pvo = tpvo ) { tpvo = RB_NEXT ( pvo_tree , & pm -> pmap_pvo , pvo ) ; moea_pvo_remove ( pvo , -1 ) ; } PMAP_UNLOCK ( pm ) ; rw_wunlock ( & pvh_global_lock ) ; }
Remove the given range of addresses from the specified map.
Remove the given range of addresses from the specified map .