Module Name: src
Committed By: skrll
Date: Wed Jul 30 20:52:18 UTC 2014
Modified Files:
src/sys/arch/arm/arm: cpufunc.c
Log Message:
Apply some errata workarounds
To generate a diff of this commit:
cvs rdiff -u -r1.148 -r1.149 src/sys/arch/arm/arm/cpufunc.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/arm/arm/cpufunc.c
diff -u src/sys/arch/arm/arm/cpufunc.c:1.148 src/sys/arch/arm/arm/cpufunc.c:1.149
--- src/sys/arch/arm/arm/cpufunc.c:1.148 Sun Jul 27 21:31:34 2014
+++ src/sys/arch/arm/arm/cpufunc.c Wed Jul 30 20:52:18 2014
@@ -1,4 +1,4 @@
-/* $NetBSD: cpufunc.c,v 1.148 2014/07/27 21:31:34 skrll Exp $ */
+/* $NetBSD: cpufunc.c,v 1.149 2014/07/30 20:52:18 skrll Exp $ */
/*
* arm7tdmi support code Copyright (c) 2001 John Fremlin
@@ -49,7 +49,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: cpufunc.c,v 1.148 2014/07/27 21:31:34 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: cpufunc.c,v 1.149 2014/07/30 20:52:18 skrll Exp $");
#include "opt_compat_netbsd.h"
#include "opt_cpuoptions.h"
@@ -3204,9 +3204,24 @@ arm11x6_setup(char *args)
}
/*
- * Enable an errata workaround
+ * This enables the workaround for the following ARM1176 r0pX
+ * errata.
+ *
+ * 394601: In low interrupt latency configuration, interrupted clean
+ * and invalidate operation may not clean dirty data.
+ *
+ * 716151: Clean Data Cache line by MVA can corrupt subsequent
+ * stores to the same cache line.
+ *
+ * 714068: Prefetch Instruction Cache Line or Invalidate Instruction
+ * Cache Line by MVA can cause deadlock.
*/
if ((cpuid & CPU_ID_CPU_MASK) == CPU_ID_ARM1176JZS) { /* ARM1176JZSr0 */
+ /* 394601 and 716151 */
+ cpuctrl |= CPU_CONTROL_FI_ENABLE;
+ auxctrl |= ARM1176_AUXCTL_FIO;
+
+ /* 714068 */
auxctrl |= ARM1176_AUXCTL_PHD;
}