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().
This commit is contained in:
Alan Cox 2003-09-13 21:57:38 +00:00
parent 5515f48ce3
commit 6d66d714c7
2 changed files with 6 additions and 20 deletions

View file

@ -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;
}
/*

View file

@ -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;
}
/*