Linux Audio

Check our new training course

Loading...
v3.1
 
 1#include <asm/assembler.h>
 2
 3/*
 4 * Interrupt handling.  Preserves r7, r8, r9
 5 */
 6	.macro	arch_irq_handler_default
 7	get_irqnr_preamble r6, lr
 81:	get_irqnr_and_base r0, r2, r6, lr
 9	movne	r1, sp
10	@
11	@ routine called with r0 = irq number, r1 = struct pt_regs *
12	@
13	adrne	lr, BSYM(1b)
14	bne	asm_do_IRQ
15
16#ifdef CONFIG_SMP
17	/*
18	 * XXX
19	 *
20	 * this macro assumes that irqstat (r2) and base (r6) are
21	 * preserved from get_irqnr_and_base above
22	 */
23	ALT_SMP(test_for_ipi r0, r2, r6, lr)
24	ALT_UP_B(9997f)
25	movne	r1, sp
26	adrne	lr, BSYM(1b)
27	bne	do_IPI
28
29#ifdef CONFIG_LOCAL_TIMERS
30	test_for_ltirq r0, r2, r6, lr
31	movne	r0, sp
32	adrne	lr, BSYM(1b)
33	bne	do_local_timer
34#endif
35#endif
369997:
37	.endm
38
39	.macro	arch_irq_handler, symbol_name
40	.align	5
41	.global \symbol_name
42\symbol_name:
43	mov	r8, lr
44	arch_irq_handler_default
45	mov     pc, r8
46	.endm
v5.4
 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