Linux v2.6.15-rc6
[pohmelfs.git] / include / asm-arm / arch-imx / entry-macro.S
blobb40ea7cf88ec9b8222e00af84752bd852f71632a
1 /*
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  */
10                 .macro  disable_fiq
11                 .endm
12 #define AITC_NIVECSR   0x40
13                 .macro  get_irqnr_and_base, irqnr, irqstat, base, tmp
14                 ldr     \irqstat, =IO_ADDRESS(IMX_AITC_BASE)
15                 @ Load offset & priority of the highest priority
16                 @ interrupt pending.
17                 ldr     \irqnr, [\irqstat, #AITC_NIVECSR]
18                 @ Shift off the priority leaving the offset or
19                 @ "interrupt number"
20                 mov     \irqnr, \irqnr, lsr #16
21                 ldr     \irqstat, =1    @ dummy compare
22                 ldr     \base, =0xFFFF          // invalid interrupt
23                 cmp     \irqnr, \base
24                 bne     1001f
25                 ldr     \irqstat, =0
26 1001:
27                 tst     \irqstat, #1    @ to make the condition code = TRUE
28                 .endm