--- src/sys/i386/isa/Attic/intr_machdep.c 2005/06/16 21:12:47 1.31 +++ src/sys/i386/isa/Attic/intr_machdep.c 2005/09/10 06:48:08 1.32 @@ -96,7 +96,7 @@ static inthand2_t isa_strayintr; #if defined(FAST_HI) && defined(APIC_IO) -static inthand2_t isa_wrongintr; +void do_wrongintr(int intr); #endif static void init_i8259(void); @@ -163,6 +163,22 @@ static inthand_t *slowintr[ICU_LEN] = { #endif /* APIC_IO */ }; +#if defined(APIC_IO) + +static inthand_t *wrongintr[ICU_LEN] = { + &IDTVEC(wrongintr0), &IDTVEC(wrongintr1), &IDTVEC(wrongintr2), + &IDTVEC(wrongintr3), &IDTVEC(wrongintr4), &IDTVEC(wrongintr5), + &IDTVEC(wrongintr6), &IDTVEC(wrongintr7), &IDTVEC(wrongintr8), + &IDTVEC(wrongintr9), &IDTVEC(wrongintr10), &IDTVEC(wrongintr11), + &IDTVEC(wrongintr12), &IDTVEC(wrongintr13), &IDTVEC(wrongintr14), + &IDTVEC(wrongintr15), + &IDTVEC(wrongintr16), &IDTVEC(wrongintr17), &IDTVEC(wrongintr18), + &IDTVEC(wrongintr19), &IDTVEC(wrongintr20), &IDTVEC(wrongintr21), + &IDTVEC(wrongintr22), &IDTVEC(wrongintr23) +}; + +#endif /* APIC_IO */ + #define NMI_PARITY (1 << 7) #define NMI_IOCHAN (1 << 6) #define ENMI_WATCHDOG (1 << 7) @@ -232,7 +248,6 @@ icu_reinit() INTREN(1<gd_cpuid); } else if (intrcnt[1 + intr] == 6) { log(LOG_CRIT, "too many stray irq ~%d's; not logging any more\n", intr); @@ -442,7 +450,7 @@ icu_setup(int intr, inthand2_t *handler, * the IO apic is not properly reprogrammed. */ vector = TPR_SLOW_INTS + intr; - setidt(vector, isa_wrongintr, + setidt(vector, wrongintr[intr], SDT_SYS386IGT, SEL_KPL, GSEL(GCODE_SEL, SEL_KPL)); vector = TPR_FAST_INTS + intr; setidt(vector, fastintr[intr],