wingo pushed a commit to branch lightning
in repository guile.
commit 2ecf6a2c28a8780f0bbf28af6d1bceb73666bb0c
Author: Paolo Bonzini <[email protected]>
Date: Mon Jul 26 09:14:18 2010 +0200
fix jit_movbrm in the i386 backend
2010-07-26 Paolo Bonzini <[email protected]>
* lightning/i386/core-32.h (jit_replace): Move here (removed
2009-03-01).
---
ChangeLog | 5 +++++
lightning/i386/core-32.h | 10 +++++++---
2 files changed, 12 insertions(+), 3 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 1b0836c..77975c9 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2010-07-26 Paolo Bonzini <[email protected]>
+
+ * lightning/i386/core-32.h (jit_replace): Move here (removed
+ 2009-03-01).
+
2010-07-19 Paolo Bonzini <[email protected]>
* build-aux/lightning.m4: Always set and replace lightning_frag.
diff --git a/lightning/i386/core-32.h b/lightning/i386/core-32.h
index 46b3516..e176370 100644
--- a/lightning/i386/core-32.h
+++ b/lightning/i386/core-32.h
@@ -127,11 +127,15 @@ struct jit_local_state {
#define jit_reg8(rs) ( ((rs) == _SI || (rs) == _DI) ? _AL :
(_rN(rs) | _AL ))
#define jit_reg16(rs) ( _rN(rs) | _AX )
-/* In jit_replace below, _EBX is dummy */
-#define jit_movbrm(rs, dd, db, di, ds)
\
+#define jit_replace(s, rep, cmp, op) \
+ (jit_pushr_i(rep), \
+ MOVLir((s), (rep)), \
+ op, jit_popr_i(rep))
+
+#define jit_movbrm(rs, dd, db, di, ds)
\
(jit_check8(rs)
\
? MOVBrm(jit_reg8(rs), dd, db, di, ds)
\
- : jit_replace(_EBX, rs,
\
+ : jit_replace(rs,
\
((dd != _EAX && db != _EAX) ? _EAX :
\
((dd != _ECX && db != _ECX) ? _ECX : _EDX)),
\
MOVBrm(((dd != _EAX && db != _EAX) ? _AL :
\