summaryrefslogtreecommitdiff
path: root/linux
diff options
context:
space:
mode:
Diffstat (limited to 'linux')
-rw-r--r--linux/dev/arch/i386/kernel/irq.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/linux/dev/arch/i386/kernel/irq.c b/linux/dev/arch/i386/kernel/irq.c
index 1543234..e9dfe6a 100644
--- a/linux/dev/arch/i386/kernel/irq.c
+++ b/linux/dev/arch/i386/kernel/irq.c
@@ -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, &regs);
action = action->next;
}
+ restore_flags (flags);
+
intr_count--;
/* Not used. by OKUJI Yoshinori. */