Commit ac8b9c1c authored by Russell King's avatar Russell King

ARM: entry: prefetch/data abort helpers: convert to macros

Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
parent 2342aa28
...@@ -44,6 +44,37 @@ ...@@ -44,6 +44,37 @@
9997: 9997:
.endm .endm
.macro pabt_helper
mov r0, r2 @ pass address of aborted instruction.
#ifdef MULTI_PABORT
ldr r4, .LCprocfns
mov lr, pc
ldr pc, [r4, #PROCESSOR_PABT_FUNC]
#else
bl CPU_PABORT_HANDLER
#endif
.endm
.macro dabt_helper
@
@ Call the processor-specific abort handler:
@
@ r2 - aborted context pc
@ r3 - aborted context cpsr
@
@ The abort handler must return the aborted address in r0, and
@ the fault status register in r1. r9 must be preserved.
@
#ifdef MULTI_DABORT
ldr r4, .LCprocfns
mov lr, pc
ldr pc, [r4, #PROCESSOR_DABT_FUNC]
#else
bl CPU_DABORT_HANDLER
#endif
.endm
#ifdef CONFIG_KPROBES #ifdef CONFIG_KPROBES
.section .kprobes.text,"ax",%progbits .section .kprobes.text,"ax",%progbits
#else #else
...@@ -159,22 +190,7 @@ __dabt_svc: ...@@ -159,22 +190,7 @@ __dabt_svc:
tst r3, #PSR_I_BIT tst r3, #PSR_I_BIT
biceq r9, r9, #PSR_I_BIT biceq r9, r9, #PSR_I_BIT
@ dabt_helper
@ Call the processor-specific abort handler:
@
@ r2 - aborted context pc
@ r3 - aborted context cpsr
@
@ The abort handler must return the aborted address in r0, and
@ the fault status register in r1. r9 must be preserved.
@
#ifdef MULTI_DABORT
ldr r4, .LCprocfns
mov lr, pc
ldr pc, [r4, #PROCESSOR_DABT_FUNC]
#else
bl CPU_DABORT_HANDLER
#endif
@ @
@ set desired IRQ state, then call main handler @ set desired IRQ state, then call main handler
...@@ -298,14 +314,7 @@ __pabt_svc: ...@@ -298,14 +314,7 @@ __pabt_svc:
tst r3, #PSR_I_BIT tst r3, #PSR_I_BIT
biceq r9, r9, #PSR_I_BIT biceq r9, r9, #PSR_I_BIT
mov r0, r2 @ pass address of aborted instruction. pabt_helper
#ifdef MULTI_PABORT
ldr r4, .LCprocfns
mov lr, pc
ldr pc, [r4, #PROCESSOR_PABT_FUNC]
#else
bl CPU_PABORT_HANDLER
#endif
debug_entry r1 debug_entry r1
msr cpsr_c, r9 @ Maybe enable interrupts msr cpsr_c, r9 @ Maybe enable interrupts
mov r2, sp @ regs mov r2, sp @ regs
...@@ -401,23 +410,7 @@ ENDPROC(__pabt_svc) ...@@ -401,23 +410,7 @@ ENDPROC(__pabt_svc)
__dabt_usr: __dabt_usr:
usr_entry usr_entry
kuser_cmpxchg_check kuser_cmpxchg_check
dabt_helper
@
@ Call the processor-specific abort handler:
@
@ r2 - aborted context pc
@ r3 - aborted context cpsr
@
@ The abort handler must return the aborted address in r0, and
@ the fault status register in r1.
@
#ifdef MULTI_DABORT
ldr r4, .LCprocfns
mov lr, pc
ldr pc, [r4, #PROCESSOR_DABT_FUNC]
#else
bl CPU_DABORT_HANDLER
#endif
@ @
@ IRQs on, then call the main handler @ IRQs on, then call the main handler
...@@ -682,15 +675,7 @@ ENDPROC(__und_usr_unknown) ...@@ -682,15 +675,7 @@ ENDPROC(__und_usr_unknown)
.align 5 .align 5
__pabt_usr: __pabt_usr:
usr_entry usr_entry
pabt_helper
mov r0, r2 @ pass address of aborted instruction.
#ifdef MULTI_PABORT
ldr r4, .LCprocfns
mov lr, pc
ldr pc, [r4, #PROCESSOR_PABT_FUNC]
#else
bl CPU_PABORT_HANDLER
#endif
debug_entry r1 debug_entry r1
enable_irq @ Enable interrupts enable_irq @ Enable interrupts
mov r2, sp @ regs mov r2, sp @ regs
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment