Title: [5301] trunk/arch/blackfin/mach-common: Fix BUG [#4412] BF533 + 0.5 silicon + MPU + UART PIO -> crash
- Revision
- 5301
- Author
- hennerich
- Date
- 2008-09-17 04:34:11 -0500 (Wed, 17 Sep 2008)
Log Message
Fix BUG [#4412] BF533 + 0.5 silicon + MPU + UART PIO -> crash
Apply ANOMALY_05000283 & ANOMALY_05000315 Workaround also to the
EXCEPTION path.
Cover evt_ivhw also with ANOMALY_05000315
The Workaround needs to be prior to accesses (either read or write) to
any system MMR.
Modified Paths
Diff
Modified: trunk/arch/blackfin/mach-common/entry.S (5300 => 5301)
--- trunk/arch/blackfin/mach-common/entry.S 2008-09-17 08:11:41 UTC (rev 5300)
+++ trunk/arch/blackfin/mach-common/entry.S 2008-09-17 09:34:11 UTC (rev 5301)
@@ -484,6 +484,15 @@
[--sp] = ASTAT;
[--sp] = (R7:6,P5:4);
+#if ANOMALY_05000283 || ANOMALY_05000315
+ cc = r7 == r7;
+ p5.h = HI(CHIPID);
+ p5.l = LO(CHIPID);
+ if cc jump 1f;
+ r7.l = W[p5];
+1:
+#endif
+
#ifdef CONFIG_DEBUG_DOUBLEFAULT
/*
* Save these registers, as they are only valid in exception context
@@ -1020,6 +1029,15 @@
SAVE_ALL_SYS
trace_buffer_stop(p0,r0);
+#if ANOMALY_05000283 || ANOMALY_05000315
+ cc = r5 == r5;
+ p4.h = HI(CHIPID);
+ p4.l = LO(CHIPID);
+ if cc jump 1f;
+ r5.l = W[p4];
+1:
+#endif
+
/* Turn caches off, to ensure we don't get double exceptions */
P4.L = LO(IMEM_CONTROL);
Modified: trunk/arch/blackfin/mach-common/interrupt.S (5300 => 5301)
--- trunk/arch/blackfin/mach-common/interrupt.S 2008-09-17 08:11:41 UTC (rev 5300)
+++ trunk/arch/blackfin/mach-common/interrupt.S 2008-09-17 09:34:11 UTC (rev 5301)
@@ -143,7 +143,7 @@
fp = 0;
#endif
-#if ANOMALY_05000283
+#if ANOMALY_05000283 || ANOMALY_05000315
cc = r7 == r7;
p5.h = HI(CHIPID);
p5.l = LO(CHIPID);
_______________________________________________
Linux-kernel-commits mailing list
[email protected]
http://blackfin.uclinux.org/mailman/listinfo/linux-kernel-commits