Skip to content

Commit f5bc97c

Browse files
authored
Merge pull request #5227 from zanpeeters/develop
Wrong output from getarch on Apple M4
2 parents 050c3b2 + acef78c commit f5bc97c

File tree

1 file changed

+13
-2
lines changed

1 file changed

+13
-2
lines changed

cpuid_arm64.c

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -374,15 +374,20 @@ int detect(void)
374374
}
375375
#else
376376
#ifdef __APPLE__
377+
length64 = sizeof(value64);
377378
sysctlbyname("hw.ncpu",&value64,&length64,NULL,0);
378379
cpulowperf=value64;
380+
length64 = sizeof(value64);
379381
sysctlbyname("hw.nperflevels",&value64,&length64,NULL,0);
380382
if (value64 > 1) {
381-
sysctlbyname("hw.perflevel0.cpusperl",&value64,&length64,NULL,0);
383+
length64 = sizeof(value64);
384+
sysctlbyname("hw.perflevel0.cpusperl2",&value64,&length64,NULL,0);
382385
cpuhiperf=value64;
383-
sysctlbyname("hw.perflevel1.cpusperl",&value64,&length64,NULL,0);
386+
length64 = sizeof(value64);
387+
sysctlbyname("hw.perflevel1.cpusperl2",&value64,&length64,NULL,0);
384388
cpulowperf=value64;
385389
}
390+
length64 = sizeof(value64);
386391
sysctlbyname("hw.cpufamily",&value64,&length64,NULL,0);
387392
if (value64 ==131287967|| value64 == 458787763 ) return CPU_VORTEX; //A12/M1
388393
if (value64 == 3660830781) return CPU_VORTEX; //A15/M2
@@ -467,6 +472,7 @@ int n=0;
467472
printf("#define NUM_CORES_HP %d\n",cpuhiperf);
468473
#endif
469474
#ifdef __APPLE__
475+
length64 = sizeof(value64);
470476
sysctlbyname("hw.physicalcpu_max",&value,&length,NULL,0);
471477
printf("#define NUM_CORES %d\n",value);
472478
if (cpulowperf >0)
@@ -698,12 +704,17 @@ void get_cpuconfig(void)
698704
case CPU_VORTEX:
699705
printf("#define VORTEX \n");
700706
#ifdef __APPLE__
707+
length64 = sizeof(value64);
701708
sysctlbyname("hw.l1icachesize",&value64,&length64,NULL,0);
702709
printf("#define L1_CODE_SIZE %lld \n",value64);
710+
length64 = sizeof(value64);
703711
sysctlbyname("hw.cachelinesize",&value64,&length64,NULL,0);
704712
printf("#define L1_CODE_LINESIZE %lld \n",value64);
713+
printf("#define L1_DATA_LINESIZE %lld \n",value64);
714+
length64 = sizeof(value64);
705715
sysctlbyname("hw.l1dcachesize",&value64,&length64,NULL,0);
706716
printf("#define L1_DATA_SIZE %lld \n",value64);
717+
length64 = sizeof(value64);
707718
sysctlbyname("hw.l2cachesize",&value64,&length64,NULL,0);
708719
printf("#define L2_SIZE %lld \n",value64);
709720
#endif

0 commit comments

Comments
 (0)