aboutsummaryrefslogtreecommitdiff
path: root/src/util.c
diff options
context:
space:
mode:
authorKevin O'Connor <kevin@koconnor.net>2009-02-27 20:14:05 -0500
committerKevin O'Connor <kevin@koconnor.net>2009-02-27 20:14:05 -0500
commit9caf78634dd5e95611e222b047e60957fd2a22ce (patch)
treea8d903c0d1b142dc5877aa1ed6c0eaeed0d3b328 /src/util.c
parent1eba429e3988b84fe1b095defdbeac37a480c25f (diff)
downloadseabios-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.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/util.c b/src/util.c
index 2c925fe..7358040 100644
--- 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