Message ID | 20240319154258.71206-19-philmd@linaro.org |
---|---|
State | New |
Headers | show |
Series | accel/tcg: Introduce TCGCPUOps::get_cpu_state() handler | expand |
On Wed Mar 20, 2024 at 1:42 AM AEST, Philippe Mathieu-Daudé wrote: > Convert cpu_get_tb_cpu_state() to TCGCPUOps::get_cpu_state(), > unifying with the method declared in target/ppc/helper_regs.c. Looks okay AFAIKS. Reviewed-by: Nicholas Piggin <npiggin@gmail.com> > > Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> > --- > target/ppc/cpu.h | 16 +++------------- > target/ppc/cpu_init.c | 1 + > target/ppc/helper_regs.c | 13 +++++++------ > 3 files changed, 11 insertions(+), 19 deletions(-) > > diff --git a/target/ppc/cpu.h b/target/ppc/cpu.h > index ced4e53024..6aa18db335 100644 > --- a/target/ppc/cpu.h > +++ b/target/ppc/cpu.h > @@ -2716,19 +2716,9 @@ void cpu_write_xer(CPUPPCState *env, target_ulong xer); > */ > #define is_book3s_arch2x(ctx) (!!((ctx)->insns_flags & PPC_SEGMENT_64B)) > > -#define TARGET_HAS_CPU_GET_TB_CPU_STATE > - > -#ifdef CONFIG_DEBUG_TCG > -void cpu_get_tb_cpu_state(CPUPPCState *env, vaddr *pc, > - uint64_t *cs_base, uint32_t *flags); > -#else > -static inline void cpu_get_tb_cpu_state(CPUPPCState *env, vaddr *pc, > - uint64_t *cs_base, uint32_t *flags) > -{ > - *pc = env->nip; > - *cs_base = 0; > - *flags = env->hflags; > -} > +#ifdef CONFIG_TCG > +void ppc_get_cpu_state(CPUPPCState *env, vaddr *pc, > + uint64_t *cs_base, uint32_t *flags); > #endif > > G_NORETURN void raise_exception(CPUPPCState *env, uint32_t exception); > diff --git a/target/ppc/cpu_init.c b/target/ppc/cpu_init.c > index 464e91faa2..673559b444 100644 > --- a/target/ppc/cpu_init.c > +++ b/target/ppc/cpu_init.c > @@ -7362,6 +7362,7 @@ static const struct SysemuCPUOps ppc_sysemu_ops = { > static const TCGCPUOps ppc_tcg_ops = { > .initialize = ppc_translate_init, > .restore_state_to_opc = ppc_restore_state_to_opc, > + .get_cpu_state = ppc_get_cpu_state, > > #ifdef CONFIG_USER_ONLY > .record_sigsegv = ppc_cpu_record_sigsegv, > diff --git a/target/ppc/helper_regs.c b/target/ppc/helper_regs.c > index 25258986e3..e62591067c 100644 > --- a/target/ppc/helper_regs.c > +++ b/target/ppc/helper_regs.c > @@ -217,25 +217,26 @@ void hreg_update_pmu_hflags(CPUPPCState *env) > env->hflags |= hreg_compute_pmu_hflags_value(env); > } > > -#ifdef CONFIG_DEBUG_TCG > -void cpu_get_tb_cpu_state(CPUPPCState *env, vaddr *pc, > - uint64_t *cs_base, uint32_t *flags) > +#ifdef CONFIG_TCG > +void ppc_get_cpu_state(CPUPPCState *env, vaddr *pc, > + uint64_t *cs_base, uint32_t *flags) > { > uint32_t hflags_current = env->hflags; > - uint32_t hflags_rebuilt; > > *pc = env->nip; > *cs_base = 0; > *flags = hflags_current; > > - hflags_rebuilt = hreg_compute_hflags_value(env); > +#ifdef CONFIG_DEBUG_TCG > + uint32_t hflags_rebuilt = hreg_compute_hflags_value(env); > if (unlikely(hflags_current != hflags_rebuilt)) { > cpu_abort(env_cpu(env), > "TCG hflags mismatch (current:0x%08x rebuilt:0x%08x)\n", > hflags_current, hflags_rebuilt); > } > -} > #endif > +} > +#endif /* CONFIG_TCG */ > > void cpu_interrupt_exittb(CPUState *cs) > {
diff --git a/target/ppc/cpu.h b/target/ppc/cpu.h index ced4e53024..6aa18db335 100644 --- a/target/ppc/cpu.h +++ b/target/ppc/cpu.h @@ -2716,19 +2716,9 @@ void cpu_write_xer(CPUPPCState *env, target_ulong xer); */ #define is_book3s_arch2x(ctx) (!!((ctx)->insns_flags & PPC_SEGMENT_64B)) -#define TARGET_HAS_CPU_GET_TB_CPU_STATE - -#ifdef CONFIG_DEBUG_TCG -void cpu_get_tb_cpu_state(CPUPPCState *env, vaddr *pc, - uint64_t *cs_base, uint32_t *flags); -#else -static inline void cpu_get_tb_cpu_state(CPUPPCState *env, vaddr *pc, - uint64_t *cs_base, uint32_t *flags) -{ - *pc = env->nip; - *cs_base = 0; - *flags = env->hflags; -} +#ifdef CONFIG_TCG +void ppc_get_cpu_state(CPUPPCState *env, vaddr *pc, + uint64_t *cs_base, uint32_t *flags); #endif G_NORETURN void raise_exception(CPUPPCState *env, uint32_t exception); diff --git a/target/ppc/cpu_init.c b/target/ppc/cpu_init.c index 464e91faa2..673559b444 100644 --- a/target/ppc/cpu_init.c +++ b/target/ppc/cpu_init.c @@ -7362,6 +7362,7 @@ static const struct SysemuCPUOps ppc_sysemu_ops = { static const TCGCPUOps ppc_tcg_ops = { .initialize = ppc_translate_init, .restore_state_to_opc = ppc_restore_state_to_opc, + .get_cpu_state = ppc_get_cpu_state, #ifdef CONFIG_USER_ONLY .record_sigsegv = ppc_cpu_record_sigsegv, diff --git a/target/ppc/helper_regs.c b/target/ppc/helper_regs.c index 25258986e3..e62591067c 100644 --- a/target/ppc/helper_regs.c +++ b/target/ppc/helper_regs.c @@ -217,25 +217,26 @@ void hreg_update_pmu_hflags(CPUPPCState *env) env->hflags |= hreg_compute_pmu_hflags_value(env); } -#ifdef CONFIG_DEBUG_TCG -void cpu_get_tb_cpu_state(CPUPPCState *env, vaddr *pc, - uint64_t *cs_base, uint32_t *flags) +#ifdef CONFIG_TCG +void ppc_get_cpu_state(CPUPPCState *env, vaddr *pc, + uint64_t *cs_base, uint32_t *flags) { uint32_t hflags_current = env->hflags; - uint32_t hflags_rebuilt; *pc = env->nip; *cs_base = 0; *flags = hflags_current; - hflags_rebuilt = hreg_compute_hflags_value(env); +#ifdef CONFIG_DEBUG_TCG + uint32_t hflags_rebuilt = hreg_compute_hflags_value(env); if (unlikely(hflags_current != hflags_rebuilt)) { cpu_abort(env_cpu(env), "TCG hflags mismatch (current:0x%08x rebuilt:0x%08x)\n", hflags_current, hflags_rebuilt); } -} #endif +} +#endif /* CONFIG_TCG */ void cpu_interrupt_exittb(CPUState *cs) {
Convert cpu_get_tb_cpu_state() to TCGCPUOps::get_cpu_state(), unifying with the method declared in target/ppc/helper_regs.c. Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> --- target/ppc/cpu.h | 16 +++------------- target/ppc/cpu_init.c | 1 + target/ppc/helper_regs.c | 13 +++++++------ 3 files changed, 11 insertions(+), 19 deletions(-)