patch-2.4.19 linux-2.4.19/arch/arm/mm/proc-sa110.S
Next file: linux-2.4.19/arch/arm/nwfpe/ARM-gcc.h
Previous file: linux-2.4.19/arch/arm/mm/proc-arm926.S
Back to the patch index
Back to the overall index
- Lines: 35
- Date:
Fri Aug 2 17:39:42 2002
- Orig file:
linux-2.4.18/arch/arm/mm/proc-sa110.S
- Orig date:
Thu Oct 25 13:53:46 2001
diff -urN linux-2.4.18/arch/arm/mm/proc-sa110.S linux-2.4.19/arch/arm/mm/proc-sa110.S
@@ -69,24 +69,29 @@
/*
* cpu_sa110_data_abort()
*
- * obtain information about current aborted instruction
+ * obtain information about current aborted instruction.
+ * Note: we read user space. This means we might cause a data
+ * abort here if the I-TLB and D-TLB aren't seeing the same
+ * picture. Unfortunately, this does happen. We live with it.
*
- * r0 = address of aborted instruction
+ * r2 = address of aborted instruction
+ * r3 = cpsr
*
* Returns:
* r0 = address of abort
* r1 != 0 if writing
* r3 = FSR
+ * r4 = corrupted
*/
.align 5
ENTRY(cpu_sa110_data_abort)
ENTRY(cpu_sa1100_data_abort)
- ldr r1, [r0] @ read aborted instruction
+ mrc p15, 0, r3, c5, c0, 0 @ get FSR
mrc p15, 0, r0, c6, c0, 0 @ get FAR
+ ldr r1, [r2] @ read aborted instruction
+ and r3, r3, #255
tst r1, r1, lsr #21 @ C = bit 20
- mrc p15, 0, r3, c5, c0, 0 @ get FSR
sbc r1, r1, r1 @ r1 = C - 1
- and r3, r3, #255
mov pc, lr
/*
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)