Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(847)

Side by Side Diff: src/base/cpu.cc

Issue 1841733002: [arm] Correctly detect ARMv8 platforms with old kernels. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 the V8 project authors. All rights reserved. 1 // Copyright 2013 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "src/base/cpu.h" 5 #include "src/base/cpu.h"
6 6
7 #if V8_LIBC_MSVCRT 7 #if V8_LIBC_MSVCRT
8 #include <intrin.h> // __cpuid() 8 #include <intrin.h> // __cpuid()
9 #endif 9 #endif
10 #if V8_OS_LINUX 10 #if V8_OS_LINUX
(...skipping 450 matching lines...) Expand 10 before | Expand all | Expand 10 after
461 // The list is well-known, unlike the the output of 461 // The list is well-known, unlike the the output of
462 // the 'Processor' field which can vary greatly. 462 // the 'Processor' field which can vary greatly.
463 // See the definition of the 'proc_arch' array in 463 // See the definition of the 'proc_arch' array in
464 // $KERNEL/arch/arm/kernel/setup.c and the 'c_show' function in 464 // $KERNEL/arch/arm/kernel/setup.c and the 'c_show' function in
465 // same file. 465 // same file.
466 char* architecture = cpu_info.ExtractField("CPU architecture"); 466 char* architecture = cpu_info.ExtractField("CPU architecture");
467 if (architecture != NULL) { 467 if (architecture != NULL) {
468 char* end; 468 char* end;
469 architecture_ = strtol(architecture, &end, 10); 469 architecture_ = strtol(architecture, &end, 10);
470 if (end == architecture) { 470 if (end == architecture) {
471 architecture_ = 0; 471 // Kernels older than 3.18 report "CPU architecture: AArch64" on ARMv8.
472 if (strcmp(architecture, "AArch64") == 0) {
473 architecture_ = 8;
474 } else {
475 architecture_ = 0;
476 }
472 } 477 }
473 delete[] architecture; 478 delete[] architecture;
474 479
475 // Unfortunately, it seems that certain ARMv6-based CPUs 480 // Unfortunately, it seems that certain ARMv6-based CPUs
476 // report an incorrect architecture number of 7! 481 // report an incorrect architecture number of 7!
477 // 482 //
478 // See http://code.google.com/p/android/issues/detail?id=10812 483 // See http://code.google.com/p/android/issues/detail?id=10812
479 // 484 //
480 // We try to correct this by looking at the 'elf_platform' 485 // We try to correct this by looking at the 'elf_platform'
481 // field reported by the 'Processor' field, which is of the 486 // field reported by the 'Processor' field, which is of the
(...skipping 213 matching lines...) Expand 10 before | Expand all | Expand 10 after
695 part_ = PPC_POWER5; 700 part_ = PPC_POWER5;
696 break; 701 break;
697 } 702 }
698 #endif // V8_OS_AIX 703 #endif // V8_OS_AIX
699 #endif // !USE_SIMULATOR 704 #endif // !USE_SIMULATOR
700 #endif // V8_HOST_ARCH_PPC 705 #endif // V8_HOST_ARCH_PPC
701 } 706 }
702 707
703 } // namespace base 708 } // namespace base
704 } // namespace v8 709 } // namespace v8
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698