From 06e789a5733350ead5353a64df2ef67d66362b48 Mon Sep 17 00:00:00 2001 From: Denis Drakhnya Date: Sat, 28 Nov 2020 12:26:26 +0200 Subject: [PATCH] target: e2k: Jump to ctpr_addr if ctpr is return. --- target/e2k/helper.c | 2 +- target/e2k/translate.c | 8 +++----- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/target/e2k/helper.c b/target/e2k/helper.c index e30015ec62..8fa7c86230 100644 --- a/target/e2k/helper.c +++ b/target/e2k/helper.c @@ -39,7 +39,7 @@ static inline void restore_proc_chain_info(CPUE2KState *env, uint64_t buf[4]) e2k_state_cr1_hi_set(env, buf[3]); e2k_state_cr1_lo_set(env, buf[2]); - env->cr0_hi = buf[1]; + env->cr0_hi = buf[1]; // FIXME: is it necessary to restore ip? env->cr0_lo = buf[0]; env->wd.psize = env->cr1.wpsz * 2; diff --git a/target/e2k/translate.c b/target/e2k/translate.c index b41ff6ba7a..566af52292 100644 --- a/target/e2k/translate.c +++ b/target/e2k/translate.c @@ -233,7 +233,6 @@ static inline void gen_goto_ctpr_disp(TCGv_i64 ctpr) tcg_gen_extract_i64(t0, ctpr, CTPR_BASE_OFF, CTPR_BASE_LEN); tcg_gen_trunc_i64_tl(t1, t0); - // FIXME: save state here? tcg_gen_mov_tl(e2k_cs.pc, t1); tcg_gen_lookup_and_goto_ptr(); @@ -366,12 +365,11 @@ static inline void do_branch(DisasContext *ctx, target_ulong pc_next) // TODO: ldisp, sdisp e2k_gen_exception(0); - gen_set_label(l0); - gen_goto_ctpr_disp(ctx->ct.u.ctpr); - gen_set_label(l1); gen_helper_return(cpu_env); - tcg_gen_lookup_and_goto_ptr(); + + gen_set_label(l0); + gen_goto_ctpr_disp(ctx->ct.u.ctpr); break; } case CT_CALL: {