Module Name:    src
Committed By:   matt
Date:           Tue Aug 11 00:34:29 UTC 2009

Modified Files:
        src/sys/arch/mips/include: cache_ls2.h
        src/sys/arch/mips/mips: cache.c cache_ls2.c

Log Message:
Flush by increasing way, then increasing addr.  flush L1 before L2 (even
though according to the specification it should be needed).  Reset
mips_sdcache_size to 0 so we will configure it.


To generate a diff of this commit:
cvs rdiff -u -r1.1 -r1.2 src/sys/arch/mips/include/cache_ls2.h
cvs rdiff -u -r1.40 -r1.41 src/sys/arch/mips/mips/cache.c
cvs rdiff -u -r1.2 -r1.3 src/sys/arch/mips/mips/cache_ls2.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/mips/include/cache_ls2.h
diff -u src/sys/arch/mips/include/cache_ls2.h:1.1 src/sys/arch/mips/include/cache_ls2.h:1.2
--- src/sys/arch/mips/include/cache_ls2.h:1.1	Fri Aug  7 18:39:10 2009
+++ src/sys/arch/mips/include/cache_ls2.h	Tue Aug 11 00:34:29 2009
@@ -1,4 +1,4 @@
-/*	$NetBSD: cache_ls2.h,v 1.1 2009/08/07 18:39:10 matt Exp $	*/
+/*	$NetBSD: cache_ls2.h,v 1.2 2009/08/11 00:34:29 matt Exp $	*/
 
 /*-
  * Copyright (c) 2009 The NetBSD Foundation, Inc.
@@ -51,22 +51,22 @@
 #define cache_op_ls2_8line_4way(va, op)					\
 	__asm volatile(							\
                 ".set noreorder					\n\t"	\
-                "cache %1, 0x00(%0); cache %1, 0x01(%0)		\n\t"	\
-                "cache %1, 0x02(%0); cache %1, 0x03(%0)		\n\t"	\
-                "cache %1, 0x20(%0); cache %1, 0x21(%0)		\n\t"	\
-                "cache %1, 0x22(%0); cache %1, 0x23(%0)		\n\t"	\
-                "cache %1, 0x40(%0); cache %1, 0x41(%0)		\n\t"	\
-                "cache %1, 0x42(%0); cache %1, 0x43(%0)		\n\t"	\
-                "cache %1, 0x60(%0); cache %1, 0x61(%0)		\n\t"	\
-                "cache %1, 0x62(%0); cache %1, 0x63(%0)		\n\t"	\
-                "cache %1, 0x80(%0); cache %1, 0x81(%0)		\n\t"	\
-                "cache %1, 0x82(%0); cache %1, 0x83(%0)		\n\t"	\
-                "cache %1, 0xa0(%0); cache %1, 0xa1(%0)		\n\t"	\
-                "cache %1, 0xa2(%0); cache %1, 0xa3(%0)		\n\t"	\
-                "cache %1, 0xc0(%0); cache %1, 0xc1(%0)		\n\t"	\
-                "cache %1, 0xc2(%0); cache %1, 0xc3(%0)		\n\t"	\
-                "cache %1, 0xe0(%0); cache %1, 0xe1(%0)		\n\t"	\
-                "cache %1, 0xe2(%0); cache %1, 0xe3(%0)		\n\t"	\
+                "cache %1, 0x00(%0); cache %1, 0x20(%0)		\n\t"	\
+                "cache %1, 0x40(%0); cache %1, 0x60(%0)		\n\t"	\
+                "cache %1, 0x80(%0); cache %1, 0xa0(%0)		\n\t"	\
+                "cache %1, 0xc0(%0); cache %1, 0xe0(%0)		\n\t"	\
+                "cache %1, 0x01(%0); cache %1, 0x21(%0)		\n\t"	\
+                "cache %1, 0x41(%0); cache %1, 0x61(%0)		\n\t"	\
+                "cache %1, 0x81(%0); cache %1, 0xa1(%0)		\n\t"	\
+                "cache %1, 0xc1(%0); cache %1, 0xe1(%0)		\n\t"	\
+                "cache %1, 0x02(%0); cache %1, 0x22(%0)		\n\t"	\
+                "cache %1, 0x42(%0); cache %1, 0x62(%0)		\n\t"	\
+                "cache %1, 0x82(%0); cache %1, 0xa2(%0)		\n\t"	\
+                "cache %1, 0xc2(%0); cache %1, 0xe2(%0)		\n\t"	\
+                "cache %1, 0x03(%0); cache %1, 0x23(%0)		\n\t"	\
+                "cache %1, 0x43(%0); cache %1, 0x63(%0)		\n\t"	\
+                "cache %1, 0x83(%0); cache %1, 0xa3(%0)		\n\t"	\
+                "cache %1, 0xc3(%0); cache %1, 0xe3(%0)		\n\t"	\
                 ".set reorder"						\
             :								\
             : "r" (va), "i" (op)					\

Index: src/sys/arch/mips/mips/cache.c
diff -u src/sys/arch/mips/mips/cache.c:1.40 src/sys/arch/mips/mips/cache.c:1.41
--- src/sys/arch/mips/mips/cache.c:1.40	Sun Aug  9 04:05:03 2009
+++ src/sys/arch/mips/mips/cache.c	Tue Aug 11 00:34:29 2009
@@ -1,4 +1,4 @@
-/*	$NetBSD: cache.c,v 1.40 2009/08/09 04:05:03 matt Exp $	*/
+/*	$NetBSD: cache.c,v 1.41 2009/08/11 00:34:29 matt Exp $	*/
 
 /*
  * Copyright 2001, 2002 Wasabi Systems, Inc.
@@ -68,7 +68,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: cache.c,v 1.40 2009/08/09 04:05:03 matt Exp $");
+__KERNEL_RCSID(0, "$NetBSD: cache.c,v 1.41 2009/08/11 00:34:29 matt Exp $");
 
 #include "opt_cputype.h"
 #include "opt_mips_cache.h"
@@ -661,6 +661,8 @@
 
 		mips3_get_cache_config(csizebase);
 
+		mips_sdcache_size = 0;	/* don't trust config reg */
+
 		if (mips_picache_size / mips_picache_ways > PAGE_SIZE ||
 		    mips_pdcache_size / mips_pdcache_ways > PAGE_SIZE)
 			mips_cache_virtual_alias = 1;

Index: src/sys/arch/mips/mips/cache_ls2.c
diff -u src/sys/arch/mips/mips/cache_ls2.c:1.2 src/sys/arch/mips/mips/cache_ls2.c:1.3
--- src/sys/arch/mips/mips/cache_ls2.c:1.2	Fri Aug  7 23:23:58 2009
+++ src/sys/arch/mips/mips/cache_ls2.c	Tue Aug 11 00:34:29 2009
@@ -1,4 +1,4 @@
-/*	$NetBSD: cache_ls2.c,v 1.2 2009/08/07 23:23:58 matt Exp $	*/
+/*	$NetBSD: cache_ls2.c,v 1.3 2009/08/11 00:34:29 matt Exp $	*/
 
 /*-
  * Copyright (c) 2009 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: cache_ls2.c,v 1.2 2009/08/07 23:23:58 matt Exp $");
+__KERNEL_RCSID(0, "$NetBSD: cache_ls2.c,v 1.3 2009/08/11 00:34:29 matt Exp $");
 
 #include <sys/param.h>
 
@@ -217,10 +217,12 @@
 	va = trunc_line(va);
 
 	for (; va + 8 * 32 <= eva; va += 8 * 32) {
+		cache_op_ls2_8line(va, CACHEOP_LS2_D_HIT_INV);
 		cache_op_ls2_8line(va, CACHEOP_LS2_S_HIT_INV);
 	}
 
 	for (; va < eva; va += 32) {
+		cache_op_ls2_line(va, CACHEOP_LS2_D_HIT_INV);
 		cache_op_ls2_line(va, CACHEOP_LS2_S_HIT_INV);
 	}
 
@@ -235,10 +237,12 @@
 	va = trunc_line(va);
 
 	for (; va + 8 * 32 <= eva; va += 8 * 32) {
+		cache_op_ls2_8line(va, CACHEOP_LS2_D_HIT_WB_INV);
 		cache_op_ls2_8line(va, CACHEOP_LS2_S_HIT_WB_INV);
 	}
 
 	for (; va < eva; va += 32) {
+		cache_op_ls2_line(va, CACHEOP_LS2_D_HIT_WB_INV);
 		cache_op_ls2_line(va, CACHEOP_LS2_S_HIT_WB_INV);
 	}
 
@@ -276,10 +280,12 @@
 	}
 
 	for (; va + 8 * 32 <= eva; va += 8 * 32) {
+		cache_op_ls2_8line_4way(va, CACHEOP_LS2_D_INDEX_WB_INV);
 		cache_op_ls2_8line_4way(va, CACHEOP_LS2_S_INDEX_WB_INV);
 	}
 
 	for (; va < eva; va += 32) {
+		cache_op_ls2_line_4way(va, CACHEOP_LS2_D_INDEX_WB_INV);
 		cache_op_ls2_line_4way(va, CACHEOP_LS2_S_INDEX_WB_INV);
 	}
 

Reply via email to