• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1/*
2 * arch/arm/mach-ixp2000/include/mach/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#include <mach/irqs.h>
11
12		.macro  get_irqnr_preamble, base, tmp
13		.endm
14
15		.macro  get_irqnr_and_base, irqnr, irqstat, base, tmp
16
17		mov	\irqnr, #0x0              @clear out irqnr as default
18                mov	\base, #0xfe000000
19		orr	\base, \base, #0x00e00000
20		orr	\base, \base, #0x08
21		ldr	\irqstat, [\base]         @ get interrupts
22
23		cmp	\irqstat, #0
24		beq	1001f
25
26		clz     \irqnr, \irqstat
27		mov     \base, #31
28		subs    \irqnr, \base, \irqnr
29
30		/*
31		 * We handle PCIA and PCIB here so we don't have an
32		 * extra layer of code just to check these two bits.
33		 */
34		cmp	\irqnr, #IRQ_IXP2000_PCI
35		bne	1001f
36
37		mov	\base, #0xfe000000
38		orr	\base, \base, #0x00c00000
39		orr	\base, \base, #0x00000100
40		orr	\base, \base, #0x00000058
41		ldr	\irqstat, [\base]
42
43		mov	\tmp, #(1<<26)
44		tst	\irqstat, \tmp
45		movne	\irqnr, #IRQ_IXP2000_PCIA
46		bne	1001f
47
48		mov	\tmp, #(1<<27)
49		tst	\irqstat, \tmp
50		movne	\irqnr, #IRQ_IXP2000_PCIB
51
521001:
53		.endm
54
55