patch-2.1.121 linux/arch/i386/kernel/io_apic.c
Next file: linux/arch/i386/kernel/irq.c
Previous file: linux/arch/i386/kernel/init_task.c
Back to the patch index
Back to the overall index
- Lines: 67
- Date:
Tue Sep 8 14:46:50 1998
- Orig file:
v2.1.120/linux/arch/i386/kernel/io_apic.c
- Orig date:
Sat Sep 5 16:46:40 1998
diff -u --recursive --new-file v2.1.120/linux/arch/i386/kernel/io_apic.c linux/arch/i386/kernel/io_apic.c
@@ -514,6 +514,8 @@
return 0;
}
+int irq_vector[NR_IRQS] = { IRQ0_TRAP_VECTOR , 0 };
+
static int __init assign_irq_vector(int irq)
{
static int current_vector = IRQ0_TRAP_VECTOR, offset = 0;
@@ -957,7 +959,7 @@
mask_IO_APIC_irq(irq);
}
-static void do_edge_ioapic_IRQ(unsigned int irq, int cpu, struct pt_regs * regs)
+static void do_edge_ioapic_IRQ(unsigned int irq, struct pt_regs * regs)
{
irq_desc_t *desc = irq_desc + irq;
struct irqaction * action;
@@ -991,14 +993,12 @@
if (!action)
return;
- irq_enter(cpu, irq);
-
/*
* Edge triggered interrupts need to remember
* pending events.
*/
for (;;) {
- handle_IRQ_event(irq, regs);
+ handle_IRQ_event(irq, regs, action);
spin_lock(&irq_controller_lock);
if (!(desc->status & IRQ_PENDING))
@@ -1008,12 +1008,9 @@
}
desc->status &= ~IRQ_INPROGRESS;
spin_unlock(&irq_controller_lock);
-
- irq_exit(cpu, irq);
}
-static void do_level_ioapic_IRQ(unsigned int irq, int cpu,
- struct pt_regs * regs)
+static void do_level_ioapic_IRQ(unsigned int irq, struct pt_regs * regs)
{
irq_desc_t *desc = irq_desc + irq;
struct irqaction * action;
@@ -1048,17 +1045,13 @@
if (!action)
return;
- irq_enter(cpu, irq);
-
- handle_IRQ_event(irq, regs);
+ handle_IRQ_event(irq, regs, action);
spin_lock(&irq_controller_lock);
desc->status &= ~IRQ_INPROGRESS;
if (!(desc->status & IRQ_DISABLED))
unmask_IO_APIC_irq(irq);
spin_unlock(&irq_controller_lock);
-
- irq_exit(cpu, irq);
}
/*
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen, slshen@lbl.gov