On Wed, May 07, 2008 at 10:50:11AM +0800, aaron lwe wrote:
I've written a loader for coreboot-v2 to load legacybios, it works well when used with qemu, I've booted freebsd with it. But on real hardware, via epia-cn, it hangs with a blank screen, the debug port value is 0x31, I'll take some time to see what's going wrong.
I add a header for legacybios to become a payload, this is done by a utility createpayload.
Hi Aaron,
It looks like your payload launcher transitions to 16bit mode to enter the bios. Although this works, it's not needed.
If you look at the file legacybios/out/rom32.offset.auto.h you'll see a definition for OFFSET__start. This is the 32bit entry point. (Jumping to 0xf000:0xfff0 in 16bit mode just causes legacybios to transition to 32bit mode and then jump to the above.)
So, something like:
typedef void (*entry_t)(); entry_t myentry = (entry_t)OFFSET__start; myentry();
Should be all that is needed.
-Kevin