diff options
author | jhb <jhb@FreeBSD.org> | 2003-11-03 21:34:45 +0000 |
---|---|---|
committer | jhb <jhb@FreeBSD.org> | 2003-11-03 21:34:45 +0000 |
commit | aac4b7181cbed34861c76ff9d9142c7fdf212008 (patch) | |
tree | f2991d5d0fc0ae7e901f99710b5648d3a8217c08 /sys/i386/isa/icu.h | |
parent | 2eeede4b8babdb63edcfd505c0adef202c7859bf (diff) | |
download | FreeBSD-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.h | 53 |
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_ */ |