target/arm: Remove redundant DIV detection for KVM
KVM implies V7VE, which implies ARM_DIV and THUMB_DIV. The conditional detection here is therefore unnecessary. Because V7VE is already unconditionally specified for all KVM hosts, ARM_DIV and THUMB_DIV are already indirectly specified and do not need to be included here at all. Signed-off-by: Aaron Lindsay <alindsay@codeaurora.org> Message-id: 1529699547-17044-6-git-send-email-alindsay@codeaurora.org Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
parent
5110e6836b
commit
a6070648aa
@ -36,7 +36,7 @@ bool kvm_arm_get_host_cpu_features(ARMHostCPUFeatures *ahcf)
|
|||||||
* and then query that CPU for the relevant ID registers.
|
* and then query that CPU for the relevant ID registers.
|
||||||
*/
|
*/
|
||||||
int i, ret, fdarray[3];
|
int i, ret, fdarray[3];
|
||||||
uint32_t midr, id_pfr0, id_isar0, mvfr1;
|
uint32_t midr, id_pfr0, mvfr1;
|
||||||
uint64_t features = 0;
|
uint64_t features = 0;
|
||||||
/* Old kernels may not know about the PREFERRED_TARGET ioctl: however
|
/* Old kernels may not know about the PREFERRED_TARGET ioctl: however
|
||||||
* we know these will only support creating one kind of guest CPU,
|
* we know these will only support creating one kind of guest CPU,
|
||||||
@ -58,11 +58,6 @@ bool kvm_arm_get_host_cpu_features(ARMHostCPUFeatures *ahcf)
|
|||||||
| ENCODE_CP_REG(15, 0, 0, 0, 1, 0, 0),
|
| ENCODE_CP_REG(15, 0, 0, 0, 1, 0, 0),
|
||||||
.addr = (uintptr_t)&id_pfr0,
|
.addr = (uintptr_t)&id_pfr0,
|
||||||
},
|
},
|
||||||
{
|
|
||||||
.id = KVM_REG_ARM | KVM_REG_SIZE_U32
|
|
||||||
| ENCODE_CP_REG(15, 0, 0, 0, 2, 0, 0),
|
|
||||||
.addr = (uintptr_t)&id_isar0,
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
.id = KVM_REG_ARM | KVM_REG_SIZE_U32
|
.id = KVM_REG_ARM | KVM_REG_SIZE_U32
|
||||||
| KVM_REG_ARM_VFP | KVM_REG_ARM_VFP_MVFR1,
|
| KVM_REG_ARM_VFP | KVM_REG_ARM_VFP_MVFR1,
|
||||||
@ -106,18 +101,6 @@ bool kvm_arm_get_host_cpu_features(ARMHostCPUFeatures *ahcf)
|
|||||||
set_feature(&features, ARM_FEATURE_VFP3);
|
set_feature(&features, ARM_FEATURE_VFP3);
|
||||||
set_feature(&features, ARM_FEATURE_GENERIC_TIMER);
|
set_feature(&features, ARM_FEATURE_GENERIC_TIMER);
|
||||||
|
|
||||||
switch (extract32(id_isar0, 24, 4)) {
|
|
||||||
case 1:
|
|
||||||
set_feature(&features, ARM_FEATURE_THUMB_DIV);
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
set_feature(&features, ARM_FEATURE_ARM_DIV);
|
|
||||||
set_feature(&features, ARM_FEATURE_THUMB_DIV);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (extract32(id_pfr0, 12, 4) == 1) {
|
if (extract32(id_pfr0, 12, 4) == 1) {
|
||||||
set_feature(&features, ARM_FEATURE_THUMB2EE);
|
set_feature(&features, ARM_FEATURE_THUMB2EE);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user