ARM: entry: prefetch/data abort helpers: convert to macros
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
This commit is contained in:
parent
2342aa282b
commit
ac8b9c1ce0
1 changed files with 35 additions and 50 deletions
|
@ -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:
|
||||||
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:
|
||||||
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)
|
||||||
__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)
|
||||||
.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
|
||||||
|
|
Loading…
Add table
Reference in a new issue