]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - arch/arm/plat-mxc/include/mach/entry-macro.S
Merge branch 'for-rmk' of git://pasiphae.extern.pengutronix.de/git/imx/linux-2.6.git
[linux-2.6-omap-h63xx.git] / arch / arm / plat-mxc / include / mach / entry-macro.S
index b542433afb1b45358de508e7bc09a91085aa2989..11632028f7d1ba6f44610c373b52b2721ea81cf4 100644 (file)
@@ -9,11 +9,17 @@
  * published by the Free Software Foundation.
  */
 
+#define AVIC_NIMASK    0x04
+
        @ this macro disables fast irq (not implemented)
        .macro  disable_fiq
        .endm
 
        .macro  get_irqnr_preamble, base, tmp
+       ldr     \base, =AVIC_IO_ADDRESS(AVIC_BASE_ADDR)
+#ifdef CONFIG_MXC_IRQ_PRIOR
+       ldr     r4, [\base, #AVIC_NIMASK]
+#endif
        .endm
 
        .macro  arch_ret_to_user, tmp1, tmp2
@@ -23,7 +29,6 @@
        @ and returns its number in irqnr
        @ and returns if an interrupt occured in irqstat
        .macro  get_irqnr_and_base, irqnr, irqstat, base, tmp
-       ldr     \base, =AVIC_IO_ADDRESS(AVIC_BASE_ADDR)
        @ Load offset & priority of the highest priority
        @ interrupt pending from AVIC_NIVECSR
        ldr     \irqstat, [\base, #0x40]
        mov     \irqnr, \irqstat, asr #16
        @ set zero flag if IRQ + 1 == 0
        adds    \tmp, \irqnr, #1
+#ifdef CONFIG_MXC_IRQ_PRIOR
+       bicne   \tmp, \irqstat, #0xFFFFFFE0
+       strne   \tmp, [\base, #AVIC_NIMASK]
+       streq   r4, [\base, #AVIC_NIMASK]
+#endif
        .endm
 
        @ irq priority table (not used)