diff options
author | alc <alc@FreeBSD.org> | 2003-08-22 05:49:29 +0000 |
---|---|---|
committer | alc <alc@FreeBSD.org> | 2003-08-22 05:49:29 +0000 |
commit | 15f81fe316b4b7defea9d5f5127ba0853ed8bfcd (patch) | |
tree | 9d016b623ff70d5ad4feea32e649090fab3515e4 | |
parent | 525c9f0a385a904bd32f0410a1a0c24d58602950 (diff) | |
download | FreeBSD-src-15f81fe316b4b7defea9d5f5127ba0853ed8bfcd.zip FreeBSD-src-15f81fe316b4b7defea9d5f5127ba0853ed8bfcd.tar.gz |
Eliminate the last (direct) use of vm_page_lookup() on the pte object.
-rw-r--r-- | sys/i386/i386/pmap.c | 12 |
1 files changed, 4 insertions, 8 deletions
diff --git a/sys/i386/i386/pmap.c b/sys/i386/i386/pmap.c index 50f181b..6c1d01f 100644 --- a/sys/i386/i386/pmap.c +++ b/sys/i386/i386/pmap.c @@ -1024,19 +1024,15 @@ static int pmap_unuse_pt(pmap_t pmap, vm_offset_t va, vm_page_t mpte) { unsigned ptepindex; + pd_entry_t ptepa; + if (va >= VM_MAXUSER_ADDRESS) return 0; if (mpte == NULL) { ptepindex = (va >> PDRSHIFT); - if (pmap->pm_pteobj->root && - (pmap->pm_pteobj->root->pindex == ptepindex)) { - mpte = pmap->pm_pteobj->root; - } else { - while ((mpte = vm_page_lookup(pmap->pm_pteobj, ptepindex)) != NULL && - vm_page_sleep_if_busy(mpte, FALSE, "pulook")) - vm_page_lock_queues(); - } + ptepa = pmap->pm_pdir[ptepindex]; + mpte = PHYS_TO_VM_PAGE(ptepa); } return pmap_unwire_pte_hold(pmap, mpte); |