2 * Low-level IRQ helper macros for Nomadik platforms
4 * This file is licensed under the terms of the GNU General Public
5 * License version 2. This program is licensed "as is" without any
6 * warranty of any kind, whether express or implied.
9 #include <mach/hardware.h>
10 #include <mach/irqs.h>
15 .macro get_irqnr_preamble, base, tmp
16 ldr \base, =IO_ADDRESS(NOMADIK_IC_BASE)
19 .macro arch_ret_to_user, tmp1, tmp2
22 .macro get_irqnr_and_base, irqnr, irqstat, base, tmp
24 /* This stanza gets the irq mask from one of two status registers */
26 ldr \irqstat, [\base, #VIC_REG_IRQSR0] @ get masked status
29 add \irqnr, \irqnr, #32
30 ldr \irqstat, [\base, #VIC_REG_IRQSR1] @ get masked status
32 1001: tst \irqstat, #15
34 add \irqnr, \irqnr, #4
35 movs \irqstat, \irqstat, lsr #4
37 1002: tst \irqstat, #1
39 add \irqnr, \irqnr, #1
40 movs \irqstat, \irqstat, lsr #1
42 1003: /* EQ will be set if no irqs pending */