summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sys/amd64/amd64/pmap.c11
-rw-r--r--sys/i386/i386/pmap.c15
2 files changed, 6 insertions, 20 deletions
diff --git a/sys/amd64/amd64/pmap.c b/sys/amd64/amd64/pmap.c
index 76e5d26..999331e 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 b0d6526..2b64cb7 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;
}
/*
OpenPOWER on IntegriCloud