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