target/hppa: Generate getshadowregs inline
This operation is trivial and does not require a helper. Reviewed-by: Helge Deller <deller@gmx.de> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
parent
f8f5986edc
commit
558c09bef8
@ -86,7 +86,6 @@ DEF_HELPER_FLAGS_0(read_interval_timer, TCG_CALL_NO_RWG, tl)
|
|||||||
#ifndef CONFIG_USER_ONLY
|
#ifndef CONFIG_USER_ONLY
|
||||||
DEF_HELPER_1(halt, noreturn, env)
|
DEF_HELPER_1(halt, noreturn, env)
|
||||||
DEF_HELPER_1(reset, noreturn, env)
|
DEF_HELPER_1(reset, noreturn, env)
|
||||||
DEF_HELPER_1(getshadowregs, void, env)
|
|
||||||
DEF_HELPER_1(rfi, void, env)
|
DEF_HELPER_1(rfi, void, env)
|
||||||
DEF_HELPER_1(rfi_r, void, env)
|
DEF_HELPER_1(rfi_r, void, env)
|
||||||
DEF_HELPER_FLAGS_2(write_interval_timer, TCG_CALL_NO_RWG, void, env, tl)
|
DEF_HELPER_FLAGS_2(write_interval_timer, TCG_CALL_NO_RWG, void, env, tl)
|
||||||
|
@ -95,7 +95,7 @@ void HELPER(rfi)(CPUHPPAState *env)
|
|||||||
cpu_hppa_put_psw(env, env->cr[CR_IPSW]);
|
cpu_hppa_put_psw(env, env->cr[CR_IPSW]);
|
||||||
}
|
}
|
||||||
|
|
||||||
void HELPER(getshadowregs)(CPUHPPAState *env)
|
static void getshadowregs(CPUHPPAState *env)
|
||||||
{
|
{
|
||||||
env->gr[1] = env->shadow[0];
|
env->gr[1] = env->shadow[0];
|
||||||
env->gr[8] = env->shadow[1];
|
env->gr[8] = env->shadow[1];
|
||||||
@ -108,7 +108,7 @@ void HELPER(getshadowregs)(CPUHPPAState *env)
|
|||||||
|
|
||||||
void HELPER(rfi_r)(CPUHPPAState *env)
|
void HELPER(rfi_r)(CPUHPPAState *env)
|
||||||
{
|
{
|
||||||
helper_getshadowregs(env);
|
getshadowregs(env);
|
||||||
helper_rfi(env);
|
helper_rfi(env);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2385,14 +2385,23 @@ static bool trans_reset(DisasContext *ctx, arg_reset *a)
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool trans_getshadowregs(DisasContext *ctx, arg_getshadowregs *a)
|
static bool do_getshadowregs(DisasContext *ctx)
|
||||||
{
|
{
|
||||||
CHECK_MOST_PRIVILEGED(EXCP_PRIV_OPR);
|
CHECK_MOST_PRIVILEGED(EXCP_PRIV_OPR);
|
||||||
#ifndef CONFIG_USER_ONLY
|
|
||||||
nullify_over(ctx);
|
nullify_over(ctx);
|
||||||
gen_helper_getshadowregs(tcg_env);
|
tcg_gen_ld_i64(cpu_gr[1], tcg_env, offsetof(CPUHPPAState, shadow[0]));
|
||||||
|
tcg_gen_ld_i64(cpu_gr[8], tcg_env, offsetof(CPUHPPAState, shadow[1]));
|
||||||
|
tcg_gen_ld_i64(cpu_gr[9], tcg_env, offsetof(CPUHPPAState, shadow[2]));
|
||||||
|
tcg_gen_ld_i64(cpu_gr[16], tcg_env, offsetof(CPUHPPAState, shadow[3]));
|
||||||
|
tcg_gen_ld_i64(cpu_gr[17], tcg_env, offsetof(CPUHPPAState, shadow[4]));
|
||||||
|
tcg_gen_ld_i64(cpu_gr[24], tcg_env, offsetof(CPUHPPAState, shadow[5]));
|
||||||
|
tcg_gen_ld_i64(cpu_gr[25], tcg_env, offsetof(CPUHPPAState, shadow[6]));
|
||||||
return nullify_end(ctx);
|
return nullify_end(ctx);
|
||||||
#endif
|
}
|
||||||
|
|
||||||
|
static bool trans_getshadowregs(DisasContext *ctx, arg_getshadowregs *a)
|
||||||
|
{
|
||||||
|
return do_getshadowregs(ctx);
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool trans_nop_addrx(DisasContext *ctx, arg_ldst *a)
|
static bool trans_nop_addrx(DisasContext *ctx, arg_ldst *a)
|
||||||
|
Loading…
Reference in New Issue
Block a user