mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-02 23:33:54 -06:00
target/arm: Add isar_feature_aa64_fp_simd, isar_feature_aa32_vfp
We cannot easily create "any" functions for these, because the ID_AA64PFR0 fields for FP and SIMD signal "enabled" with zero. Which means that an aarch32-only cpu will return incorrect results when testing the aarch64 registers. To use these, we must either have context or additionally test vs ARM_FEATURE_AARCH64. Signed-off-by: Richard Henderson <richard.henderson@linaro.org> Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Message-id: 20200224222232.13807-5-richard.henderson@linaro.org Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
parent
f67957e17c
commit
7d63183ff1
3 changed files with 20 additions and 5 deletions
|
@ -1260,7 +1260,9 @@ void arm_cpu_post_init(Object *obj)
|
|||
* KVM does not currently allow us to lie to the guest about its
|
||||
* ID/feature registers, so the guest always sees what the host has.
|
||||
*/
|
||||
if (arm_feature(&cpu->env, ARM_FEATURE_VFP)) {
|
||||
if (arm_feature(&cpu->env, ARM_FEATURE_AARCH64)
|
||||
? cpu_isar_feature(aa64_fp_simd, cpu)
|
||||
: cpu_isar_feature(aa32_vfp, cpu)) {
|
||||
cpu->has_vfp = true;
|
||||
if (!kvm_enabled()) {
|
||||
qdev_property_add_static(DEVICE(obj), &arm_cpu_has_vfp_property);
|
||||
|
@ -1636,8 +1638,9 @@ static void arm_cpu_realizefn(DeviceState *dev, Error **errp)
|
|||
* We rely on no XScale CPU having VFP so we can use the same bits in the
|
||||
* TB flags field for VECSTRIDE and XSCALE_CPAR.
|
||||
*/
|
||||
assert(!(arm_feature(env, ARM_FEATURE_VFP) &&
|
||||
arm_feature(env, ARM_FEATURE_XSCALE)));
|
||||
assert(arm_feature(&cpu->env, ARM_FEATURE_AARCH64) ||
|
||||
!cpu_isar_feature(aa32_vfp_simd, cpu) ||
|
||||
!arm_feature(env, ARM_FEATURE_XSCALE));
|
||||
|
||||
if (arm_feature(env, ARM_FEATURE_V7) &&
|
||||
!arm_feature(env, ARM_FEATURE_M) &&
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue