1
2
3
4
5
6
7
8
9
10
11
12
13 #define IRQ_STAT 0xff000000
14
15 .macro get_irqnr_preamble, base, tmp
16 mov \base, #IRQ_STAT
17 .endm
18
19 .macro get_irqnr_and_base, irqnr, stat, base, tmp
20 ldrb \stat, [\base] @ get interrupts
21 mov \irqnr, #0
22 tst \stat, #15
23 addeq \irqnr, \irqnr, #4
24 moveq \stat, \stat, lsr #4
25 tst \stat, #3
26 addeq \irqnr, \irqnr, #2
27 moveq \stat, \stat, lsr #2
28 tst \stat, #1
29 addeq \irqnr, \irqnr, #1
30 moveq \stat, \stat, lsr #1
31 tst \stat, #1 @ bit 0 should be set
32 .endm
33