blob: d8cbafa6cc49d25514df36f6d4c7de1486ec8336 [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
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
23 ldr \irqstat, =IO_ADDRESS(IMX_AITC_BASE)
24 @ Load offset & priority of the highest priority
25 @ interrupt pending.
26 ldr \irqnr, [\irqstat, #AITC_NIVECSR]
27 @ Shift off the priority leaving the offset or
28 @ "interrupt number"
29 mov \irqnr, \irqnr, lsr #16
30 ldr \irqstat, =1 @ dummy compare
31 ldr \base, =0xFFFF // invalid interrupt
32 cmp \irqnr, \base
33 bne 1001f
34 ldr \irqstat, =0
351001:
36 tst \irqstat, #1 @ to make the condition code = TRUE
37 .endm
38