m68k: fix subx mem, mem instruction
PATCH 1/1 m68k: fix subx mem, mem instruction
This patch fixes decrement of the pointers for subx mem, mem instructions. Without the patch pointers are decremented by OS_* constant value instead of retrieving the corresponding data size and using it as a decrement.
Signed-off-by Pavel Dovgalyuk <[email protected]>
--- target/m68k/translate.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
target/m68k/translate.c +2 -2
@@ -3166,11 +3166,11 @@ DISAS_INSN(subx_mem) opsize =insn_opsize (insn); addr_src =AREG (insn,0 ); -tcg_gen_subi_i32 (addr_src, addr_src, opsize); +tcg_gen_subi_i32 (addr_src, addr_src,opsize_bytes (opsize)); src =gen_load (s, opsize, addr_src,1 ,IS_USER (s)); addr_dest =AREG (insn,9 ); -tcg_gen_subi_i32 (addr_dest, addr_dest, opsize); +tcg_gen_subi_i32 (addr_dest, addr_dest,opsize_bytes (opsize)); dest =gen_load (s, opsize, addr_dest,1 ,IS_USER (s));gen_subx (s, src, dest, opsize);
Le 18/04/2018 à 08:41, Pavel Dovgalyuk a écrit :
Quoted 18 lines
This patch fixes decrement of the pointers for subx mem, mem instructions. Without the patch pointers are decremented by OS_* constant value instead of retrieving the corresponding data size and using it as a decrement.
Signed-off-by Pavel Dovgalyuk <[email protected]>--- target/m68k/translate.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)target/m68k/translate.c +0
-0@@ -3166,11 +3166,11 @@ DISAS_INSN(subx_mem) opsize =insn_opsize (insn); addr_src =AREG (insn,0 );
target/m68k/translate.c DISAS_INSN(subx_mem) · line 3176
Quoted 10 lines
target/m68k/translate.c +2
-2-tcg_gen_subi_i32 (addr_src, addr_src, opsize); +tcg_gen_subi_i32 (addr_src, addr_src,opsize_bytes (opsize)); src =gen_load (s, opsize, addr_src,1 ,IS_USER (s)); addr_dest =AREG (insn,9 ); -tcg_gen_subi_i32 (addr_dest, addr_dest, opsize); +tcg_gen_subi_i32 (addr_dest, addr_dest,opsize_bytes (opsize)); dest =gen_load (s, opsize, addr_dest,1 ,IS_USER (s));gen_subx (s, src, dest, opsize);
Reviewed-by Laurent Vivier <[email protected]>