|
@@ -2470,7 +2470,12 @@ static void gen_store_exclusive(DisasContext *s, int rd, int rt, int rt2,
|
|
} else if (tb_cflags(s->base.tb) & CF_PARALLEL) {
|
|
} else if (tb_cflags(s->base.tb) & CF_PARALLEL) {
|
|
if (!HAVE_CMPXCHG128) {
|
|
if (!HAVE_CMPXCHG128) {
|
|
gen_helper_exit_atomic(cpu_env);
|
|
gen_helper_exit_atomic(cpu_env);
|
|
- s->base.is_jmp = DISAS_NORETURN;
|
|
|
|
|
|
+ /*
|
|
|
|
+ * Produce a result so we have a well-formed opcode
|
|
|
|
+ * stream when the following (dead) code uses 'tmp'.
|
|
|
|
+ * TCG will remove the dead ops for us.
|
|
|
|
+ */
|
|
|
|
+ tcg_gen_movi_i64(tmp, 0);
|
|
} else if (s->be_data == MO_LE) {
|
|
} else if (s->be_data == MO_LE) {
|
|
gen_helper_paired_cmpxchg64_le_parallel(tmp, cpu_env,
|
|
gen_helper_paired_cmpxchg64_le_parallel(tmp, cpu_env,
|
|
cpu_exclusive_addr,
|
|
cpu_exclusive_addr,
|