On Mon, May 24, 2021 at 10:59:04AM -0300, Bruno Larsen (billionai) wrote: > Moved the ppc_cpu_do_interrupt function to cpu.c file, where it makes > more sense, and turned powerpc_excp not static, as it now needs to be > accessed from outside of excp_helper.c > > Signed-off-by: Bruno Larsen (billionai) > Looking at this again, I'm inclined to agree with Richard: I don't see a lot of point to this. It's not really clear to me that these belong more in cpu.c than in excp_helper.c, and I believe we're already expecting to need excp_helper.c (or at least parts of it) for !TCG builds. > --- > target/ppc/cpu.c | 20 ++++++++++++++++++++ > target/ppc/cpu.h | 1 + > target/ppc/excp_helper.c | 19 +------------------ > 3 files changed, 22 insertions(+), 18 deletions(-) > > diff --git a/target/ppc/cpu.c b/target/ppc/cpu.c > index 19d67b5b07..95898f348b 100644 > --- a/target/ppc/cpu.c > +++ b/target/ppc/cpu.c > @@ -152,3 +152,23 @@ void ppc_store_fpscr(CPUPPCState *env, target_ulong val) > fpscr_set_rounding_mode(env); > } > } > + > +/* Exception processing */ > +#if defined(CONFIG_USER_ONLY) > +void ppc_cpu_do_interrupt(CPUState *cs) > +{ > + PowerPCCPU *cpu = POWERPC_CPU(cs); > + CPUPPCState *env = &cpu->env; > + > + cs->exception_index = POWERPC_EXCP_NONE; > + env->error_code = 0; > +} > +#else > +void ppc_cpu_do_interrupt(CPUState *cs) > +{ > + PowerPCCPU *cpu = POWERPC_CPU(cs); > + CPUPPCState *env = &cpu->env; > + > + powerpc_excp(cpu, env->excp_model, cs->exception_index); > +} > +#endif > diff --git a/target/ppc/cpu.h b/target/ppc/cpu.h > index 203f07e48e..65a08cc424 100644 > --- a/target/ppc/cpu.h > +++ b/target/ppc/cpu.h > @@ -1254,6 +1254,7 @@ DECLARE_OBJ_CHECKERS(PPCVirtualHypervisor, PPCVirtualHypervisorClass, > #endif /* CONFIG_USER_ONLY */ > > void ppc_cpu_do_interrupt(CPUState *cpu); > +void powerpc_excp(PowerPCCPU *cpu, int excp_model, int excp); > bool ppc_cpu_exec_interrupt(CPUState *cpu, int int_req); > void ppc_cpu_dump_state(CPUState *cpu, FILE *f, int flags); > void ppc_cpu_dump_statistics(CPUState *cpu, int flags); > diff --git a/target/ppc/excp_helper.c b/target/ppc/excp_helper.c > index f4f15279eb..80bb6e70e9 100644 > --- a/target/ppc/excp_helper.c > +++ b/target/ppc/excp_helper.c > @@ -38,15 +38,6 @@ > /*****************************************************************************/ > /* Exception processing */ > #if defined(CONFIG_USER_ONLY) > -void ppc_cpu_do_interrupt(CPUState *cs) > -{ > - PowerPCCPU *cpu = POWERPC_CPU(cs); > - CPUPPCState *env = &cpu->env; > - > - cs->exception_index = POWERPC_EXCP_NONE; > - env->error_code = 0; > -} > - > static void ppc_hw_interrupt(CPUPPCState *env) > { > CPUState *cs = env_cpu(env); > @@ -324,7 +315,7 @@ static inline void powerpc_set_excp_state(PowerPCCPU *cpu, > * Note that this function should be greatly optimized when called > * with a constant excp, from ppc_hw_interrupt > */ > -static inline void powerpc_excp(PowerPCCPU *cpu, int excp_model, int excp) > +inline void powerpc_excp(PowerPCCPU *cpu, int excp_model, int excp) > { > CPUState *cs = CPU(cpu); > CPUPPCState *env = &cpu->env; > @@ -968,14 +959,6 @@ static inline void powerpc_excp(PowerPCCPU *cpu, int excp_model, int excp) > powerpc_set_excp_state(cpu, vector, new_msr); > } > > -void ppc_cpu_do_interrupt(CPUState *cs) > -{ > - PowerPCCPU *cpu = POWERPC_CPU(cs); > - CPUPPCState *env = &cpu->env; > - > - powerpc_excp(cpu, env->excp_model, cs->exception_index); > -} > - > static void ppc_hw_interrupt(CPUPPCState *env) > { > PowerPCCPU *cpu = env_archcpu(env); -- David Gibson | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_ | _way_ _around_! http://www.ozlabs.org/~dgibson