Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/netbsd-1-6]: src/sys/arch/sparc64/sparc64 Pull up rev 1.126 via patch (r...
details: https://anonhg.NetBSD.org/src/rev/5e168eeaffcd
branches: netbsd-1-6
changeset: 529065:5e168eeaffcd
user: lukem <lukem%NetBSD.org@localhost>
date: Wed Sep 04 14:01:41 2002 +0000
description:
Pull up rev 1.126 via patch (requested by chuq in ticket #761):
add back some cache flushes that are actually necessary.
any time we remove all access to a given virtual page,
we must invalidate the (write-through) L1 dcache.
pmap_remove() still had it, but pmap_kremove(), pmap_clear_reference()
and pmap_page_protect(VM_PROT_NONE) didn't and needed it.
fixes PR 18040.
diffstat:
sys/arch/sparc64/sparc64/pmap.c | 7 ++++++-
1 files changed, 6 insertions(+), 1 deletions(-)
diffs (42 lines):
diff -r 1452cb89423b -r 5e168eeaffcd sys/arch/sparc64/sparc64/pmap.c
--- a/sys/arch/sparc64/sparc64/pmap.c Wed Sep 04 13:57:34 2002 +0000
+++ b/sys/arch/sparc64/sparc64/pmap.c Wed Sep 04 14:01:41 2002 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: pmap.c,v 1.120.2.3 2002/06/24 23:00:02 lukem Exp $ */
+/* $NetBSD: pmap.c,v 1.120.2.4 2002/09/04 14:01:41 lukem Exp $ */
#undef NO_VCACHE /* Don't forget the locked TLB in dostart */
#define HWREF
/*
@@ -2020,6 +2020,8 @@
{
struct pmap *pm = pmap_kernel();
int64_t data;
+ vaddr_t flushva = va;
+ vsize_t flushsize = size;
int i, s, flush = 0;
ASSERT(va < INTSTACK || va > EINTSTACK);
@@ -2098,6 +2100,7 @@
#ifdef DEBUG
remove_stats.flushes ++;
#endif
+ cache_flush_virt(flushva, flushsize);
}
simple_unlock(&pm->pm_lock);
splx(s);
@@ -2921,6 +2924,7 @@
}
}
splx(s);
+ dcache_flush_page(pa);
pv_check();
#ifdef DEBUG
if (pmap_is_referenced(pg)) {
@@ -3286,6 +3290,7 @@
}
}
splx(s);
+ dcache_flush_page(pa);
}
/* We should really only flush the pages we demapped. */
pv_check();
Home |
Main Index |
Thread Index |
Old Index