ARM: entry: prefetch abort helper: pass aborted pc in r4 rather than r0
authorRussell King <rmk+kernel@arm.linux.org.uk>
Sat, 25 Jun 2011 18:25:02 +0000 (19:25 +0100)
committerRussell King <rmk+kernel@arm.linux.org.uk>
Thu, 30 Jun 2011 10:04:59 +0000 (11:04 +0100)
This avoids unnecessary instructions for CPUs which implement the IFAR
(instruction fault address register).

Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
arch/arm/kernel/entry-armv.S
arch/arm/mm/pabort-legacy.S
arch/arm/mm/pabort-v6.S
arch/arm/mm/pabort-v7.S

index 582bb23..d644d02 100644 (file)
@@ -45,7 +45,7 @@
        .endm
 
        .macro  pabt_helper
-       mov     r0, r4                  @ pass address of aborted instruction.
+       @ PABORT handler takes fault address in r4
 #ifdef MULTI_PABORT
        ldr     ip, .LCprocfns
        mov     lr, pc
index 87970eb..8a5d8aa 100644 (file)
@@ -4,7 +4,7 @@
 /*
  * Function: legacy_pabort
  *
- * Params  : r0 = address of aborted instruction
+ * Params  : r4 = address of aborted instruction
  *
  * Returns : r0 = address of abort
  *        : r1 = Simulated IFSR with section translation fault status
@@ -14,6 +14,7 @@
 
        .align  5
 ENTRY(legacy_pabort)
+       mov     r0, r4
        mov     r1, #5
        mov     pc, lr
 ENDPROC(legacy_pabort)
index 06e3d1e..eaac1cb 100644 (file)
@@ -4,7 +4,7 @@
 /*
  * Function: v6_pabort
  *
- * Params  : r0 = address of aborted instruction
+ * Params  : r4 = address of aborted instruction
  *
  * Returns : r0 = address of abort
  *        : r1 = IFSR
@@ -14,6 +14,7 @@
 
        .align  5
 ENTRY(v6_pabort)
+       mov     r0, r4
        mrc     p15, 0, r1, c5, c0, 1           @ get IFSR
        mov     pc, lr
 ENDPROC(v6_pabort)
index a8b3b30..b515e0b 100644 (file)
@@ -4,7 +4,7 @@
 /*
  * Function: v6_pabort
  *
- * Params  : r0 = address of aborted instruction
+ * Params  : r4 = address of aborted instruction
  *
  * Returns : r0 = address of abort
  *        : r1 = IFSR