aboutsummaryrefslogtreecommitdiffstats
path: root/include/asm-arm/hardware
diff options
context:
space:
mode:
authorRussell King <rmk@dyn-67.arm.linux.org.uk>2007-05-12 10:25:50 -0400
committerRussell King <rmk+kernel@arm.linux.org.uk>2007-05-12 10:25:50 -0400
commit641e79129a56a4c50be1aed0fa713f440b46a440 (patch)
tree41831a6b7927d2d392f5dad8cad7ddd38c363315 /include/asm-arm/hardware
parent3b938be69e46b64a516b6e3ed6d93c40c091f22c (diff)
[ARM] Use new get_irqnr_preamble
Use the new get_irqnr_preamble macro to move the address of the IRQ controller outside the IRQ handling loop. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'include/asm-arm/hardware')
-rw-r--r--include/asm-arm/hardware/entry-macro-iomd.S28
1 files changed, 11 insertions, 17 deletions
diff --git a/include/asm-arm/hardware/entry-macro-iomd.S b/include/asm-arm/hardware/entry-macro-iomd.S
index fbed08f298d0..9bb580a5b15e 100644
--- a/include/asm-arm/hardware/entry-macro-iomd.S
+++ b/include/asm-arm/hardware/entry-macro-iomd.S
@@ -11,8 +11,6 @@
11/* IOC / IOMD based hardware */ 11/* IOC / IOMD based hardware */
12#include <asm/hardware/iomd.h> 12#include <asm/hardware/iomd.h>
13 13
14 .equ ioc_base_high, IOC_BASE & 0xff000000
15 .equ ioc_base_low, IOC_BASE & 0x00ff0000
16 .macro disable_fiq 14 .macro disable_fiq
17 mov r12, #ioc_base_high 15 mov r12, #ioc_base_high
18 .if ioc_base_low 16 .if ioc_base_low
@@ -22,33 +20,29 @@
22 .endm 20 .endm
23 21
24 .macro get_irqnr_and_base, irqnr, irqstat, base, tmp 22 .macro get_irqnr_and_base, irqnr, irqstat, base, tmp
25 mov r4, #ioc_base_high @ point at IOC 23 ldrb \irqstat, [\base, #IOMD_IRQREQB] @ get high priority first
26 .if ioc_base_low 24 ldr \tmp, =irq_prio_h
27 orr r4, r4, #ioc_base_low
28 .endif
29 ldrb \irqstat, [r4, #IOMD_IRQREQB] @ get high priority first
30 ldr \base, =irq_prio_h
31 teq \irqstat, #0 25 teq \irqstat, #0
32#ifdef IOMD_BASE 26#ifdef IOMD_BASE
33 ldreqb \irqstat, [r4, #IOMD_DMAREQ] @ get dma 27 ldreqb \irqstat, [\base, #IOMD_DMAREQ] @ get dma
34 addeq \base, \base, #256 @ irq_prio_h table size 28 addeq \tmp, \tmp, #256 @ irq_prio_h table size
35 teqeq \irqstat, #0 29 teqeq \irqstat, #0
36 bne 2406f 30 bne 2406f
37#endif 31#endif
38 ldreqb \irqstat, [r4, #IOMD_IRQREQA] @ get low priority 32 ldreqb \irqstat, [\base, #IOMD_IRQREQA] @ get low priority
39 addeq \base, \base, #256 @ irq_prio_d table size 33 addeq \tmp, \tmp, #256 @ irq_prio_d table size
40 teqeq \irqstat, #0 34 teqeq \irqstat, #0
41#ifdef IOMD_IRQREQC 35#ifdef IOMD_IRQREQC
42 ldreqb \irqstat, [r4, #IOMD_IRQREQC] 36 ldreqb \irqstat, [\base, #IOMD_IRQREQC]
43 addeq \base, \base, #256 @ irq_prio_l table size 37 addeq \tmp, \tmp, #256 @ irq_prio_l table size
44 teqeq \irqstat, #0 38 teqeq \irqstat, #0
45#endif 39#endif
46#ifdef IOMD_IRQREQD 40#ifdef IOMD_IRQREQD
47 ldreqb \irqstat, [r4, #IOMD_IRQREQD] 41 ldreqb \irqstat, [\base, #IOMD_IRQREQD]
48 addeq \base, \base, #256 @ irq_prio_lc table size 42 addeq \tmp, \tmp, #256 @ irq_prio_lc table size
49 teqeq \irqstat, #0 43 teqeq \irqstat, #0
50#endif 44#endif
512406: ldrneb \irqnr, [\base, \irqstat] @ get IRQ number 452406: ldrneb \irqnr, [\tmp, \irqstat] @ get IRQ number
52 .endm 46 .endm
53 47
54/* 48/*