Date: Mon, 26 Jun 1995 23:46:32 -0700 (PDT) From: "Rodney W. Grimes" <rgrimes@gndrsh.aac.dev.com> To: bde@zeta.org.au (Bruce Evans) Cc: bde@zeta.org.au, hackers@freebsd.org, wpaul@skynet.ctr.columbia.edu Subject: Re: 2.05R reboot hangs Message-ID: <199506270646.XAA05808@gndrsh.aac.dev.com> In-Reply-To: <199506261921.FAA11249@godzilla.zeta.org.au> from "Bruce Evans" at Jun 27, 95 05:21:05 am
next in thread | previous 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. 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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199506270646.XAA05808>