From 029fd01cfbcc0b18475faee8353585313c88a95b Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Wed, 2 Sep 2020 22:47:38 +0200 Subject: [PATCH 1/8] Detect AppleSilicon cpu on OSX --- cpuid_arm64.c | 35 ++++++++++++++++++++++++++++++++--- 1 file changed, 32 insertions(+), 3 deletions(-) diff --git a/cpuid_arm64.c b/cpuid_arm64.c index 1fd43148a..df1be85ba 100644 --- a/cpuid_arm64.c +++ b/cpuid_arm64.c @@ -26,6 +26,11 @@ *****************************************************************************/ #include +#ifdef OS_DARWIN +#include +int32_t value; +size_t length=sizeof(value); +#endif #define CPU_UNKNOWN 0 #define CPU_ARMV8 1 @@ -45,6 +50,8 @@ #define CPU_TSV110 9 // Ampere #define CPU_EMAG8180 10 +// Apple +#define CPU_SILICON 11 static char *cpuname[] = { "UNKNOWN", @@ -59,7 +66,8 @@ static char *cpuname[] = { "TSV110", "EMAG8180", "NEOVERSEN1", - "THUNDERX3T110" + "THUNDERX3T110", + "SILICON" }; static char *cpuname_lower[] = { @@ -75,7 +83,8 @@ static char *cpuname_lower[] = { "tsv110", "emag8180", "neoversen1", - "thunderx3t110" + "thunderx3t110", + "silicon" }; int get_feature(char *search) @@ -198,6 +207,10 @@ int detect(void) } #else +#ifdef DARWIN + sysctlbyname("hw.cpufamily",&value,&length,NULL,0); + if (value ==131287967) return CPU_SILICON; +#endif return CPU_ARMV8; #endif @@ -247,7 +260,10 @@ int n=0; printf("#define NUM_CORES %d\n",n); #endif - +#ifdef DARWIN + sysctlbyname("hw.physicalcpu_max",&value,&length,NULL,0); + printf("#define NUM_CORES %d\n",value); +#endif } @@ -398,6 +414,19 @@ void get_cpuconfig(void) printf("#define DTB_DEFAULT_ENTRIES 64 \n"); printf("#define DTB_SIZE 4096 \n"); break; +#ifdef DARWIN + case CPU_SILICON: + printf("#define SILICON \n"); + sysctlbyname("hw.l1icachesize",&value,&length,NULL,0); + printf("#define L1_CODE_SIZE %d \n",value); + sysctlbyname("hw.cachelinesize",&value,&length,NULL,0); + printf("#define L1_CODE_LINESIZE %d \n",value); + sysctlbyname("hw.l1dcachesize",&value,&length,NULL,0); + printf("#define L1_DATA_SIZE %d \n",value); + sysctlbyname("hw.l2dcachesize",&value,&length,NULL,0); + printf("#define L2_DATA_SIZE %d \n",value); + break; +#endif } get_cpucount(); } From b37d17382a092905bb7c2a263ad0ca269e53f541 Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Wed, 2 Sep 2020 22:48:49 +0200 Subject: [PATCH 2/8] Add Apple Silicon --- TargetList.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/TargetList.txt b/TargetList.txt index 5934f3012..de907bdb3 100644 --- a/TargetList.txt +++ b/TargetList.txt @@ -98,6 +98,7 @@ THUNDERX THUNDERX2T99 TSV110 THUNDERX3T110 +SILICON 9.System Z: ZARCH_GENERIC From 4a4d1ca6e025de7c88b8d18794775c4114168359 Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Wed, 2 Sep 2020 22:52:12 +0200 Subject: [PATCH 3/8] Add AppleSIlicon cpu --- Makefile.arm64 | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Makefile.arm64 b/Makefile.arm64 index 1091edfe5..78ba79aa0 100644 --- a/Makefile.arm64 +++ b/Makefile.arm64 @@ -66,6 +66,11 @@ FCOMMON_OPT += -march=armv8.1-a -mtune=thunderx2t99 endif endif +ifeq ($(CORE), SILICON) +CCOMMON_OPT += -march=armv8.3-a +FCOMMON_OPT += -march=armv8.3-a +endif + ifeq ($(GCCVERSIONGTEQ9), 1) ifeq ($(CORE), TSV110) CCOMMON_OPT += -march=armv8.2-a -mtune=tsv110 From 80794fe8fd2a877cd0387ffc64b21a786ae449f6 Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Wed, 2 Sep 2020 22:56:58 +0200 Subject: [PATCH 4/8] Create KERNEL.SILICON --- kernel/arm64/KERNEL.SILICON | 1 + 1 file changed, 1 insertion(+) create mode 100644 kernel/arm64/KERNEL.SILICON diff --git a/kernel/arm64/KERNEL.SILICON b/kernel/arm64/KERNEL.SILICON new file mode 100644 index 000000000..e3efef1f5 --- /dev/null +++ b/kernel/arm64/KERNEL.SILICON @@ -0,0 +1 @@ +include $(KERNELDIR)/KERNEL.ARMV8 From 17dca035de526d69d9639f16622e9aeda7cd7ffd Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Thu, 3 Sep 2020 08:38:08 +0200 Subject: [PATCH 5/8] rename SILICON to VORTEX --- Makefile.arm64 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile.arm64 b/Makefile.arm64 index 78ba79aa0..62a877fff 100644 --- a/Makefile.arm64 +++ b/Makefile.arm64 @@ -66,7 +66,7 @@ FCOMMON_OPT += -march=armv8.1-a -mtune=thunderx2t99 endif endif -ifeq ($(CORE), SILICON) +ifeq ($(CORE), VORTEX) CCOMMON_OPT += -march=armv8.3-a FCOMMON_OPT += -march=armv8.3-a endif From ea3a58c8442c9327b43e5cd2109865782759e6e8 Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Thu, 3 Sep 2020 08:38:53 +0200 Subject: [PATCH 6/8] Rename SILICON to VORTEX --- TargetList.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TargetList.txt b/TargetList.txt index de907bdb3..66eca4506 100644 --- a/TargetList.txt +++ b/TargetList.txt @@ -98,7 +98,7 @@ THUNDERX THUNDERX2T99 TSV110 THUNDERX3T110 -SILICON +VORTEX 9.System Z: ZARCH_GENERIC From af5bc955035ba1a590c3b8a72a403c414bee45ee Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Thu, 3 Sep 2020 08:43:26 +0200 Subject: [PATCH 7/8] Rename SILICON to VORTEX and fix duplicate numbering --- cpuid_arm64.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/cpuid_arm64.c b/cpuid_arm64.c index df1be85ba..a0d3e15b9 100644 --- a/cpuid_arm64.c +++ b/cpuid_arm64.c @@ -51,7 +51,7 @@ size_t length=sizeof(value); // Ampere #define CPU_EMAG8180 10 // Apple -#define CPU_SILICON 11 +#define CPU_VORTEX 13 static char *cpuname[] = { "UNKNOWN", @@ -67,7 +67,7 @@ static char *cpuname[] = { "EMAG8180", "NEOVERSEN1", "THUNDERX3T110", - "SILICON" + "VORTEX" }; static char *cpuname_lower[] = { @@ -84,7 +84,7 @@ static char *cpuname_lower[] = { "emag8180", "neoversen1", "thunderx3t110", - "silicon" + "vortex" }; int get_feature(char *search) @@ -209,7 +209,7 @@ int detect(void) #else #ifdef DARWIN sysctlbyname("hw.cpufamily",&value,&length,NULL,0); - if (value ==131287967) return CPU_SILICON; + if (value ==131287967) return CPU_VORTEX; #endif return CPU_ARMV8; #endif @@ -415,8 +415,8 @@ void get_cpuconfig(void) printf("#define DTB_SIZE 4096 \n"); break; #ifdef DARWIN - case CPU_SILICON: - printf("#define SILICON \n"); + case CPU_VORTEX: + printf("#define VORTEX \n"); sysctlbyname("hw.l1icachesize",&value,&length,NULL,0); printf("#define L1_CODE_SIZE %d \n",value); sysctlbyname("hw.cachelinesize",&value,&length,NULL,0); From 775a87242d374e140fa784931a04bf01d4738e1f Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Thu, 3 Sep 2020 08:44:20 +0200 Subject: [PATCH 8/8] Rename KERNEL.SILICON to KERNEL.VORTEX --- kernel/arm64/{KERNEL.SILICON => KERNEL.VORTEX} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename kernel/arm64/{KERNEL.SILICON => KERNEL.VORTEX} (100%) diff --git a/kernel/arm64/KERNEL.SILICON b/kernel/arm64/KERNEL.VORTEX similarity index 100% rename from kernel/arm64/KERNEL.SILICON rename to kernel/arm64/KERNEL.VORTEX