Files
sdk/runtime/vm/cpuinfo_android.cc
T
zra@google.com 7c91e88e6e Adds support for ARMv6.
When we detect ARMv6, instead of using movw and
movt, this change loads each individual byte.
Although this is not the best way to achieve this,
a modification to store large constants in the
object pool would be more invasive. Further,
this change will be easier to back-out once
ARMv6 is obsolete.

R=regis@google.com

Review URL: https://codereview.chromium.org//183803024

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@33442 260f80e4-7a28-3924-810f-c04153c831b5
2014-03-07 19:17:36 +00:00

82 lines
2.2 KiB
C++

// Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
#include "vm/globals.h"
#if defined(TARGET_OS_ANDROID)
#include "vm/cpuinfo.h"
#include "vm/proccpuinfo.h"
#include "platform/assert.h"
namespace dart {
CpuInfoMethod CpuInfo::method_ = kCpuInfoDefault;
const char* CpuInfo::fields_[kCpuInfoMax] = {0};
void CpuInfo::InitOnce() {
// Initialize our read from /proc/cpuinfo.
method_ = kCpuInfoSystem;
ProcCpuInfo::InitOnce();
#if defined(HOST_ARCH_IA32) || defined(HOST_ARCH_X64)
fields_[kCpuInfoProcessor] = "vendor_id";
fields_[kCpuInfoModel] = "model name";
fields_[kCpuInfoHardware] = "model name";
fields_[kCpuInfoFeatures] = "flags";
#elif defined(HOST_ARCH_ARM)
fields_[kCpuInfoProcessor] = "Processor";
fields_[kCpuInfoModel] = "model name";
fields_[kCpuInfoHardware] = "Hardware";
fields_[kCpuInfoFeatures] = "Features";
#elif defined(HOST_ARCH_MIPS)
fields_[kCpuInfoProcessor] = "system type";
fields_[kCpuInfoModel] = "cpu model";
fields_[kCpuInfoHardware] = "cpu model";
fields_[kCpuInfoFeatures] = "ASEs implemented";
#else
#error Unrecognized target architecture
#endif
}
void CpuInfo::Cleanup() {
ProcCpuInfo::Cleanup();
}
bool CpuInfo::FieldContains(CpuInfoIndices idx, const char* search_string) {
ASSERT(method_ != kCpuInfoDefault);
return ProcCpuInfo::FieldContains(FieldName(idx), search_string);
}
bool CpuInfo::FieldContainsByString(const char* field,
const char* search_string) {
ASSERT(method_ != kCpuInfoDefault);
return ProcCpuInfo::FieldContains(field, search_string);
}
const char* CpuInfo::ExtractField(CpuInfoIndices idx) {
ASSERT(method_ != kCpuInfoDefault);
return ProcCpuInfo::ExtractField(FieldName(idx));
}
const char* CpuInfo::ExtractFieldByString(const char* field) {
ASSERT(method_ != kCpuInfoDefault);
return ProcCpuInfo::ExtractField(field);
}
bool CpuInfo::HasField(const char* field) {
ASSERT(method_ != kCpuInfoDefault);
return ProcCpuInfo::HasField(field);
}
} // namespace dart
#endif // defined(TARGET_OS_ANDROID)