X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=include%2Fasm-i386%2Fmach-default%2Fmach_traps.h;h=4e34a91be36989f832bf2347c781abbfc5f0795f;hb=refs%2Fheads%2Fvserver;hp=c98c2880c5c97379239745f038a75fbed10b26a8;hpb=5273a3df6485dc2ad6aa7ddd441b9a21970f003b;p=linux-2.6.git diff --git a/include/asm-i386/mach-default/mach_traps.h b/include/asm-i386/mach-default/mach_traps.h index c98c2880c..4e34a91be 100644 --- a/include/asm-i386/mach-default/mach_traps.h +++ b/include/asm-i386/mach-default/mach_traps.h @@ -7,12 +7,26 @@ #ifndef _MACH_TRAPS_H #define _MACH_TRAPS_H +#include + static inline void clear_mem_error(unsigned char reason) { reason = (reason & 0xf) | 4; outb(reason, 0x61); } +static inline void clear_io_check_error(unsigned char reason) +{ + unsigned long i; + + reason = (reason & 0xf) | 8; + outb(reason, 0x61); + i = 2000; + while (--i) udelay(1000); + reason &= ~8; + outb(reason, 0x61); +} + static inline unsigned char get_nmi_reason(void) { return inb(0x61); @@ -20,10 +34,20 @@ static inline unsigned char get_nmi_reason(void) static inline void reassert_nmi(void) { + int old_reg = -1; + + if (do_i_have_lock_cmos()) + old_reg = current_lock_cmos_reg(); + else + lock_cmos(0); /* register doesn't matter here */ outb(0x8f, 0x70); inb(0x71); /* dummy */ outb(0x0f, 0x70); inb(0x71); /* dummy */ + if (old_reg >= 0) + outb(old_reg, 0x70); + else + unlock_cmos(); } #endif /* !_MACH_TRAPS_H */