Re: [PATCH v2 3/5] target/ppc: powerpc_excp: Set vector earlier
On Wed, Dec 29, 2021 at 01:57:49PM -0300, Fabiano Rosas wrote: > None of the interrupt setup code touches 'vector', so we can move it > earlier in the function. This will allow us to later move the System > Call Vectored setup that is on the top level into the > POWERPC_EXCP_SYSCALL_VECTORED code block. > > This patch also moves the verification for when 'excp' does not have > an address associated with it. We now bail a little earlier when that > is the case. This should not cause any visible effects. > > Signed-off-by: Fabiano Rosas > Reviewed-by: Cédric Le Goater Reviewed-by: David Gibson > --- > target/ppc/excp_helper.c | 16 > 1 file changed, 8 insertions(+), 8 deletions(-) > > diff --git a/target/ppc/excp_helper.c b/target/ppc/excp_helper.c > index 9a03e4b896..1fe20b4806 100644 > --- a/target/ppc/excp_helper.c > +++ b/target/ppc/excp_helper.c > @@ -356,6 +356,14 @@ static inline void powerpc_excp(PowerPCCPU *cpu, int > excp_model, int excp) > } > #endif > > +vector = env->excp_vectors[excp]; > +if (vector == (target_ulong)-1ULL) { > +cpu_abort(cs, "Raised an exception without defined vector %d\n", > + excp); > +} > + > +vector |= env->excp_prefix; > + > switch (excp) { > case POWERPC_EXCP_CRITICAL:/* Critical input > */ > switch (excp_model) { > @@ -832,14 +840,6 @@ static inline void powerpc_excp(PowerPCCPU *cpu, int > excp_model, int excp) > } > #endif > > -vector = env->excp_vectors[excp]; > -if (vector == (target_ulong)-1ULL) { > -cpu_abort(cs, "Raised an exception without defined vector %d\n", > - excp); > -} > - > -vector |= env->excp_prefix; > - > #if defined(TARGET_PPC64) > if (excp_model == POWERPC_EXCP_BOOKE) { > if (env->spr[SPR_BOOKE_EPCR] & EPCR_ICM) { -- 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 signature.asc Description: PGP signature
Re: [PATCH v2 3/5] target/ppc: powerpc_excp: Set vector earlier
On 12/29/21 8:57 AM, Fabiano Rosas wrote: None of the interrupt setup code touches 'vector', so we can move it earlier in the function. This will allow us to later move the System Call Vectored setup that is on the top level into the POWERPC_EXCP_SYSCALL_VECTORED code block. This patch also moves the verification for when 'excp' does not have an address associated with it. We now bail a little earlier when that is the case. This should not cause any visible effects. Signed-off-by: Fabiano Rosas Reviewed-by: Cédric Le Goater --- target/ppc/excp_helper.c | 16 1 file changed, 8 insertions(+), 8 deletions(-) Reviewed-by: Richard Henderson r~
[PATCH v2 3/5] target/ppc: powerpc_excp: Set vector earlier
None of the interrupt setup code touches 'vector', so we can move it earlier in the function. This will allow us to later move the System Call Vectored setup that is on the top level into the POWERPC_EXCP_SYSCALL_VECTORED code block. This patch also moves the verification for when 'excp' does not have an address associated with it. We now bail a little earlier when that is the case. This should not cause any visible effects. Signed-off-by: Fabiano Rosas Reviewed-by: Cédric Le Goater --- target/ppc/excp_helper.c | 16 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/target/ppc/excp_helper.c b/target/ppc/excp_helper.c index 9a03e4b896..1fe20b4806 100644 --- a/target/ppc/excp_helper.c +++ b/target/ppc/excp_helper.c @@ -356,6 +356,14 @@ static inline void powerpc_excp(PowerPCCPU *cpu, int excp_model, int excp) } #endif +vector = env->excp_vectors[excp]; +if (vector == (target_ulong)-1ULL) { +cpu_abort(cs, "Raised an exception without defined vector %d\n", + excp); +} + +vector |= env->excp_prefix; + switch (excp) { case POWERPC_EXCP_CRITICAL:/* Critical input */ switch (excp_model) { @@ -832,14 +840,6 @@ static inline void powerpc_excp(PowerPCCPU *cpu, int excp_model, int excp) } #endif -vector = env->excp_vectors[excp]; -if (vector == (target_ulong)-1ULL) { -cpu_abort(cs, "Raised an exception without defined vector %d\n", - excp); -} - -vector |= env->excp_prefix; - #if defined(TARGET_PPC64) if (excp_model == POWERPC_EXCP_BOOKE) { if (env->spr[SPR_BOOKE_EPCR] & EPCR_ICM) { -- 2.33.1