]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - include/asm-arm/arch-ixp4xx/entry-macro.S
[ARM] 3021/1: Interrupt 0 bug fix for ixp4xx
[linux-2.6-omap-h63xx.git] / include / asm-arm / arch-ixp4xx / entry-macro.S
index 455da64832def5e966e343dd50cd97f9b76c18e9..323b0bc4a39c9e74465a72581406a612ccae1678 100644 (file)
                ldr     \irqstat, =(IXP4XX_INTC_BASE_VIRT+IXP4XX_ICIP_OFFSET)
                ldr     \irqstat, [\irqstat]            @ get interrupts
                cmp     \irqstat, #0
-               beq     1001f
+               beq     1001f                           @ upper IRQ?
                clz     \irqnr, \irqstat
                mov     \base, #31
-               subs    \irqnr, \base, \irqnr
+               sub     \irqnr, \base, \irqnr
+               b       1002f                           @ lower IRQ being
+                                                       @ handled
 
 1001:
                /*
                 * IXP465 has an upper IRQ status register
                 */
 #if defined(CONFIG_CPU_IXP46X)
-               bne     1002f
                ldr     \irqstat, =(IXP4XX_INTC_BASE_VIRT+IXP4XX_ICIP2_OFFSET)
                ldr     \irqstat, [\irqstat]            @ get upper interrupts
                mov     \irqnr, #63
                clz     \irqstat, \irqstat
                cmp     \irqstat, #32
                subne   \irqnr, \irqnr, \irqstat
-1002:
 #endif
+1002:
                .endm