summaryrefslogtreecommitdiffstats
path: root/sys/i386/isa/icu.h
diff options
context:
space:
mode:
authorjhb <jhb@FreeBSD.org>2003-11-03 21:34:45 +0000
committerjhb <jhb@FreeBSD.org>2003-11-03 21:34:45 +0000
commitaac4b7181cbed34861c76ff9d9142c7fdf212008 (patch)
treef2991d5d0fc0ae7e901f99710b5648d3a8217c08 /sys/i386/isa/icu.h
parent2eeede4b8babdb63edcfd505c0adef202c7859bf (diff)
downloadFreeBSD-src-aac4b7181cbed34861c76ff9d9142c7fdf212008.zip
FreeBSD-src-aac4b7181cbed34861c76ff9d9142c7fdf212008.tar.gz
Add the new atpic(4) driver for the 8259A master and slave PICs. By
default we provide 16 interrupt sources for IRQs 0 through 15. However, if the I/O APIC driver has already registered sources for any of those IRQs then we will silently fail to register our own source for that IRQ. Note that i386/isa/icu.h is now specific to the 8259A and no longer contains any info relevant to APICs. Also note that fast interrupts no longer use a separate entry point. Instead, both fast and threaded interrupts share the same entry point which merely looks up the appropriate source and passes control to intr_execute_handlers().
Diffstat (limited to 'sys/i386/isa/icu.h')
-rw-r--r--sys/i386/isa/icu.h53
1 files changed, 6 insertions, 47 deletions
diff --git a/sys/i386/isa/icu.h b/sys/i386/isa/icu.h
index 82e084f..8958f4a 100644
--- a/sys/i386/isa/icu.h
+++ b/sys/i386/isa/icu.h
@@ -45,38 +45,6 @@
#ifndef _I386_ISA_ICU_H_
#define _I386_ISA_ICU_H_
-#ifndef LOCORE
-
-/*
- * Note:
- * Most of the SMP equivilants of the icu macros are coded
- * elsewhere in an MP-safe fashion.
- * In particular note that the 'imen' variable is opaque.
- * DO NOT access imen directly, use INTREN()/INTRDIS().
- */
-
-void INTREN(u_int);
-void INTRDIS(u_int);
-
-#ifdef APIC_IO
-extern unsigned apic_imen; /* APIC interrupt mask enable */
-#else
-extern unsigned imen; /* interrupt mask enable */
-#endif
-
-#endif /* LOCORE */
-
-
-#ifdef APIC_IO
-/*
- * Note: The APIC uses different values for IRQxxx.
- * Unfortunately many drivers use the 8259 values as indexes
- * into tables, etc. The APIC equivilants are kept as APIC_IRQxxx.
- * The 8259 versions have to be used in SMP for legacy operation
- * of the drivers.
- */
-#endif /* APIC_IO */
-
/*
* Interrupt enable bits - in normal order of priority (which we change)
*/
@@ -122,6 +90,7 @@ extern unsigned imen; /* interrupt mask enable */
* Interrupt Control offset into Interrupt descriptor table (IDT)
*/
#define ICU_OFFSET 32 /* 0-31 are processor exceptions */
+#define ICU_LEN 16 /* 32-47 are ISA interrupts */
#ifdef PC98
#define ICU_IMR_OFFSET 2
@@ -130,23 +99,13 @@ extern unsigned imen; /* interrupt mask enable */
#define ICU_IMR_OFFSET 1
#define ICU_SLAVEID 2
#endif
-#define ICU_EOI 0x20
-#ifdef APIC_IO
-
-/* 32-47: ISA IRQ0-IRQ15, 48-63: IO APIC IRQ16-IRQ31 */
-#define ICU_LEN 32
-#define HWI_MASK 0xffffffff /* bits for h/w interrupts */
-#define NHWI 32
-
-#else
-
-#define ICU_LEN 16 /* 32-47 are ISA interrupts */
+#define ICU_EOI 0x20
#define HWI_MASK 0xffff /* bits for h/w interrupts */
-#define NHWI 16
-#endif /* APIC_IO */
-
-#define INTRCNT_COUNT (1 + ICU_LEN + 2 * ICU_LEN)
+#ifndef LOCORE
+void atpic_sched_ithd(struct intrframe iframe);
+void atpic_startup(void);
+#endif
#endif /* !_I386_ISA_ICU_H_ */
OpenPOWER on IntegriCloud