• R/O
  • HTTP
  • SSH
  • HTTPS

Commit

Tags
No Tags

Frequently used words (click to add to your profile)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

Commit MetaInfo

Revisión6c05d3ded7b51154e67c35e270c48784b7046883 (tree)
Tiempo2015-08-19 03:08:59
AutorRichard Henderson <rth@twid...>
CommiterRichard Henderson

Log Message

target-alpha: Inline hw_ret

Reviewed-by: Aurelien Jarno <aurelien@aurel32.net>
Signed-off-by: Richard Henderson <rth@twiddle.net>

Cambiar Resumen

Diferencia incremental

--- a/target-alpha/helper.h
+++ b/target-alpha/helper.h
@@ -91,8 +91,6 @@ DEF_HELPER_FLAGS_2(ieee_input_cmp, TCG_CALL_NO_WG, void, env, i64)
9191 DEF_HELPER_FLAGS_2(ieee_input_s, TCG_CALL_NO_WG, void, env, i64)
9292
9393 #if !defined (CONFIG_USER_ONLY)
94-DEF_HELPER_2(hw_ret, void, env, i64)
95-
9694 DEF_HELPER_2(ldl_phys, i64, env, i64)
9795 DEF_HELPER_2(ldq_phys, i64, env, i64)
9896 DEF_HELPER_2(ldl_l_phys, i64, env, i64)
--- a/target-alpha/sys_helper.c
+++ b/target-alpha/sys_helper.c
@@ -40,14 +40,6 @@ uint64_t helper_load_pcc(CPUAlphaState *env)
4040
4141 /* PALcode support special instructions */
4242 #ifndef CONFIG_USER_ONLY
43-void helper_hw_ret(CPUAlphaState *env, uint64_t a)
44-{
45- env->pc = a & ~3;
46- env->intr_flag = 0;
47- env->lock_addr = -1;
48- env->pal_mode = a & 1;
49-}
50-
5143 void helper_tbia(CPUAlphaState *env)
5244 {
5345 tlb_flush(CPU(alpha_env_get_cpu(env)), 1);
--- a/target-alpha/translate.c
+++ b/target-alpha/translate.c
@@ -2635,13 +2635,18 @@ static ExitStatus translate_one(DisasContext *ctx, uint32_t insn)
26352635 /* Pre-EV6 CPUs interpreted this as HW_REI, loading the return
26362636 address from EXC_ADDR. This turns out to be useful for our
26372637 emulation PALcode, so continue to accept it. */
2638- tmp = tcg_temp_new();
2639- tcg_gen_ld_i64(tmp, cpu_env, offsetof(CPUAlphaState, exc_addr));
2640- gen_helper_hw_ret(cpu_env, tmp);
2641- tcg_temp_free(tmp);
2638+ ctx->lit = vb = tcg_temp_new();
2639+ tcg_gen_ld_i64(vb, cpu_env, offsetof(CPUAlphaState, exc_addr));
26422640 } else {
2643- gen_helper_hw_ret(cpu_env, load_gpr(ctx, rb));
2641+ vb = load_gpr(ctx, rb);
26442642 }
2643+ tmp = tcg_temp_new();
2644+ tcg_gen_movi_i64(tmp, 0);
2645+ tcg_gen_st8_i64(tmp, cpu_env, offsetof(CPUAlphaState, intr_flag));
2646+ tcg_gen_movi_i64(cpu_lock_addr, -1);
2647+ tcg_gen_andi_i64(tmp, vb, 1);
2648+ tcg_gen_st8_i64(tmp, cpu_env, offsetof(CPUAlphaState, pal_mode));
2649+ tcg_gen_andi_i64(cpu_pc, vb, ~3);
26452650 ret = EXIT_PC_UPDATED;
26462651 break;
26472652 #else