OSDN Git Service

target/i386: Use MO_128 for 16 byte atomics
authorRichard Henderson <richard.henderson@linaro.org>
Mon, 26 Jul 2021 23:38:42 +0000 (13:38 -1000)
committerRichard Henderson <richard.henderson@linaro.org>
Wed, 13 Oct 2021 14:58:00 +0000 (07:58 -0700)
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
target/i386/tcg/mem_helper.c

index 0fd696f..a207e62 100644 (file)
@@ -136,7 +136,7 @@ void helper_cmpxchg16b(CPUX86State *env, target_ulong a0)
         Int128 newv = int128_make128(env->regs[R_EBX], env->regs[R_ECX]);
 
         int mem_idx = cpu_mmu_index(env, false);
-        MemOpIdx oi = make_memop_idx(MO_TEQ | MO_ALIGN_16, mem_idx);
+        MemOpIdx oi = make_memop_idx(MO_TE | MO_128 | MO_ALIGN, mem_idx);
         Int128 oldv = cpu_atomic_cmpxchgo_le_mmu(env, a0, cmpv, newv, oi, ra);
 
         if (int128_eq(oldv, cmpv)) {