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;