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))

Reply via email to