/*
 * arch/arm/mach-ixp2000/include/mach/entry-macro.S
 *
 * Low-level IRQ helper macros for IXP2000-based platforms
 *
 * This file is licensed under  the terms of the GNU General Public
 * License version 2. This program is licensed "as is" without any
 * warranty of any kind, whether express or implied.
 */
#include <mach/irqs.h>

		.macro  disable_fiq
		.endm

		.macro  get_irqnr_preamble, base, tmp
		.endm

		.macro  arch_ret_to_user, tmp1, tmp2
		.endm

		.macro  get_irqnr_and_base, irqnr, irqstat, base, tmp

		mov	\irqnr, #0x0              @clear out irqnr as default
                mov	\base, #0xfe000000
		orr	\base, \base, #0x00e00000
		orr	\base, \base, #0x08
		ldr	\irqstat, [\base]         @ get interrupts

		cmp	\irqstat, #0
		beq	1001f

		clz     \irqnr, \irqstat
		mov     \base, #31
		subs    \irqnr, \base, \irqnr

		/*
		 * We handle PCIA and PCIB here so we don't have an
		 * extra layer of code just to check these two bits.
		 */
		cmp	\irqnr, #IRQ_IXP2000_PCI
		bne	1001f

		mov	\base, #0xfe000000
		orr	\base, \base, #0x00c00000
		orr	\base, \base, #0x00000100
		orr	\base, \base, #0x00000058
		ldr	\irqstat, [\base]

		mov	\tmp, #(1<<26)
		tst	\irqstat, \tmp
		movne	\irqnr, #IRQ_IXP2000_PCIA
		bne	1001f

		mov	\tmp, #(1<<27)
		tst	\irqstat, \tmp
		movne	\irqnr, #IRQ_IXP2000_PCIB

1001:
		.endm

