X-Git-Url: http://www.pilppa.org/gitweb/gitweb.cgi?a=blobdiff_plain;f=arch%2Farm%2Fplat-omap%2Finclude%2Fmach%2Fentry-macro.S;h=c88a4cb52e2dc206a43d5229230f789ac614b82e;hb=3da0e10243d075b905dfa8f1b4a6cb3694ab2ce0;hp=a8fca9d9845b00102ba036958736452a78b89a54;hpb=10b383a6f9142d8c3845eed25bac4b1fb268a1c7;p=linux-2.6-omap-h63xx.git diff --git a/arch/arm/plat-omap/include/mach/entry-macro.S b/arch/arm/plat-omap/include/mach/entry-macro.S index a8fca9d9845..c88a4cb52e2 100644 --- a/arch/arm/plat-omap/include/mach/entry-macro.S +++ b/arch/arm/plat-omap/include/mach/entry-macro.S @@ -87,7 +87,26 @@ ldr \irqnr, [\base, #0xd8] /* IRQ pending reg 3 */ cmp \irqnr, #0x0 2222: - ldrne \irqnr, [\base, #INTCPS_SIR_IRQ_OFFSET] +#if defined(CONFIG_ARCH_OMAP34XX) + mov \tmp, \irqnr +#endif + ldrne \irqnr, [\base, #INTCPS_SIR_IRQ_OFFSET] +#if defined(CONFIG_ARCH_OMAP34XX) + mov \irqstat, \irqnr + bic \irqstat, \irqstat, #0x7f /* check for spurious flag */ + cmp \irqstat, #0x0 + beq 2223f + mov \irqstat, #0x1 /* Ack the spurious irq, this lets it + * generate a bad irq error message, + * but prevents infinitely repeating + * irq. + */ + str \irqstat, [\base, #0x48] /* INTC_CONTROL register */ +2223: + cmp \tmp, #0x0 /* set conditional back to what it was + * before spurious test + */ +#endif .endm