On Thu, 7 Apr 2011, Anthony Liguori wrote: > On 04/07/2011 10:31 AM, Gleb Natapov wrote: > > On Thu, Apr 07, 2011 at 08:28:37AM -0500, Anthony Liguori wrote: > > > On 04/07/2011 03:22 AM, Bei Guan wrote: > > > > Hi, > > > > > > > > I have some questions about the qemu's bios. How does the QEMU > > > > load the binary files bios.bin and vgabios-cirrus.bin? Which > > > > function or code file need I to pay more attention to? > > > > > > > > For the loading of vgabios-cirrus.bin and bios.bin, I just trace > > > > them into the same funciton rom_add_file() in hw/loader.c. Is it > > > > the right function, which loads the bioses? > > > > > > > > And then another question, how qemu give the control to bios when > > > > the bios file is loaded? Maybe this question is not in the scope > > > > of qemu, however, can you give me some cue point. > > > I had some stuff written up locally so I posted it to the wiki at > > > http://wiki.qemu.org/Documentation/Platforms/PC > > > > > > The x86 architecture defines the initial state of the chip to have > > > the CS register have a base of 0xF000 and an IP of 0xFFF0. The > > > result is that the actual memory address of the first instruction > > > falls at the end of the BIOS ROM segment. This is the entry point > > > to the BIOS. > > > > > Actually after reset on x86 IP=0x0000fff0, CS=0xf000, CS.BASE= 0xffff0000, > > CS.LIMIT=0xffff. So the execution begins at 0xfffffff0 where ROM is > > mapped initially. > > That impossible because 1) the processor starts in 16 bit mode so such an > address cannot be generated 2) the processor has a20 held to zero which makes > that the processor cannot generate a load to an address with the 20th bit set > to anything but zero.
It starts in big-real mode so only a20 can be a limiting factor.. > > The CS base starts out at 0xf0000 and IP is 0xfff0. That gives a real address > of 0xffff0. This is usually a trampoline to somewhere else in the space. > > The mapping of BIOS to the top of 4GB is just a convention that modern BIOSes > use because the legacy space isn't big enough for most modern BIOSes. > > Regards, > > Anthony Liguori > > > > The VGABIOS is treated like any other option ROM and is initialized > > > during option ROM scanning. > > > > > > Regards, > > > > > > Anthony Liguori > > > > > > > Any reply are appreciated. Thanks. > > > > > > > > Gavin > > > > > > > > > > > > > > > > > > -- > > Gleb. > > > > -- mailto:av1...@comtv.ru