Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs...
[sfrench/cifs-2.6.git] / arch / arm / mach-nomadik / include / mach / entry-macro.S
1 /*
2  * Low-level IRQ helper macros for Nomadik platforms
3  *
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.
7  */
8
9 #include <mach/hardware.h>
10 #include <mach/irqs.h>
11
12         .macro  disable_fiq
13         .endm
14
15         .macro  get_irqnr_preamble, base, tmp
16         ldr     \base, =IO_ADDRESS(NOMADIK_IC_BASE)
17         .endm
18
19         .macro  arch_ret_to_user, tmp1, tmp2
20         .endm
21
22         .macro  get_irqnr_and_base, irqnr, irqstat, base, tmp
23
24         /* This stanza gets the irq mask from one of two status registers */
25         mov     \irqnr, #0
26         ldr     \irqstat, [\base, #VIC_REG_IRQSR0]      @ get masked status
27         cmp     \irqstat, #0
28         bne     1001f
29         add     \irqnr, \irqnr, #32
30         ldr     \irqstat, [\base, #VIC_REG_IRQSR1]      @ get masked status
31
32 1001:   tst     \irqstat, #15
33         bne     1002f
34         add     \irqnr, \irqnr, #4
35         movs    \irqstat, \irqstat, lsr #4
36         bne     1001b
37 1002:   tst     \irqstat, #1
38         bne     1003f
39         add     \irqnr, \irqnr, #1
40         movs    \irqstat, \irqstat, lsr #1
41         bne     1002b
42 1003:   /* EQ will be set if no irqs pending */
43         .endm