On Mon, Nov 10, 2008 at 01:07:27AM +0100, Stefan Reinauer wrote:
Kevin O'Connor wrote:
Did you setup SeaBIOS' idt/gdt? If not, you won't be able to use call16() which would break calling option roms from SeaBIOS. (It also prevents usleep() from working which would prevent certain devices from initializing.)
Otherwise, can you post the entry code that you are using?
I worked on unifying the GDTs used in coreboot-v3, coreboot-v3 real-mode and SeaBIOS, so I don't load a GDT in SeaBIOS, but I do load the SeaBIOS IDT. See both attached patches.
Hrmm. Where is the stack actually located when using coreboot? The call16() code assumes it can use the same stack for 16bit and 32bit code. If your actual stack is not in the first 64K then that assumption wont work.
Also, on a closer look, the SeaBIOS IDT doesn't actually do anything, so no real need to mess with that one.
BTW, there are sgdtl and sidtl insns, so it is theoretically possible to save and restore the coreboot context.
-Kevin