diff options
author | Kevin O'Connor <kevin@koconnor.net> | 2009-02-27 20:14:05 -0500 |
---|---|---|
committer | Kevin O'Connor <kevin@koconnor.net> | 2009-02-27 20:14:05 -0500 |
commit | 9caf78634dd5e95611e222b047e60957fd2a22ce (patch) | |
tree | a8d903c0d1b142dc5877aa1ed6c0eaeed0d3b328 /src/util.c | |
parent | 1eba429e3988b84fe1b095defdbeac37a480c25f (diff) | |
download | seabios-hppa-9caf78634dd5e95611e222b047e60957fd2a22ce.zip seabios-hppa-9caf78634dd5e95611e222b047e60957fd2a22ce.tar.gz seabios-hppa-9caf78634dd5e95611e222b047e60957fd2a22ce.tar.bz2 |
Save/restore %ebp in __call16 instead of in caller (call16).
The Ubuntu gcc compiler apparently miscompiles code when %ebp is in an
assembler clobber list.
Also, don't clobber %eax in transition32 - a minor cleanup.
Diffstat (limited to 'src/util.c')
-rw-r--r-- | src/util.c | 4 |
1 files changed, 2 insertions, 2 deletions
@@ -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 |