wingo pushed a commit to branch lightning
in repository guile.
commit d369edf15d0a5b7b0dc608091b90cd6db15c01ed
Author: Paolo Bonzini <[email protected]>
Date: Sat Mar 8 18:21:07 2008 +0100
Fix stxr_c(_EAX, _EBX, _ESI).
2008-03-08 Paolo Bonzini <[email protected]>
* lightning/i386/core-32.h: Fix stxr_c(_EAX, _EBX, _ESI).
---
ChangeLog | 4 ++++
lightning/i386/core-32.h | 7 ++++++-
2 files changed, 10 insertions(+), 1 deletion(-)
diff --git a/ChangeLog b/ChangeLog
index 9b6879c..5cfff68 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2008-03-08 Paolo Bonzini <[email protected]>
+
+ * lightning/i386/core-32.h: Fix stxr_c(_EAX, _EBX, _ESI).
+
2008-02-13 Paolo Bonzini <[email protected]>
* lightning/i386/asm-32.h: Avoid redefinition of _r1, reported by
diff --git a/lightning/i386/core-32.h b/lightning/i386/core-32.h
index 48153e6..09e7f5f 100644
--- a/lightning/i386/core-32.h
+++ b/lightning/i386/core-32.h
@@ -117,7 +117,12 @@ struct jit_local_state {
#define jit_movbrm(rs, dd, db, di, ds)
\
(jit_check8(rs)
\
? MOVBrm(jit_reg8(rs), dd, db, di, ds)
\
- : jit_replace(_EBX, rs, _EAX, MOVBrm(_AL, dd, db, di, ds)))
+ : jit_replace(_EBX, rs,
\
+ ((dd != _EAX && db != _EAX) ? _EAX :
\
+ ((dd != _ECX && db != _ECX) ? _ECX : _EDX)),
\
+ MOVBrm(((dd != _EAX && db != _EAX) ? _AL :
\
+ ((dd != _ECX && db != _ECX) ? _CL :
_DL)), \
+ dd, db, di, ds)))
#define jit_ldi_c(d, is) MOVSBLmr((is), 0, 0, 0, (d))
#define jit_ldxi_c(d, rs, is) MOVSBLmr((is), (rs), 0, 0, (d))