SB1250 Pass1 Cache Workaround

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

 



A recent change to arch/mips/mm/cex-sb1.S dropped the workaround 
for the SB1250 pass 1 spurious cache exception problem (yes, some
of us still have SWARMs with pass 1 parts...)

Here's a patch to restore the workaround, tested/verified on a 
SWARM with pass1 SB1250. It also removes the #include <asm/processor.h> 
which (as pointed out recently) causes grief for the assembler.

  - Lance

===================================================================
RCS file: /home/cvs/linux/arch/mips/mm/cex-sb1.S,v
retrieving revision 1.13
diff -u -r1.13 cex-sb1.S
--- cex-sb1.S	14 Jan 2004 18:46:21 -0000	1.13
+++ cex-sb1.S	10 Feb 2004 17:30:08 -0000
@@ -23,7 +23,6 @@
 #include <asm/mipsregs.h>
 #include <asm/stackframe.h>
 #include <asm/cacheops.h>
-#include <asm/processor.h>
 #include <asm/sibyte/board.h>
 
 #define C0_ERRCTL     $26             /* CP0: Error info */
@@ -83,6 +82,19 @@
 	 mtc0	$0,C0_CERR_D
 
 attempt_recovery:
+#ifdef CONFIG_SB1_PASS_1_WORKAROUNDS
+	# look for signature of spurious CErr
+	lui	k0, 0x4000
+	bne	k0, k1, 1f
+	 mfc0	k1, C0_CERR_I, 1
+	lui	k0, 0xffe0
+	and	k1, k0, k1
+	lui	k0, 0x0200
+	beq	k0, k1, recovered 
+	 mtc0	$0,C0_CERR_D
+1:
+#endif
+
 	/*
 	 * k0 has C0_ERRCTL << 1, which puts 'DC' at bit 31.  Any
 	 * Dcache errors we can recover from will take more extensive



[Index of Archives]     [Linux MIPS Home]     [LKML Archive]     [Linux ARM Kernel]     [Linux ARM]     [Linux]     [Git]     [Yosemite News]     [Linux SCSI]     [Linux Hams]

  Powered by Linux