diff options
Diffstat (limited to 'arch/arm/kernel')
-rw-r--r-- | arch/arm/kernel/ecard.c | 6 | ||||
-rw-r--r-- | arch/arm/kernel/irq.c | 11 |
2 files changed, 7 insertions, 10 deletions
diff --git a/arch/arm/kernel/ecard.c b/arch/arm/kernel/ecard.c index 7a50575a8d4d..60c079d85355 100644 --- a/arch/arm/kernel/ecard.c +++ b/arch/arm/kernel/ecard.c | |||
@@ -587,8 +587,7 @@ ecard_irq_handler(unsigned int irq, struct irq_desc *desc) | |||
587 | pending = ecard_default_ops.irqpending(ec); | 587 | pending = ecard_default_ops.irqpending(ec); |
588 | 588 | ||
589 | if (pending) { | 589 | if (pending) { |
590 | struct irq_desc *d = irq_desc + ec->irq; | 590 | generic_handle_irq(ec->irq); |
591 | desc_handle_irq(ec->irq, d); | ||
592 | called ++; | 591 | called ++; |
593 | } | 592 | } |
594 | } | 593 | } |
@@ -622,7 +621,6 @@ ecard_irqexp_handler(unsigned int irq, struct irq_desc *desc) | |||
622 | ecard_t *ec = slot_to_ecard(slot); | 621 | ecard_t *ec = slot_to_ecard(slot); |
623 | 622 | ||
624 | if (ec->claimed) { | 623 | if (ec->claimed) { |
625 | struct irq_desc *d = irq_desc + ec->irq; | ||
626 | /* | 624 | /* |
627 | * this ugly code is so that we can operate a | 625 | * this ugly code is so that we can operate a |
628 | * prioritorising system: | 626 | * prioritorising system: |
@@ -635,7 +633,7 @@ ecard_irqexp_handler(unsigned int irq, struct irq_desc *desc) | |||
635 | * Serial cards should go in 0/1, ethernet/scsi in 2/3 | 633 | * Serial cards should go in 0/1, ethernet/scsi in 2/3 |
636 | * otherwise you will lose serial data at high speeds! | 634 | * otherwise you will lose serial data at high speeds! |
637 | */ | 635 | */ |
638 | desc_handle_irq(ec->irq, d); | 636 | generic_handle_irq(ec->irq); |
639 | } else { | 637 | } else { |
640 | printk(KERN_WARNING "card%d: interrupt from unclaimed " | 638 | printk(KERN_WARNING "card%d: interrupt from unclaimed " |
641 | "card???\n", slot); | 639 | "card???\n", slot); |
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); |