diff options
Diffstat (limited to 'include/asm-arm/arch-ixp2000/entry-macro.S')
-rw-r--r-- | include/asm-arm/arch-ixp2000/entry-macro.S | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/include/asm-arm/arch-ixp2000/entry-macro.S b/include/asm-arm/arch-ixp2000/entry-macro.S new file mode 100644 index 000000000000..e3a4e4121298 --- /dev/null +++ b/include/asm-arm/arch-ixp2000/entry-macro.S | |||
@@ -0,0 +1,53 @@ | |||
1 | /* | ||
2 | * include/asm-arm/arch-ixp2000/entry-macro.S | ||
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 | */ | ||
10 | |||
11 | .macro disable_fiq | ||
12 | .endm | ||
13 | |||
14 | .macro get_irqnr_and_base, irqnr, irqstat, base, tmp | ||
15 | |||
16 | mov \irqnr, #0x0 @clear out irqnr as default | ||
17 | mov \base, #0xfe000000 | ||
18 | orr \base, \base, #0x00e00000 | ||
19 | orr \base, \base, #0x08 | ||
20 | ldr \irqstat, [\base] @ get interrupts | ||
21 | |||
22 | cmp \irqstat, #0 | ||
23 | beq 1001f | ||
24 | |||
25 | clz \irqnr, \irqstat | ||
26 | mov \base, #31 | ||
27 | subs \irqnr, \base, \irqnr | ||
28 | |||
29 | /* | ||
30 | * We handle PCIA and PCIB here so we don't have an | ||
31 | * extra layer of code just to check these two bits. | ||
32 | */ | ||
33 | cmp \irqnr, #IRQ_IXP2000_PCI | ||
34 | bne 1001f | ||
35 | |||
36 | mov \base, #0xfe000000 | ||
37 | orr \base, \base, #0x00c00000 | ||
38 | orr \base, \base, #0x00000100 | ||
39 | orr \base, \base, #0x00000058 | ||
40 | ldr \irqstat, [\base] | ||
41 | |||
42 | mov \tmp, #(1<<26) | ||
43 | tst \irqstat, \tmp | ||
44 | movne \irqnr, #IRQ_IXP2000_PCIA | ||
45 | bne 1001f | ||
46 | |||
47 | mov \tmp, #(1<<27) | ||
48 | tst \irqstat, \tmp | ||
49 | movne \irqnr, #IRQ_IXP2000_PCIB | ||
50 | |||
51 | 1001: | ||
52 | .endm | ||
53 | |||