Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ac8b9c1c authored by Russell King's avatar Russell King
Browse files

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

parent 2342aa28
Loading
Loading
Loading
Loading
+35 −50
Original line number Original line Diff line number Diff line
@@ -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