summaryrefslogtreecommitdiffstats
path: root/sys/i386/isa/clock.c
diff options
context:
space:
mode:
authorpeter <peter@FreeBSD.org>1999-04-21 07:26:30 +0000
committerpeter <peter@FreeBSD.org>1999-04-21 07:26:30 +0000
commitfa628c268c2d531552037f05699c06959d9618e6 (patch)
tree139882de7181a80226508d0a7c0f4695f2639ae0 /sys/i386/isa/clock.c
parent47b96f90c086096cb12e76442461d4da895e207b (diff)
downloadFreeBSD-src-fa628c268c2d531552037f05699c06959d9618e6.zip
FreeBSD-src-fa628c268c2d531552037f05699c06959d9618e6.tar.gz
Stage 1 of a cleanup of the i386 interrupt registration mechanism.
Interrupts under the new scheme are managed by the i386 nexus with the awareness of the resource manager. There is further room for optimizing the interfaces still. All the users of register_intr()/intr_create() should be gone, with the exception of pcic and i386/isa/clock.c.
Diffstat (limited to 'sys/i386/isa/clock.c')
-rw-r--r--sys/i386/isa/clock.c28
1 files changed, 12 insertions, 16 deletions
diff --git a/sys/i386/isa/clock.c b/sys/i386/isa/clock.c
index d9bca71..3daaf94 100644
--- a/sys/i386/isa/clock.c
+++ b/sys/i386/isa/clock.c
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* from: @(#)clock.c 7.2 (Berkeley) 5/12/91
- * $Id: clock.c,v 1.128 1998/10/23 10:46:20 phk Exp $
+ * $Id: clock.c,v 1.129 1998/12/14 13:30:29 mckay Exp $
*/
/*
@@ -86,7 +86,7 @@
#include <i386/isa/rtc.h>
#include <i386/isa/timerreg.h>
-#include <sys/interrupt.h>
+#include <i386/isa/intr_machdep.h>
#ifdef SMP
#define disable_intr() CLOCK_DISABLE_INTR()
@@ -948,6 +948,7 @@ cpu_initclocks()
int diag;
#ifdef APIC_IO
int apic_8254_trial;
+ intrec *clkdesc;
#endif /* APIC_IO */
if (statclock_disable) {
@@ -982,16 +983,14 @@ cpu_initclocks()
panic("APIC_IO: Cannot route 8254 interrupt to CPU");
}
- register_intr(/* irq */ apic_8254_intr, /* XXX id */ 0, /* flags */ 0,
- /* XXX */ (inthand2_t *)clkintr, &clk_imask,
- /* unit */ 0);
+ clkdesc = inthand_add("clk", apic_8254_intr, (inthand2_t *)clkintr,
+ NULL, &clk_imask, INTR_EXCL);
INTREN(1 << apic_8254_intr);
#else /* APIC_IO */
- register_intr(/* irq */ 0, /* XXX id */ 0, /* flags */ 0,
- /* XXX */ (inthand2_t *)clkintr, &clk_imask,
- /* unit */ 0);
+ inthand_add("clk", 0, (inthand2_t *)clkintr, NULL, &clk_imask,
+ INTR_EXCL);
INTREN(IRQ0);
#endif /* APIC_IO */
@@ -1012,9 +1011,8 @@ cpu_initclocks()
panic("APIC RTC != 8");
#endif /* APIC_IO */
- register_intr(/* irq */ 8, /* XXX id */ 1, /* flags */ 0,
- /* XXX */ (inthand2_t *)rtcintr, &stat_imask,
- /* unit */ 0);
+ inthand_add("rtc", 8, (inthand2_t *)rtcintr, NULL, &stat_imask,
+ INTR_EXCL);
#ifdef APIC_IO
INTREN(APIC_IRQ8);
@@ -1038,17 +1036,15 @@ cpu_initclocks()
* Workaround: Limited variant of mixed mode.
*/
INTRDIS(1 << apic_8254_intr);
- unregister_intr(apic_8254_intr,
- /* XXX */ (inthand2_t *) clkintr);
+ inthand_remove(clkdesc);
printf("APIC_IO: Broken MP table detected: "
"8254 is not connected to IO APIC int pin %d\n",
apic_8254_intr);
apic_8254_intr = 0;
setup_8254_mixed_mode();
- register_intr(/* irq */ apic_8254_intr, /* XXX id */ 0, /* flags */ 0,
- /* XXX */ (inthand2_t *)clkintr, &clk_imask,
- /* unit */ 0);
+ inthand_add("clk", apic_8254_intr,(inthand2_t *)clkintr,
+ NULL, &clk_imask, INTR_EXCL);
INTREN(1 << apic_8254_intr);
}
OpenPOWER on IntegriCloud