git: f9f006df1535 - stable/14 - powerpc: Add nominal support for POWER10 and POWER11

From: Justin Hibbits <jhibbits_at_FreeBSD.org>
Date: Thu, 24 Oct 2024 02:14:08 UTC
The branch stable/14 has been updated by jhibbits:

URL: https://cgit.FreeBSD.org/src/commit/?id=f9f006df1535dfcaa4764c3c4a67f66a05c7db7f

commit f9f006df1535dfcaa4764c3c4a67f66a05c7db7f
Author:     Justin Hibbits <jhibbits@FreeBSD.org>
AuthorDate: 2024-10-11 21:03:12 +0000
Commit:     Justin Hibbits <jhibbits@FreeBSD.org>
CommitDate: 2024-10-24 02:07:20 +0000

    powerpc: Add nominal support for POWER10 and POWER11
    
    (cherry picked from commit 1e434da3b065ef96b389e5e0b604ae05a51e794e)
---
 sys/powerpc/include/cpu.h |  2 ++
 sys/powerpc/include/spr.h |  2 ++
 sys/powerpc/powerpc/cpu.c | 18 ++++++++++++++++++
 3 files changed, 22 insertions(+)

diff --git a/sys/powerpc/include/cpu.h b/sys/powerpc/include/cpu.h
index 02ff42877f0e..35b32566484c 100644
--- a/sys/powerpc/include/cpu.h
+++ b/sys/powerpc/include/cpu.h
@@ -90,6 +90,8 @@ extern u_long cpu_features2;
 #define	PPC_FEATURE2_DARN	0x00200000
 #define	PPC_FEATURE2_SCV	0x00100000
 #define	PPC_FEATURE2_HTM_NOSUSPEND	0x00080000
+#define	PPC_FEATURE2_ARCH_3_1	0x00040000
+#define	PPC_FEATURE2_MMA	0x00020000
 
 #define	PPC_FEATURE_BITMASK						\
 	"\20"								\
diff --git a/sys/powerpc/include/spr.h b/sys/powerpc/include/spr.h
index 751a9e8184b6..5bb3858b0fb5 100644
--- a/sys/powerpc/include/spr.h
+++ b/sys/powerpc/include/spr.h
@@ -220,7 +220,9 @@
 #define	  IBMPOWER9		  0x004e
 #define	  MPC860		  0x0050
 #define	  IBMCELLBE		  0x0070
+#define	  IBMPOWER10		  0x0080
 #define	  MPC8240		  0x0081
+#define	  IBMPOWER11		  0x0082
 #define	  PA6T			  0x0090
 #define	  IBM405GP		  0x4011
 #define	  IBM405L		  0x4161
diff --git a/sys/powerpc/powerpc/cpu.c b/sys/powerpc/powerpc/cpu.c
index 19907e3973e7..f73ed25c8924 100644
--- a/sys/powerpc/powerpc/cpu.c
+++ b/sys/powerpc/powerpc/cpu.c
@@ -192,6 +192,24 @@ static const struct cputab models[] = {
 	   PPC_FEATURE2_ISEL | PPC_FEATURE2_TAR | PPC_FEATURE2_HAS_VEC_CRYPTO | 
 	   PPC_FEATURE2_ARCH_3_00 | PPC_FEATURE2_HAS_IEEE128 |
 	   PPC_FEATURE2_DARN, cpu_powerx_setup },
+        { "IBM POWER10",	IBMPOWER10,	REVFMT_MAJMIN,
+	   PPC_FEATURE_64 | PPC_FEATURE_HAS_ALTIVEC | PPC_FEATURE_HAS_FPU |
+	   PPC_FEATURE_SMT | PPC_FEATURE_ICACHE_SNOOP | PPC_FEATURE_ARCH_2_05 |
+	   PPC_FEATURE_ARCH_2_06 | PPC_FEATURE_HAS_VSX | PPC_FEATURE_TRUE_LE,
+	   PPC_FEATURE2_ARCH_2_07 | PPC_FEATURE2_DSCR | PPC_FEATURE2_EBB |
+	   PPC_FEATURE2_ISEL | PPC_FEATURE2_TAR | PPC_FEATURE2_HAS_VEC_CRYPTO |
+	   PPC_FEATURE2_ARCH_3_00 | PPC_FEATURE2_HAS_IEEE128 |
+	   PPC_FEATURE2_DARN | PPC_FEATURE2_ARCH_3_1 | PPC_FEATURE2_MMA,
+	   cpu_powerx_setup },
+        { "IBM POWER11",	IBMPOWER11,	REVFMT_MAJMIN,
+	   PPC_FEATURE_64 | PPC_FEATURE_HAS_ALTIVEC | PPC_FEATURE_HAS_FPU |
+	   PPC_FEATURE_SMT | PPC_FEATURE_ICACHE_SNOOP | PPC_FEATURE_ARCH_2_05 |
+	   PPC_FEATURE_ARCH_2_06 | PPC_FEATURE_HAS_VSX | PPC_FEATURE_TRUE_LE,
+	   PPC_FEATURE2_ARCH_2_07 | PPC_FEATURE2_DSCR | PPC_FEATURE2_EBB |
+	   PPC_FEATURE2_ISEL | PPC_FEATURE2_TAR | PPC_FEATURE2_HAS_VEC_CRYPTO |
+	   PPC_FEATURE2_ARCH_3_00 | PPC_FEATURE2_HAS_IEEE128 |
+	   PPC_FEATURE2_DARN | PPC_FEATURE2_ARCH_3_1 | PPC_FEATURE2_MMA,
+	   cpu_powerx_setup },
         { "Motorola PowerPC 7400",	MPC7400,	REVFMT_MAJMIN,
 	   PPC_FEATURE_HAS_ALTIVEC | PPC_FEATURE_HAS_FPU, 0, cpu_6xx_setup },
         { "Motorola PowerPC 7410",	MPC7410,	REVFMT_MAJMIN,