From: Max Filippov Date: Fri, 31 Aug 2018 07:40:28 +0000 (-0700) Subject: target/xtensa: fix FPU2000 bugs X-Git-Tag: v3.1.0-rc0~92^2~4 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=e8e05fd472cbe77650353eaa50d5a9703a91c1db;p=thirdparty%2Fqemu.git target/xtensa: fix FPU2000 bugs - FPU2000 defines rfr and wfr opcodes, not rfr.s and wfr.s; - movcond.s uses incorrect operand in tcg_gen_movcond: in case the condition is not satisfied it must not change its argument 0. Fixes: c04e1692e3aa ("target/xtensa: extract FPU2000 opcode translators") Cc: qemu-stable@nongnu.org Signed-off-by: Max Filippov --- diff --git a/target/xtensa/translate.c b/target/xtensa/translate.c index d22cdcdb163..25399058a0d 100644 --- a/target/xtensa/translate.c +++ b/target/xtensa/translate.c @@ -4706,7 +4706,7 @@ static void translate_movcond_s(DisasContext *dc, const uint32_t arg[], tcg_gen_movcond_i32(par[0], cpu_FR[arg[0]], cpu_R[arg[2]], zero, - cpu_FR[arg[1]], cpu_FR[arg[2]]); + cpu_FR[arg[1]], cpu_FR[arg[0]]); tcg_temp_free(zero); } } @@ -4867,7 +4867,7 @@ static const XtensaOpcodeOps fpu2000_ops[] = { .translate = translate_compare_s, .par = (const uint32_t[]){COMPARE_OLT}, }, { - .name = "rfr.s", + .name = "rfr", .translate = translate_rfr_s, }, { .name = "round.s", @@ -4921,7 +4921,7 @@ static const XtensaOpcodeOps fpu2000_ops[] = { .translate = translate_ftoi_s, .par = (const uint32_t[]){float_round_to_zero, true}, }, { - .name = "wfr.s", + .name = "wfr", .translate = translate_wfr_s, }, };