Source-Changes-HG archive

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

[src/trunk]: src/sys/arch/arm/arm Apply some errata workarounds



details:   https://anonhg.NetBSD.org/src/rev/9b680aec5c6c
branches:  trunk
changeset: 331079:9b680aec5c6c
user:      skrll <skrll%NetBSD.org@localhost>
date:      Wed Jul 30 20:52:18 2014 +0000

description:
Apply some errata workarounds

diffstat:

 sys/arch/arm/arm/cpufunc.c |  21 ++++++++++++++++++---
 1 files changed, 18 insertions(+), 3 deletions(-)

diffs (44 lines):

diff -r 7f109ecf41bc -r 9b680aec5c6c sys/arch/arm/arm/cpufunc.c
--- a/sys/arch/arm/arm/cpufunc.c        Wed Jul 30 19:33:56 2014 +0000
+++ b/sys/arch/arm/arm/cpufunc.c        Wed Jul 30 20:52:18 2014 +0000
@@ -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 @@
        }
 
        /*
-        * 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;
        }
 



Home | Main Index | Thread Index | Old Index