Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
at v3.0-rc2 44 lines 797 B view raw
1/* 2 * Interrupt handling. Preserves r7, r8, r9 3 */ 4 .macro arch_irq_handler_default 5 get_irqnr_preamble r5, lr 61: get_irqnr_and_base r0, r6, r5, lr 7 movne r1, sp 8 @ 9 @ routine called with r0 = irq number, r1 = struct pt_regs * 10 @ 11 adrne lr, BSYM(1b) 12 bne asm_do_IRQ 13 14#ifdef CONFIG_SMP 15 /* 16 * XXX 17 * 18 * this macro assumes that irqstat (r6) and base (r5) are 19 * preserved from get_irqnr_and_base above 20 */ 21 ALT_SMP(test_for_ipi r0, r6, r5, lr) 22 ALT_UP_B(9997f) 23 movne r1, sp 24 adrne lr, BSYM(1b) 25 bne do_IPI 26 27#ifdef CONFIG_LOCAL_TIMERS 28 test_for_ltirq r0, r6, r5, lr 29 movne r0, sp 30 adrne lr, BSYM(1b) 31 bne do_local_timer 32#endif 33#endif 349997: 35 .endm 36 37 .macro arch_irq_handler, symbol_name 38 .align 5 39 .global \symbol_name 40\symbol_name: 41 mov r4, lr 42 arch_irq_handler_default 43 mov pc, r4 44 .endm