Skip site navigation (1)Skip section navigation (2)
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>