From: Richard Henderson <[email protected]>
Signed-off-by: Richard Henderson <[email protected]>
Reviewed-by: Philippe Mathieu-Daudé <[email protected]>
Message-id: [email protected]
Signed-off-by: Peter Maydell <[email protected]>
---
target/arm/cpu-max.c | 16 +---------------
target/arm/internals.h | 1 +
target/arm/tcg/cpu32.c | 15 +++++++++++++++
3 files changed, 17 insertions(+), 15 deletions(-)
diff --git a/target/arm/cpu-max.c b/target/arm/cpu-max.c
index 93f24114a52..7df7d015a91 100644
--- a/target/arm/cpu-max.c
+++ b/target/arm/cpu-max.c
@@ -202,22 +202,8 @@ static void cpu_max_initfn(Object *obj)
}
if (tcg_enabled()) {
- /*
- * '-cpu max' for TCG: we currently do this as
- * "A57 with extra things"
- */
if (!aarch64_enabled) {
- aarch64_aa32_a57_init(cpu, false);
- aa32_max_features(cpu);
-#ifdef CONFIG_USER_ONLY
- /*
- * Break with true ARMv8 and add back old-style VFP short-vector
- * support. Only do this for user-mode, where -cpu max is the
default,
- * so that older v6 and v7 programs are more likely to work without
- * adjustment.
- */
- cpu->isar.mvfr0 = FIELD_DP32(cpu->isar.mvfr0, MVFR0, FPSHVEC, 1);
-#endif
+ aarch32_max_tcg_init(cpu);
} else {
aarch64_max_tcg_initfn(obj);
}
diff --git a/target/arm/internals.h b/target/arm/internals.h
index 5e7f41a50d1..f6b4e173a54 100644
--- a/target/arm/internals.h
+++ b/target/arm/internals.h
@@ -1838,6 +1838,7 @@ uint32_t *arm_v7m_get_sp_ptr(CPUARMState *env, bool
secure,
bool el_is_in_host(CPUARMState *env, int el);
void aa32_max_features(ARMCPU *cpu);
+void aarch32_max_tcg_init(ARMCPU *cpu);
int exception_target_el(CPUARMState *env);
bool arm_singlestep_active(CPUARMState *env);
bool arm_generate_debug_exceptions(CPUARMState *env);
diff --git a/target/arm/tcg/cpu32.c b/target/arm/tcg/cpu32.c
index 8220d785f5b..e1ff074b470 100644
--- a/target/arm/tcg/cpu32.c
+++ b/target/arm/tcg/cpu32.c
@@ -748,3 +748,18 @@ static void arm_tcg_cpu_register_types(void)
type_init(arm_tcg_cpu_register_types)
#endif /* !CONFIG_USER_ONLY || !TARGET_AARCH64 */
+
+void aarch32_max_tcg_init(ARMCPU *cpu)
+{
+ aarch64_aa32_a57_init(cpu, false);
+ aa32_max_features(cpu);
+#ifdef CONFIG_USER_ONLY
+ /*
+ * Break with true ARMv8 and add back old-style VFP short-vector
+ * support. Only do this for user-mode, where -cpu max is the default,
+ * so that older v6 and v7 programs are more likely to work without
+ * adjustment.
+ */
+ cpu->isar.mvfr0 = FIELD_DP32(cpu->isar.mvfr0, MVFR0, FPSHVEC, 1);
+#endif
+}
--
2.43.0