struct thread_info *curtp, *irqtp;
unsigned long saved_sp_limit;
struct irq_desc *desc;
- void *handler;
/* Switch to the irq stack to handle this */
curtp = current_thread_info();
desc = irq_desc + irq;
saved_sp_limit = current->thread.ksp_limit;
- handler = desc->handle_irq;
- if (handler == NULL)
- handler = &__do_IRQ;
-
irqtp->task = curtp->task;
irqtp->flags = 0;
current->thread.ksp_limit = (unsigned long)irqtp +
_ALIGN_UP(sizeof(struct thread_info), 16);
- call_handle_irq(irq, desc, irqtp, handler);
+ call_handle_irq(irq, desc, irqtp, desc->handle_irq);
current->thread.ksp_limit = saved_sp_limit;
irqtp->task = NULL;