From 6d66d714c7330a5a7d4691bc9bfd3e4b0754e596 Mon Sep 17 00:00:00 2001 From: Alan Cox Date: Sat, 13 Sep 2003 21:57:38 +0000 Subject: [PATCH] Simplify (and micro-optimize) pmap_unuse_pt(): Only one caller, pmap_remove_pte(), passed NULL instead of the required page table page to pmap_unuse_pt(). Compute the necessary page table page in pmap_remove_pte(). Also, remove some unreachable code from pmap_remove_pte(). --- sys/amd64/amd64/pmap.c | 11 +++-------- sys/i386/i386/pmap.c | 15 +++------------ 2 files changed, 6 insertions(+), 20 deletions(-) diff --git a/sys/amd64/amd64/pmap.c b/sys/amd64/amd64/pmap.c index 76e5d26ab7f..999331e2dd4 100644 --- a/sys/amd64/amd64/pmap.c +++ b/sys/amd64/amd64/pmap.c @@ -986,10 +986,6 @@ pmap_unuse_pt(pmap_t pmap, vm_offset_t va, vm_page_t mpte) if (va >= VM_MAXUSER_ADDRESS) return 0; - if (mpte == NULL) { - mpte = PHYS_TO_VM_PAGE(*pmap_pde(pmap, va)); - } - return pmap_unwire_pte_hold(pmap, va, mpte); } @@ -1467,7 +1463,7 @@ static int pmap_remove_pte(pmap_t pmap, pt_entry_t *ptq, vm_offset_t va) { pt_entry_t oldpte; - vm_page_t m; + vm_page_t m, mpte; oldpte = pte_load_clear(ptq); if (oldpte & PG_W) @@ -1496,10 +1492,9 @@ pmap_remove_pte(pmap_t pmap, pt_entry_t *ptq, vm_offset_t va) vm_page_flag_set(m, PG_REFERENCED); return pmap_remove_entry(pmap, m, va); } else { - return pmap_unuse_pt(pmap, va, NULL); + mpte = PHYS_TO_VM_PAGE(*pmap_pde(pmap, va)); + return pmap_unuse_pt(pmap, va, mpte); } - - return 0; } /* diff --git a/sys/i386/i386/pmap.c b/sys/i386/i386/pmap.c index b0d6526ccd1..2b64cb74623 100644 --- a/sys/i386/i386/pmap.c +++ b/sys/i386/i386/pmap.c @@ -1048,18 +1048,10 @@ pmap_unwire_pte_hold(pmap_t pmap, vm_page_t m) 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); - ptepa = pmap->pm_pdir[ptepindex]; - mpte = PHYS_TO_VM_PAGE(ptepa); - } - return pmap_unwire_pte_hold(pmap, mpte); } @@ -1601,7 +1593,7 @@ static int pmap_remove_pte(pmap_t pmap, pt_entry_t *ptq, vm_offset_t va) { pt_entry_t oldpte; - vm_page_t m; + vm_page_t m, mpte; oldpte = pte_load_clear(ptq); if (oldpte & PG_W) @@ -1630,10 +1622,9 @@ pmap_remove_pte(pmap_t pmap, pt_entry_t *ptq, vm_offset_t va) vm_page_flag_set(m, PG_REFERENCED); return pmap_remove_entry(pmap, m, va); } else { - return pmap_unuse_pt(pmap, va, NULL); + mpte = PHYS_TO_VM_PAGE(*pmap_pde(pmap, va)); + return pmap_unuse_pt(pmap, va, mpte); } - - return 0; } /* -- 2.45.2