blob: 61bb0bdc1b1651744c0b888a5ffd73a8461dd50c [file] [log] [blame]
Linus Torvalds1da177e2005-04-16 15:20:36 -07001/*
2 * include/asm-arm/arch-imx/entry-macro.S
3 *
4 * Low-level IRQ helper macros for iMX-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 */
Russell King78ff18a2006-01-03 17:39:34 +000010#include <asm/hardware.h>
11
Linus Torvalds1da177e2005-04-16 15:20:36 -070012 .macro disable_fiq
13 .endm
14#define AITC_NIVECSR 0x40
15 .macro get_irqnr_and_base, irqnr, irqstat, base, tmp
Pavel Pisa3b581f52007-02-12 23:34:38 +010016 ldr \base, =IO_ADDRESS(IMX_AITC_BASE)
Linus Torvalds1da177e2005-04-16 15:20:36 -070017 @ Load offset & priority of the highest priority
18 @ interrupt pending.
Pavel Pisa3b581f52007-02-12 23:34:38 +010019 ldr \irqstat, [\base, #AITC_NIVECSR]
Linus Torvalds1da177e2005-04-16 15:20:36 -070020 @ Shift off the priority leaving the offset or
Pavel Pisa3b581f52007-02-12 23:34:38 +010021 @ "interrupt number", use arithmetic shift to
22 @ transform illegal source (0xffff) as -1
23 mov \irqnr, \irqstat, asr #16
24 adds \tmp, \irqnr, #1
Linus Torvalds1da177e2005-04-16 15:20:36 -070025 .endm