From: Richard Henderson <richard.henderson@linaro.org>
To: qemu-devel@nongnu.org
Cc: peter.maydell@linaro.org, qemu-arm@nongnu.org
Subject: [PATCH v2 05/17] target/arm: Improve ID_AA64PFR0 FP/SIMD validation
Date: Mon, 24 Feb 2020 14:22:20 -0800 [thread overview]
Message-ID: <20200224222232.13807-6-richard.henderson@linaro.org> (raw)
In-Reply-To: <20200224222232.13807-1-richard.henderson@linaro.org>
When sanity checking id_aa64pfr0, use the raw FP and SIMD fields,
because the values must match. Delay the test until we've finished
modifying the id_aa64pfr0 register.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
target/arm/cpu.c | 23 ++++++++++++-----------
1 file changed, 12 insertions(+), 11 deletions(-)
diff --git a/target/arm/cpu.c b/target/arm/cpu.c
index 5be4c25809..f10f34b655 100644
--- a/target/arm/cpu.c
+++ b/target/arm/cpu.c
@@ -1427,17 +1427,6 @@ static void arm_cpu_realizefn(DeviceState *dev, Error **errp)
return;
}
- if (arm_feature(env, ARM_FEATURE_AARCH64) &&
- cpu->has_vfp != cpu->has_neon) {
- /*
- * This is an architectural requirement for AArch64; AArch32 is
- * more flexible and permits VFP-no-Neon and Neon-no-VFP.
- */
- error_setg(errp,
- "AArch64 CPUs must have both VFP and Neon or neither");
- return;
- }
-
if (!cpu->has_vfp) {
uint64_t t;
uint32_t u;
@@ -1537,6 +1526,18 @@ static void arm_cpu_realizefn(DeviceState *dev, Error **errp)
cpu->isar.mvfr0 = u;
}
+ if (arm_feature(env, ARM_FEATURE_AARCH64) &&
+ FIELD_EX64(cpu->isar.id_aa64pfr0, ID_AA64PFR0, FP) !=
+ FIELD_EX64(cpu->isar.id_aa64pfr0, ID_AA64PFR0, ADVSIMD)) {
+ /*
+ * This is an architectural requirement for AArch64. Not only
+ * both vfp and advsimd or neither, but further both must
+ * support fp16 or neither.
+ */
+ error_setg(errp, "AArch64 CPUs must match VFP and NEON");
+ return;
+ }
+
if (arm_feature(env, ARM_FEATURE_M) && !cpu->has_dsp) {
uint32_t u;
--
2.20.1
next prev parent reply other threads:[~2020-02-24 22:34 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-02-24 22:22 [PATCH v2 00/17] target/arm: vfp feature and decodetree cleanup Richard Henderson
2020-02-24 22:22 ` [PATCH v2 01/17] target/arm: Add isar_feature_aa32_vfp_simd Richard Henderson
2020-02-25 13:18 ` Peter Maydell
2020-02-24 22:22 ` [PATCH v2 02/17] target/arm: Rename isar_feature_aa32_fpdp_v2 Richard Henderson
2020-02-24 22:22 ` [PATCH v2 03/17] target/arm: Add isar_feature_aa32_{fpsp_v2, fpsp_v3, fpdp_v3} Richard Henderson
2020-02-24 22:22 ` [PATCH v2 04/17] target/arm: Add isar_feature_aa64_fp_simd, isar_feature_aa32_vfp Richard Henderson
2020-02-25 13:20 ` Peter Maydell
2020-02-24 22:22 ` Richard Henderson [this message]
2020-02-25 13:24 ` [PATCH v2 05/17] target/arm: Improve ID_AA64PFR0 FP/SIMD validation Peter Maydell
2020-02-25 15:55 ` Richard Henderson
2020-02-25 15:58 ` Peter Maydell
2020-02-25 16:00 ` Richard Henderson
2020-02-24 22:22 ` [PATCH v2 06/17] target/arm: Perform fpdp_v2 check first Richard Henderson
2020-02-24 22:22 ` [PATCH v2 07/17] target/arm: Replace ARM_FEATURE_VFP3 checks with fp{sp, dp}_v3 Richard Henderson
2020-02-24 22:22 ` [PATCH v2 08/17] target/arm: Add missing checks for fpsp_v2 Richard Henderson
2020-02-24 22:22 ` [PATCH v2 09/17] target/arm: Replace ARM_FEATURE_VFP4 with isar_feature_aa32_simdfmac Richard Henderson
2020-02-25 13:25 ` Peter Maydell
2020-02-24 22:22 ` [PATCH v2 10/17] target/arm: Remove ARM_FEATURE_VFP check from disas_vfp_insn Richard Henderson
2020-02-24 22:22 ` [PATCH v2 11/17] target/arm: Move VLLDM and VLSTM to vfp.decode Richard Henderson
2020-02-25 13:26 ` Peter Maydell
2020-02-24 22:22 ` [PATCH v2 12/17] target/arm: Move the vfp decodetree calls next to the base isa Richard Henderson
2020-02-25 13:29 ` Peter Maydell
2020-02-24 22:22 ` [PATCH v2 13/17] linux-user/arm: Replace ARM_FEATURE_VFP* tests for HWCAP Richard Henderson
2020-02-25 13:30 ` Peter Maydell
2020-02-24 22:22 ` [PATCH v2 14/17] target/arm: Remove ARM_FEATURE_VFP* Richard Henderson
2020-02-24 22:22 ` [PATCH v2 15/17] target/arm: Add formats for some vfp 2 and 3-register insns Richard Henderson
2020-02-24 22:22 ` [PATCH v2 16/17] target/arm: Split VFM decode Richard Henderson
2020-02-24 22:22 ` [PATCH v2 17/17] target/arm: Split VMINMAXNM decode Richard Henderson
2020-02-25 17:40 ` [PATCH v2 00/17] target/arm: vfp feature and decodetree cleanup Peter Maydell
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200224222232.13807-6-richard.henderson@linaro.org \
--to=richard.henderson@linaro.org \
--cc=peter.maydell@linaro.org \
--cc=qemu-arm@nongnu.org \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).