Message ID | 20220207183036.1507882-3-farosas@linux.ibm.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | target/ppc: powerpc_excp improvements (9/9) | expand |
On 2/7/22 19:30, Fabiano Rosas wrote: > Make the cpu-specific powerpc_excp_* functions a bit simpler by moving > the bounds check and logging to powerpc_excp. > > Signed-off-by: Fabiano Rosas <farosas@linux.ibm.com> Reviewed-by: Cédric Le Goater <clg@kaod.org> Thanks, C. > --- > target/ppc/excp_helper.c | 57 +++++++--------------------------------- > 1 file changed, 9 insertions(+), 48 deletions(-) > > diff --git a/target/ppc/excp_helper.c b/target/ppc/excp_helper.c > index c6646503aa..206314aaa2 100644 > --- a/target/ppc/excp_helper.c > +++ b/target/ppc/excp_helper.c > @@ -396,14 +396,6 @@ static void powerpc_excp_40x(PowerPCCPU *cpu, int excp) > target_ulong msr, new_msr, vector; > int srr0, srr1; > > - if (excp <= POWERPC_EXCP_NONE || excp >= POWERPC_EXCP_NB) { > - cpu_abort(cs, "Invalid PowerPC exception %d. Aborting\n", excp); > - } > - > - qemu_log_mask(CPU_LOG_INT, "Raise exception at " TARGET_FMT_lx > - " => %s (%d) error=%02x\n", env->nip, powerpc_excp_name(excp), > - excp, env->error_code); > - > /* new srr1 value excluding must-be-zero bits */ > msr = env->msr & ~0x783f0000ULL; > > @@ -554,14 +546,6 @@ static void powerpc_excp_6xx(PowerPCCPU *cpu, int excp) > CPUPPCState *env = &cpu->env; > target_ulong msr, new_msr, vector; > > - if (excp <= POWERPC_EXCP_NONE || excp >= POWERPC_EXCP_NB) { > - cpu_abort(cs, "Invalid PowerPC exception %d. Aborting\n", excp); > - } > - > - qemu_log_mask(CPU_LOG_INT, "Raise exception at " TARGET_FMT_lx > - " => %s (%d) error=%02x\n", env->nip, powerpc_excp_name(excp), > - excp, env->error_code); > - > /* new srr1 value excluding must-be-zero bits */ > msr = env->msr & ~0x783f0000ULL; > > @@ -746,14 +730,6 @@ static void powerpc_excp_7xx(PowerPCCPU *cpu, int excp) > CPUPPCState *env = &cpu->env; > target_ulong msr, new_msr, vector; > > - if (excp <= POWERPC_EXCP_NONE || excp >= POWERPC_EXCP_NB) { > - cpu_abort(cs, "Invalid PowerPC exception %d. Aborting\n", excp); > - } > - > - qemu_log_mask(CPU_LOG_INT, "Raise exception at " TARGET_FMT_lx > - " => %s (%d) error=%02x\n", env->nip, powerpc_excp_name(excp), > - excp, env->error_code); > - > /* new srr1 value excluding must-be-zero bits */ > msr = env->msr & ~0x783f0000ULL; > > @@ -926,14 +902,6 @@ static void powerpc_excp_74xx(PowerPCCPU *cpu, int excp) > CPUPPCState *env = &cpu->env; > target_ulong msr, new_msr, vector; > > - if (excp <= POWERPC_EXCP_NONE || excp >= POWERPC_EXCP_NB) { > - cpu_abort(cs, "Invalid PowerPC exception %d. Aborting\n", excp); > - } > - > - qemu_log_mask(CPU_LOG_INT, "Raise exception at " TARGET_FMT_lx > - " => %s (%d) error=%02x\n", env->nip, powerpc_excp_name(excp), > - excp, env->error_code); > - > /* new srr1 value excluding must-be-zero bits */ > msr = env->msr & ~0x783f0000ULL; > > @@ -1121,14 +1089,6 @@ static void powerpc_excp_booke(PowerPCCPU *cpu, int excp) > target_ulong msr, new_msr, vector; > int srr0, srr1; > > - if (excp <= POWERPC_EXCP_NONE || excp >= POWERPC_EXCP_NB) { > - cpu_abort(cs, "Invalid PowerPC exception %d. Aborting\n", excp); > - } > - > - qemu_log_mask(CPU_LOG_INT, "Raise exception at " TARGET_FMT_lx > - " => %s (%d) error=%02x\n", env->nip, powerpc_excp_name(excp), > - excp, env->error_code); > - > msr = env->msr; > > /* > @@ -1348,14 +1308,6 @@ static void powerpc_excp_books(PowerPCCPU *cpu, int excp) > target_ulong msr, new_msr, vector; > int srr0, srr1, lev = -1; > > - if (excp <= POWERPC_EXCP_NONE || excp >= POWERPC_EXCP_NB) { > - cpu_abort(cs, "Invalid PowerPC exception %d. Aborting\n", excp); > - } > - > - qemu_log_mask(CPU_LOG_INT, "Raise exception at " TARGET_FMT_lx > - " => %s (%d) error=%02x\n", env->nip, powerpc_excp_name(excp), > - excp, env->error_code); > - > /* new srr1 value excluding must-be-zero bits */ > msr = env->msr & ~0x783f0000ULL; > > @@ -1642,8 +1594,17 @@ static inline void powerpc_excp_books(PowerPCCPU *cpu, int excp) > > static void powerpc_excp(PowerPCCPU *cpu, int excp) > { > + CPUState *cs = CPU(cpu); > CPUPPCState *env = &cpu->env; > > + if (excp <= POWERPC_EXCP_NONE || excp >= POWERPC_EXCP_NB) { > + cpu_abort(cs, "Invalid PowerPC exception %d. Aborting\n", excp); > + } > + > + qemu_log_mask(CPU_LOG_INT, "Raise exception at " TARGET_FMT_lx > + " => %s (%d) error=%02x\n", env->nip, powerpc_excp_name(excp), > + excp, env->error_code); > + > switch (env->excp_model) { > case POWERPC_EXCP_40x: > powerpc_excp_40x(cpu, excp); >
diff --git a/target/ppc/excp_helper.c b/target/ppc/excp_helper.c index c6646503aa..206314aaa2 100644 --- a/target/ppc/excp_helper.c +++ b/target/ppc/excp_helper.c @@ -396,14 +396,6 @@ static void powerpc_excp_40x(PowerPCCPU *cpu, int excp) target_ulong msr, new_msr, vector; int srr0, srr1; - if (excp <= POWERPC_EXCP_NONE || excp >= POWERPC_EXCP_NB) { - cpu_abort(cs, "Invalid PowerPC exception %d. Aborting\n", excp); - } - - qemu_log_mask(CPU_LOG_INT, "Raise exception at " TARGET_FMT_lx - " => %s (%d) error=%02x\n", env->nip, powerpc_excp_name(excp), - excp, env->error_code); - /* new srr1 value excluding must-be-zero bits */ msr = env->msr & ~0x783f0000ULL; @@ -554,14 +546,6 @@ static void powerpc_excp_6xx(PowerPCCPU *cpu, int excp) CPUPPCState *env = &cpu->env; target_ulong msr, new_msr, vector; - if (excp <= POWERPC_EXCP_NONE || excp >= POWERPC_EXCP_NB) { - cpu_abort(cs, "Invalid PowerPC exception %d. Aborting\n", excp); - } - - qemu_log_mask(CPU_LOG_INT, "Raise exception at " TARGET_FMT_lx - " => %s (%d) error=%02x\n", env->nip, powerpc_excp_name(excp), - excp, env->error_code); - /* new srr1 value excluding must-be-zero bits */ msr = env->msr & ~0x783f0000ULL; @@ -746,14 +730,6 @@ static void powerpc_excp_7xx(PowerPCCPU *cpu, int excp) CPUPPCState *env = &cpu->env; target_ulong msr, new_msr, vector; - if (excp <= POWERPC_EXCP_NONE || excp >= POWERPC_EXCP_NB) { - cpu_abort(cs, "Invalid PowerPC exception %d. Aborting\n", excp); - } - - qemu_log_mask(CPU_LOG_INT, "Raise exception at " TARGET_FMT_lx - " => %s (%d) error=%02x\n", env->nip, powerpc_excp_name(excp), - excp, env->error_code); - /* new srr1 value excluding must-be-zero bits */ msr = env->msr & ~0x783f0000ULL; @@ -926,14 +902,6 @@ static void powerpc_excp_74xx(PowerPCCPU *cpu, int excp) CPUPPCState *env = &cpu->env; target_ulong msr, new_msr, vector; - if (excp <= POWERPC_EXCP_NONE || excp >= POWERPC_EXCP_NB) { - cpu_abort(cs, "Invalid PowerPC exception %d. Aborting\n", excp); - } - - qemu_log_mask(CPU_LOG_INT, "Raise exception at " TARGET_FMT_lx - " => %s (%d) error=%02x\n", env->nip, powerpc_excp_name(excp), - excp, env->error_code); - /* new srr1 value excluding must-be-zero bits */ msr = env->msr & ~0x783f0000ULL; @@ -1121,14 +1089,6 @@ static void powerpc_excp_booke(PowerPCCPU *cpu, int excp) target_ulong msr, new_msr, vector; int srr0, srr1; - if (excp <= POWERPC_EXCP_NONE || excp >= POWERPC_EXCP_NB) { - cpu_abort(cs, "Invalid PowerPC exception %d. Aborting\n", excp); - } - - qemu_log_mask(CPU_LOG_INT, "Raise exception at " TARGET_FMT_lx - " => %s (%d) error=%02x\n", env->nip, powerpc_excp_name(excp), - excp, env->error_code); - msr = env->msr; /* @@ -1348,14 +1308,6 @@ static void powerpc_excp_books(PowerPCCPU *cpu, int excp) target_ulong msr, new_msr, vector; int srr0, srr1, lev = -1; - if (excp <= POWERPC_EXCP_NONE || excp >= POWERPC_EXCP_NB) { - cpu_abort(cs, "Invalid PowerPC exception %d. Aborting\n", excp); - } - - qemu_log_mask(CPU_LOG_INT, "Raise exception at " TARGET_FMT_lx - " => %s (%d) error=%02x\n", env->nip, powerpc_excp_name(excp), - excp, env->error_code); - /* new srr1 value excluding must-be-zero bits */ msr = env->msr & ~0x783f0000ULL; @@ -1642,8 +1594,17 @@ static inline void powerpc_excp_books(PowerPCCPU *cpu, int excp) static void powerpc_excp(PowerPCCPU *cpu, int excp) { + CPUState *cs = CPU(cpu); CPUPPCState *env = &cpu->env; + if (excp <= POWERPC_EXCP_NONE || excp >= POWERPC_EXCP_NB) { + cpu_abort(cs, "Invalid PowerPC exception %d. Aborting\n", excp); + } + + qemu_log_mask(CPU_LOG_INT, "Raise exception at " TARGET_FMT_lx + " => %s (%d) error=%02x\n", env->nip, powerpc_excp_name(excp), + excp, env->error_code); + switch (env->excp_model) { case POWERPC_EXCP_40x: powerpc_excp_40x(cpu, excp);
Make the cpu-specific powerpc_excp_* functions a bit simpler by moving the bounds check and logging to powerpc_excp. Signed-off-by: Fabiano Rosas <farosas@linux.ibm.com> --- target/ppc/excp_helper.c | 57 +++++++--------------------------------- 1 file changed, 9 insertions(+), 48 deletions(-)