aboutsummaryrefslogtreecommitdiff
path: root/sys
diff options
context:
space:
mode:
authorAlan Cox <alc@FreeBSD.org>2004-09-22 05:01:48 +0000
committerAlan Cox <alc@FreeBSD.org>2004-09-22 05:01:48 +0000
commita971139680b3d7aa8e12b1a0f367a47a2986a180 (patch)
treee61fba398388d4bbe050157107a9f6404efd8940 /sys
parent2e2e32b201a0ea3c925a883dcd35fc7ccf17d39b (diff)
Notes
Diffstat (limited to 'sys')
-rw-r--r--sys/amd64/amd64/pmap.c13
-rw-r--r--sys/i386/i386/pmap.c15
2 files changed, 11 insertions, 17 deletions
diff --git a/sys/amd64/amd64/pmap.c b/sys/amd64/amd64/pmap.c
index d3ce8499b075..0af74de47a50 100644
--- a/sys/amd64/amd64/pmap.c
+++ b/sys/amd64/amd64/pmap.c
@@ -1014,13 +1014,12 @@ _pmap_unwire_pte_hold(pmap_t pmap, vm_offset_t va, vm_page_t m)
pdppg = PHYS_TO_VM_PAGE(*pmap_pml4e(pmap, va) & PG_FRAME);
pmap_unwire_pte_hold(pmap, va, pdppg);
}
- if (pmap_is_current(pmap)) {
- /*
- * Do an invltlb to make the invalidated mapping
- * take effect immediately.
- */
- pmap_invalidate_page(pmap, pteva);
- }
+
+ /*
+ * Do an invltlb to make the invalidated mapping
+ * take effect immediately.
+ */
+ pmap_invalidate_page(pmap, pteva);
vm_page_free_zero(m);
atomic_subtract_int(&cnt.v_wire_count, 1);
diff --git a/sys/i386/i386/pmap.c b/sys/i386/i386/pmap.c
index 1fe7e6e7619c..f6d52a19663a 100644
--- a/sys/i386/i386/pmap.c
+++ b/sys/i386/i386/pmap.c
@@ -1030,18 +1030,13 @@ _pmap_unwire_pte_hold(pmap_t pmap, vm_page_t m)
*/
pmap->pm_pdir[m->pindex] = 0;
--pmap->pm_stats.resident_count;
+
/*
- * We never unwire a kernel page table page, making a
- * check for the kernel_pmap unnecessary.
+ * Do an invltlb to make the invalidated mapping
+ * take effect immediately.
*/
- if ((pmap->pm_pdir[PTDPTDI] & PG_FRAME) == (PTDpde[0] & PG_FRAME)) {
- /*
- * Do an invltlb to make the invalidated mapping
- * take effect immediately.
- */
- pteva = VM_MAXUSER_ADDRESS + i386_ptob(m->pindex);
- pmap_invalidate_page(pmap, pteva);
- }
+ pteva = VM_MAXUSER_ADDRESS + i386_ptob(m->pindex);
+ pmap_invalidate_page(pmap, pteva);
vm_page_free_zero(m);
atomic_subtract_int(&cnt.v_wire_count, 1);