aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorRussell King <rmk+kernel@arm.linux.org.uk>2011-06-25 14:25:02 -0400
committerRussell King <rmk+kernel@arm.linux.org.uk>2011-06-30 06:04:59 -0400
commit8b4186160b7894ca4583f702a562856d5d9e9118 (patch)
treed5937a74e6d3f0738c3ba7eb9383acf51202e62d /arch
parentb059bdc39321696fe8f344acb7117d57fbd7b475 (diff)
ARM: entry: prefetch abort helper: pass aborted pc in r4 rather than r0
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>
Diffstat (limited to 'arch')
-rw-r--r--arch/arm/kernel/entry-armv.S2
-rw-r--r--arch/arm/mm/pabort-legacy.S3
-rw-r--r--arch/arm/mm/pabort-v6.S3
-rw-r--r--arch/arm/mm/pabort-v7.S2
4 files changed, 6 insertions, 4 deletions
diff --git a/arch/arm/kernel/entry-armv.S b/arch/arm/kernel/entry-armv.S
index 582bb2310446..d644d0240ad3 100644
--- a/arch/arm/kernel/entry-armv.S
+++ b/arch/arm/kernel/entry-armv.S
@@ -45,7 +45,7 @@
45 .endm 45 .endm
46 46
47 .macro pabt_helper 47 .macro pabt_helper
48 mov r0, r4 @ pass address of aborted instruction. 48 @ PABORT handler takes fault address in r4
49#ifdef MULTI_PABORT 49#ifdef MULTI_PABORT
50 ldr ip, .LCprocfns 50 ldr ip, .LCprocfns
51 mov lr, pc 51 mov lr, pc
diff --git a/arch/arm/mm/pabort-legacy.S b/arch/arm/mm/pabort-legacy.S
index 87970eba88ea..8a5d8aaf2d5e 100644
--- a/arch/arm/mm/pabort-legacy.S
+++ b/arch/arm/mm/pabort-legacy.S
@@ -4,7 +4,7 @@
4/* 4/*
5 * Function: legacy_pabort 5 * Function: legacy_pabort
6 * 6 *
7 * Params : r0 = address of aborted instruction 7 * Params : r4 = address of aborted instruction
8 * 8 *
9 * Returns : r0 = address of abort 9 * Returns : r0 = address of abort
10 * : r1 = Simulated IFSR with section translation fault status 10 * : r1 = Simulated IFSR with section translation fault status
@@ -14,6 +14,7 @@
14 14
15 .align 5 15 .align 5
16ENTRY(legacy_pabort) 16ENTRY(legacy_pabort)
17 mov r0, r4
17 mov r1, #5 18 mov r1, #5
18 mov pc, lr 19 mov pc, lr
19ENDPROC(legacy_pabort) 20ENDPROC(legacy_pabort)
diff --git a/arch/arm/mm/pabort-v6.S b/arch/arm/mm/pabort-v6.S
index 06e3d1ef2115..eaac1cb7c4cc 100644
--- a/arch/arm/mm/pabort-v6.S
+++ b/arch/arm/mm/pabort-v6.S
@@ -4,7 +4,7 @@
4/* 4/*
5 * Function: v6_pabort 5 * Function: v6_pabort
6 * 6 *
7 * Params : r0 = address of aborted instruction 7 * Params : r4 = address of aborted instruction
8 * 8 *
9 * Returns : r0 = address of abort 9 * Returns : r0 = address of abort
10 * : r1 = IFSR 10 * : r1 = IFSR
@@ -14,6 +14,7 @@
14 14
15 .align 5 15 .align 5
16ENTRY(v6_pabort) 16ENTRY(v6_pabort)
17 mov r0, r4
17 mrc p15, 0, r1, c5, c0, 1 @ get IFSR 18 mrc p15, 0, r1, c5, c0, 1 @ get IFSR
18 mov pc, lr 19 mov pc, lr
19ENDPROC(v6_pabort) 20ENDPROC(v6_pabort)
diff --git a/arch/arm/mm/pabort-v7.S b/arch/arm/mm/pabort-v7.S
index a8b3b300a18d..b515e0b059b3 100644
--- a/arch/arm/mm/pabort-v7.S
+++ b/arch/arm/mm/pabort-v7.S
@@ -4,7 +4,7 @@
4/* 4/*
5 * Function: v6_pabort 5 * Function: v6_pabort
6 * 6 *
7 * Params : r0 = address of aborted instruction 7 * Params : r4 = address of aborted instruction
8 * 8 *
9 * Returns : r0 = address of abort 9 * Returns : r0 = address of abort
10 * : r1 = IFSR 10 * : r1 = IFSR