[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v9 11/11] hvf: arm: Adhere to SMCCC 1.3 section 5.2
From: |
Alexander Graf |
Subject: |
[PATCH v9 11/11] hvf: arm: Adhere to SMCCC 1.3 section 5.2 |
Date: |
Mon, 13 Sep 2021 01:07:57 +0200 |
The SMCCC 1.3 spec section 5.2 says
The Unknown SMC Function Identifier is a sign-extended value of (-1)
that is returned in the R0, W0 or X0 registers. An implementation must
return this error code when it receives:
* An SMC or HVC call with an unknown Function Identifier
* An SMC or HVC call for a removed Function Identifier
* An SMC64/HVC64 call from AArch32 state
To comply with these statements, let's always return -1 when we encounter
an unknown HVC or SMC call.
Signed-off-by: Alexander Graf <agraf@csgraf.de>
---
v7 -> v8:
- fix checkpatch
v8 -> v9:
- Remove Windows specifics and just comply with SMCCC spec
---
target/arm/hvf/hvf.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/target/arm/hvf/hvf.c b/target/arm/hvf/hvf.c
index b62cfa3976..6a7ccfa91e 100644
--- a/target/arm/hvf/hvf.c
+++ b/target/arm/hvf/hvf.c
@@ -1177,7 +1177,8 @@ int hvf_vcpu_exec(CPUState *cpu)
cpu_synchronize_state(cpu);
if (hvf_handle_psci_call(cpu)) {
trace_hvf_unknown_hvf(env->xregs[0]);
- hvf_raise_exception(cpu, EXCP_UDEF, syn_uncategorized());
+ /* SMCCC 1.3 section 5.2 says every unknown HVC call returns -1 */
+ env->xregs[0] = -1;
}
break;
case EC_AA64_SMC:
@@ -1186,7 +1187,9 @@ int hvf_vcpu_exec(CPUState *cpu)
advance_pc = true;
} else {
trace_hvf_unknown_smc(env->xregs[0]);
- hvf_raise_exception(cpu, EXCP_UDEF, syn_uncategorized());
+ /* SMCCC 1.3 section 5.2 says every unknown SMC call returns -1 */
+ env->xregs[0] = -1;
+ advance_pc = true;
}
break;
default:
--
2.30.1 (Apple Git-130)
- [PATCH v9 02/11] hvf: Add execute to dirty log permission bitmap, (continued)
- [PATCH v9 02/11] hvf: Add execute to dirty log permission bitmap, Alexander Graf, 2021/09/12
- [PATCH v9 05/11] arm/hvf: Add a WFI handler, Alexander Graf, 2021/09/12
- [PATCH v9 03/11] hvf: Introduce hvf_arch_init() callback, Alexander Graf, 2021/09/12
- [PATCH v9 04/11] hvf: Add Apple Silicon support, Alexander Graf, 2021/09/12
- [PATCH v9 09/11] hvf: arm: Add rudimentary PMC support, Alexander Graf, 2021/09/12
- [PATCH v9 10/11] arm: tcg: Adhere to SMCCC 1.3 section 5.2, Alexander Graf, 2021/09/12
- [PATCH v9 08/11] arm: Add Hypervisor.framework build target, Alexander Graf, 2021/09/12
- [PATCH v9 06/11] hvf: arm: Implement -cpu host, Alexander Graf, 2021/09/12
- [PATCH v9 11/11] hvf: arm: Adhere to SMCCC 1.3 section 5.2,
Alexander Graf <=
- [PATCH v9 07/11] hvf: arm: Implement PSCI handling, Alexander Graf, 2021/09/12
- Re: [PATCH v9 07/11] hvf: arm: Implement PSCI handling, Peter Maydell, 2021/09/13
- Re: [PATCH v9 07/11] hvf: arm: Implement PSCI handling, Alexander Graf, 2021/09/13
- Re: [PATCH v9 07/11] hvf: arm: Implement PSCI handling, Peter Maydell, 2021/09/13
- Re: [PATCH v9 07/11] hvf: arm: Implement PSCI handling, Alexander Graf, 2021/09/13
- Re: [PATCH v9 07/11] hvf: arm: Implement PSCI handling, Peter Maydell, 2021/09/13
- Re: [PATCH v9 07/11] hvf: arm: Implement PSCI handling, Alexander Graf, 2021/09/13
- Re: [PATCH v9 07/11] hvf: arm: Implement PSCI handling, Marc Zyngier, 2021/09/15
- Re: [PATCH v9 07/11] hvf: arm: Implement PSCI handling, Alexander Graf, 2021/09/15