aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRussell King <rmk+kernel@arm.linux.org.uk>2011-06-26 05:22:08 -0400
committerRussell King <rmk+kernel@arm.linux.org.uk>2011-06-29 05:03:02 -0400
commitac8b9c1ce094d43372d0259de08045ffee745a41 (patch)
treec4c8bc80090656f73f59f3a3553a96cfca49781f
parent2342aa282b59f028cf0850b483b34587db2c22b0 (diff)
ARM: entry: prefetch/data abort helpers: convert to macros
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
-rw-r--r--arch/arm/kernel/entry-armv.S85
1 files changed, 35 insertions, 50 deletions
diff --git a/arch/arm/kernel/entry-armv.S b/arch/arm/kernel/entry-armv.S
index 90c62cd51ca9..dbe9eb88d550 100644
--- a/arch/arm/kernel/entry-armv.S
+++ b/arch/arm/kernel/entry-armv.S
@@ -44,6 +44,37 @@
449997: 449997:
45 .endm 45 .endm
46 46
47 .macro pabt_helper
48 mov r0, r2 @ pass address of aborted instruction.
49#ifdef MULTI_PABORT
50 ldr r4, .LCprocfns
51 mov lr, pc
52 ldr pc, [r4, #PROCESSOR_PABT_FUNC]
53#else
54 bl CPU_PABORT_HANDLER
55#endif
56 .endm
57
58 .macro dabt_helper
59
60 @
61 @ Call the processor-specific abort handler:
62 @
63 @ r2 - aborted context pc
64 @ r3 - aborted context cpsr
65 @
66 @ The abort handler must return the aborted address in r0, and
67 @ the fault status register in r1. r9 must be preserved.
68 @
69#ifdef MULTI_DABORT
70 ldr r4, .LCprocfns
71 mov lr, pc
72 ldr pc, [r4, #PROCESSOR_DABT_FUNC]
73#else
74 bl CPU_DABORT_HANDLER
75#endif
76 .endm
77
47#ifdef CONFIG_KPROBES 78#ifdef CONFIG_KPROBES
48 .section .kprobes.text,"ax",%progbits 79 .section .kprobes.text,"ax",%progbits
49#else 80#else
@@ -159,22 +190,7 @@ __dabt_svc:
159 tst r3, #PSR_I_BIT 190 tst r3, #PSR_I_BIT
160 biceq r9, r9, #PSR_I_BIT 191 biceq r9, r9, #PSR_I_BIT
161 192
162 @ 193 dabt_helper
163 @ Call the processor-specific abort handler:
164 @
165 @ r2 - aborted context pc
166 @ r3 - aborted context cpsr
167 @
168 @ The abort handler must return the aborted address in r0, and
169 @ the fault status register in r1. r9 must be preserved.
170 @
171#ifdef MULTI_DABORT
172 ldr r4, .LCprocfns
173 mov lr, pc
174 ldr pc, [r4, #PROCESSOR_DABT_FUNC]
175#else
176 bl CPU_DABORT_HANDLER
177#endif
178 194
179 @ 195 @
180 @ set desired IRQ state, then call main handler 196 @ set desired IRQ state, then call main handler
@@ -298,14 +314,7 @@ __pabt_svc:
298 tst r3, #PSR_I_BIT 314 tst r3, #PSR_I_BIT
299 biceq r9, r9, #PSR_I_BIT 315 biceq r9, r9, #PSR_I_BIT
300 316
301 mov r0, r2 @ pass address of aborted instruction. 317 pabt_helper
302#ifdef MULTI_PABORT
303 ldr r4, .LCprocfns
304 mov lr, pc
305 ldr pc, [r4, #PROCESSOR_PABT_FUNC]
306#else
307 bl CPU_PABORT_HANDLER
308#endif
309 debug_entry r1 318 debug_entry r1
310 msr cpsr_c, r9 @ Maybe enable interrupts 319 msr cpsr_c, r9 @ Maybe enable interrupts
311 mov r2, sp @ regs 320 mov r2, sp @ regs
@@ -401,23 +410,7 @@ ENDPROC(__pabt_svc)
401__dabt_usr: 410__dabt_usr:
402 usr_entry 411 usr_entry
403 kuser_cmpxchg_check 412 kuser_cmpxchg_check
404 413 dabt_helper
405 @
406 @ Call the processor-specific abort handler:
407 @
408 @ r2 - aborted context pc
409 @ r3 - aborted context cpsr
410 @
411 @ The abort handler must return the aborted address in r0, and
412 @ the fault status register in r1.
413 @
414#ifdef MULTI_DABORT
415 ldr r4, .LCprocfns
416 mov lr, pc
417 ldr pc, [r4, #PROCESSOR_DABT_FUNC]
418#else
419 bl CPU_DABORT_HANDLER
420#endif
421 414
422 @ 415 @
423 @ IRQs on, then call the main handler 416 @ IRQs on, then call the main handler
@@ -682,15 +675,7 @@ ENDPROC(__und_usr_unknown)
682 .align 5 675 .align 5
683__pabt_usr: 676__pabt_usr:
684 usr_entry 677 usr_entry
685 678 pabt_helper
686 mov r0, r2 @ pass address of aborted instruction.
687#ifdef MULTI_PABORT
688 ldr r4, .LCprocfns
689 mov lr, pc
690 ldr pc, [r4, #PROCESSOR_PABT_FUNC]
691#else
692 bl CPU_PABORT_HANDLER
693#endif
694 debug_entry r1 679 debug_entry r1
695 enable_irq @ Enable interrupts 680 enable_irq @ Enable interrupts
696 mov r2, sp @ regs 681 mov r2, sp @ regs