[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v3 10/14] target/ppc: Simplify syscall exception handlers
From: |
Nicholas Piggin |
Subject: |
Re: [PATCH v3 10/14] target/ppc: Simplify syscall exception handlers |
Date: |
Tue, 20 Jun 2023 15:05:22 +1000 |
On Fri Jun 16, 2023 at 9:03 AM AEST, BALATON Zoltan wrote:
> After previous changes the hypercall handling in 7xx and 74xx
> exception handlers can be folded into one if statement to simpilfy
> this code.
Simplify and add unlikely?
I like to avoid slipping in improvements with cleanups. Arguably
the changelog is actually more important to describe the stuff
that isn't just rejig of code. Pretty minor in this case, but
good practice otherwise it can get out of hand.
Thanks,
Nick
>
> Signed-off-by: BALATON Zoltan <balaton@eik.bme.hu>
> ---
> target/ppc/excp_helper.c | 24 ++++++++----------------
> 1 file changed, 8 insertions(+), 16 deletions(-)
>
> diff --git a/target/ppc/excp_helper.c b/target/ppc/excp_helper.c
> index ef363b0285..a62103b8ac 100644
> --- a/target/ppc/excp_helper.c
> +++ b/target/ppc/excp_helper.c
> @@ -741,25 +741,21 @@ static void powerpc_excp_7xx(PowerPCCPU *cpu, int excp)
> case POWERPC_EXCP_SYSCALL: /* System call exception
> */
> {
> int lev = env->error_code;
> -
> - if (lev == 1 && cpu->vhyp) {
> - dump_hcall(env);
> - } else {
> - dump_syscall(env);
> - }
> /*
> * The Virtual Open Firmware (VOF) relies on the 'sc 1'
> * instruction to communicate with QEMU. The pegasos2 machine
> * uses VOF and the 7xx CPUs, so although the 7xx don't have
> * HV mode, we need to keep hypercall support.
> */
> - if (lev == 1 && cpu->vhyp) {
> + if (unlikely(lev == 1 && cpu->vhyp)) {
> PPCVirtualHypervisorClass *vhc =
> PPC_VIRTUAL_HYPERVISOR_GET_CLASS(cpu->vhyp);
> + dump_hcall(env);
> vhc->hypercall(cpu->vhyp, cpu);
> return;
> + } else {
> + dump_syscall(env);
> }
> -
> break;
> }
> case POWERPC_EXCP_FPU: /* Floating-point unavailable exception
> */
> @@ -885,25 +881,21 @@ static void powerpc_excp_74xx(PowerPCCPU *cpu, int excp)
> case POWERPC_EXCP_SYSCALL: /* System call exception
> */
> {
> int lev = env->error_code;
> -
> - if (lev == 1 && cpu->vhyp) {
> - dump_hcall(env);
> - } else {
> - dump_syscall(env);
> - }
> /*
> * The Virtual Open Firmware (VOF) relies on the 'sc 1'
> * instruction to communicate with QEMU. The pegasos2 machine
> * uses VOF and the 74xx CPUs, so although the 74xx don't have
> * HV mode, we need to keep hypercall support.
> */
> - if (lev == 1 && cpu->vhyp) {
> + if (unlikely(lev == 1 && cpu->vhyp)) {
> PPCVirtualHypervisorClass *vhc =
> PPC_VIRTUAL_HYPERVISOR_GET_CLASS(cpu->vhyp);
> + dump_hcall(env);
> vhc->hypercall(cpu->vhyp, cpu);
> return;
> + } else {
> + dump_syscall(env);
> }
> -
> break;
> }
> case POWERPC_EXCP_FPU: /* Floating-point unavailable exception
> */
> --
> 2.30.9
- Re: [PATCH v3 08/14] target/ppc: Fix gen_sc to use correct nip, (continued)
Re: [PATCH v3 09/14] target/ppc: Move patching nip from exception handler to helper_scv, Nicholas Piggin, 2023/06/26
[PATCH v3 10/14] target/ppc: Simplify syscall exception handlers, BALATON Zoltan, 2023/06/15
- Re: [PATCH v3 10/14] target/ppc: Simplify syscall exception handlers,
Nicholas Piggin <=
[PATCH v3 11/14] target/ppc: Get CPUState in one step, BALATON Zoltan, 2023/06/15
[PATCH v3 13/14] target/ppc: Clean up ifdefs in excp_helper.c, part 2, BALATON Zoltan, 2023/06/15
[PATCH v3 14/14] target/ppc: Clean up ifdefs in excp_helper.c, part 3, BALATON Zoltan, 2023/06/15
[PATCH v3 12/14] target/ppc: Clean up ifdefs in excp_helper.c, part 1, BALATON Zoltan, 2023/06/15
Re: [PATCH v3 00/14] Misc clean ups to target/ppc exception handling, Daniel Henrique Barboza, 2023/06/30