Commit | Line | Data |
---|---|---|
1da177e4 | 1 | /* |
a09e64fb | 2 | * arch/arm/mach-ixp2000/include/mach/entry-macro.S |
1da177e4 LT |
3 | * |
4 | * Low-level IRQ helper macros for IXP2000-based platforms | |
5 | * | |
6 | * This file is licensed under the terms of the GNU General Public | |
7 | * License version 2. This program is licensed "as is" without any | |
8 | * warranty of any kind, whether express or implied. | |
9 | */ | |
a09e64fb | 10 | #include <mach/irqs.h> |
1da177e4 | 11 | |
f80dff9d DW |
12 | .macro get_irqnr_preamble, base, tmp |
13 | .endm | |
14 | ||
1da177e4 LT |
15 | .macro get_irqnr_and_base, irqnr, irqstat, base, tmp |
16 | ||
17 | mov \irqnr, #0x0 @clear out irqnr as default | |
18 | mov \base, #0xfe000000 | |
19 | orr \base, \base, #0x00e00000 | |
20 | orr \base, \base, #0x08 | |
21 | ldr \irqstat, [\base] @ get interrupts | |
22 | ||
23 | cmp \irqstat, #0 | |
24 | beq 1001f | |
25 | ||
26 | clz \irqnr, \irqstat | |
27 | mov \base, #31 | |
28 | subs \irqnr, \base, \irqnr | |
29 | ||
30 | /* | |
31 | * We handle PCIA and PCIB here so we don't have an | |
32 | * extra layer of code just to check these two bits. | |
33 | */ | |
34 | cmp \irqnr, #IRQ_IXP2000_PCI | |
35 | bne 1001f | |
36 | ||
37 | mov \base, #0xfe000000 | |
38 | orr \base, \base, #0x00c00000 | |
39 | orr \base, \base, #0x00000100 | |
40 | orr \base, \base, #0x00000058 | |
41 | ldr \irqstat, [\base] | |
42 | ||
43 | mov \tmp, #(1<<26) | |
44 | tst \irqstat, \tmp | |
45 | movne \irqnr, #IRQ_IXP2000_PCIA | |
46 | bne 1001f | |
47 | ||
48 | mov \tmp, #(1<<27) | |
49 | tst \irqstat, \tmp | |
50 | movne \irqnr, #IRQ_IXP2000_PCIB | |
51 | ||
52 | 1001: | |
53 | .endm | |
54 |