Linux v2.6.15-rc7
[pohmelfs.git] / include / asm-arm / arch-ebsa285 / entry-macro.S
blobdb5729ff634932903da1015427f7c88052ef8eb7
1 /*
2  * include/asm-arm/arch-footbridge/entry-macro.S
3  *
4  * Low-level IRQ helper macros for footbridge-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 #include <asm/hardware/dec21285.h>
12                 .macro  disable_fiq
13                 .endm
15                 .equ    dc21285_high, ARMCSR_BASE & 0xff000000
16                 .equ    dc21285_low, ARMCSR_BASE & 0x00ffffff
18                 .macro  get_irqnr_and_base, irqnr, irqstat, base, tmp
19                 mov     r4, #dc21285_high
20                 .if     dc21285_low
21                 orr     r4, r4, #dc21285_low
22                 .endif
23                 ldr     \irqstat, [r4, #0x180]          @ get interrupts
25                 mov     \irqnr, #IRQ_SDRAMPARITY
26                 tst     \irqstat, #IRQ_MASK_SDRAMPARITY
27                 bne     1001f
29                 tst     \irqstat, #IRQ_MASK_UART_RX
30                 movne   \irqnr, #IRQ_CONRX
31                 bne     1001f
33                 tst     \irqstat, #IRQ_MASK_DMA1
34                 movne   \irqnr, #IRQ_DMA1
35                 bne     1001f
37                 tst     \irqstat, #IRQ_MASK_DMA2
38                 movne   \irqnr, #IRQ_DMA2
39                 bne     1001f
41                 tst     \irqstat, #IRQ_MASK_IN0
42                 movne   \irqnr, #IRQ_IN0
43                 bne     1001f
45                 tst     \irqstat, #IRQ_MASK_IN1
46                 movne   \irqnr, #IRQ_IN1
47                 bne     1001f
49                 tst     \irqstat, #IRQ_MASK_IN2
50                 movne   \irqnr, #IRQ_IN2
51                 bne     1001f
53                 tst     \irqstat, #IRQ_MASK_IN3
54                 movne   \irqnr, #IRQ_IN3
55                 bne     1001f
57                 tst     \irqstat, #IRQ_MASK_PCI
58                 movne   \irqnr, #IRQ_PCI
59                 bne     1001f
61                 tst     \irqstat, #IRQ_MASK_DOORBELLHOST
62                 movne   \irqnr, #IRQ_DOORBELLHOST
63                 bne     1001f
65                 tst     \irqstat, #IRQ_MASK_I2OINPOST
66                 movne   \irqnr, #IRQ_I2OINPOST
67                 bne     1001f
69                 tst     \irqstat, #IRQ_MASK_TIMER1
70                 movne   \irqnr, #IRQ_TIMER1
71                 bne     1001f
73                 tst     \irqstat, #IRQ_MASK_TIMER2
74                 movne   \irqnr, #IRQ_TIMER2
75                 bne     1001f
77                 tst     \irqstat, #IRQ_MASK_TIMER3
78                 movne   \irqnr, #IRQ_TIMER3
79                 bne     1001f
81                 tst     \irqstat, #IRQ_MASK_UART_TX
82                 movne   \irqnr, #IRQ_CONTX
83                 bne     1001f
85                 tst     \irqstat, #IRQ_MASK_PCI_ABORT
86                 movne   \irqnr, #IRQ_PCI_ABORT
87                 bne     1001f
89                 tst     \irqstat, #IRQ_MASK_PCI_SERR
90                 movne   \irqnr, #IRQ_PCI_SERR
91                 bne     1001f
93                 tst     \irqstat, #IRQ_MASK_DISCARD_TIMER
94                 movne   \irqnr, #IRQ_DISCARD_TIMER
95                 bne     1001f
97                 tst     \irqstat, #IRQ_MASK_PCI_DPERR
98                 movne   \irqnr, #IRQ_PCI_DPERR
99                 bne     1001f
101                 tst     \irqstat, #IRQ_MASK_PCI_PERR
102                 movne   \irqnr, #IRQ_PCI_PERR
103 1001:
104                 .endm