diff options
author | jmallett <jmallett@FreeBSD.org> | 2010-04-23 18:53:17 +0000 |
---|---|---|
committer | jmallett <jmallett@FreeBSD.org> | 2010-04-23 18:53:17 +0000 |
commit | 57dd8a9a91e30a2b94ef34d227c41f697831d0cc (patch) | |
tree | 720482e3f931da05b32eb1c4f98e831859ca6edf /sys/mips | |
parent | 62aa81d6a0299b1180ccec6d3ee2a48d02e82701 (diff) | |
download | FreeBSD-src-57dd8a9a91e30a2b94ef34d227c41f697831d0cc.zip FreeBSD-src-57dd8a9a91e30a2b94ef34d227c41f697831d0cc.tar.gz |
Large memory mappings are always CPU local and always done with interrupts
disabled. Be doubly-sure that we don't try to do a TLB shootdown on SMP
systems for those mappings.
Submitted by: C. Jayachandran
Diffstat (limited to 'sys/mips')
-rw-r--r-- | sys/mips/mips/pmap.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/sys/mips/mips/pmap.c b/sys/mips/mips/pmap.c index e3b7daf..32c0f92 100644 --- a/sys/mips/mips/pmap.c +++ b/sys/mips/mips/pmap.c @@ -251,11 +251,11 @@ caddr_t virtual_sys_start = (caddr_t)0; #define PMAP_LMEM_UNMAP() \ pte = pmap_pte(kernel_pmap, sysm->base); \ *pte = PTE_G; \ - pmap_invalidate_page(kernel_pmap, sysm->base); \ + pmap_TLB_invalidate_kernel(sysm->base); \ sysm->valid1 = 0; \ pte = pmap_pte(kernel_pmap, sysm->base + PAGE_SIZE); \ *pte = PTE_G; \ - pmap_invalidate_page(kernel_pmap, sysm->base + PAGE_SIZE); \ + pmap_TLB_invalidate_kernel(sysm->base + PAGE_SIZE); \ sysm->valid2 = 0; \ sched_unpin(); \ intr_restore(intr); \ |