On Thu, Feb 26, 2009 at 08:10:33PM -0500, Ward Vandewege wrote:
On Thu, Feb 26, 2009 at 07:38:56PM -0500, Kevin O'Connor wrote:
Wow, this looks like a compiler bug. When disassembling I see:
$ gcc --version gcc (GCC) 4.2.4 (Ubuntu 4.2.4-1ubuntu3) Copyright (C) 2007 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Yeah, I realized I could pull your compiler version out of the .o files. I can also confirm that my Ubuntu virtual machines are also miscompiling seabios. (What's Ubuntu doing to their compilers?)
Looks like it can't handle ebp being in a clobber list. Can you see if the patch below works for you?
-Kevin
--- a/src/util.c +++ b/src/util.c @@ -22,7 +22,7 @@ call16(struct bregs *callregs) #endif : "+a" (callregs), "+m" (*callregs) : - : "ebx", "ecx", "edx", "esi", "edi", "ebp", "cc", "memory"); + : "ebx", "ecx", "edx", "esi", "edi", "cc", "memory"); }
inline void @@ -36,7 +36,7 @@ call16big(struct bregs *callregs) "calll __call16big_from32\n" : "+a" (callregs), "+m" (*callregs) : - : "ebx", "ecx", "edx", "esi", "edi", "ebp", "cc", "memory"); + : "ebx", "ecx", "edx", "esi", "edi", "cc", "memory"); }
inline void