Linux 3.11-rc3
[cris-mirror.git] / arch / arm / mach-gemini / include / mach / entry-macro.S
blobf044e430bfa4fa3be10ec669f86856f007fe183e
1 /*
2  * Low-level IRQ helper macros for Gemini platform.
3  *
4  *  Copyright (C) 2001-2006 Storlink, Corp.
5  *  Copyright (C) 2008-2009 Paulius Zaleckas <paulius.zaleckas@teltonika.lt>
6  *
7  * This file is licensed under  the terms of the GNU General Public
8  * License version 2. This program is licensed "as is" without any
9  * warranty of any kind, whether express or implied.
10  */
11 #include <mach/hardware.h>
13 #define IRQ_STATUS      0x14
15         .macro  get_irqnr_preamble, base, tmp
16         .endm
18         .macro  get_irqnr_and_base, irqnr, irqstat, base, tmp
19         ldr     \irqstat, =IO_ADDRESS(GEMINI_INTERRUPT_BASE + IRQ_STATUS)
20         ldr     \irqnr, [\irqstat]
21         cmp     \irqnr, #0
22         beq     2313f
23         mov     \tmp, \irqnr
24         mov     \irqnr, #0
25 2312:
26         tst     \tmp, #1
27         bne     2313f
28         add     \irqnr, \irqnr, #1
29         mov     \tmp, \tmp, lsr #1
30         cmp     \irqnr, #31
31         bcc     2312b
32 2313:
33         .endm