Message ID | 20220105204029.4058500-8-farosas@linux.ibm.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | target/ppc: powerpc_excp improvements (2/n) | expand |
On Wed, Jan 05, 2022 at 05:40:29PM -0300, Fabiano Rosas wrote: > Next patches will split powerpc_excp in multiple family specific > handlers. This patch adds a wrapper to make the transition clearer. > > Signed-off-by: Fabiano Rosas <farosas@linux.ibm.com> Reviewed-by: David Gibson <david@gibson.dropbear.id.au> > --- > target/ppc/excp_helper.c | 12 +++++++++++- > 1 file changed, 11 insertions(+), 1 deletion(-) > > diff --git a/target/ppc/excp_helper.c b/target/ppc/excp_helper.c > index d16bdf9283..ea854a868e 100644 > --- a/target/ppc/excp_helper.c > +++ b/target/ppc/excp_helper.c > @@ -397,7 +397,7 @@ static 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 void powerpc_excp(PowerPCCPU *cpu, int excp) > +static inline void powerpc_excp_legacy(PowerPCCPU *cpu, int excp) > { > CPUState *cs = CPU(cpu); > CPUPPCState *env = &cpu->env; > @@ -868,6 +868,16 @@ static void powerpc_excp(PowerPCCPU *cpu, int excp) > powerpc_set_excp_state(cpu, vector, new_msr); > } > > +static void powerpc_excp(PowerPCCPU *cpu, int excp) > +{ > + CPUPPCState *env = &cpu->env; > + > + switch (env->excp_model) { > + default: > + powerpc_excp_legacy(cpu, excp); > + } > +} > + > void ppc_cpu_do_interrupt(CPUState *cs) > { > PowerPCCPU *cpu = POWERPC_CPU(cs);
diff --git a/target/ppc/excp_helper.c b/target/ppc/excp_helper.c index d16bdf9283..ea854a868e 100644 --- a/target/ppc/excp_helper.c +++ b/target/ppc/excp_helper.c @@ -397,7 +397,7 @@ static 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 void powerpc_excp(PowerPCCPU *cpu, int excp) +static inline void powerpc_excp_legacy(PowerPCCPU *cpu, int excp) { CPUState *cs = CPU(cpu); CPUPPCState *env = &cpu->env; @@ -868,6 +868,16 @@ static void powerpc_excp(PowerPCCPU *cpu, int excp) powerpc_set_excp_state(cpu, vector, new_msr); } +static void powerpc_excp(PowerPCCPU *cpu, int excp) +{ + CPUPPCState *env = &cpu->env; + + switch (env->excp_model) { + default: + powerpc_excp_legacy(cpu, excp); + } +} + void ppc_cpu_do_interrupt(CPUState *cs) { PowerPCCPU *cpu = POWERPC_CPU(cs);
Next patches will split powerpc_excp in multiple family specific handlers. This patch adds a wrapper to make the transition clearer. Signed-off-by: Fabiano Rosas <farosas@linux.ibm.com> --- target/ppc/excp_helper.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-)