Date: Tue, 27 Jun 1995 05:21:05 +1000 From: Bruce Evans <bde@zeta.org.au> To: bde@zeta.org.au, rgrimes@gndrsh.aac.dev.com Cc: hackers@freebsd.org, wpaul@skynet.ctr.columbia.edu Subject: Re: 2.05R reboot hangs Message-ID: <199506261921.FAA11249@godzilla.zeta.org.au>
next in thread | raw e-mail | index | archive | help
>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. >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. >> 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. Bruce
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199506261921.FAA11249>