From owner-freebsd-hackers Tue Jun 27 10:14:44 1995 Return-Path: hackers-owner Received: (from majordom@localhost) by freefall.cdrom.com (8.6.10/8.6.6) id KAA22459 for hackers-outgoing; Tue, 27 Jun 1995 10:14:44 -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 KAA22453 for ; Tue, 27 Jun 1995 10:14:41 -0700 Received: (from rgrimes@localhost) by gndrsh.aac.dev.com (8.6.11/8.6.9) id KAA06821; Tue, 27 Jun 1995 10:14:02 -0700 From: "Rodney W. Grimes" Message-Id: <199506271714.KAA06821@gndrsh.aac.dev.com> Subject: Re: 2.05R reboot hangs To: bde@zeta.org.au (Bruce Evans) Date: Tue, 27 Jun 1995 10:14:02 -0700 (PDT) Cc: bde@zeta.org.au, hackers@freebsd.org, wpaul@skynet.ctr.columbia.edu In-Reply-To: <199506271030.UAA04080@godzilla.zeta.org.au> from "Bruce Evans" at Jun 27, 95 08:30:05 pm X-Mailer: ELM [version 2.4 PL24] MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Content-Length: 2034 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!! > > You initialize it before jumping to the reset vector. One that is very very hard to get right for most [3-4]86's is the CPUID that is stored id DX:AX on power up reset since that is the only way to get this value. > >> 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?? > > The whole page is garbage after cold boots. It might be safer to > leave 0x400-0x4ff alone in case the BIOS is broken. The interrupt > vectors will be corrupted after a dosboot to FreeBSD so you have to > rely on the BIOS reinitializing them. I don't want to call cold boot, I guess that was not clear from above. Also jumping to 0xFFFF:0000 (note your address above is not the reset vector the value here is) is not a documented interface to the BIOS. Calling cold boot is about as reliable as triple faulting or hitting the keyboard reset. The one and only proper way to make this work reliable on all machines as far as I can tell would be a good old int 0x19, and that means I had better leave the BDA's intact. I don't want to go do this only to use another interface that is just us unofficial as what we have now. -- Rod Grimes rgrimes@gndrsh.aac.dev.com Accurate Automation Company Reliable computers for FreeBSD