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

Reply via email to