diff options
author | takawata <takawata@FreeBSD.org> | 2001-07-20 06:07:34 +0000 |
---|---|---|
committer | takawata <takawata@FreeBSD.org> | 2001-07-20 06:07:34 +0000 |
commit | d3d1b151d3f3f67385b5e5adbbafd20527daa156 (patch) | |
tree | fb4e3d6b249e14e537e8681949888f823fa67602 /sys/i386/isa/nmi.c | |
parent | c3d97bef4d7f5c6ef78bbe34ac08731d7e2a9b0f (diff) | |
download | FreeBSD-src-d3d1b151d3f3f67385b5e5adbbafd20527daa156.zip FreeBSD-src-d3d1b151d3f3f67385b5e5adbbafd20527daa156.tar.gz |
Add ACPI S2-S4BIOS Suspend/Resume code.
Some problems may remain.
Reviewed by:iwasaki
Diffstat (limited to 'sys/i386/isa/nmi.c')
-rw-r--r-- | sys/i386/isa/nmi.c | 27 |
1 files changed, 26 insertions, 1 deletions
diff --git a/sys/i386/isa/nmi.c b/sys/i386/isa/nmi.c index 503163f..48555d3 100644 --- a/sys/i386/isa/nmi.c +++ b/sys/i386/isa/nmi.c @@ -135,6 +135,7 @@ static driver_intr_t isa_strayintr; static void ithds_init(void *dummy); static void ithread_enable(int vector); static void ithread_disable(int vector); +static void init_i8259(void); #ifdef PC98 #define NMI_PARITY 0x04 @@ -282,6 +283,22 @@ isa_nmi(cd) } /* + * ICU reinitialize when ICU configuration has lost. + */ +void icu_reinit() +{ + int i; + u_int32_t eflags; + eflags = read_eflags(); + disable_intr(); + init_i8259(); + for(i=0;i<ICU_LEN;i++) + if(intr_handler[i] != isa_strayintr) + INTREN(1<<i); + write_eflags(eflags); +} + +/* * Create a default interrupt table to avoid problems caused by * spurious interrupts during configuration of kernel, then setup * interrupt control unit. @@ -294,8 +311,16 @@ isa_defaultirq() /* icu vectors */ for (i = 0; i < ICU_LEN; i++) icu_unset(i, (driver_intr_t *)NULL); + init_i8259(); +} + + +/* + *initialize 8259's + */ +static void init_i8259() +{ - /* initialize 8259's */ #ifdef DEV_MCA if (MCA_system) outb(IO_ICU1, 0x19); /* reset; program device, four bytes */ |