blob: 5dc0f307c1bbbdd539f8ea5490d23923081cb940 [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 Kingbe509722008-08-04 10:41:28 +010010#include <asm/arch/hardware.h>
Russell King78ff18a2006-01-03 17:39:34 +000011
Linus Torvalds1da177e2005-04-16 15:20:36 -070012 .macro disable_fiq
13 .endm
Dan Williamsf80dff92007-02-16 22:16:32 +010014
15 .macro get_irqnr_preamble, base, tmp
16 .endm
17
18 .macro arch_ret_to_user, tmp1, tmp2
19 .endm
20
Linus Torvalds1da177e2005-04-16 15:20:36 -070021#define AITC_NIVECSR 0x40
22 .macro get_irqnr_and_base, irqnr, irqstat, base, tmp
Pavel Pisa3b581f52007-02-12 23:34:38 +010023 ldr \base, =IO_ADDRESS(IMX_AITC_BASE)
Linus Torvalds1da177e2005-04-16 15:20:36 -070024 @ Load offset & priority of the highest priority
25 @ interrupt pending.
Pavel Pisa3b581f52007-02-12 23:34:38 +010026 ldr \irqstat, [\base, #AITC_NIVECSR]
Linus Torvalds1da177e2005-04-16 15:20:36 -070027 @ Shift off the priority leaving the offset or
Pavel Pisa3b581f52007-02-12 23:34:38 +010028 @ "interrupt number", use arithmetic shift to
29 @ transform illegal source (0xffff) as -1
30 mov \irqnr, \irqstat, asr #16
31 adds \tmp, \irqnr, #1
Linus Torvalds1da177e2005-04-16 15:20:36 -070032 .endm