1/* SPDX-License-Identifier: GPL-2.0 */ 2#include <asm/assembler.h> 3 4/* 5 * Interrupt handling. Preserves r7, r8, r9 6 */ 7 .macro arch_irq_handler_default 8 get_irqnr_preamble r6, lr 91: 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 * XXX 20 * 21 * this macro assumes that irqstat (r2) and base (r6) are 22 * preserved from get_irqnr_and_base above 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 309997: 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 41