diff options
author | Marat Dukhan <marat@fb.com> | 2018-12-27 07:19:15 +0300 |
---|---|---|
committer | Marat Dukhan <marat@fb.com> | 2018-12-27 07:19:15 +0300 |
commit | 44dafc5adce7edc8770d41414bbe1a73f52e7e45 (patch) | |
tree | f72ee71df8856c0003bc9586eb0621b6eaefc113 /src | |
parent | c79486c628a96de826017e7e65b40966ed0fffdf (diff) |
Idenitify Apple Vortex & Tempest cores
Diffstat (limited to 'src')
-rw-r--r-- | src/arm/mach/init.c | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/src/arm/mach/init.c b/src/arm/mach/init.c index 64a0b37..3cca223 100644 --- a/src/arm/mach/init.c +++ b/src/arm/mach/init.c @@ -70,7 +70,7 @@ static uint64_t get_sys_info_by_name(const char* type_specifier) { return result; } -static enum cpuinfo_uarch decode_uarch(uint32_t cpu_family, uint32_t cpu_subtype, uint32_t core_index) { +static enum cpuinfo_uarch decode_uarch(uint32_t cpu_family, uint32_t cpu_subtype, uint32_t core_index, uint32_t core_count) { switch (cpu_family) { case CPUFAMILY_ARM_SWIFT: return cpuinfo_uarch_swift; @@ -82,14 +82,17 @@ static enum cpuinfo_uarch decode_uarch(uint32_t cpu_family, uint32_t cpu_subtype return cpuinfo_uarch_twister; case CPUFAMILY_ARM_HURRICANE: return cpuinfo_uarch_hurricane; -#ifdef CPUFAMILY_ARM_MONSOON_MISTRAL case CPUFAMILY_ARM_MONSOON_MISTRAL: -#else - case 0xe81e7ef6: - /* Hard-coded value for older SDKs which do not define CPUFAMILY_ARM_MONSOON_MISTRAL */ -#endif /* 2x Monsoon + 4x Mistral cores */ return core_index < 2 ? cpuinfo_uarch_monsoon : cpuinfo_uarch_mistral; +#ifdef CPUFAMILY_ARM_VORTEX_TEMPEST + case CPUFAMILY_ARM_VORTEX_TEMPEST: +#else + case 0xe81e7ef6: + /* Hard-coded value for older SDKs which do not define CPUFAMILY_ARM_VORTEX_TEMPEST */ +#endif + /* Hexa-core: 2x Vortex + 4x Tempest; Octa-core: 4x Cortex + 4x Tempest */ + return core_index + 4 < core_count ? cpuinfo_uarch_vortex : cpuinfo_uarch_tempest; default: /* Use hw.cpusubtype for detection */ break; @@ -322,7 +325,7 @@ void cpuinfo_arm_mach_init(void) { .core_id = i % cores_per_package, .package = packages + i / cores_per_package, .vendor = cpuinfo_vendor_apple, - .uarch = decode_uarch(cpu_family, cpu_subtype, i), + .uarch = decode_uarch(cpu_family, cpu_subtype, i, mach_topology.cores), }; if (i != 0 && cores[i].uarch != cores[i - 1].uarch) { num_clusters++; |