Title: [5247] trunk/arch/blackfin/mach-common/entry.S: When looking for double faults, also look for HW errors
- Revision
- 5247
- Author
- rgetz
- Date
- 2008-09-05 10:18:14 -0500 (Fri, 05 Sep 2008)
Log Message
When looking for double faults, also look for HW errors
Modified Paths
Diff
Modified: trunk/arch/blackfin/mach-common/entry.S (5246 => 5247)
--- trunk/arch/blackfin/mach-common/entry.S 2008-09-05 15:04:13 UTC (rev 5246)
+++ trunk/arch/blackfin/mach-common/entry.S 2008-09-05 15:18:14 UTC (rev 5247)
@@ -130,6 +130,7 @@
call __cplb_hdr;
#endif
+#ifdef CONFIG_DEBUG_DOUBLEFAULT
/* While we were processing this, did we double fault? */
r7 = SEQSTAT; /* reason code is in bit 5:0 */
r6.l = lo(SEQSTAT_EXCAUSE);
@@ -138,8 +139,8 @@
r6 = 0x25;
CC = R7 == R6;
if CC JUMP _double_fault;
+#endif
-
DEBUG_HWTRACE_RESTORE(p5, r7)
RESTORE_ALL_SYS
SP = EX_SCRATCH_REG;
@@ -270,6 +271,15 @@
r6 = 0x25;
CC = R7 == R6;
if CC JUMP _double_fault;
+
+ /* Did we cause a HW error? */
+ p5.l = lo(ILAT);
+ p5.h = hi(ILAT);
+ r6 = [p5];
+ r7 = 0x20; /* Did I just cause anther HW error? */
+ r7 = r7 & r1;
+ CC = R7 == R6;
+ if CC JUMP _double_fault;
#endif
(R7:6,P5:4) = [sp++];
@@ -446,6 +456,17 @@
call _trap_c;
SP += 12;
+#ifdef CONFIG_DEBUG_DOUBLEFAULT
+ /* Grab ILAT */
+ p2.l = lo(ILAT);
+ p2.h = hi(ILAT);
+ r0 = [p2];
+ r1 = 0x20; /* Did I just cause anther HW error? */
+ r0 = r0 & r1;
+ CC = R0 == R1;
+ if CC JUMP _double_fault;
+#endif
+
call _ret_from_exception;
RESTORE_ALL_SYS
rti;
_______________________________________________
Linux-kernel-commits mailing list
[email protected]
http://blackfin.uclinux.org/mailman/listinfo/linux-kernel-commits