diff options
| author | Alan Cox <alc@FreeBSD.org> | 2004-09-22 05:01:48 +0000 |
|---|---|---|
| committer | Alan Cox <alc@FreeBSD.org> | 2004-09-22 05:01:48 +0000 |
| commit | a971139680b3d7aa8e12b1a0f367a47a2986a180 (patch) | |
| tree | e61fba398388d4bbe050157107a9f6404efd8940 /sys | |
| parent | 2e2e32b201a0ea3c925a883dcd35fc7ccf17d39b (diff) | |
Notes
Diffstat (limited to 'sys')
| -rw-r--r-- | sys/amd64/amd64/pmap.c | 13 | ||||
| -rw-r--r-- | sys/i386/i386/pmap.c | 15 |
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); |
