[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 15/18] target/hppa: Generate getshadowregs inline
From: |
Richard Henderson |
Subject: |
[PULL 15/18] target/hppa: Generate getshadowregs inline |
Date: |
Fri, 29 Mar 2024 12:31:08 -1000 |
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>
---
target/hppa/helper.h | 1 -
target/hppa/sys_helper.c | 4 ++--
target/hppa/translate.c | 17 +++++++++++++----
3 files changed, 15 insertions(+), 7 deletions(-)
diff --git a/target/hppa/helper.h b/target/hppa/helper.h
index 8fd7ba65d8..5900fd70bc 100644
--- a/target/hppa/helper.h
+++ b/target/hppa/helper.h
@@ -86,7 +86,6 @@ DEF_HELPER_FLAGS_0(read_interval_timer, TCG_CALL_NO_RWG, tl)
#ifndef CONFIG_USER_ONLY
DEF_HELPER_1(halt, noreturn, env)
DEF_HELPER_1(reset, noreturn, env)
-DEF_HELPER_1(getshadowregs, void, env)
DEF_HELPER_1(rfi, void, env)
DEF_HELPER_1(rfi_r, void, env)
DEF_HELPER_FLAGS_2(write_interval_timer, TCG_CALL_NO_RWG, void, env, tl)
diff --git a/target/hppa/sys_helper.c b/target/hppa/sys_helper.c
index 4a31748342..208e51c086 100644
--- a/target/hppa/sys_helper.c
+++ b/target/hppa/sys_helper.c
@@ -95,7 +95,7 @@ void HELPER(rfi)(CPUHPPAState *env)
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[8] = env->shadow[1];
@@ -108,7 +108,7 @@ void HELPER(getshadowregs)(CPUHPPAState *env)
void HELPER(rfi_r)(CPUHPPAState *env)
{
- helper_getshadowregs(env);
+ getshadowregs(env);
helper_rfi(env);
}
diff --git a/target/hppa/translate.c b/target/hppa/translate.c
index 6da9503f33..29e4a64e40 100644
--- a/target/hppa/translate.c
+++ b/target/hppa/translate.c
@@ -2385,14 +2385,23 @@ static bool trans_reset(DisasContext *ctx, arg_reset *a)
#endif
}
-static bool trans_getshadowregs(DisasContext *ctx, arg_getshadowregs *a)
+static bool do_getshadowregs(DisasContext *ctx)
{
CHECK_MOST_PRIVILEGED(EXCP_PRIV_OPR);
-#ifndef CONFIG_USER_ONLY
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);
-#endif
+}
+
+static bool trans_getshadowregs(DisasContext *ctx, arg_getshadowregs *a)
+{
+ return do_getshadowregs(ctx);
}
static bool trans_nop_addrx(DisasContext *ctx, arg_ldst *a)
--
2.34.1
- [PULL 06/18] target/hppa: Tidy read of interval timer, (continued)
- [PULL 06/18] target/hppa: Tidy read of interval timer, Richard Henderson, 2024/03/29
- [PULL 16/18] target/hppa: Move diag argument handling to decodetree, Richard Henderson, 2024/03/29
- [PULL 07/18] target/hppa: Fix EIRR, EIEM versus icount, Richard Henderson, 2024/03/29
- [PULL 04/18] target/hppa: Fix ADD/SUB trap on overflow for narrow mode, Richard Henderson, 2024/03/29
- [PULL 09/18] target/hppa: Fix DCOR reconstruction of carry bits, Richard Henderson, 2024/03/29
- [PULL 12/18] target/hppa: Squash d for pa1.x during decode, Richard Henderson, 2024/03/29
- [PULL 13/18] target/hppa: Replace c with uv in do_cond, Richard Henderson, 2024/03/29
- [PULL 18/18] target/hppa: Clear psw_n for BE on use_nullify_skip path, Richard Henderson, 2024/03/29
- [PULL 17/18] target/hppa: Add diag instructions to set/restore shadow registers, Richard Henderson, 2024/03/29
- [PULL 14/18] target/hppa: Fix overflow computation for shladd, Richard Henderson, 2024/03/29
- [PULL 15/18] target/hppa: Generate getshadowregs inline,
Richard Henderson <=