From owner-freebsd-hackers Tue Jun 30 14:50:46 1998 Return-Path: Received: (from majordom@localhost) by hub.freebsd.org (8.8.8/8.8.8) id OAA11592 for freebsd-hackers-outgoing; Tue, 30 Jun 1998 14:50:46 -0700 (PDT) (envelope-from owner-freebsd-hackers@FreeBSD.ORG) Received: from smtp01.primenet.com (daemon@smtp01.primenet.com [206.165.6.131]) by hub.freebsd.org (8.8.8/8.8.8) with ESMTP id OAA11579 for ; Tue, 30 Jun 1998 14:50:38 -0700 (PDT) (envelope-from tlambert@usr02.primenet.com) Received: (from daemon@localhost) by smtp01.primenet.com (8.8.8/8.8.8) id OAA21791; Tue, 30 Jun 1998 14:50:35 -0700 (MST) Received: from usr02.primenet.com(206.165.6.202) via SMTP by smtp01.primenet.com, id smtpd021724; Tue Jun 30 14:50:25 1998 Received: (from tlambert@localhost) by usr02.primenet.com (8.8.5/8.8.5) id OAA21588; Tue, 30 Jun 1998 14:50:22 -0700 (MST) From: Terry Lambert Message-Id: <199806302150.OAA21588@usr02.primenet.com> Subject: Re: BROKEN_KEYBOARD_RESET To: labrinop@pop.vaniercollege.qc.ca Date: Tue, 30 Jun 1998 21:50:22 +0000 (GMT) Cc: belkovic@albert.osu.cz, freebsd-hackers@FreeBSD.ORG In-Reply-To: <199806301108.HAA23527@pteradactyl> from "labrinop@pop.vaniercollege.qc.ca" at Jun 30, 98 07:07:32 am X-Mailer: ELM [version 2.4 PL25] MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Sender: owner-freebsd-hackers@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.ORG > A software reset is generated by asserting a bit in the 8042 > keyboard controller (thats why its called KEYBOARD_RESET), > ie: > MOV AL , 0xFE ; pulse 8042 output port with bit 0 must be low > OUT 0x64 , AL ; output to 8042 command register > > this is how it has been done since the PC/AT (PC & PC/XT doesn't have > this) and is still done. The above sequence has the same effect as > the RESET button (internally their wired together). But some > motherboard/chipsets are broken and don't work correctly. No. There is a BIOS vector on the other end of this. Some BIOS reset implementations are incapable of operating in protected mode, because of one assumption or another. If the system were returned to real mode, or the reset was triggered in a VM86, and allowed to run to completion instead of trapping whatever the BIOS poked (ie: I/O address space, outb, CMOS, whatever), then you could reset. > Another way to reset the system while still in protected mode is to > generate a triple fault: clear IDT entries 8 (Double Fault) and 10 > (Invalid TSS) and then load TR with an illegal selector. > > > invalid tss > double fault > triple fault > cpu shutdown > reset This presumes that the CPU reset is wired correctly. The "correct" wiring is undefined in the ISA/PC architecture documents that were widely circulated when ISA was renamed "ISA"; in my experience, a full 30% of motherboards fail to wire the reset such that a triple fault results in the machine resetting. See the Van Gilluwe book for details. Terry Lambert terry@lambert.org --- Any opinions in this posting are my own and not those of my present or previous employers. To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-hackers" in the body of the message