From 787d2575bc4a4fa6e8289b60ee2405e15fb0158b Mon Sep 17 00:00:00 2001 From: mdodd Date: Fri, 3 Sep 1999 02:04:28 +0000 Subject: This adds the i386 specific support for systems with a MicroChannel Architecture bus. Reviewed by: msmith --- sys/i386/isa/nmi.c | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) (limited to 'sys/i386/isa/nmi.c') diff --git a/sys/i386/isa/nmi.c b/sys/i386/isa/nmi.c index 8bdb4b6..a429ef4 100644 --- a/sys/i386/isa/nmi.c +++ b/sys/i386/isa/nmi.c @@ -79,6 +79,11 @@ #include #endif +#include "mca.h" +#if NMCA > 0 +#include +#endif + /* XXX should be in suitable include files */ #ifdef PC98 #define ICU_IMR_OFFSET 2 /* IO_ICU{1,2} + 2 */ @@ -169,6 +174,11 @@ isa_nmi(cd) int isa_port = inb(0x61); int eisa_port = inb(0x461); +#if NMCA > 0 + if (MCA_system && mca_bus_nmi()) + return; +#endif + if (isa_port & NMI_PARITY) panic("RAM parity error, likely hardware failure."); @@ -211,7 +221,12 @@ isa_defaultirq() icu_unset(i, (inthand2_t *)NULL); /* initialize 8259's */ - outb(IO_ICU1, 0x11); /* reset; program device, four bytes */ +#if NMCA > 0 + if (MCA_system) + outb(IO_ICU1, 0x19); /* reset; program device, four bytes */ + else +#endif + outb(IO_ICU1, 0x11); /* reset; program device, four bytes */ outb(IO_ICU1+ICU_IMR_OFFSET, NRSVIDT); /* starting at this vector index */ outb(IO_ICU1+ICU_IMR_OFFSET, IRQ_SLAVE); /* slave on line 7 */ @@ -234,7 +249,13 @@ isa_defaultirq() outb(IO_ICU1, 0xc0 | (3 - 1)); /* pri order 3-7, 0-2 (com2 first) */ #endif /* !PC98 */ - outb(IO_ICU2, 0x11); /* reset; program device, four bytes */ +#if NMCA > 0 + if (MCA_system) + outb(IO_ICU2, 0x19); /* reset; program device, four bytes */ + else +#endif + outb(IO_ICU2, 0x11); /* reset; program device, four bytes */ + outb(IO_ICU2+ICU_IMR_OFFSET, NRSVIDT+8); /* staring at this vector index */ outb(IO_ICU2+ICU_IMR_OFFSET, ICU_SLAVEID); /* my slave id is 7 */ #ifdef PC98 -- cgit v1.1