diff options
Diffstat (limited to 'include/asm-arm/arch-ep93xx/entry-macro.S')
-rw-r--r-- | include/asm-arm/arch-ep93xx/entry-macro.S | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/include/asm-arm/arch-ep93xx/entry-macro.S b/include/asm-arm/arch-ep93xx/entry-macro.S new file mode 100644 index 000000000000..84140a28dfcf --- /dev/null +++ b/include/asm-arm/arch-ep93xx/entry-macro.S | |||
@@ -0,0 +1,53 @@ | |||
1 | /* | ||
2 | * linux/include/asm-arm/arch-ep93xx/entry-macro.S | ||
3 | * IRQ demultiplexing for EP93xx | ||
4 | * | ||
5 | * Copyright (C) 2006 Lennert Buytenhek <buytenh@wantstofly.org> | ||
6 | * | ||
7 | * This program is free software; you can redistribute it and/or modify | ||
8 | * it under the terms of the GNU General Public License as published by | ||
9 | * the Free Software Foundation; either version 2 of the License, or (at | ||
10 | * your option) any later version. | ||
11 | */ | ||
12 | #include <asm/arch/ep93xx-regs.h> | ||
13 | |||
14 | .macro disable_fiq | ||
15 | .endm | ||
16 | |||
17 | .macro get_irqnr_and_base, irqnr, irqstat, base, tmp | ||
18 | ldr \base, =(EP93XX_AHB_VIRT_BASE) | ||
19 | orr \base, \base, #0x000b0000 | ||
20 | mov \irqnr, #0 | ||
21 | ldr \irqstat, [\base] @ lower 32 interrupts | ||
22 | cmp \irqstat, #0 | ||
23 | bne 1001f | ||
24 | |||
25 | eor \base, \base, #0x00070000 | ||
26 | ldr \irqstat, [\base] @ upper 32 interrupts | ||
27 | cmp \irqstat, #0 | ||
28 | beq 1002f | ||
29 | mov \irqnr, #0x20 | ||
30 | |||
31 | 1001: | ||
32 | movs \tmp, \irqstat, lsl #16 | ||
33 | movne \irqstat, \tmp | ||
34 | addeq \irqnr, \irqnr, #16 | ||
35 | |||
36 | movs \tmp, \irqstat, lsl #8 | ||
37 | movne \irqstat, \tmp | ||
38 | addeq \irqnr, \irqnr, #8 | ||
39 | |||
40 | movs \tmp, \irqstat, lsl #4 | ||
41 | movne \irqstat, \tmp | ||
42 | addeq \irqnr, \irqnr, #4 | ||
43 | |||
44 | movs \tmp, \irqstat, lsl #2 | ||
45 | movne \irqstat, \tmp | ||
46 | addeq \irqnr, \irqnr, #2 | ||
47 | |||
48 | movs \tmp, \irqstat, lsl #1 | ||
49 | addeq \irqnr, \irqnr, #1 | ||
50 | orrs \base, \base, #1 | ||
51 | |||
52 | 1002: | ||
53 | .endm | ||