summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoralc <alc@FreeBSD.org>2003-08-22 05:49:29 +0000
committeralc <alc@FreeBSD.org>2003-08-22 05:49:29 +0000
commit15f81fe316b4b7defea9d5f5127ba0853ed8bfcd (patch)
tree9d016b623ff70d5ad4feea32e649090fab3515e4
parent525c9f0a385a904bd32f0410a1a0c24d58602950 (diff)
downloadFreeBSD-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.c12
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);
OpenPOWER on IntegriCloud