Has anyone seen corruption of ebx when using real mode for option ROMs?

I'm running the same ROM with SeaBIOS and real mode, and a series of
writes (ax = 1ab1 bx = b10d) works fine with SeaBIOS, but several of
the bx values are corrupted to b100 with real mode.

The only hint I can find is:

        // Put registers back on the stack. The assembler code
        // will later pop them.
        // What happens here is that we force (volatile!) changing
        // the values of the parameters of this function. We do this
        // because we know that they stay alive on the stack after
        // we leave this function. Don't say this is bollocks.
        *(volatile u32 *)&eax = reg_info.eax;
        *(volatile u32 *)&ecx = reg_info.ecx;
        *(volatile u32 *)&edx = reg_info.edx;
        *(volatile u32 *)&ebx = reg_info.ebx;

Since it's real mode, it seems like the only place for corruption is
the call & return.  Am I missing something?

Thanks,
Myles

-- 
coreboot mailing list: [email protected]
http://www.coreboot.org/mailman/listinfo/coreboot

Reply via email to