[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[RFC v13 75/80] target/arm: move arm_cpu_finalize_features into cpu64
From: |
Claudio Fontana |
Subject: |
[RFC v13 75/80] target/arm: move arm_cpu_finalize_features into cpu64 |
Date: |
Wed, 14 Apr 2021 13:26:45 +0200 |
all the features in arm_cpu_finalize_features are actually
TARGET_AARCH64-only now, since KVM is now only supported on 64bit.
Therefore move the function to cpu64.
Signed-off-by: Claudio Fontana <cfontana@suse.de>
---
target/arm/cpu.c | 36 ++----------------------------------
target/arm/cpu64.c | 34 ++++++++++++++++++++++++++++++++++
target/arm/monitor.c | 4 ++++
3 files changed, 40 insertions(+), 34 deletions(-)
diff --git a/target/arm/cpu.c b/target/arm/cpu.c
index b91c48cd2f..4d0724b537 100644
--- a/target/arm/cpu.c
+++ b/target/arm/cpu.c
@@ -820,40 +820,6 @@ static void arm_cpu_finalizefn(Object *obj)
#endif
}
-void arm_cpu_finalize_features(ARMCPU *cpu, Error **errp)
-{
- Error *local_err = NULL;
-
-#ifdef TARGET_AARCH64
- if (arm_feature(&cpu->env, ARM_FEATURE_AARCH64)) {
- if (!cpu_sve_finalize_features(cpu, &local_err)) {
- error_propagate(errp, local_err);
- return;
- }
-
- /*
- * KVM does not support modifications to this feature.
- * We have not registered the cpu properties when KVM
- * is in use, so the user will not be able to set them.
- */
- if (tcg_enabled()) {
- if (!cpu_pauth_finalize(cpu, &local_err)) {
- error_propagate(errp, local_err);
- return;
- }
- }
- }
-#endif /* TARGET_AARCH64 */
-
- if (kvm_enabled()) {
- kvm_arm_steal_time_finalize(cpu, &local_err);
- if (local_err != NULL) {
- error_propagate(errp, local_err);
- return;
- }
- }
-}
-
static void arm_cpu_realizefn(DeviceState *dev, Error **errp)
{
CPUState *cs = CPU(dev);
@@ -876,6 +842,7 @@ static void arm_cpu_realizefn(DeviceState *dev, Error
**errp)
return;
}
+#ifdef TARGET_AARCH64
arm_cpu_finalize_features(cpu, &local_err);
if (local_err != NULL) {
error_propagate(errp, local_err);
@@ -892,6 +859,7 @@ static void arm_cpu_realizefn(DeviceState *dev, Error
**errp)
"AArch64 CPUs must have both VFP and Neon or neither");
return;
}
+#endif /* TARGET_AARCH64 */
if (!cpu->has_vfp) {
uint64_t t;
diff --git a/target/arm/cpu64.c b/target/arm/cpu64.c
index b76fbb4947..bcbfc5d53a 100644
--- a/target/arm/cpu64.c
+++ b/target/arm/cpu64.c
@@ -455,6 +455,40 @@ static gchar *aarch64_gdb_arch_name(CPUState *cs)
return g_strdup("aarch64");
}
+void arm_cpu_finalize_features(ARMCPU *cpu, Error **errp)
+{
+ Error *local_err = NULL;
+
+#ifdef TARGET_AARCH64
+ if (arm_feature(&cpu->env, ARM_FEATURE_AARCH64)) {
+ if (!cpu_sve_finalize_features(cpu, &local_err)) {
+ error_propagate(errp, local_err);
+ return;
+ }
+
+ /*
+ * KVM does not support modifications to this feature.
+ * We have not registered the cpu properties when KVM
+ * is in use, so the user will not be able to set them.
+ */
+ if (tcg_enabled()) {
+ if (!cpu_pauth_finalize(cpu, &local_err)) {
+ error_propagate(errp, local_err);
+ return;
+ }
+ }
+ }
+#endif /* TARGET_AARCH64 */
+
+ if (kvm_enabled()) {
+ kvm_arm_steal_time_finalize(cpu, &local_err);
+ if (local_err != NULL) {
+ error_propagate(errp, local_err);
+ return;
+ }
+ }
+}
+
static void aarch64_cpu_dump_state(CPUState *cs, FILE *f, int flags)
{
ARMCPU *cpu = ARM_CPU(cs);
diff --git a/target/arm/monitor.c b/target/arm/monitor.c
index 0c72bf7c31..95c1e72cd1 100644
--- a/target/arm/monitor.c
+++ b/target/arm/monitor.c
@@ -184,9 +184,11 @@ CpuModelExpansionInfo
*qmp_query_cpu_model_expansion(CpuModelExpansionType type,
if (!err) {
visit_check_struct(visitor, &err);
}
+#ifdef TARGET_AARCH64
if (!err) {
arm_cpu_finalize_features(ARM_CPU(obj), &err);
}
+#endif /* TARGET_AARCH64 */
visit_end_struct(visitor, NULL);
visit_free(visitor);
if (err) {
@@ -195,7 +197,9 @@ CpuModelExpansionInfo
*qmp_query_cpu_model_expansion(CpuModelExpansionType type,
return NULL;
}
} else {
+#ifdef TARGET_AARCH64
arm_cpu_finalize_features(ARM_CPU(obj), &error_abort);
+#endif /* TARGET_AARCH64 */
}
expansion_info = g_new0(CpuModelExpansionInfo, 1);
--
2.26.2
- [RFC v13 72/80] target/arm: cpu-common: wrap a64-only check with is_a64, (continued)
- [RFC v13 72/80] target/arm: cpu-common: wrap a64-only check with is_a64, Claudio Fontana, 2021/04/14
- [RFC v13 77/80] target/arm: cpu64: some final cleanup on aarch64_cpu_finalize_features, Claudio Fontana, 2021/04/14
- [RFC v13 79/80] target/arm: tcg: remove superfluous CONFIG_TCG check, Claudio Fontana, 2021/04/14
- [RFC v13 71/80] cpu-sve: rename sve_zcr_len_for_el to cpu_sve_get_zcr_len_for_el, Claudio Fontana, 2021/04/14
- [RFC v13 58/80] target/arm: move TCG gt timer creation code in tcg/, Claudio Fontana, 2021/04/14
- [RFC v13 63/80] target/arm: make is_aa64 and arm_el_is_aa64 a macro for !TARGET_AARCH64, Claudio Fontana, 2021/04/14
- [RFC v13 64/80] target/arm: restrict rebuild_hflags_a64 to TARGET_AARCH64, Claudio Fontana, 2021/04/14
- [RFC v13 74/80] target/arm: cpu-pauth: change arm_cpu_pauth_finalize name and sig, Claudio Fontana, 2021/04/14
- [RFC v13 66/80] target/arm: cpu-exceptions, cpu-exceptions-aa64: new modules, Claudio Fontana, 2021/04/14
- [RFC v13 76/80] target/arm: cpu64: rename arm_cpu_finalize_features, Claudio Fontana, 2021/04/14
- [RFC v13 75/80] target/arm: move arm_cpu_finalize_features into cpu64,
Claudio Fontana <=
- [RFC v13 73/80] target/arm: cpu-pauth: new module for ARMv8.3 Pointer Authentication, Claudio Fontana, 2021/04/14
- [RFC v13 78/80] XXX target/arm: experiment refactoring cpu "max", Claudio Fontana, 2021/04/14
- [RFC v13 80/80] target/arm: remove v7m stub function for !CONFIG_TCG, Claudio Fontana, 2021/04/14
- [RFC v13 67/80] target/arm: tcg: restrict ZCR cpregs to TARGET_AARCH64, Claudio Fontana, 2021/04/14
- [RFC v13 68/80] target/arm: tcg-sve: import narrow_vq and change_el functions, Claudio Fontana, 2021/04/14