projects
/
qemu.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
cfe819d
)
target-i386: emulate XCHG using atomic helper
author
Emilio G. Cota
<cota@braap.org>
Mon, 27 Jun 2016 19:02:04 +0000
(15:02 -0400)
committer
Richard Henderson
<rth@twiddle.net>
Wed, 26 Oct 2016 15:29:01 +0000
(08:29 -0700)
Signed-off-by: Emilio G. Cota <cota@braap.org>
Message-Id: <
1467054136
-10430-19-git-send-email-cota@braap.org>
Signed-off-by: Richard Henderson <rth@twiddle.net>
target-i386/translate.c
patch
|
blob
|
history
diff --git
a/target-i386/translate.c
b/target-i386/translate.c
index b3cb4c5f640a2a5a70d4443199631c9539166591..cfa395654322d1e0a6042c49ec6fe3a524e5d11f 100644
(file)
--- a/
target-i386/translate.c
+++ b/
target-i386/translate.c
@@
-5564,12
+5564,8
@@
static target_ulong disas_insn(CPUX86State *env, DisasContext *s,
gen_lea_modrm(env, s, modrm);
gen_op_mov_v_reg(ot, cpu_T0, reg);
/* for xchg, lock is implicit */
- if (!(prefixes & PREFIX_LOCK))
- gen_helper_lock();
- gen_op_ld_v(s, ot, cpu_T1, cpu_A0);
- gen_op_st_v(s, ot, cpu_T0, cpu_A0);
- if (!(prefixes & PREFIX_LOCK))
- gen_helper_unlock();
+ tcg_gen_atomic_xchg_tl(cpu_T1, cpu_A0, cpu_T0,
+ s->mem_index, ot | MO_LE);
gen_op_mov_reg_v(ot, reg, cpu_T1);
}
break;