Linux 2.6.31.6
[linux/fpc-iii.git] / arch / arm / mach-davinci / include / mach / entry-macro.S
blobfbdebc7cb409828dddaf0d8f6e575309ca07be0f
1 /*
2  * Low-level IRQ helper macros for TI DaVinci-based platforms
3  *
4  * Author: Kevin Hilman, MontaVista Software, Inc. <source@mvista.com>
5  *
6  * 2007 (c) MontaVista Software, Inc. This file is licensed under
7  * the terms of the GNU General Public License version 2. This program
8  * is licensed "as is" without any warranty of any kind, whether express
9  * or implied.
10  */
11 #include <mach/io.h>
12 #include <mach/irqs.h>
14                 .macro  disable_fiq
15                 .endm
17                 .macro  get_irqnr_preamble, base, tmp
18                 ldr \base, =davinci_intc_base
19                 ldr \base, [\base]
20                 .endm
22                 .macro  arch_ret_to_user, tmp1, tmp2
23                 .endm
25                 .macro  get_irqnr_and_base, irqnr, irqstat, base, tmp
26 #if defined(CONFIG_AINTC) && defined(CONFIG_CP_INTC)
27                 ldr \tmp, =davinci_intc_type
28                 ldr \tmp, [\tmp]
29                 cmp \tmp, #DAVINCI_INTC_TYPE_CP_INTC
30                 beq 1001f
31 #endif
32 #if defined(CONFIG_AINTC)
33                 ldr \tmp, [\base, #0x14]
34                 movs \tmp, \tmp, lsr #2
35                 sub \irqnr, \tmp, #1
36                 b 1002f
37 #endif
38 #if defined(CONFIG_CP_INTC)
39 1001:           ldr \irqnr, [\base, #0x80] /* get irq number */
40                 and \irqnr, \irqnr, #0xff  /* irq is in bits 0-9 */
41                 mov \tmp, \irqnr, lsr #3
42                 and \tmp, \tmp, #0xfc
43                 add \tmp, \tmp, #0x280 /* get the register offset */
44                 ldr \irqstat, [\base, \tmp] /* get the intc status */
45                 cmp \irqstat, #0x0
46 #endif
47 1002:
48                 .endm
50                 .macro  irq_prio_table
51                 .endm