From owner-freebsd-hackers Mon Jun 26 23:47:28 1995 Return-Path: hackers-owner Received: (from majordom@localhost) by freefall.cdrom.com (8.6.10/8.6.6) id XAA10510 for hackers-outgoing; Mon, 26 Jun 1995 23:47:28 -0700 Received: from gndrsh.aac.dev.com (gndrsh.aac.dev.com [198.145.92.241]) by freefall.cdrom.com (8.6.10/8.6.6) with ESMTP id XAA10504 for ; Mon, 26 Jun 1995 23:47:25 -0700 Received: (from rgrimes@localhost) by gndrsh.aac.dev.com (8.6.11/8.6.9) id XAA05808; Mon, 26 Jun 1995 23:46:33 -0700 From: "Rodney W. Grimes" Message-Id: <199506270646.XAA05808@gndrsh.aac.dev.com> Subject: Re: 2.05R reboot hangs To: bde@zeta.org.au (Bruce Evans) Date: Mon, 26 Jun 1995 23:46:32 -0700 (PDT) Cc: bde@zeta.org.au, hackers@freebsd.org, wpaul@skynet.ctr.columbia.edu In-Reply-To: <199506261921.FAA11249@godzilla.zeta.org.au> from "Bruce Evans" at Jun 27, 95 05:21:05 am X-Mailer: ELM [version 2.4 PL24] MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Content-Length: 2158 Sender: hackers-owner@freebsd.org Precedence: bulk > > >jmp 0xffff:0xfff0 is deadly on some machines unless a hard reset has > >just occured. Many BIOS writers only expected to start executing > >from that location on a hard reset and do not do full CPU chip > >initialization. > > I think at least [3-4]86's can be initialized sufficiently in software. There is a world of difference between ``can be'' and ``are'' in the world of PC bioses and the folks who write them!! > >And the first requirement is that you have a page that is mapped > >physical==logical to do run the code in :-(. > > Page 0 is free and normally mapped to 0xf0000000. You just have to > map it to 0 too. Ewwwweeeee... page 0, the BIOS data page. You want me to try and call the BIOS from the BIOS data area?? Are you SICK :-) :-) :-) Bong... try again... oh.. wait, doesnt the BIOS data area end at 0x500? So I could do what I wanted in say 0x500->0x1000 right?? > >> There's no way to reset all hardware properly, even for warm boots > >> under DOS. Some BIOS's don't even reset serial ports that they > >> support. > > >Correct, but setting location 0x471 to 0 helps a lot, as that tells > >the BIOS to do a cold boot, memory test and all. Actually any value > >other than the magic one we stuff in there in locore.s. > > 0x472-3. There is also a boot-type byte in the CMOS and a cold-boot > flag in the keyboard controller. The boot-type byte defaults to a > cold boot so FreeBSD doesn't need to touch it. I'm not sure if the > keyboard flag is writable. FreeBSD shouldn't set the 0x472 magic > at boot time; it should set it at reboot time only for controlled > boots, or perhaps always for BIOSes that don't do sufficient > initialization after a warm boot. I agree with not setting the 0x472 magic in locore, I've been tempted every time I see it to just rip it out. If any place this should go in cpu_reset() or boot(). The other stuff is probably best just left alone, too many different implementations (ie, they are not documented officially). -- Rod Grimes rgrimes@gndrsh.aac.dev.com Accurate Automation Company Reliable computers for FreeBSD