mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-05-03 13:20:26 +02:00
fix two bugs in load/store for i386
* lightning/i386/core-32.h (jit_replace): Use MOVLrr, not MOVLir. (jit_movbrm): Check index register as well.
This commit is contained in:
parent
5ea118e8a9
commit
5cef649486
1 changed files with 5 additions and 5 deletions
|
@ -129,17 +129,17 @@ struct jit_local_state {
|
||||||
|
|
||||||
#define jit_replace(s, rep, op) \
|
#define jit_replace(s, rep, op) \
|
||||||
(jit_pushr_i(rep), \
|
(jit_pushr_i(rep), \
|
||||||
MOVLir((s), (rep)), \
|
MOVLrr((s), (rep)), \
|
||||||
op, jit_popr_i(rep))
|
op, jit_popr_i(rep))
|
||||||
|
|
||||||
#define jit_movbrm(rs, dd, db, di, ds) \
|
#define jit_movbrm(rs, dd, db, di, ds) \
|
||||||
(jit_check8(rs) \
|
(jit_check8(rs) \
|
||||||
? MOVBrm(jit_reg8(rs), dd, db, di, ds) \
|
? MOVBrm(jit_reg8(rs), dd, db, di, ds) \
|
||||||
: jit_replace(rs, \
|
: jit_replace(rs, \
|
||||||
((dd != _EAX && db != _EAX) ? _EAX : \
|
((dd != _EAX && db != _EAX && di != _EAX) ? _EAX : \
|
||||||
((dd != _ECX && db != _ECX) ? _ECX : _EDX)), \
|
((dd != _ECX && db != _ECX && di != _ECX) ? _ECX : _EDX)), \
|
||||||
MOVBrm(((dd != _EAX && db != _EAX) ? _AL : \
|
MOVBrm(((dd != _EAX && db != _EAX && di != _EAX) ? _AL : \
|
||||||
((dd != _ECX && db != _ECX) ? _CL : _DL)), \
|
((dd != _ECX && db != _ECX && di != _ECX) ? _CL : _DL)), \
|
||||||
dd, db, di, ds)))
|
dd, db, di, ds)))
|
||||||
|
|
||||||
#define jit_ldi_c(d, is) MOVSBLmr((is), 0, 0, 0, (d))
|
#define jit_ldi_c(d, is) MOVSBLmr((is), 0, 0, 0, (d))
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue