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