|
|
|
@ -522,12 +522,13 @@ void ack_bad_irq(unsigned int virt_irq) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
#ifndef CONFIG_SMP |
|
|
|
|
extern irqreturn_t timer_interrupt(int, void *, struct pt_regs *); |
|
|
|
|
extern irqreturn_t timer_interrupt(int, void *); |
|
|
|
|
|
|
|
|
|
void timer_irq(int irq, struct pt_regs *regs) |
|
|
|
|
{ |
|
|
|
|
unsigned long clr_mask = 1 << irq; |
|
|
|
|
unsigned long tick_mask = tick_ops->softint_mask; |
|
|
|
|
struct pt_regs *old_regs; |
|
|
|
|
|
|
|
|
|
if (get_softint() & tick_mask) { |
|
|
|
|
irq = 0; |
|
|
|
@ -535,12 +536,14 @@ void timer_irq(int irq, struct pt_regs *regs) |
|
|
|
|
} |
|
|
|
|
clear_softint(clr_mask); |
|
|
|
|
|
|
|
|
|
old_regs = set_irq_regs(regs); |
|
|
|
|
irq_enter(); |
|
|
|
|
|
|
|
|
|
kstat_this_cpu.irqs[0]++; |
|
|
|
|
timer_interrupt(irq, NULL, regs); |
|
|
|
|
timer_interrupt(irq, NULL); |
|
|
|
|
|
|
|
|
|
irq_exit(); |
|
|
|
|
set_irq_regs(old_regs); |
|
|
|
|
} |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|