mirror of https://gitee.com/openkylin/qemu.git
target-arm: Set carry flag correctly for Thumb2 ORNS
The code for Thumb2 ORNS (or negated and set flags) was trashing a TCG input register which was needed later for use in calculating flags, with the effect that the carry flag was always set with the wrong sense. Fix this by using the TCG orc op instead of separate not and or ops. Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
This commit is contained in:
parent
f66a99d752
commit
29501f1b9e
|
@ -7351,8 +7351,7 @@ gen_thumb2_data_op(DisasContext *s, int op, int conds, uint32_t shifter_out, TCG
|
||||||
logic_cc = conds;
|
logic_cc = conds;
|
||||||
break;
|
break;
|
||||||
case 3: /* orn */
|
case 3: /* orn */
|
||||||
tcg_gen_not_i32(t1, t1);
|
tcg_gen_orc_i32(t0, t0, t1);
|
||||||
tcg_gen_or_i32(t0, t0, t1);
|
|
||||||
logic_cc = conds;
|
logic_cc = conds;
|
||||||
break;
|
break;
|
||||||
case 4: /* eor */
|
case 4: /* eor */
|
||||||
|
|
Loading…
Reference in New Issue