From: Huw Davies Date: Thu, 13 Feb 2014 10:26:46 +0000 (+0000) Subject: tcg-arm: The shift count of op_rotl_i32 is in args[2] not args[1]. X-Git-Tag: v1.7.1~12 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=2cd72adb1c0ec75164f8fa296ace3221f03c3ab8;p=thirdparty%2Fqemu.git tcg-arm: The shift count of op_rotl_i32 is in args[2] not args[1]. It's this that should be subtracted from 0x20 when converting to a right rotate. Cc: qemu-stable@nongnu.org Signed-off-by: Huw Davies Signed-off-by: Richard Henderson (cherry picked from commit 7a3a00979d9dfe2aaa66ce5fc68cd161b4f900ba) Signed-off-by: Michael Roth --- diff --git a/tcg/arm/tcg-target.c b/tcg/arm/tcg-target.c index e93a4a237b6..5d4bbe7fb07 100644 --- a/tcg/arm/tcg-target.c +++ b/tcg/arm/tcg-target.c @@ -1868,7 +1868,7 @@ static inline void tcg_out_op(TCGContext *s, TCGOpcode opc, SHIFT_IMM_ROR((0x20 - args[2]) & 0x1f) : SHIFT_IMM_LSL(0)); } else { - tcg_out_dat_imm(s, COND_AL, ARITH_RSB, TCG_REG_TMP, args[1], 0x20); + tcg_out_dat_imm(s, COND_AL, ARITH_RSB, TCG_REG_TMP, args[2], 0x20); tcg_out_dat_reg(s, COND_AL, ARITH_MOV, args[0], 0, args[1], SHIFT_REG_ROR(TCG_REG_TMP)); }