Random comments on LinuxBIOS
Steve Gehlbach
steve at nexpath.com
Wed Apr 16 22:56:00 CEST 2003
Eric W. Biederman wrote:
> For LPC flash parts the address line count is not a real issue, new boards
> have them and they current are up to 8Mbit in size, but do not have a theoretical
> limit.
This reminds me of something I have intended to mention. Right now,
linuxbios starts up in the high 4G and jumps to the start of the assy
code, which is located at 0xffff0004 or 0xf0004 depending on the setting
of biosbase (which sets _ROMBASE). For biosbase set to 0xffff0000, the
jump is a 16-bit relative jump to 0xffff0004 and so it does a kind of
wrap around I think (segment register not reloaded).
Given the large LPC flash parts are coming, and so large flash storage,
it seems we should change the startup to set 32-bit mode first, then
jump 32-bit to the start of the assy code. The usual way that I have
done this jump relative on reset enough bytes below the reset vector, to
setup a flat gdt, and go into 32-bit mode, then jump 32-bit to the flash
code start. This allows one to start anywhere in flash, not just the
top 64k-bytes. I also think we should default to wp cacheing for the
flash region as well.
In my view anyway, the current startup jump seems clumsy, and I am not
clear on why one would want to jump to 0xf0000 (the default) and run
there (for those that aren't familiar 0xf0000 is normally aliased to
0xffff0000 by most if not all chipsets on startup, and doesn't become
ram until you enable it). But being in 32-bit mode you could go where
you want.
Maybe there is a good reason for this but it escapes me.
-Steve
More information about the coreboot
mailing list