Commit e1ed709f authored by Richard Henderson's avatar Richard Henderson
Browse files

target/i386: Convert to HAVE_CMPXCHG128

parent e6cd4bb5
Loading
Loading
Loading
Loading
+4 −5
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@
#include "exec/exec-all.h"
#include "exec/cpu_ldst.h"
#include "qemu/int128.h"
#include "qemu/atomic128.h"
#include "tcg.h"

void helper_cmpxchg8b_unlocked(CPUX86State *env, target_ulong a0)
@@ -137,10 +138,7 @@ void helper_cmpxchg16b(CPUX86State *env, target_ulong a0)

    if ((a0 & 0xf) != 0) {
        raise_exception_ra(env, EXCP0D_GPF, ra);
    } else {
#ifndef CONFIG_ATOMIC128
        cpu_loop_exit_atomic(ENV_GET_CPU(env), ra);
#else
    } else if (HAVE_CMPXCHG128) {
        int eflags = cpu_cc_compute_all(env, CC_OP);

        Int128 cmpv = int128_make128(env->regs[R_EAX], env->regs[R_EDX]);
@@ -159,7 +157,8 @@ void helper_cmpxchg16b(CPUX86State *env, target_ulong a0)
            eflags &= ~CC_Z;
        }
        CC_SRC = eflags;
#endif
    } else {
        cpu_loop_exit_atomic(ENV_GET_CPU(env), ra);
    }
}
#endif