[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v4 5/8] target/ppc: Simplify syscall exception handlers
From: |
BALATON Zoltan |
Subject: |
[PATCH v4 5/8] target/ppc: Simplify syscall exception handlers |
Date: |
Tue, 24 Oct 2023 17:34:06 +0200 (CEST) |
After previous changes the hypercall handling in 7xx and 74xx
exception handlers can be folded into one if statement to simpilfy
this code. Also add "unlikely" to mark the less freqiently used branch
for the compiler.
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 dd08efe4f2..d073c35989 100644
--- a/target/ppc/excp_helper.c
+++ b/target/ppc/excp_helper.c
@@ -762,26 +762,22 @@ 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;
+ } else {
+ dump_syscall(env);
}
-
break;
}
case POWERPC_EXCP_FPU: /* Floating-point unavailable exception */
@@ -907,26 +903,22 @@ 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;
+ } else {
+ dump_syscall(env);
}
-
break;
}
case POWERPC_EXCP_FPU: /* Floating-point unavailable exception */
--
2.30.9
- [PATCH v4 0/8] Misc clean ups to target/ppc exception handling, BALATON Zoltan, 2023/10/24
- [PATCH v4 3/8] target/ppc: Fix gen_sc to use correct nip, BALATON Zoltan, 2023/10/24
- [PATCH v4 4/8] target/ppc: Move patching nip from exception handler to helper_scv, Nicholas Piggin, 2023/10/24
- [PATCH v4 1/8] target/ppc: Use env_cpu for cpu_abort in excp_helper, BALATON Zoltan, 2023/10/24
- [PATCH v4 2/8] target/ppc: Readability improvements in exception handlers, BALATON Zoltan, 2023/10/24
- [PATCH v4 8/8] target/ppc: Clean up ifdefs in excp_helper.c, part 3, BALATON Zoltan, 2023/10/24
- [PATCH v4 6/8] target/ppc: Clean up ifdefs in excp_helper.c, part 1, BALATON Zoltan, 2023/10/24
- [PATCH v4 7/8] target/ppc: Clean up ifdefs in excp_helper.c, part 2, BALATON Zoltan, 2023/10/24
- [PATCH v4 5/8] target/ppc: Simplify syscall exception handlers,
BALATON Zoltan <=