Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
awilliam
GitHub Repository: awilliam/linux-vfio
Path: blob/master/arch/arm/include/asm/entry-macro-multi.S
17311 views
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 r5, lr
8
1: get_irqnr_and_base r0, r6, r5, 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 (r6) and base (r5) are
21
* preserved from get_irqnr_and_base above
22
*/
23
ALT_SMP(test_for_ipi r0, r6, r5, 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, r6, r5, lr
31
movne r0, sp
32
adrne lr, BSYM(1b)
33
bne do_local_timer
34
#endif
35
#endif
36
9997:
37
.endm
38
39
.macro arch_irq_handler, symbol_name
40
.align 5
41
.global \symbol_name
42
\symbol_name:
43
mov r4, lr
44
arch_irq_handler_default
45
mov pc, r4
46
.endm
47
48