diff options
Diffstat (limited to 'target-i386/mem_helper.c')
-rw-r--r-- | target-i386/mem_helper.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/target-i386/mem_helper.c b/target-i386/mem_helper.c index 6cf9ba076e..f0f5aec283 100644 --- a/target-i386/mem_helper.c +++ b/target-i386/mem_helper.c @@ -45,14 +45,14 @@ void helper_cmpxchg8b(CPUX86State *env, target_ulong a0) eflags = cpu_cc_compute_all(env, CC_OP); d = cpu_ldq_data(env, a0); - if (d == (((uint64_t)EDX << 32) | (uint32_t)EAX)) { + if (d == (((uint64_t)EDX << 32) | (uint32_t)env->regs[R_EAX])) { cpu_stq_data(env, a0, ((uint64_t)ECX << 32) | (uint32_t)EBX); eflags |= CC_Z; } else { /* always do the store */ cpu_stq_data(env, a0, d); EDX = (uint32_t)(d >> 32); - EAX = (uint32_t)d; + env->regs[R_EAX] = (uint32_t)d; eflags &= ~CC_Z; } CC_SRC = eflags; @@ -70,7 +70,7 @@ void helper_cmpxchg16b(CPUX86State *env, target_ulong a0) eflags = cpu_cc_compute_all(env, CC_OP); d0 = cpu_ldq_data(env, a0); d1 = cpu_ldq_data(env, a0 + 8); - if (d0 == EAX && d1 == EDX) { + if (d0 == env->regs[R_EAX] && d1 == EDX) { cpu_stq_data(env, a0, EBX); cpu_stq_data(env, a0 + 8, ECX); eflags |= CC_Z; @@ -79,7 +79,7 @@ void helper_cmpxchg16b(CPUX86State *env, target_ulong a0) cpu_stq_data(env, a0, d0); cpu_stq_data(env, a0 + 8, d1); EDX = d1; - EAX = d0; + env->regs[R_EAX] = d0; eflags &= ~CC_Z; } CC_SRC = eflags; |