[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 03/24] target/ppc: Simplify syscall exception handlers
From: |
BALATON Zoltan |
Subject: |
[PATCH 03/24] target/ppc: Simplify syscall exception handlers |
Date: |
Wed, 24 Apr 2024 00:31:13 +0200 (CEST) |
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 fd145200dd..4c1375381d 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
- [PATCH 01/24] target/ppc: Fix gen_sc to use correct nip, (continued)
- [PATCH 01/24] target/ppc: Fix gen_sc to use correct nip, BALATON Zoltan, 2024/04/23
- [PATCH 05/24] target/ppc/mmu_common.c: Move calculation of a value closer to its usage, BALATON Zoltan, 2024/04/23
- [PATCH 11/24] target/ppc/mmu_common.c: Split off real mode cases in get_physical_address_wtlb(), BALATON Zoltan, 2024/04/23
- [PATCH 10/24] target/ppc/mmu_common.c: Split out BookE cases before checking real mode, BALATON Zoltan, 2024/04/23
- [PATCH 16/24] target/ppc/mmu_common.c: Deindent ppc_jumbo_xlate(), BALATON Zoltan, 2024/04/23
- [PATCH 18/24] target/ppc/mmu_common.c: Make get_physical_address_wtlb() static, BALATON Zoltan, 2024/04/23
- [PATCH 12/24] target/ppc/mmu_common.c: Inline and remove check_physical(), BALATON Zoltan, 2024/04/23
- [PATCH 13/24] target/ppc/mmu_common.c: Simplify mmubooke_get_physical_address(), BALATON Zoltan, 2024/04/23
- [PATCH 23/24] target/ppc/mmu_common.c: Simplify ppc_booke_xlate(), BALATON Zoltan, 2024/04/23
- [PATCH 24/24] target/ppc/mmu_common.c: Move BookE MMU functions together, BALATON Zoltan, 2024/04/23
- [PATCH 03/24] target/ppc: Simplify syscall exception handlers,
BALATON Zoltan <=
- [PATCH 09/24] target/ppc/mmu_common.c: Rename get_bat_6xx_tlb(), BALATON Zoltan, 2024/04/23
- [PATCH 14/24] target/ppc/mmu_common.c: Simplify mmubooke206_get_physical_address(), BALATON Zoltan, 2024/04/23
- [PATCH 17/24] target/ppc/mmu_common.c: Replace hard coded constants in ppc_jumbo_xlate(), BALATON Zoltan, 2024/04/23
- [PATCH 19/24] target/ppc: Move mmu_ctx_t definition to mmu_common.c, BALATON Zoltan, 2024/04/23
- [PATCH 20/24] target/ppc: Remove ppc_hash32_pp_prot() and reuse common function, BALATON Zoltan, 2024/04/23
- [PATCH 21/24] target/ppc/mmu_common.c: Split off BookE handling from ppc_jumbo_xlate(), BALATON Zoltan, 2024/04/23
- [PATCH 22/24] target/ppc/mmu_common.c: Remove BookE handling from get_physical_address_wtlb(), BALATON Zoltan, 2024/04/23