1
2 #include <asm/assembler.h>
3
4
5
6
7 .macro arch_irq_handler_default
8 get_irqnr_preamble r6, lr
9 1: get_irqnr_and_base r0, r2, r6, lr
10 movne r1, sp
11 @
12 @ routine called with r0 = irq number, r1 = struct pt_regs *
13 @
14 badrne lr, 1b
15 bne asm_do_IRQ
16
17 #ifdef CONFIG_SMP
18
19
20
21
22
23
24 ALT_SMP(test_for_ipi r0, r2, r6, lr)
25 ALT_UP_B(9997f)
26 movne r1, sp
27 badrne lr, 1b
28 bne do_IPI
29 #endif
30 9997:
31 .endm
32
33 .macro arch_irq_handler, symbol_name
34 .align 5
35 .global \symbol_name
36 \symbol_name:
37 mov r8, lr
38 arch_irq_handler_default
39 ret r8
40 .endm