Index: runtime/vm/cpu_arm.cc |
=================================================================== |
--- runtime/vm/cpu_arm.cc (revision 33437) |
+++ runtime/vm/cpu_arm.cc (working copy) |
@@ -54,6 +54,7 @@ |
bool HostCPUFeatures::integer_division_supported_ = false; |
bool HostCPUFeatures::neon_supported_ = false; |
const char* HostCPUFeatures::hardware_ = NULL; |
+ARMVersion HostCPUFeatures::arm_version_ = ARMvUnknown; |
#if defined(DEBUG) |
bool HostCPUFeatures::initialized_ = false; |
#endif |
@@ -63,12 +64,20 @@ |
void HostCPUFeatures::InitOnce() { |
CpuInfo::InitOnce(); |
hardware_ = CpuInfo::GetCpuModel(); |
- // Implements ARMv7. |
- ASSERT(CpuInfo::FieldContains(kCpuInfoProcessor, "ARMv7")); |
+ // Check for ARMv6 or ARMv7. It can be in either the Processor or |
+ // Model information fields. |
+ if (CpuInfo::FieldContains(kCpuInfoProcessor, "ARMv6") || |
+ CpuInfo::FieldContains(kCpuInfoModel, "ARMv6")) { |
+ arm_version_ = ARMv6; |
+ } else { |
+ ASSERT(CpuInfo::FieldContains(kCpuInfoProcessor, "ARMv7") || |
+ CpuInfo::FieldContains(kCpuInfoModel, "ARMv7")); |
+ arm_version_ = ARMv7; |
+ } |
// Has floating point unit. |
ASSERT(CpuInfo::FieldContains(kCpuInfoFeatures, "vfp")); |
// Has integer division. |
- bool is_krait = CpuInfo::FieldContains(kCpuInfoModel, "QCT APQ8064"); |
+ bool is_krait = CpuInfo::FieldContains(kCpuInfoHardware, "QCT APQ8064"); |
if (is_krait) { |
// Special case for Qualcomm Krait CPUs in Nexus 4 and 7. |
integer_division_supported_ = true; |
@@ -101,6 +110,7 @@ |
hardware_ = CpuInfo::GetCpuModel(); |
integer_division_supported_ = true; |
neon_supported_ = true; |
+ arm_version_ = ARMv7; |
#if defined(DEBUG) |
initialized_ = true; |
#endif |