xref: /linux/arch/powerpc/kernel/cpu_specs_book3s_64.h (revision 79790b6818e96c58fe2bffee1b418c16e64e7b80)
1 /* SPDX-License-Identifier: GPL-2.0-or-later */
2 /*
3  *  Copyright (C) 2001 Ben. Herrenschmidt (benh@kernel.crashing.org)
4  *
5  *  Modifications for ppc64:
6  *      Copyright (C) 2003 Dave Engebretsen <engebret@us.ibm.com>
7  */
8 
9 /* NOTE:
10  * Unlike ppc32, ppc64 will only call cpu_setup() for the boot CPU, it's
11  * the responsibility of the appropriate CPU save/restore functions to
12  * eventually copy these settings over. Those save/restore aren't yet
13  * part of the cputable though. That has to be fixed for both ppc32
14  * and ppc64
15  */
16 #define COMMON_USER_PPC64	(PPC_FEATURE_32 | PPC_FEATURE_HAS_FPU | \
17 				 PPC_FEATURE_HAS_MMU | PPC_FEATURE_64)
18 #define COMMON_USER_POWER4	(COMMON_USER_PPC64 | PPC_FEATURE_POWER4)
19 #define COMMON_USER_POWER5	(COMMON_USER_PPC64 | PPC_FEATURE_POWER5 |\
20 				 PPC_FEATURE_SMT | PPC_FEATURE_ICACHE_SNOOP)
21 #define COMMON_USER_POWER5_PLUS	(COMMON_USER_PPC64 | PPC_FEATURE_POWER5_PLUS|\
22 				 PPC_FEATURE_SMT | PPC_FEATURE_ICACHE_SNOOP)
23 #define COMMON_USER_POWER6	(COMMON_USER_PPC64 | PPC_FEATURE_ARCH_2_05 |\
24 				 PPC_FEATURE_SMT | PPC_FEATURE_ICACHE_SNOOP | \
25 				 PPC_FEATURE_TRUE_LE | \
26 				 PPC_FEATURE_PSERIES_PERFMON_COMPAT)
27 #define COMMON_USER_POWER7	(COMMON_USER_PPC64 | PPC_FEATURE_ARCH_2_06 |\
28 				 PPC_FEATURE_SMT | PPC_FEATURE_ICACHE_SNOOP | \
29 				 PPC_FEATURE_TRUE_LE | \
30 				 PPC_FEATURE_PSERIES_PERFMON_COMPAT)
31 #define COMMON_USER2_POWER7	(PPC_FEATURE2_DSCR)
32 #define COMMON_USER_POWER8	(COMMON_USER_PPC64 | PPC_FEATURE_ARCH_2_06 |\
33 				 PPC_FEATURE_SMT | PPC_FEATURE_ICACHE_SNOOP | \
34 				 PPC_FEATURE_TRUE_LE | \
35 				 PPC_FEATURE_PSERIES_PERFMON_COMPAT)
36 #define COMMON_USER2_POWER8	(PPC_FEATURE2_ARCH_2_07 | \
37 				 PPC_FEATURE2_HTM_COMP | \
38 				 PPC_FEATURE2_HTM_NOSC_COMP | \
39 				 PPC_FEATURE2_DSCR | \
40 				 PPC_FEATURE2_ISEL | PPC_FEATURE2_TAR | \
41 				 PPC_FEATURE2_VEC_CRYPTO)
42 #define COMMON_USER_PA6T	(COMMON_USER_PPC64 | PPC_FEATURE_PA6T |\
43 				 PPC_FEATURE_TRUE_LE | \
44 				 PPC_FEATURE_HAS_ALTIVEC_COMP)
45 #define COMMON_USER_POWER9	COMMON_USER_POWER8
46 #define COMMON_USER2_POWER9	(COMMON_USER2_POWER8 | \
47 				 PPC_FEATURE2_ARCH_3_00 | \
48 				 PPC_FEATURE2_HAS_IEEE128 | \
49 				 PPC_FEATURE2_DARN | \
50 				 PPC_FEATURE2_SCV)
51 #define COMMON_USER_POWER10	COMMON_USER_POWER9
52 #define COMMON_USER2_POWER10	(PPC_FEATURE2_ARCH_3_1 | \
53 				 PPC_FEATURE2_MMA | \
54 				 PPC_FEATURE2_ARCH_3_00 | \
55 				 PPC_FEATURE2_HAS_IEEE128 | \
56 				 PPC_FEATURE2_DARN | \
57 				 PPC_FEATURE2_SCV | \
58 				 PPC_FEATURE2_ARCH_2_07 | \
59 				 PPC_FEATURE2_DSCR | \
60 				 PPC_FEATURE2_ISEL | PPC_FEATURE2_TAR | \
61 				 PPC_FEATURE2_VEC_CRYPTO)
62 
63 #define COMMON_USER_POWER11	COMMON_USER_POWER10
64 #define COMMON_USER2_POWER11	COMMON_USER2_POWER10
65 
66 static struct cpu_spec cpu_specs[] __initdata = {
67 	{	/* PPC970 */
68 		.pvr_mask		= 0xffff0000,
69 		.pvr_value		= 0x00390000,
70 		.cpu_name		= "PPC970",
71 		.cpu_features		= CPU_FTRS_PPC970,
72 		.cpu_user_features	= COMMON_USER_POWER4 | PPC_FEATURE_HAS_ALTIVEC_COMP,
73 		.mmu_features		= MMU_FTRS_PPC970,
74 		.icache_bsize		= 128,
75 		.dcache_bsize		= 128,
76 		.num_pmcs		= 8,
77 		.pmc_type		= PPC_PMC_IBM,
78 		.cpu_setup		= __setup_cpu_ppc970,
79 		.cpu_restore		= __restore_cpu_ppc970,
80 		.platform		= "ppc970",
81 	},
82 	{	/* PPC970FX */
83 		.pvr_mask		= 0xffff0000,
84 		.pvr_value		= 0x003c0000,
85 		.cpu_name		= "PPC970FX",
86 		.cpu_features		= CPU_FTRS_PPC970,
87 		.cpu_user_features	= COMMON_USER_POWER4 | PPC_FEATURE_HAS_ALTIVEC_COMP,
88 		.mmu_features		= MMU_FTRS_PPC970,
89 		.icache_bsize		= 128,
90 		.dcache_bsize		= 128,
91 		.num_pmcs		= 8,
92 		.pmc_type		= PPC_PMC_IBM,
93 		.cpu_setup		= __setup_cpu_ppc970,
94 		.cpu_restore		= __restore_cpu_ppc970,
95 		.platform		= "ppc970",
96 	},
97 	{	/* PPC970MP DD1.0 - no DEEPNAP, use regular 970 init */
98 		.pvr_mask		= 0xffffffff,
99 		.pvr_value		= 0x00440100,
100 		.cpu_name		= "PPC970MP",
101 		.cpu_features		= CPU_FTRS_PPC970,
102 		.cpu_user_features	= COMMON_USER_POWER4 | PPC_FEATURE_HAS_ALTIVEC_COMP,
103 		.mmu_features		= MMU_FTRS_PPC970,
104 		.icache_bsize		= 128,
105 		.dcache_bsize		= 128,
106 		.num_pmcs		= 8,
107 		.pmc_type		= PPC_PMC_IBM,
108 		.cpu_setup		= __setup_cpu_ppc970,
109 		.cpu_restore		= __restore_cpu_ppc970,
110 		.platform		= "ppc970",
111 	},
112 	{	/* PPC970MP */
113 		.pvr_mask		= 0xffff0000,
114 		.pvr_value		= 0x00440000,
115 		.cpu_name		= "PPC970MP",
116 		.cpu_features		= CPU_FTRS_PPC970,
117 		.cpu_user_features	= COMMON_USER_POWER4 | PPC_FEATURE_HAS_ALTIVEC_COMP,
118 		.mmu_features		= MMU_FTRS_PPC970,
119 		.icache_bsize		= 128,
120 		.dcache_bsize		= 128,
121 		.num_pmcs		= 8,
122 		.pmc_type		= PPC_PMC_IBM,
123 		.cpu_setup		= __setup_cpu_ppc970MP,
124 		.cpu_restore		= __restore_cpu_ppc970,
125 		.platform		= "ppc970",
126 	},
127 	{	/* PPC970GX */
128 		.pvr_mask		= 0xffff0000,
129 		.pvr_value		= 0x00450000,
130 		.cpu_name		= "PPC970GX",
131 		.cpu_features		= CPU_FTRS_PPC970,
132 		.cpu_user_features	= COMMON_USER_POWER4 | PPC_FEATURE_HAS_ALTIVEC_COMP,
133 		.mmu_features		= MMU_FTRS_PPC970,
134 		.icache_bsize		= 128,
135 		.dcache_bsize		= 128,
136 		.num_pmcs		= 8,
137 		.pmc_type		= PPC_PMC_IBM,
138 		.cpu_setup		= __setup_cpu_ppc970,
139 		.platform		= "ppc970",
140 	},
141 	{	/* Power5 GR */
142 		.pvr_mask		= 0xffff0000,
143 		.pvr_value		= 0x003a0000,
144 		.cpu_name		= "POWER5 (gr)",
145 		.cpu_features		= CPU_FTRS_POWER5,
146 		.cpu_user_features	= COMMON_USER_POWER5,
147 		.mmu_features		= MMU_FTRS_POWER5,
148 		.icache_bsize		= 128,
149 		.dcache_bsize		= 128,
150 		.num_pmcs		= 6,
151 		.pmc_type		= PPC_PMC_IBM,
152 		.platform		= "power5",
153 	},
154 	{	/* Power5++ */
155 		.pvr_mask		= 0xffffff00,
156 		.pvr_value		= 0x003b0300,
157 		.cpu_name		= "POWER5+ (gs)",
158 		.cpu_features		= CPU_FTRS_POWER5,
159 		.cpu_user_features	= COMMON_USER_POWER5_PLUS,
160 		.mmu_features		= MMU_FTRS_POWER5,
161 		.icache_bsize		= 128,
162 		.dcache_bsize		= 128,
163 		.num_pmcs		= 6,
164 		.platform		= "power5+",
165 	},
166 	{	/* Power5 GS */
167 		.pvr_mask		= 0xffff0000,
168 		.pvr_value		= 0x003b0000,
169 		.cpu_name		= "POWER5+ (gs)",
170 		.cpu_features		= CPU_FTRS_POWER5,
171 		.cpu_user_features	= COMMON_USER_POWER5_PLUS,
172 		.mmu_features		= MMU_FTRS_POWER5,
173 		.icache_bsize		= 128,
174 		.dcache_bsize		= 128,
175 		.num_pmcs		= 6,
176 		.pmc_type		= PPC_PMC_IBM,
177 		.platform		= "power5+",
178 	},
179 	{	/* POWER6 in P5+ mode; 2.04-compliant processor */
180 		.pvr_mask		= 0xffffffff,
181 		.pvr_value		= 0x0f000001,
182 		.cpu_name		= "POWER5+",
183 		.cpu_features		= CPU_FTRS_POWER5,
184 		.cpu_user_features	= COMMON_USER_POWER5_PLUS,
185 		.mmu_features		= MMU_FTRS_POWER5,
186 		.icache_bsize		= 128,
187 		.dcache_bsize		= 128,
188 		.platform		= "power5+",
189 	},
190 	{	/* Power6 */
191 		.pvr_mask		= 0xffff0000,
192 		.pvr_value		= 0x003e0000,
193 		.cpu_name		= "POWER6 (raw)",
194 		.cpu_features		= CPU_FTRS_POWER6,
195 		.cpu_user_features	= COMMON_USER_POWER6 | PPC_FEATURE_POWER6_EXT,
196 		.mmu_features		= MMU_FTRS_POWER6,
197 		.icache_bsize		= 128,
198 		.dcache_bsize		= 128,
199 		.num_pmcs		= 6,
200 		.pmc_type		= PPC_PMC_IBM,
201 		.platform		= "power6x",
202 	},
203 	{	/* 2.05-compliant processor, i.e. Power6 "architected" mode */
204 		.pvr_mask		= 0xffffffff,
205 		.pvr_value		= 0x0f000002,
206 		.cpu_name		= "POWER6 (architected)",
207 		.cpu_features		= CPU_FTRS_POWER6,
208 		.cpu_user_features	= COMMON_USER_POWER6,
209 		.mmu_features		= MMU_FTRS_POWER6,
210 		.icache_bsize		= 128,
211 		.dcache_bsize		= 128,
212 		.platform		= "power6",
213 	},
214 	{	/* 2.06-compliant processor, i.e. Power7 "architected" mode */
215 		.pvr_mask		= 0xffffffff,
216 		.pvr_value		= 0x0f000003,
217 		.cpu_name		= "POWER7 (architected)",
218 		.cpu_features		= CPU_FTRS_POWER7,
219 		.cpu_user_features	= COMMON_USER_POWER7,
220 		.cpu_user_features2	= COMMON_USER2_POWER7,
221 		.mmu_features		= MMU_FTRS_POWER7,
222 		.icache_bsize		= 128,
223 		.dcache_bsize		= 128,
224 		.cpu_setup		= __setup_cpu_power7,
225 		.cpu_restore		= __restore_cpu_power7,
226 		.machine_check_early	= __machine_check_early_realmode_p7,
227 		.platform		= "power7",
228 	},
229 	{	/* 2.07-compliant processor, i.e. Power8 "architected" mode */
230 		.pvr_mask		= 0xffffffff,
231 		.pvr_value		= 0x0f000004,
232 		.cpu_name		= "POWER8 (architected)",
233 		.cpu_features		= CPU_FTRS_POWER8,
234 		.cpu_user_features	= COMMON_USER_POWER8,
235 		.cpu_user_features2	= COMMON_USER2_POWER8,
236 		.mmu_features		= MMU_FTRS_POWER8,
237 		.icache_bsize		= 128,
238 		.dcache_bsize		= 128,
239 		.cpu_setup		= __setup_cpu_power8,
240 		.cpu_restore		= __restore_cpu_power8,
241 		.machine_check_early	= __machine_check_early_realmode_p8,
242 		.platform		= "power8",
243 	},
244 	{	/* 2.07-compliant processor, HeXin C2000 processor */
245 		.pvr_mask		= 0xffff0000,
246 		.pvr_value		= 0x00660000,
247 		.cpu_name		= "HX-C2000",
248 		.cpu_features		= CPU_FTRS_POWER8,
249 		.cpu_user_features	= COMMON_USER_POWER8,
250 		.cpu_user_features2	= COMMON_USER2_POWER8,
251 		.mmu_features		= MMU_FTRS_POWER8,
252 		.icache_bsize		= 128,
253 		.dcache_bsize		= 128,
254 		.cpu_setup		= __setup_cpu_power8,
255 		.cpu_restore		= __restore_cpu_power8,
256 		.machine_check_early	= __machine_check_early_realmode_p8,
257 		.platform		= "power8",
258 	},
259 	{	/* 3.00-compliant processor, i.e. Power9 "architected" mode */
260 		.pvr_mask		= 0xffffffff,
261 		.pvr_value		= 0x0f000005,
262 		.cpu_name		= "POWER9 (architected)",
263 		.cpu_features		= CPU_FTRS_POWER9,
264 		.cpu_user_features	= COMMON_USER_POWER9,
265 		.cpu_user_features2	= COMMON_USER2_POWER9,
266 		.mmu_features		= MMU_FTRS_POWER9,
267 		.icache_bsize		= 128,
268 		.dcache_bsize		= 128,
269 		.cpu_setup		= __setup_cpu_power9,
270 		.cpu_restore		= __restore_cpu_power9,
271 		.platform		= "power9",
272 	},
273 	{	/* 3.1-compliant processor, i.e. Power10 "architected" mode */
274 		.pvr_mask		= 0xffffffff,
275 		.pvr_value		= 0x0f000006,
276 		.cpu_name		= "POWER10 (architected)",
277 		.cpu_features		= CPU_FTRS_POWER10,
278 		.cpu_user_features	= COMMON_USER_POWER10,
279 		.cpu_user_features2	= COMMON_USER2_POWER10,
280 		.mmu_features		= MMU_FTRS_POWER10,
281 		.icache_bsize		= 128,
282 		.dcache_bsize		= 128,
283 		.cpu_setup		= __setup_cpu_power10,
284 		.cpu_restore		= __restore_cpu_power10,
285 		.platform		= "power10",
286 	},
287 	{	/* 3.1-compliant processor, i.e. Power11 "architected" mode */
288 		.pvr_mask		= 0xffffffff,
289 		.pvr_value		= 0x0f000007,
290 		.cpu_name		= "Power11 (architected)",
291 		.cpu_features		= CPU_FTRS_POWER11,
292 		.cpu_user_features	= COMMON_USER_POWER11,
293 		.cpu_user_features2	= COMMON_USER2_POWER11,
294 		.mmu_features		= MMU_FTRS_POWER11,
295 		.icache_bsize		= 128,
296 		.dcache_bsize		= 128,
297 		.cpu_setup		= __setup_cpu_power10,
298 		.cpu_restore		= __restore_cpu_power10,
299 		.platform		= "power11",
300 	},
301 	{	/* Power7 */
302 		.pvr_mask		= 0xffff0000,
303 		.pvr_value		= 0x003f0000,
304 		.cpu_name		= "POWER7 (raw)",
305 		.cpu_features		= CPU_FTRS_POWER7,
306 		.cpu_user_features	= COMMON_USER_POWER7,
307 		.cpu_user_features2	= COMMON_USER2_POWER7,
308 		.mmu_features		= MMU_FTRS_POWER7,
309 		.icache_bsize		= 128,
310 		.dcache_bsize		= 128,
311 		.num_pmcs		= 6,
312 		.pmc_type		= PPC_PMC_IBM,
313 		.cpu_setup		= __setup_cpu_power7,
314 		.cpu_restore		= __restore_cpu_power7,
315 		.machine_check_early	= __machine_check_early_realmode_p7,
316 		.platform		= "power7",
317 	},
318 	{	/* Power7+ */
319 		.pvr_mask		= 0xffff0000,
320 		.pvr_value		= 0x004A0000,
321 		.cpu_name		= "POWER7+ (raw)",
322 		.cpu_features		= CPU_FTRS_POWER7,
323 		.cpu_user_features	= COMMON_USER_POWER7,
324 		.cpu_user_features2	= COMMON_USER2_POWER7,
325 		.mmu_features		= MMU_FTRS_POWER7,
326 		.icache_bsize		= 128,
327 		.dcache_bsize		= 128,
328 		.num_pmcs		= 6,
329 		.pmc_type		= PPC_PMC_IBM,
330 		.cpu_setup		= __setup_cpu_power7,
331 		.cpu_restore		= __restore_cpu_power7,
332 		.machine_check_early	= __machine_check_early_realmode_p7,
333 		.platform		= "power7+",
334 	},
335 	{	/* Power8E */
336 		.pvr_mask		= 0xffff0000,
337 		.pvr_value		= 0x004b0000,
338 		.cpu_name		= "POWER8E (raw)",
339 		.cpu_features		= CPU_FTRS_POWER8E,
340 		.cpu_user_features	= COMMON_USER_POWER8,
341 		.cpu_user_features2	= COMMON_USER2_POWER8,
342 		.mmu_features		= MMU_FTRS_POWER8,
343 		.icache_bsize		= 128,
344 		.dcache_bsize		= 128,
345 		.num_pmcs		= 6,
346 		.pmc_type		= PPC_PMC_IBM,
347 		.cpu_setup		= __setup_cpu_power8,
348 		.cpu_restore		= __restore_cpu_power8,
349 		.machine_check_early	= __machine_check_early_realmode_p8,
350 		.platform		= "power8",
351 	},
352 	{	/* Power8NVL */
353 		.pvr_mask		= 0xffff0000,
354 		.pvr_value		= 0x004c0000,
355 		.cpu_name		= "POWER8NVL (raw)",
356 		.cpu_features		= CPU_FTRS_POWER8,
357 		.cpu_user_features	= COMMON_USER_POWER8,
358 		.cpu_user_features2	= COMMON_USER2_POWER8,
359 		.mmu_features		= MMU_FTRS_POWER8,
360 		.icache_bsize		= 128,
361 		.dcache_bsize		= 128,
362 		.num_pmcs		= 6,
363 		.pmc_type		= PPC_PMC_IBM,
364 		.cpu_setup		= __setup_cpu_power8,
365 		.cpu_restore		= __restore_cpu_power8,
366 		.machine_check_early	= __machine_check_early_realmode_p8,
367 		.platform		= "power8",
368 	},
369 	{	/* Power8 */
370 		.pvr_mask		= 0xffff0000,
371 		.pvr_value		= 0x004d0000,
372 		.cpu_name		= "POWER8 (raw)",
373 		.cpu_features		= CPU_FTRS_POWER8,
374 		.cpu_user_features	= COMMON_USER_POWER8,
375 		.cpu_user_features2	= COMMON_USER2_POWER8,
376 		.mmu_features		= MMU_FTRS_POWER8,
377 		.icache_bsize		= 128,
378 		.dcache_bsize		= 128,
379 		.num_pmcs		= 6,
380 		.pmc_type		= PPC_PMC_IBM,
381 		.cpu_setup		= __setup_cpu_power8,
382 		.cpu_restore		= __restore_cpu_power8,
383 		.machine_check_early	= __machine_check_early_realmode_p8,
384 		.platform		= "power8",
385 	},
386 	{	/* Power9 DD2.0 */
387 		.pvr_mask		= 0xffffefff,
388 		.pvr_value		= 0x004e0200,
389 		.cpu_name		= "POWER9 (raw)",
390 		.cpu_features		= CPU_FTRS_POWER9_DD2_0,
391 		.cpu_user_features	= COMMON_USER_POWER9,
392 		.cpu_user_features2	= COMMON_USER2_POWER9,
393 		.mmu_features		= MMU_FTRS_POWER9,
394 		.icache_bsize		= 128,
395 		.dcache_bsize		= 128,
396 		.num_pmcs		= 6,
397 		.pmc_type		= PPC_PMC_IBM,
398 		.cpu_setup		= __setup_cpu_power9,
399 		.cpu_restore		= __restore_cpu_power9,
400 		.machine_check_early	= __machine_check_early_realmode_p9,
401 		.platform		= "power9",
402 	},
403 	{	/* Power9 DD 2.1 */
404 		.pvr_mask		= 0xffffefff,
405 		.pvr_value		= 0x004e0201,
406 		.cpu_name		= "POWER9 (raw)",
407 		.cpu_features		= CPU_FTRS_POWER9_DD2_1,
408 		.cpu_user_features	= COMMON_USER_POWER9,
409 		.cpu_user_features2	= COMMON_USER2_POWER9,
410 		.mmu_features		= MMU_FTRS_POWER9,
411 		.icache_bsize		= 128,
412 		.dcache_bsize		= 128,
413 		.num_pmcs		= 6,
414 		.pmc_type		= PPC_PMC_IBM,
415 		.cpu_setup		= __setup_cpu_power9,
416 		.cpu_restore		= __restore_cpu_power9,
417 		.machine_check_early	= __machine_check_early_realmode_p9,
418 		.platform		= "power9",
419 	},
420 	{	/* Power9 DD2.2 */
421 		.pvr_mask		= 0xffffefff,
422 		.pvr_value		= 0x004e0202,
423 		.cpu_name		= "POWER9 (raw)",
424 		.cpu_features		= CPU_FTRS_POWER9_DD2_2,
425 		.cpu_user_features	= COMMON_USER_POWER9,
426 		.cpu_user_features2	= COMMON_USER2_POWER9,
427 		.mmu_features		= MMU_FTRS_POWER9,
428 		.icache_bsize		= 128,
429 		.dcache_bsize		= 128,
430 		.num_pmcs		= 6,
431 		.pmc_type		= PPC_PMC_IBM,
432 		.cpu_setup		= __setup_cpu_power9,
433 		.cpu_restore		= __restore_cpu_power9,
434 		.machine_check_early	= __machine_check_early_realmode_p9,
435 		.platform		= "power9",
436 	},
437 	{	/* Power9 DD2.3 or later */
438 		.pvr_mask		= 0xffff0000,
439 		.pvr_value		= 0x004e0000,
440 		.cpu_name		= "POWER9 (raw)",
441 		.cpu_features		= CPU_FTRS_POWER9_DD2_3,
442 		.cpu_user_features	= COMMON_USER_POWER9,
443 		.cpu_user_features2	= COMMON_USER2_POWER9,
444 		.mmu_features		= MMU_FTRS_POWER9,
445 		.icache_bsize		= 128,
446 		.dcache_bsize		= 128,
447 		.num_pmcs		= 6,
448 		.pmc_type		= PPC_PMC_IBM,
449 		.cpu_setup		= __setup_cpu_power9,
450 		.cpu_restore		= __restore_cpu_power9,
451 		.machine_check_early	= __machine_check_early_realmode_p9,
452 		.platform		= "power9",
453 	},
454 	{	/* Power10 */
455 		.pvr_mask		= 0xffff0000,
456 		.pvr_value		= 0x00800000,
457 		.cpu_name		= "POWER10 (raw)",
458 		.cpu_features		= CPU_FTRS_POWER10,
459 		.cpu_user_features	= COMMON_USER_POWER10,
460 		.cpu_user_features2	= COMMON_USER2_POWER10,
461 		.mmu_features		= MMU_FTRS_POWER10,
462 		.icache_bsize		= 128,
463 		.dcache_bsize		= 128,
464 		.num_pmcs		= 6,
465 		.pmc_type		= PPC_PMC_IBM,
466 		.cpu_setup		= __setup_cpu_power10,
467 		.cpu_restore		= __restore_cpu_power10,
468 		.machine_check_early	= __machine_check_early_realmode_p10,
469 		.platform		= "power10",
470 	},
471 	{	/* Power11 */
472 		.pvr_mask		= 0xffff0000,
473 		.pvr_value		= 0x00820000,
474 		.cpu_name		= "Power11 (raw)",
475 		.cpu_features		= CPU_FTRS_POWER11,
476 		.cpu_user_features	= COMMON_USER_POWER11,
477 		.cpu_user_features2	= COMMON_USER2_POWER11,
478 		.mmu_features		= MMU_FTRS_POWER11,
479 		.icache_bsize		= 128,
480 		.dcache_bsize		= 128,
481 		.num_pmcs		= 6,
482 		.pmc_type		= PPC_PMC_IBM,
483 		.cpu_setup		= __setup_cpu_power10,
484 		.cpu_restore		= __restore_cpu_power10,
485 		.machine_check_early	= __machine_check_early_realmode_p10,
486 		.platform		= "power11",
487 	},
488 	{	/* Cell Broadband Engine */
489 		.pvr_mask		= 0xffff0000,
490 		.pvr_value		= 0x00700000,
491 		.cpu_name		= "Cell Broadband Engine",
492 		.cpu_features		= CPU_FTRS_CELL,
493 		.cpu_user_features	= COMMON_USER_PPC64 | PPC_FEATURE_CELL |
494 					  PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_SMT,
495 		.mmu_features		= MMU_FTRS_CELL,
496 		.icache_bsize		= 128,
497 		.dcache_bsize		= 128,
498 		.num_pmcs		= 4,
499 		.pmc_type		= PPC_PMC_IBM,
500 		.platform		= "ppc-cell-be",
501 	},
502 	{	/* PA Semi PA6T */
503 		.pvr_mask		= 0x7fff0000,
504 		.pvr_value		= 0x00900000,
505 		.cpu_name		= "PA6T",
506 		.cpu_features		= CPU_FTRS_PA6T,
507 		.cpu_user_features	= COMMON_USER_PA6T,
508 		.mmu_features		= MMU_FTRS_PA6T,
509 		.icache_bsize		= 64,
510 		.dcache_bsize		= 64,
511 		.num_pmcs		= 6,
512 		.pmc_type		= PPC_PMC_PA6T,
513 		.cpu_setup		= __setup_cpu_pa6t,
514 		.cpu_restore		= __restore_cpu_pa6t,
515 		.platform		= "pa6t",
516 	},
517 	{	/* default match */
518 		.pvr_mask		= 0x00000000,
519 		.pvr_value		= 0x00000000,
520 		.cpu_name		= "POWER5 (compatible)",
521 		.cpu_features		= CPU_FTRS_COMPATIBLE,
522 		.cpu_user_features	= COMMON_USER_PPC64,
523 		.mmu_features		= MMU_FTRS_POWER,
524 		.icache_bsize		= 128,
525 		.dcache_bsize		= 128,
526 		.num_pmcs		= 6,
527 		.pmc_type		= PPC_PMC_IBM,
528 		.platform		= "power5",
529 	}
530 };
531