Le 18/04/2018 à 08:41, Pavel Dovgalyuk a écrit :
> 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>
> ---
> target/m68k/translate.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/target/m68k/translate.c b/target/m68k/translate.c
> index 6beaf9e..e407ba2 100644
> --- a/target/m68k/translate.c
> +++ b/target/m68k/translate.c
> @@ -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);
>
Reviewed-by: Laurent Vivier <laurent@vivier.eu>