12345678910111213141516171819202122232425262728293031323334353637383940 |
- #include <asm/assembler.h>
- /*
- * Interrupt handling. Preserves r7, r8, r9
- */
- .macro arch_irq_handler_default
- get_irqnr_preamble r6, lr
- 1: get_irqnr_and_base r0, r2, r6, lr
- movne r1, sp
- @
- @ routine called with r0 = irq number, r1 = struct pt_regs *
- @
- badrne lr, 1b
- bne asm_do_IRQ
- #ifdef CONFIG_SMP
- /*
- * XXX
- *
- * this macro assumes that irqstat (r2) and base (r6) are
- * preserved from get_irqnr_and_base above
- */
- ALT_SMP(test_for_ipi r0, r2, r6, lr)
- ALT_UP_B(9997f)
- movne r1, sp
- badrne lr, 1b
- bne do_IPI
- #endif
- 9997:
- .endm
- .macro arch_irq_handler, symbol_name
- .align 5
- .global \symbol_name
- \symbol_name:
- mov r8, lr
- arch_irq_handler_default
- ret r8
- .endm
|