--- gnumach/linux/dev/arch/i386/kernel/irq.c 1999-04-26 07:40:55.000000000 +0200 +++ gnumach/linux/dev/arch/i386/kernel/irq.c 2005-07-19 04:37:17.000000000 +0200 @@ -103,16 +103,23 @@ linux_intr (int irq) { struct pt_regs regs; struct linux_action *action = *(irq_action + irq); + unsigned long flags; kstat.interrupts[irq]++; intr_count++; + save_flags (flags); + if (action && (action->flags & SA_INTERRUPT)) + cli (); + while (action) { action->handler (irq, action->dev_id, ®s); action = action->next; } + restore_flags (flags); + intr_count--; /* Not used. by OKUJI Yoshinori. */