summaryrefslogtreecommitdiff
path: root/linux/dev/arch/i386/kernel/irq.c
diff options
context:
space:
mode:
Diffstat (limited to 'linux/dev/arch/i386/kernel/irq.c')
-rw-r--r--linux/dev/arch/i386/kernel/irq.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/linux/dev/arch/i386/kernel/irq.c b/linux/dev/arch/i386/kernel/irq.c
index 656c1470..3b349ccc 100644
--- a/linux/dev/arch/i386/kernel/irq.c
+++ b/linux/dev/arch/i386/kernel/irq.c
@@ -27,6 +27,7 @@
#include <mach/mach_types.h>
#include <mach/vm_param.h>
#include <kern/assert.h>
+#include <kern/cpu_number.h>
#include <i386/spl.h>
#include <i386/irq.h>
@@ -343,7 +344,7 @@ probe_irq_on (void)
unsigned i, irqs = 0;
unsigned long delay;
- assert (curr_ipl == 0);
+ assert (curr_ipl[cpu_number()] == 0);
/*
* Allocate all available IRQs.
@@ -363,7 +364,7 @@ probe_irq_on (void)
for (delay = jiffies + HZ / 10; delay > jiffies;)
;
- return (irqs & ~curr_pic_mask);
+ return (irqs & ~linux_pic_mask);
}
/*
@@ -374,9 +375,9 @@ probe_irq_off (unsigned long irqs)
{
unsigned int i;
- assert (curr_ipl == 0);
+ assert (curr_ipl[cpu_number()] == 0);
- irqs &= curr_pic_mask;
+ irqs &= linux_pic_mask;
/*
* Disable unnecessary IRQs.
@@ -721,13 +722,13 @@ init_IRQ (void)
outb_p (PIT_C0 | PIT_SQUAREMODE | PIT_READMODE, PITCTL_PORT);
outb_p (latch & 0xff, PITCTR0_PORT);
outb (latch >> 8, PITCTR0_PORT);
-#endif
/*
* Install our clock interrupt handler.
*/
old_clock_handler = ivect[0];
ivect[0] = linux_timer_intr;
+#endif
reserve_mach_irqs ();
@@ -764,9 +765,11 @@ restore_IRQ (void)
*/
(void) splhigh ();
+#ifndef APIC
/*
* Restore clock interrupt handler.
*/
ivect[0] = old_clock_handler;
+#endif
}