[LinuxBIOS] General question about reset vectors

Gabe Black gblack at eecs.umich.edu
Wed Oct 10 00:43:05 CEST 2007

    Hi. I'm extending the m5 simulator (www.m5sim.org) to support x86_64 
and am trying to figure out exactly how the boot process should work. 
According to both the AMD and Intel manuals, the cpu resets with the CS 
base at 0xFFFF0000, the CS selector at 0xF000, and the IP at 0xFFF0 
which means that the first instruction is fetched from physical memory 
address 0xFFFFFFF0. In all the other references I've found, however, the 
BIOS reset vector is described as being at 0xFFFF0. I used a hexeditor 
on a few BIOS images, and it seems that the first instruction at that 
reset vector is doing a far jump to CS selector 0xF000. This would keep 
the CS selector the same, but it would cause the CS base to be 
overwritten and instruction fetching to occur in the lower regions of 
memory. I'm assuming that the BIOS ROM is mapped into memory at both the 
top and bottom of the 32 bit address space, but there are very little 
information of this upper mapping. Could someone please explain to me 
how this is supposed to work? I need to know in enough detail to be able 
to implement it myself, but I also don't want to be too specific and 
limit the systems that I can simulate.

Gabe Black

More information about the coreboot mailing list