Message ID | 20241229234154.32250-3-deller@kernel.org (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | hppa CPU reset and speedup | expand |
On 12/29/24 15:41, deller@kernel.org wrote: > From: Helge Deller<deller@gmx.de> > > Although the hppa_is_pa20() helper is costly due to string comparisons > in object_dynamic_cast(), it is called quite often during memory lookups > and at each start of a block of instruction translations. > Speed hppa_is_pa20() up by calling object_dynamic_cast() only once at > CPU creation and store the result in the is_pa20 of struct CPUArchState. > > Signed-off-by: Helge Deller<deller@gmx.de> > Reviewed-by: Philippe Mathieu-Daudé<philmd@linaro.org> > > v3: > - use !!object_dynamic_cast() > - typo fix in commit message > (feedback by Philippe Mathieu-Daudé) > > v2: > - moved init to hppa_cpu_initfn() and is_pa20 to end of CPUArchState struct > (feedback by Richard Henderson) > --- > target/hppa/cpu.c | 1 + > target/hppa/cpu.h | 4 +++- > 2 files changed, 4 insertions(+), 1 deletion(-) Reviewed-by: Richard Henderson <richard.henderson@linaro.org> r~
diff --git a/target/hppa/cpu.c b/target/hppa/cpu.c index cb1b5191a4..64a762b410 100644 --- a/target/hppa/cpu.c +++ b/target/hppa/cpu.c @@ -197,6 +197,7 @@ static void hppa_cpu_initfn(Object *obj) HPPACPU *cpu = HPPA_CPU(obj); CPUHPPAState *env = &cpu->env; + env->is_pa20 = !!object_dynamic_cast(obj, TYPE_HPPA64_CPU); cpu_hppa_loaded_fr0(env); cpu_hppa_put_psw(env, PSW_W); } diff --git a/target/hppa/cpu.h b/target/hppa/cpu.h index 32a674a8b8..288ce6d98a 100644 --- a/target/hppa/cpu.h +++ b/target/hppa/cpu.h @@ -266,6 +266,8 @@ typedef struct CPUArchState { /* Fields up to this point are cleared by a CPU reset */ struct {} end_reset_fields; + + bool is_pa20; } CPUHPPAState; /** @@ -299,7 +301,7 @@ struct HPPACPUClass { static inline bool hppa_is_pa20(CPUHPPAState *env) { - return object_dynamic_cast(OBJECT(env_cpu(env)), TYPE_HPPA64_CPU) != NULL; + return env->is_pa20; } static inline int HPPA_BTLB_ENTRIES(CPUHPPAState *env)