Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/sys/arch/sparc/sparc srmmu_cache_flush: when flushing per-pa...



details:   https://anonhg.NetBSD.org/src/rev/78f1aa589740
branches:  trunk
changeset: 542017:78f1aa589740
user:      pk <pk%NetBSD.org@localhost>
date:      Mon Jan 20 22:15:54 2003 +0000

description:
srmmu_cache_flush: when flushing per-page and doing more than one page,
we might be crossing a segment boundary.

diffstat:

 sys/arch/sparc/sparc/cache.c |  6 ++++--
 1 files changed, 4 insertions(+), 2 deletions(-)

diffs (22 lines):

diff -r d9ff951a197f -r 78f1aa589740 sys/arch/sparc/sparc/cache.c
--- a/sys/arch/sparc/sparc/cache.c      Mon Jan 20 22:11:15 2003 +0000
+++ b/sys/arch/sparc/sparc/cache.c      Mon Jan 20 22:15:54 2003 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: cache.c,v 1.76 2003/01/20 21:56:34 pk Exp $ */
+/*     $NetBSD: cache.c,v 1.77 2003/01/20 22:15:54 pk Exp $ */
 
 /*
  * Copyright (c) 1996
@@ -797,9 +797,11 @@
                        sta(p, ASI_IDCACHELFP, 0);
 #if defined(MULTIPROCESSOR)
                if (cpuinfo.cpu_type == CPUTYP_HS_MBUS) {
-                       /* Just flush the segment from the TLB */
+                       /* Just flush the segment(s) from the TLB */
+                       /* XXX - assumes CACHE_FLUSH_MAGIC <= NBPSG */
                        int va = (int)base & ~SGOFSET;
                        sta(va | ASI_SRMMUFP_L2, ASI_SRMMUFP, 0);
+                       sta((va+NBPSG) | ASI_SRMMUFP_L2, ASI_SRMMUFP, 0);
                }
 #endif
                setcontext4m(octx);



Home | Main Index | Thread Index | Old Index