| OLD | NEW |
| 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 Loading... |
| 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 Loading... |
| 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 |
| OLD | NEW |