patch-2.4.22 linux-2.4.22/arch/mips64/mm/tlbex-r4k.S
Next file: linux-2.4.22/arch/mips64/mm/umap.c
Previous file: linux-2.4.22/arch/mips64/mm/tlb-sb1.c
Back to the patch index
Back to the overall index
- Lines: 71
- Date:
2003-08-25 04:44:40.000000000 -0700
- Orig file:
linux-2.4.21/arch/mips64/mm/tlbex-r4k.S
- Orig date:
2002-11-28 15:53:10.000000000 -0800
diff -urN linux-2.4.21/arch/mips64/mm/tlbex-r4k.S linux-2.4.22/arch/mips64/mm/tlbex-r4k.S
@@ -15,6 +15,7 @@
#include <asm/mipsregs.h>
#include <asm/pgtable.h>
#include <asm/stackframe.h>
+#include <asm/war.h>
.data
.comm pgd_current, NR_CPUS * 8, 8
@@ -72,8 +73,9 @@
* Determine that fault address is within vmalloc range.
*/
dla \tmp, ekptbl
- sltu \tmp, \ptr, \tmp
+ slt \tmp, \ptr, \tmp
beqz \tmp, \not_vmalloc # not vmalloc
+ nop
.endm
@@ -96,16 +98,16 @@
__INIT
.align 5
-LEAF(except_vec0)
+LEAF(except_vec0_generic)
.set noat
PANIC("Unused vector called")
1: b 1b
nop
-END(except_vec0)
+END(except_vec0_generic)
/*
- * TLB refill handler for the R4000.
+ * TLB refill handlers for the R4000 and SB1.
* Attention: We may only use 32 instructions / 128 bytes.
*/
.align 5
@@ -116,6 +118,23 @@
nop
END(except_vec1_r4k)
+LEAF(except_vec1_sb1)
+#if BCM1250_M3_WAR
+ dmfc0 k0, CP0_BADVADDR
+ dmfc0 k1, CP0_ENTRYHI
+ xor k0, k1
+ dsrl k0, k0, PAGE_SHIFT+1
+ bnez k0, 1f
+#endif
+ .set noat
+ dla k0, handle_vec1_r4k
+ jr k0
+ nop
+
+1: eret
+ nop
+END(except_vec1_sb1)
+
__FINIT
.align 5
@@ -141,6 +160,7 @@
eret
END(handle_vec1_r4k)
+
__INIT
/*
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)