Commit 7a54cfbc authored by Max Filippov's avatar Max Filippov
Browse files

target/xtensa: fix s32c1i TCGMemOp flags



s32c1i must load and store value with target endianness, not host.
This results in an infinite loop in atomic cmpxchg sequences when target
endianness doesn't match host endianness.

Fixes: 9fb40342 ("target/xtensa: support MTTCG")
Cc: qemu-stable@nongnu.org
Signed-off-by: default avatarMax Filippov <jcmvbkbc@gmail.com>
Reviewed-by: default avatarRichard Henderson <richard.henderson@linaro.org>
parent f68774cc
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -2288,7 +2288,7 @@ static void translate_s32c1i(DisasContext *dc, const uint32_t arg[],
        gen_load_store_alignment(dc, 2, addr, true);
        gen_check_atomctl(dc, addr);
        tcg_gen_atomic_cmpxchg_i32(cpu_R[arg[0]], addr, cpu_SR[SCOMPARE1],
                                   tmp, dc->cring, MO_32);
                                   tmp, dc->cring, MO_TEUL);
        tcg_temp_free(addr);
        tcg_temp_free(tmp);
    }