1/*
2 * arch/arm/mach-footbridge/include/mach/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 <mach/hardware.h>
11#include <mach/irqs.h>
12#include <asm/hardware/dec21285.h>
13
14		.equ	dc21285_high, ARMCSR_BASE & 0xff000000
15		.equ	dc21285_low, ARMCSR_BASE & 0x00ffffff
16
17		.macro	disable_fiq
18		.endm
19
20		.macro  get_irqnr_preamble, base, tmp
21		mov	\base, #dc21285_high
22		.if	dc21285_low
23		orr	\base, \base, #dc21285_low
24		.endif
25		.endm
26
27		.macro  arch_ret_to_user, tmp1, tmp2
28		.endm
29
30		.macro	get_irqnr_and_base, irqnr, irqstat, base, tmp
31		ldr	\irqstat, [\base, #0x180]	@ get interrupts
32
33		mov	\irqnr, #IRQ_SDRAMPARITY
34		tst	\irqstat, #IRQ_MASK_SDRAMPARITY
35		bne	1001f
36
37		tst	\irqstat, #IRQ_MASK_UART_RX
38		movne	\irqnr, #IRQ_CONRX
39		bne	1001f
40
41		tst	\irqstat, #IRQ_MASK_DMA1
42		movne	\irqnr, #IRQ_DMA1
43		bne	1001f
44
45		tst	\irqstat, #IRQ_MASK_DMA2
46		movne	\irqnr, #IRQ_DMA2
47		bne	1001f
48
49		tst	\irqstat, #IRQ_MASK_IN0
50		movne	\irqnr, #IRQ_IN0
51		bne	1001f
52
53		tst	\irqstat, #IRQ_MASK_IN1
54		movne	\irqnr, #IRQ_IN1
55		bne	1001f
56
57		tst	\irqstat, #IRQ_MASK_IN2
58		movne	\irqnr, #IRQ_IN2
59		bne	1001f
60
61		tst	\irqstat, #IRQ_MASK_IN3
62		movne	\irqnr, #IRQ_IN3
63		bne	1001f
64
65		tst	\irqstat, #IRQ_MASK_PCI
66		movne	\irqnr, #IRQ_PCI
67		bne	1001f
68
69		tst	\irqstat, #IRQ_MASK_DOORBELLHOST
70		movne	\irqnr, #IRQ_DOORBELLHOST
71		bne     1001f
72
73		tst	\irqstat, #IRQ_MASK_I2OINPOST
74		movne	\irqnr, #IRQ_I2OINPOST
75		bne	1001f
76
77		tst	\irqstat, #IRQ_MASK_TIMER1
78		movne	\irqnr, #IRQ_TIMER1
79		bne	1001f
80
81		tst	\irqstat, #IRQ_MASK_TIMER2
82		movne	\irqnr, #IRQ_TIMER2
83		bne	1001f
84
85		tst	\irqstat, #IRQ_MASK_TIMER3
86		movne	\irqnr, #IRQ_TIMER3
87		bne	1001f
88
89		tst	\irqstat, #IRQ_MASK_UART_TX
90		movne	\irqnr, #IRQ_CONTX
91		bne	1001f
92
93		tst	\irqstat, #IRQ_MASK_PCI_ABORT
94		movne	\irqnr, #IRQ_PCI_ABORT
95		bne	1001f
96
97		tst	\irqstat, #IRQ_MASK_PCI_SERR
98		movne	\irqnr, #IRQ_PCI_SERR
99		bne	1001f
100
101		tst	\irqstat, #IRQ_MASK_DISCARD_TIMER
102		movne	\irqnr, #IRQ_DISCARD_TIMER
103		bne	1001f
104
105		tst	\irqstat, #IRQ_MASK_PCI_DPERR
106		movne	\irqnr, #IRQ_PCI_DPERR
107		bne	1001f
108
109		tst	\irqstat, #IRQ_MASK_PCI_PERR
110		movne	\irqnr, #IRQ_PCI_PERR
1111001:
112		.endm
113
114