Module Name:    src
Committed By:   tsutsui
Date:           Tue May 14 14:11:43 UTC 2013

Modified Files:
        src/sys/arch/sh3/sh3: cache_sh4.c

Log Message:
Don't call sh4_icache_sync_all() before sh_cache_ops is initialized.
Instead, use SH4_EMODE_CACHE_FLUSH() or SH4_CACHE_FLUSH() macro to
invalidate cache before initializing CCR.
This seems to suppress random file system corruption on wd(4) at acardide(4)
(which uses bus-master DMA and calls many cache flush ops) during pkgsrc
packages builds on landisk.


To generate a diff of this commit:
cvs rdiff -u -r1.23 -r1.24 src/sys/arch/sh3/sh3/cache_sh4.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/sh3/sh3/cache_sh4.c
diff -u src/sys/arch/sh3/sh3/cache_sh4.c:1.23 src/sys/arch/sh3/sh3/cache_sh4.c:1.24
--- src/sys/arch/sh3/sh3/cache_sh4.c:1.23	Wed Dec 12 16:24:49 2012
+++ src/sys/arch/sh3/sh3/cache_sh4.c	Tue May 14 14:11:43 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: cache_sh4.c,v 1.23 2012/12/12 16:24:49 tsutsui Exp $	*/
+/*	$NetBSD: cache_sh4.c,v 1.24 2013/05/14 14:11:43 tsutsui Exp $	*/
 
 /*-
  * Copyright (c) 2002 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: cache_sh4.c,v 1.23 2012/12/12 16:24:49 tsutsui Exp $");
+__KERNEL_RCSID(0, "$NetBSD: cache_sh4.c,v 1.24 2013/05/14 14:11:43 tsutsui Exp $");
 
 #include "opt_cache.h"
 
@@ -118,8 +118,11 @@ sh4_cache_config(void)
 	r |= SH4_CCR_CB;
 #endif
 
-	sh4_icache_sync_all();
 	RUN_P2;
+	if (r & SH4_CCR_EMODE)
+		SH4_EMODE_CACHE_FLUSH();
+	else
+		SH4_CACHE_FLUSH();
 	_reg_write_4(SH4_CCR, SH4_CCR_ICI|SH4_CCR_OCI);
 	_reg_write_4(SH4_CCR, r);
 	RUN_P1;

Reply via email to