All of lore.kernel.org
 help / color / mirror / Atom feed
From: BALATON Zoltan <balaton@eik.bme.hu>
To: qemu-devel@nongnu.org, qemu-ppc@nongnu.org
Cc: Nicholas Piggin <npiggin@gmail.com>,
	Daniel Henrique Barboza <danielhb413@gmail.com>,
	clg@kaod.org
Subject: [PATCH v7 06/10] target/ppc: Simplify syscall exception handlers
Date: Tue, 27 Feb 2024 16:08:06 +0100 (CET)	[thread overview]
Message-ID: <83e34b4cbdf78f142219ce09b75df3c7fe913a85.1709045654.git.balaton@eik.bme.hu> (raw)
In-Reply-To: <cover.1709045654.git.balaton@eik.bme.hu>

After previous changes the hypercall handling in 7xx and 74xx
exception handlers can be folded into one if statement to simplify
this code. Also add "unlikely" to mark the less frequently used branch
for the compiler.

Signed-off-by: BALATON Zoltan <balaton@eik.bme.hu>
Reviewed-by: Harsh Prateek Bora <harshpb@linux.ibm.com>
---
 target/ppc/excp_helper.c | 22 ++++++----------------
 1 file changed, 6 insertions(+), 16 deletions(-)

diff --git a/target/ppc/excp_helper.c b/target/ppc/excp_helper.c
index 6cf4542e7e..320835bc74 100644
--- a/target/ppc/excp_helper.c
+++ b/target/ppc/excp_helper.c
@@ -762,26 +762,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);
             powerpc_reset_excp_state(cpu);
             return;
         }
-
+        dump_syscall(env);
         break;
     }
     case POWERPC_EXCP_FPU:       /* Floating-point unavailable exception     */
@@ -907,26 +902,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);
             powerpc_reset_excp_state(cpu);
             return;
         }
-
+        dump_syscall(env);
         break;
     }
     case POWERPC_EXCP_FPU:       /* Floating-point unavailable exception     */
-- 
2.30.9



  parent reply	other threads:[~2024-02-27 15:09 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-02-27 15:08 [PATCH v7 00/10] Misc clean ups to target/ppc exception handling BALATON Zoltan
2024-02-27 15:08 ` [PATCH v7 01/10] target/ppc: Use env_cpu for cpu_abort in excp_helper BALATON Zoltan
2024-02-27 15:08 ` [PATCH v7 02/10] target/ppc: Readability improvements in exception handlers BALATON Zoltan
2024-02-27 15:32   ` Peter Maydell
2024-02-27 16:51     ` BALATON Zoltan
2024-02-27 20:24       ` BALATON Zoltan
2024-02-29  3:04         ` Nicholas Piggin
2024-03-09 11:35           ` BALATON Zoltan
2024-02-27 15:08 ` [PATCH v7 03/10] target/ppc: Add gen_exception_err_nip() function BALATON Zoltan
2024-03-12 12:29   ` Nicholas Piggin
2024-02-27 15:08 ` [PATCH v7 04/10] target/ppc: Fix gen_sc to use correct nip BALATON Zoltan
2024-03-12 12:29   ` Nicholas Piggin
2024-03-12 16:40   ` Nicholas Piggin
2024-02-27 15:08 ` [PATCH v7 05/10] target/ppc: Move patching nip from exception handler to helper_scv BALATON Zoltan
2024-02-27 15:08 ` BALATON Zoltan [this message]
2024-02-27 15:08 ` [PATCH v7 07/10] target/ppc: Clean up ifdefs in excp_helper.c, part 1 BALATON Zoltan
2024-02-27 15:08 ` [PATCH v7 08/10] target/ppc: Clean up ifdefs in excp_helper.c, part 2 BALATON Zoltan
2024-02-27 15:08 ` [PATCH v7 09/10] target/ppc: Clean up ifdefs in excp_helper.c, part 3 BALATON Zoltan
2024-02-27 20:21 ` [PATCH v7 10/10] target/ppc: Remove interrupt handler wrapper functions BALATON Zoltan

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=83e34b4cbdf78f142219ce09b75df3c7fe913a85.1709045654.git.balaton@eik.bme.hu \
    --to=balaton@eik.bme.hu \
    --cc=clg@kaod.org \
    --cc=danielhb413@gmail.com \
    --cc=npiggin@gmail.com \
    --cc=qemu-devel@nongnu.org \
    --cc=qemu-ppc@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.