target/i386: Convert to HAVE_CMPXCHG128

Backports commit e1ed709fbe687b1c92b31014b0ecfcd059252ec1 from qemu
This commit is contained in:
Richard Henderson 2018-10-23 15:20:34 -04:00 committed by Lioncash
parent d74e00a30a
commit 4bb71a98c0
No known key found for this signature in database
GPG key ID: 4E3C3CC1031BA9C7

View file

@ -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"
#include "uc_priv.h"
@ -139,10 +140,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]);
@ -161,7 +159,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