|
@@ -30,6 +30,14 @@
|
|
* Interrupt handling. Preserves r7, r8, r9
|
|
* Interrupt handling. Preserves r7, r8, r9
|
|
*/
|
|
*/
|
|
.macro irq_handler
|
|
.macro irq_handler
|
|
|
|
+#ifdef CONFIG_MULTI_IRQ_HANDLER
|
|
|
|
+ ldr r5, =handle_arch_irq
|
|
|
|
+ mov r0, sp
|
|
|
|
+ ldr r5, [r5]
|
|
|
|
+ adr lr, BSYM(9997f)
|
|
|
|
+ teq r5, #0
|
|
|
|
+ movne pc, r5
|
|
|
|
+#endif
|
|
get_irqnr_preamble r5, lr
|
|
get_irqnr_preamble r5, lr
|
|
1: get_irqnr_and_base r0, r6, r5, lr
|
|
1: get_irqnr_and_base r0, r6, r5, lr
|
|
movne r1, sp
|
|
movne r1, sp
|
|
@@ -58,9 +66,8 @@
|
|
adrne lr, BSYM(1b)
|
|
adrne lr, BSYM(1b)
|
|
bne do_local_timer
|
|
bne do_local_timer
|
|
#endif
|
|
#endif
|
|
-9997:
|
|
|
|
#endif
|
|
#endif
|
|
-
|
|
|
|
|
|
+9997:
|
|
.endm
|
|
.endm
|
|
|
|
|
|
#ifdef CONFIG_KPROBES
|
|
#ifdef CONFIG_KPROBES
|
|
@@ -1245,3 +1252,9 @@ cr_alignment:
|
|
.space 4
|
|
.space 4
|
|
cr_no_alignment:
|
|
cr_no_alignment:
|
|
.space 4
|
|
.space 4
|
|
|
|
+
|
|
|
|
+#ifdef CONFIG_MULTI_IRQ_HANDLER
|
|
|
|
+ .globl handle_arch_irq
|
|
|
|
+handle_arch_irq:
|
|
|
|
+ .space 4
|
|
|
|
+#endif
|