]> www.infradead.org Git - users/dwmw2/qemu.git/commitdiff
m68k: fix subx mem, mem instruction
authorPavel Dovgalyuk <Pavel.Dovgaluk@ispras.ru>
Wed, 18 Apr 2018 06:41:53 +0000 (09:41 +0300)
committerLaurent Vivier <laurent@vivier.eu>
Mon, 30 Apr 2018 13:43:54 +0000 (15:43 +0200)
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 <Pavel.Dovgaluk@ispras.ru>
Reviewed-by: Laurent Vivier <laurent@vivier.eu>
Message-Id: <20180418064152.24606.71975.stgit@pasha-VirtualBox>
Signed-off-by: Laurent Vivier <laurent@vivier.eu>
target/m68k/translate.c

index 6beaf9ed66722d2e2b0b169cb4656bff592fc31b..e407ba2db336dd6ad657e2ed58164bcfe8ca1763 100644 (file)
@@ -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);