diff --git a/src/arm/midr.c b/src/arm/midr.c index 2a9630b..7e0bd87 100644 --- a/src/arm/midr.c +++ b/src/arm/midr.c @@ -416,29 +416,22 @@ struct cpuInfo* get_cpu_info_mach(struct cpuInfo* cpu) { cpu->soc = get_soc(); cpu->peak_performance = get_peak_performance(cpu); } - else if(cpu_family == CPUFAMILY_ARM_EVEREST_SAWTOOTH) { + else if(cpu_family == CPUFAMILY_ARM_EVEREST_SAWTOOTH || + cpu_family == CPUFAMILY_ARM_EVEREST_SAWTOOTH_PRO || + cpu_family == CPUFAMILY_ARM_EVEREST_SAWTOOTH_MAX) { cpu->num_cpus = 2; // Now detect the M3 version - uint32_t cpu_subfamily = get_sys_info_by_name("hw.cpusubfamily"); - if(cpu_subfamily == CPUSUBFAMILY_ARM_HG) { + if(cpu_family == CPUFAMILY_ARM_EVEREST_SAWTOOTH) { // Apple M3 fill_cpu_info_everest_sawtooth(cpu, 4, 4); } - else if(cpu_subfamily == CPUSUBFAMILY_ARM_HS) { - // Apple M3 Pro/Max/Ultra. Detect number of cores + else if(cpu_subfamily == CPUFAMILY_ARM_EVEREST_SAWTOOTH_PRO) { uint32_t physicalcpu = get_sys_info_by_name("hw.physicalcpu"); - if(physicalcpu == 11 || physicalcpu == 12) { - // M3 Pro - fill_cpu_info_everest_sawtooth(cpu, physicalcpu-6, 6); - } - else if(physicalcpu >= 14 && physicalcpu <= 16) { - // M3 Max - fill_cpu_info_everest_sawtooth(cpu, physicalcpu-4, 4); - } - else { - printBug("Found invalid physical cpu number: %d", physicalcpu); - return NULL; - } + fill_cpu_info_everest_sawtooth(cpu, physicalcpu-6, 6); + } + else if(cpu_subfamily == CPUFAMILY_ARM_EVEREST_SAWTOOTH_MAX) { + uint32_t physicalcpu = get_sys_info_by_name("hw.physicalcpu"); + fill_cpu_info_everest_sawtooth(cpu, physicalcpu-4, 4); } else { printBug("Found invalid cpu_subfamily: 0x%.8X", cpu_subfamily); diff --git a/src/arm/sysctl.h b/src/arm/sysctl.h index 96c6500..f4432ab 100644 --- a/src/arm/sysctl.h +++ b/src/arm/sysctl.h @@ -9,8 +9,8 @@ #define MIDR_APPLE_M2_BLIZZARD 0x610F0300 #define MIDR_APPLE_M2_AVALANCHE 0x610F0310 // https://github.com/AsahiLinux/m1n1/blob/main/src/chickens.c -#define MIDR_APPLE_M2_SAWTOOTH 0x610F0480 -#define MIDR_APPLE_M2_EVEREST 0x610F0490 +#define MIDR_APPLE_M3_SAWTOOTH 0x610F0480 +#define MIDR_APPLE_M3_EVEREST 0x610F0490 // M1 / A14 #ifndef CPUFAMILY_ARM_FIRESTORM_ICESTORM @@ -21,9 +21,11 @@ #define CPUFAMILY_ARM_AVALANCHE_BLIZZARD 0xDA33D83D #endif // M3 / A16 / A17 -#ifndef CPUFAMILY_ARM_EVEREST_SAWTOOTH - #define CPUFAMILY_ARM_EVEREST_SAWTOOTH 0x72015832 -#endif +// https://ratfactor.com/zig/stdlib-browseable2/c/darwin.zig.html +// https://github.com/Dr-Noob/cpufetch/issues/210 +#define CPUFAMILY_ARM_EVEREST_SAWTOOTH 0x8765EDEA +#define CPUFAMILY_ARM_EVEREST_SAWTOOTH_PRO 0x5F4DEA93 +#define CPUFAMILY_ARM_EVEREST_SAWTOOTH_MAX 0x72015832 // For detecting different M1 types // NOTE: Could also be achieved detecting different