|
@@ -48,23 +48,7 @@ int arch_show_interrupts(struct seq_file *p, int prec)
|
|
*/
|
|
*/
|
|
void handle_IRQ(unsigned int irq, struct pt_regs *regs)
|
|
void handle_IRQ(unsigned int irq, struct pt_regs *regs)
|
|
{
|
|
{
|
|
- struct pt_regs *old_regs = set_irq_regs(regs);
|
|
|
|
-
|
|
|
|
- irq_enter();
|
|
|
|
-
|
|
|
|
- /*
|
|
|
|
- * Some hardware gives randomly wrong interrupts. Rather
|
|
|
|
- * than crashing, do something sensible.
|
|
|
|
- */
|
|
|
|
- if (unlikely(irq >= nr_irqs)) {
|
|
|
|
- pr_warn_ratelimited("Bad IRQ%u\n", irq);
|
|
|
|
- ack_bad_irq(irq);
|
|
|
|
- } else {
|
|
|
|
- generic_handle_irq(irq);
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- irq_exit();
|
|
|
|
- set_irq_regs(old_regs);
|
|
|
|
|
|
+ __handle_domain_irq(NULL, irq, false, regs);
|
|
}
|
|
}
|
|
|
|
|
|
void __init set_handle_irq(void (*handle_irq)(struct pt_regs *))
|
|
void __init set_handle_irq(void (*handle_irq)(struct pt_regs *))
|