| 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
|
|
|