target/i386: Use MO_128 for 16 byte atomics
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
parent
c21751f394
commit
26b14640d9
@ -136,7 +136,7 @@ void helper_cmpxchg16b(CPUX86State *env, target_ulong a0)
|
|||||||
Int128 newv = int128_make128(env->regs[R_EBX], env->regs[R_ECX]);
|
Int128 newv = int128_make128(env->regs[R_EBX], env->regs[R_ECX]);
|
||||||
|
|
||||||
int mem_idx = cpu_mmu_index(env, false);
|
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);
|
Int128 oldv = cpu_atomic_cmpxchgo_le_mmu(env, a0, cmpv, newv, oi, ra);
|
||||||
|
|
||||||
if (int128_eq(oldv, cmpv)) {
|
if (int128_eq(oldv, cmpv)) {
|
||||||
|
Loading…
Reference in New Issue
Block a user