diff options
Diffstat (limited to 'arch/arm/kernel/irq.c')
| -rw-r--r-- | arch/arm/kernel/irq.c | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/arch/arm/kernel/irq.c b/arch/arm/kernel/irq.c index f88efb135b70..2f3eb795fa6e 100644 --- a/arch/arm/kernel/irq.c +++ b/arch/arm/kernel/irq.c | |||
| @@ -112,18 +112,17 @@ static struct irq_desc bad_irq_desc = { | |||
| 112 | asmlinkage void __exception asm_do_IRQ(unsigned int irq, struct pt_regs *regs) | 112 | asmlinkage void __exception asm_do_IRQ(unsigned int irq, struct pt_regs *regs) |
| 113 | { | 113 | { |
| 114 | struct pt_regs *old_regs = set_irq_regs(regs); | 114 | struct pt_regs *old_regs = set_irq_regs(regs); |
| 115 | struct irq_desc *desc = irq_desc + irq; | 115 | |
| 116 | irq_enter(); | ||
| 116 | 117 | ||
| 117 | /* | 118 | /* |
| 118 | * Some hardware gives randomly wrong interrupts. Rather | 119 | * Some hardware gives randomly wrong interrupts. Rather |
| 119 | * than crashing, do something sensible. | 120 | * than crashing, do something sensible. |
| 120 | */ | 121 | */ |
| 121 | if (irq >= NR_IRQS) | 122 | if (irq >= NR_IRQS) |
| 122 | desc = &bad_irq_desc; | 123 | handle_bad_irq(irq, &bad_irq_desc); |
| 123 | 124 | else | |
| 124 | irq_enter(); | 125 | generic_handle_irq(irq); |
| 125 | |||
| 126 | desc_handle_irq(irq, desc); | ||
| 127 | 126 | ||
| 128 | /* AT91 specific workaround */ | 127 | /* AT91 specific workaround */ |
| 129 | irq_finish(irq); | 128 | irq_finish(irq); |
