Store error_code in translate, then call gen_helper_raise_excp with restore 0. Drop TCG excp. Keep C dynamic_excp and arith_excp.
Signed-off-by: Yonggang Luo <[email protected]> --- target/alpha/helper.c | 11 ----------- target/alpha/helper.h | 1 - target/alpha/translate.c | 9 ++++----- 3 files changed, 4 insertions(+), 17 deletions(-) diff --git a/target/alpha/helper.c b/target/alpha/helper.c index c3614ecafda..d1497547181 100644 --- a/target/alpha/helper.c +++ b/target/alpha/helper.c @@ -533,17 +533,6 @@ void alpha_cpu_dump_state(CPUState *cs, FILE *f, int flags) qemu_fprintf(f, "\n"); } -/* This should only be called from translate, via gen_excp. - We expect that ENV->PC has already been updated. */ -G_NORETURN void helper_excp(CPUAlphaState *env, int excp, int error) -{ - CPUState *cs = env_cpu(env); - - cs->exception_index = excp; - env->error_code = error; - cpu_loop_exit(cs); -} - /* This may be called from any of the helpers to set up EXCEPTION_INDEX. */ G_NORETURN void dynamic_excp(CPUAlphaState *env, uintptr_t retaddr, int excp, int error) diff --git a/target/alpha/helper.h b/target/alpha/helper.h index 954a5c8294c..cdb36384a7b 100644 --- a/target/alpha/helper.h +++ b/target/alpha/helper.h @@ -1,4 +1,3 @@ -DEF_HELPER_3(excp, noreturn, env, int, int) DEF_HELPER_FLAGS_1(load_pcc, TCG_CALL_NO_RWG_SE, i64, env) DEF_HELPER_FLAGS_3(check_overflow, TCG_CALL_NO_WG, void, env, i64, i64) diff --git a/target/alpha/translate.c b/target/alpha/translate.c index c66e3f9c146..b9970f4aa5b 100644 --- a/target/alpha/translate.c +++ b/target/alpha/translate.c @@ -264,11 +264,10 @@ static void gen_pc_disp(DisasContext *ctx, TCGv_i64 dest, int32_t disp) static void gen_excp_1(int exception, int error_code) { - TCGv_i32 tmp1, tmp2; - - tmp1 = tcg_constant_i32(exception); - tmp2 = tcg_constant_i32(error_code); - gen_helper_excp(tcg_env, tmp1, tmp2); + tcg_gen_st_i32(tcg_constant_i32(error_code), tcg_env, + offsetof(CPUAlphaState, error_code)); + gen_helper_raise_excp(tcg_env, tcg_constant_i32(exception), + tcg_constant_i32(0)); } static DisasJumpType gen_excp(DisasContext *ctx, int exception, int error_code) -- 2.52.0.windows.1
