On Sun, Mar 04, 2012 at 03:03:49AM +0000, Julian Pidancet wrote:
I've done further debugging, and you can ignore all of the crap above. x86emu badly handles the retl instruction and only pops a 16bit wide value from the stack, whereas the corresponding calll pushes a 32bit return address. leavel suffers from the same problem.
Well, that's unfortunate. The system SeaBIOS uses to get gcc compiled code working in 16bit mode is going to generate "retl" instructions.
It may be possible to post-process the resulting assembler code, but (assuming we could) it would be quite ugly.
I've applied the following patch to x86emu and it seems to work better:
So, I guess the question is, how important is support for current/legacy x86emu versions?
-Kevin