1 /* SPDX-License-Identifier: GPL-2.0-or-later */
2 /*
3  *  Copyright (C) 2001 Ben. Herrenschmidt (benh@kernel.crashing.org)
4  */
5 
6 #define COMMON_USER	(PPC_FEATURE_32 | PPC_FEATURE_HAS_FPU | \
7 			 PPC_FEATURE_HAS_MMU)
8 
9 static struct cpu_spec cpu_specs[] __initdata = {
10 #ifdef CONFIG_PPC_BOOK3S_603
11 	{	/* 603 */
12 		.pvr_mask		= 0xffff0000,
13 		.pvr_value		= 0x00030000,
14 		.cpu_name		= "603",
15 		.cpu_features		= CPU_FTRS_603,
16 		.cpu_user_features	= COMMON_USER | PPC_FEATURE_PPC_LE,
17 		.mmu_features		= 0,
18 		.icache_bsize		= 32,
19 		.dcache_bsize		= 32,
20 		.cpu_setup		= __setup_cpu_603,
21 		.machine_check		= machine_check_generic,
22 		.platform		= "ppc603",
23 	},
24 	{	/* 603e */
25 		.pvr_mask		= 0xffff0000,
26 		.pvr_value		= 0x00060000,
27 		.cpu_name		= "603e",
28 		.cpu_features		= CPU_FTRS_603,
29 		.cpu_user_features	= COMMON_USER | PPC_FEATURE_PPC_LE,
30 		.mmu_features		= 0,
31 		.icache_bsize		= 32,
32 		.dcache_bsize		= 32,
33 		.cpu_setup		= __setup_cpu_603,
34 		.machine_check		= machine_check_generic,
35 		.platform		= "ppc603",
36 	},
37 	{	/* 603ev */
38 		.pvr_mask		= 0xffff0000,
39 		.pvr_value		= 0x00070000,
40 		.cpu_name		= "603ev",
41 		.cpu_features		= CPU_FTRS_603,
42 		.cpu_user_features	= COMMON_USER | PPC_FEATURE_PPC_LE,
43 		.mmu_features		= 0,
44 		.icache_bsize		= 32,
45 		.dcache_bsize		= 32,
46 		.cpu_setup		= __setup_cpu_603,
47 		.machine_check		= machine_check_generic,
48 		.platform		= "ppc603",
49 	},
50 	{	/* 82xx (8240, 8245, 8260 are all 603e cores) */
51 		.pvr_mask		= 0x7fff0000,
52 		.pvr_value		= 0x00810000,
53 		.cpu_name		= "82xx",
54 		.cpu_features		= CPU_FTRS_82XX,
55 		.cpu_user_features	= COMMON_USER,
56 		.mmu_features		= 0,
57 		.icache_bsize		= 32,
58 		.dcache_bsize		= 32,
59 		.cpu_setup		= __setup_cpu_603,
60 		.machine_check		= machine_check_generic,
61 		.platform		= "ppc603",
62 	},
63 	{	/* All G2_LE (603e core, plus some) have the same pvr */
64 		.pvr_mask		= 0x7fff0000,
65 		.pvr_value		= 0x00820000,
66 		.cpu_name		= "G2_LE",
67 		.cpu_features		= CPU_FTRS_G2_LE,
68 		.cpu_user_features	= COMMON_USER,
69 		.mmu_features		= MMU_FTR_USE_HIGH_BATS,
70 		.icache_bsize		= 32,
71 		.dcache_bsize		= 32,
72 		.cpu_setup		= __setup_cpu_603,
73 		.machine_check		= machine_check_generic,
74 		.platform		= "ppc603",
75 	},
76 #ifdef CONFIG_PPC_83xx
77 	{	/* e300c1 (a 603e core, plus some) on 83xx */
78 		.pvr_mask		= 0x7fff0000,
79 		.pvr_value		= 0x00830000,
80 		.cpu_name		= "e300c1",
81 		.cpu_features		= CPU_FTRS_E300,
82 		.cpu_user_features	= COMMON_USER,
83 		.mmu_features		= MMU_FTR_USE_HIGH_BATS,
84 		.icache_bsize		= 32,
85 		.dcache_bsize		= 32,
86 		.cpu_setup		= __setup_cpu_603,
87 		.machine_check		= machine_check_83xx,
88 		.platform		= "ppc603",
89 	},
90 	{	/* e300c2 (an e300c1 core, plus some, minus FPU) on 83xx */
91 		.pvr_mask		= 0x7fff0000,
92 		.pvr_value		= 0x00840000,
93 		.cpu_name		= "e300c2",
94 		.cpu_features		= CPU_FTRS_E300C2,
95 		.cpu_user_features	= PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU,
96 		.mmu_features		= MMU_FTR_USE_HIGH_BATS | MMU_FTR_NEED_DTLB_SW_LRU,
97 		.icache_bsize		= 32,
98 		.dcache_bsize		= 32,
99 		.cpu_setup		= __setup_cpu_603,
100 		.machine_check		= machine_check_83xx,
101 		.platform		= "ppc603",
102 	},
103 	{	/* e300c3 (e300c1, plus one IU, half cache size) on 83xx */
104 		.pvr_mask		= 0x7fff0000,
105 		.pvr_value		= 0x00850000,
106 		.cpu_name		= "e300c3",
107 		.cpu_features		= CPU_FTRS_E300,
108 		.cpu_user_features	= COMMON_USER,
109 		.mmu_features		= MMU_FTR_USE_HIGH_BATS | MMU_FTR_NEED_DTLB_SW_LRU,
110 		.icache_bsize		= 32,
111 		.dcache_bsize		= 32,
112 		.cpu_setup		= __setup_cpu_603,
113 		.machine_check		= machine_check_83xx,
114 		.num_pmcs		= 4,
115 		.platform		= "ppc603",
116 	},
117 	{	/* e300c4 (e300c1, plus one IU) */
118 		.pvr_mask		= 0x7fff0000,
119 		.pvr_value		= 0x00860000,
120 		.cpu_name		= "e300c4",
121 		.cpu_features		= CPU_FTRS_E300,
122 		.cpu_user_features	= COMMON_USER,
123 		.mmu_features		= MMU_FTR_USE_HIGH_BATS | MMU_FTR_NEED_DTLB_SW_LRU,
124 		.icache_bsize		= 32,
125 		.dcache_bsize		= 32,
126 		.cpu_setup		= __setup_cpu_603,
127 		.machine_check		= machine_check_83xx,
128 		.num_pmcs		= 4,
129 		.platform		= "ppc603",
130 	},
131 #endif
132 #endif /* CONFIG_PPC_BOOK3S_603 */
133 #ifdef CONFIG_PPC_BOOK3S_604
134 	{	/* 604 */
135 		.pvr_mask		= 0xffff0000,
136 		.pvr_value		= 0x00040000,
137 		.cpu_name		= "604",
138 		.cpu_features		= CPU_FTRS_604,
139 		.cpu_user_features	= COMMON_USER | PPC_FEATURE_PPC_LE,
140 		.mmu_features		= MMU_FTR_HPTE_TABLE,
141 		.icache_bsize		= 32,
142 		.dcache_bsize		= 32,
143 		.num_pmcs		= 2,
144 		.cpu_setup		= __setup_cpu_604,
145 		.machine_check		= machine_check_generic,
146 		.platform		= "ppc604",
147 	},
148 	{	/* 604e */
149 		.pvr_mask		= 0xfffff000,
150 		.pvr_value		= 0x00090000,
151 		.cpu_name		= "604e",
152 		.cpu_features		= CPU_FTRS_604,
153 		.cpu_user_features	= COMMON_USER | PPC_FEATURE_PPC_LE,
154 		.mmu_features		= MMU_FTR_HPTE_TABLE,
155 		.icache_bsize		= 32,
156 		.dcache_bsize		= 32,
157 		.num_pmcs		= 4,
158 		.cpu_setup		= __setup_cpu_604,
159 		.machine_check		= machine_check_generic,
160 		.platform		= "ppc604",
161 	},
162 	{	/* 604r */
163 		.pvr_mask		= 0xffff0000,
164 		.pvr_value		= 0x00090000,
165 		.cpu_name		= "604r",
166 		.cpu_features		= CPU_FTRS_604,
167 		.cpu_user_features	= COMMON_USER | PPC_FEATURE_PPC_LE,
168 		.mmu_features		= MMU_FTR_HPTE_TABLE,
169 		.icache_bsize		= 32,
170 		.dcache_bsize		= 32,
171 		.num_pmcs		= 4,
172 		.cpu_setup		= __setup_cpu_604,
173 		.machine_check		= machine_check_generic,
174 		.platform		= "ppc604",
175 	},
176 	{	/* 604ev */
177 		.pvr_mask		= 0xffff0000,
178 		.pvr_value		= 0x000a0000,
179 		.cpu_name		= "604ev",
180 		.cpu_features		= CPU_FTRS_604,
181 		.cpu_user_features	= COMMON_USER | PPC_FEATURE_PPC_LE,
182 		.mmu_features		= MMU_FTR_HPTE_TABLE,
183 		.icache_bsize		= 32,
184 		.dcache_bsize		= 32,
185 		.num_pmcs		= 4,
186 		.cpu_setup		= __setup_cpu_604,
187 		.machine_check		= machine_check_generic,
188 		.platform		= "ppc604",
189 	},
190 	{	/* 740/750 (0x4202, don't support TAU ?) */
191 		.pvr_mask		= 0xffffffff,
192 		.pvr_value		= 0x00084202,
193 		.cpu_name		= "740/750",
194 		.cpu_features		= CPU_FTRS_740_NOTAU,
195 		.cpu_user_features	= COMMON_USER | PPC_FEATURE_PPC_LE,
196 		.mmu_features		= MMU_FTR_HPTE_TABLE,
197 		.icache_bsize		= 32,
198 		.dcache_bsize		= 32,
199 		.num_pmcs		= 4,
200 		.cpu_setup		= __setup_cpu_750,
201 		.machine_check		= machine_check_generic,
202 		.platform		= "ppc750",
203 	},
204 	{	/* 750CX (80100 and 8010x?) */
205 		.pvr_mask		= 0xfffffff0,
206 		.pvr_value		= 0x00080100,
207 		.cpu_name		= "750CX",
208 		.cpu_features		= CPU_FTRS_750,
209 		.cpu_user_features	= COMMON_USER | PPC_FEATURE_PPC_LE,
210 		.mmu_features		= MMU_FTR_HPTE_TABLE,
211 		.icache_bsize		= 32,
212 		.dcache_bsize		= 32,
213 		.num_pmcs		= 4,
214 		.cpu_setup		= __setup_cpu_750cx,
215 		.machine_check		= machine_check_generic,
216 		.platform		= "ppc750",
217 	},
218 	{	/* 750CX (82201 and 82202) */
219 		.pvr_mask		= 0xfffffff0,
220 		.pvr_value		= 0x00082200,
221 		.cpu_name		= "750CX",
222 		.cpu_features		= CPU_FTRS_750,
223 		.cpu_user_features	= COMMON_USER | PPC_FEATURE_PPC_LE,
224 		.mmu_features		= MMU_FTR_HPTE_TABLE,
225 		.icache_bsize		= 32,
226 		.dcache_bsize		= 32,
227 		.num_pmcs		= 4,
228 		.pmc_type		= PPC_PMC_IBM,
229 		.cpu_setup		= __setup_cpu_750cx,
230 		.machine_check		= machine_check_generic,
231 		.platform		= "ppc750",
232 	},
233 	{	/* 750CXe (82214) */
234 		.pvr_mask		= 0xfffffff0,
235 		.pvr_value		= 0x00082210,
236 		.cpu_name		= "750CXe",
237 		.cpu_features		= CPU_FTRS_750,
238 		.cpu_user_features	= COMMON_USER | PPC_FEATURE_PPC_LE,
239 		.mmu_features		= MMU_FTR_HPTE_TABLE,
240 		.icache_bsize		= 32,
241 		.dcache_bsize		= 32,
242 		.num_pmcs		= 4,
243 		.pmc_type		= PPC_PMC_IBM,
244 		.cpu_setup		= __setup_cpu_750cx,
245 		.machine_check		= machine_check_generic,
246 		.platform		= "ppc750",
247 	},
248 	{	/* 750CXe "Gekko" (83214) */
249 		.pvr_mask		= 0xffffffff,
250 		.pvr_value		= 0x00083214,
251 		.cpu_name		= "750CXe",
252 		.cpu_features		= CPU_FTRS_750,
253 		.cpu_user_features	= COMMON_USER | PPC_FEATURE_PPC_LE,
254 		.mmu_features		= MMU_FTR_HPTE_TABLE,
255 		.icache_bsize		= 32,
256 		.dcache_bsize		= 32,
257 		.num_pmcs		= 4,
258 		.pmc_type		= PPC_PMC_IBM,
259 		.cpu_setup		= __setup_cpu_750cx,
260 		.machine_check		= machine_check_generic,
261 		.platform		= "ppc750",
262 	},
263 	{	/* 750CL (and "Broadway") */
264 		.pvr_mask		= 0xfffff0e0,
265 		.pvr_value		= 0x00087000,
266 		.cpu_name		= "750CL",
267 		.cpu_features		= CPU_FTRS_750CL,
268 		.cpu_user_features	= COMMON_USER | PPC_FEATURE_PPC_LE,
269 		.mmu_features		= MMU_FTR_HPTE_TABLE | MMU_FTR_USE_HIGH_BATS,
270 		.icache_bsize		= 32,
271 		.dcache_bsize		= 32,
272 		.num_pmcs		= 4,
273 		.pmc_type		= PPC_PMC_IBM,
274 		.cpu_setup		= __setup_cpu_750,
275 		.machine_check		= machine_check_generic,
276 		.platform		= "ppc750",
277 	},
278 	{	/* 745/755 */
279 		.pvr_mask		= 0xfffff000,
280 		.pvr_value		= 0x00083000,
281 		.cpu_name		= "745/755",
282 		.cpu_features		= CPU_FTRS_750,
283 		.cpu_user_features	= COMMON_USER | PPC_FEATURE_PPC_LE,
284 		.mmu_features		= MMU_FTR_HPTE_TABLE,
285 		.icache_bsize		= 32,
286 		.dcache_bsize		= 32,
287 		.num_pmcs		= 4,
288 		.pmc_type		= PPC_PMC_IBM,
289 		.cpu_setup		= __setup_cpu_750,
290 		.machine_check		= machine_check_generic,
291 		.platform		= "ppc750",
292 	},
293 	{	/* 750FX rev 1.x */
294 		.pvr_mask		= 0xffffff00,
295 		.pvr_value		= 0x70000100,
296 		.cpu_name		= "750FX",
297 		.cpu_features		= CPU_FTRS_750FX1,
298 		.cpu_user_features	= COMMON_USER | PPC_FEATURE_PPC_LE,
299 		.mmu_features		= MMU_FTR_HPTE_TABLE,
300 		.icache_bsize		= 32,
301 		.dcache_bsize		= 32,
302 		.num_pmcs		= 4,
303 		.pmc_type		= PPC_PMC_IBM,
304 		.cpu_setup		= __setup_cpu_750,
305 		.machine_check		= machine_check_generic,
306 		.platform		= "ppc750",
307 	},
308 	{	/* 750FX rev 2.0 must disable HID0[DPM] */
309 		.pvr_mask		= 0xffffffff,
310 		.pvr_value		= 0x70000200,
311 		.cpu_name		= "750FX",
312 		.cpu_features		= CPU_FTRS_750FX2,
313 		.cpu_user_features	= COMMON_USER | PPC_FEATURE_PPC_LE,
314 		.mmu_features		= MMU_FTR_HPTE_TABLE,
315 		.icache_bsize		= 32,
316 		.dcache_bsize		= 32,
317 		.num_pmcs		= 4,
318 		.pmc_type		= PPC_PMC_IBM,
319 		.cpu_setup		= __setup_cpu_750,
320 		.machine_check		= machine_check_generic,
321 		.platform		= "ppc750",
322 	},
323 	{	/* 750FX (All revs except 2.0) */
324 		.pvr_mask		= 0xffff0000,
325 		.pvr_value		= 0x70000000,
326 		.cpu_name		= "750FX",
327 		.cpu_features		= CPU_FTRS_750FX,
328 		.cpu_user_features	= COMMON_USER | PPC_FEATURE_PPC_LE,
329 		.mmu_features		= MMU_FTR_HPTE_TABLE | MMU_FTR_USE_HIGH_BATS,
330 		.icache_bsize		= 32,
331 		.dcache_bsize		= 32,
332 		.num_pmcs		= 4,
333 		.pmc_type		= PPC_PMC_IBM,
334 		.cpu_setup		= __setup_cpu_750fx,
335 		.machine_check		= machine_check_generic,
336 		.platform		= "ppc750",
337 	},
338 	{	/* 750GX */
339 		.pvr_mask		= 0xffff0000,
340 		.pvr_value		= 0x70020000,
341 		.cpu_name		= "750GX",
342 		.cpu_features		= CPU_FTRS_750GX,
343 		.cpu_user_features	= COMMON_USER | PPC_FEATURE_PPC_LE,
344 		.mmu_features		= MMU_FTR_HPTE_TABLE | MMU_FTR_USE_HIGH_BATS,
345 		.icache_bsize		= 32,
346 		.dcache_bsize		= 32,
347 		.num_pmcs		= 4,
348 		.pmc_type		= PPC_PMC_IBM,
349 		.cpu_setup		= __setup_cpu_750fx,
350 		.machine_check		= machine_check_generic,
351 		.platform		= "ppc750",
352 	},
353 	{	/* 740/750 (L2CR bit need fixup for 740) */
354 		.pvr_mask		= 0xffff0000,
355 		.pvr_value		= 0x00080000,
356 		.cpu_name		= "740/750",
357 		.cpu_features		= CPU_FTRS_740,
358 		.cpu_user_features	= COMMON_USER | PPC_FEATURE_PPC_LE,
359 		.mmu_features		= MMU_FTR_HPTE_TABLE,
360 		.icache_bsize		= 32,
361 		.dcache_bsize		= 32,
362 		.num_pmcs		= 4,
363 		.pmc_type		= PPC_PMC_IBM,
364 		.cpu_setup		= __setup_cpu_750,
365 		.machine_check		= machine_check_generic,
366 		.platform		= "ppc750",
367 	},
368 	{	/* 7400 rev 1.1 ? (no TAU) */
369 		.pvr_mask		= 0xffffffff,
370 		.pvr_value		= 0x000c1101,
371 		.cpu_name		= "7400 (1.1)",
372 		.cpu_features		= CPU_FTRS_7400_NOTAU,
373 		.cpu_user_features	= COMMON_USER | PPC_FEATURE_HAS_ALTIVEC_COMP |
374 					  PPC_FEATURE_PPC_LE,
375 		.mmu_features		= MMU_FTR_HPTE_TABLE,
376 		.icache_bsize		= 32,
377 		.dcache_bsize		= 32,
378 		.num_pmcs		= 4,
379 		.pmc_type		= PPC_PMC_G4,
380 		.cpu_setup		= __setup_cpu_7400,
381 		.machine_check		= machine_check_generic,
382 		.platform		= "ppc7400",
383 	},
384 	{	/* 7400 */
385 		.pvr_mask		= 0xffff0000,
386 		.pvr_value		= 0x000c0000,
387 		.cpu_name		= "7400",
388 		.cpu_features		= CPU_FTRS_7400,
389 		.cpu_user_features	= COMMON_USER | PPC_FEATURE_HAS_ALTIVEC_COMP |
390 					  PPC_FEATURE_PPC_LE,
391 		.mmu_features		= MMU_FTR_HPTE_TABLE,
392 		.icache_bsize		= 32,
393 		.dcache_bsize		= 32,
394 		.num_pmcs		= 4,
395 		.pmc_type		= PPC_PMC_G4,
396 		.cpu_setup		= __setup_cpu_7400,
397 		.machine_check		= machine_check_generic,
398 		.platform		= "ppc7400",
399 	},
400 	{	/* 7410 */
401 		.pvr_mask		= 0xffff0000,
402 		.pvr_value		= 0x800c0000,
403 		.cpu_name		= "7410",
404 		.cpu_features		= CPU_FTRS_7400,
405 		.cpu_user_features	= COMMON_USER | PPC_FEATURE_HAS_ALTIVEC_COMP |
406 					  PPC_FEATURE_PPC_LE,
407 		.mmu_features		= MMU_FTR_HPTE_TABLE,
408 		.icache_bsize		= 32,
409 		.dcache_bsize		= 32,
410 		.num_pmcs		= 4,
411 		.pmc_type		= PPC_PMC_G4,
412 		.cpu_setup		= __setup_cpu_7410,
413 		.machine_check		= machine_check_generic,
414 		.platform		= "ppc7400",
415 	},
416 	{	/* 7450 2.0 - no doze/nap */
417 		.pvr_mask		= 0xffffffff,
418 		.pvr_value		= 0x80000200,
419 		.cpu_name		= "7450",
420 		.cpu_features		= CPU_FTRS_7450_20,
421 		.cpu_user_features	= COMMON_USER | PPC_FEATURE_HAS_ALTIVEC_COMP |
422 					  PPC_FEATURE_PPC_LE,
423 		.mmu_features		= MMU_FTR_HPTE_TABLE,
424 		.icache_bsize		= 32,
425 		.dcache_bsize		= 32,
426 		.num_pmcs		= 6,
427 		.pmc_type		= PPC_PMC_G4,
428 		.cpu_setup		= __setup_cpu_745x,
429 		.machine_check		= machine_check_generic,
430 		.platform		= "ppc7450",
431 	},
432 	{	/* 7450 2.1 */
433 		.pvr_mask		= 0xffffffff,
434 		.pvr_value		= 0x80000201,
435 		.cpu_name		= "7450",
436 		.cpu_features		= CPU_FTRS_7450_21,
437 		.cpu_user_features	= COMMON_USER | PPC_FEATURE_HAS_ALTIVEC_COMP |
438 					  PPC_FEATURE_PPC_LE,
439 		.mmu_features		= MMU_FTR_HPTE_TABLE,
440 		.icache_bsize		= 32,
441 		.dcache_bsize		= 32,
442 		.num_pmcs		= 6,
443 		.pmc_type		= PPC_PMC_G4,
444 		.cpu_setup		= __setup_cpu_745x,
445 		.machine_check		= machine_check_generic,
446 		.platform		= "ppc7450",
447 	},
448 	{	/* 7450 2.3 and newer */
449 		.pvr_mask		= 0xffff0000,
450 		.pvr_value		= 0x80000000,
451 		.cpu_name		= "7450",
452 		.cpu_features		= CPU_FTRS_7450_23,
453 		.cpu_user_features	= COMMON_USER | PPC_FEATURE_HAS_ALTIVEC_COMP |
454 					  PPC_FEATURE_PPC_LE,
455 		.mmu_features		= MMU_FTR_HPTE_TABLE,
456 		.icache_bsize		= 32,
457 		.dcache_bsize		= 32,
458 		.num_pmcs		= 6,
459 		.pmc_type		= PPC_PMC_G4,
460 		.cpu_setup		= __setup_cpu_745x,
461 		.machine_check		= machine_check_generic,
462 		.platform		= "ppc7450",
463 	},
464 	{	/* 7455 rev 1.x */
465 		.pvr_mask		= 0xffffff00,
466 		.pvr_value		= 0x80010100,
467 		.cpu_name		= "7455",
468 		.cpu_features		= CPU_FTRS_7455_1,
469 		.cpu_user_features	= COMMON_USER | PPC_FEATURE_HAS_ALTIVEC_COMP |
470 					  PPC_FEATURE_PPC_LE,
471 		.mmu_features		= MMU_FTR_HPTE_TABLE | MMU_FTR_USE_HIGH_BATS,
472 		.icache_bsize		= 32,
473 		.dcache_bsize		= 32,
474 		.num_pmcs		= 6,
475 		.pmc_type		= PPC_PMC_G4,
476 		.cpu_setup		= __setup_cpu_745x,
477 		.machine_check		= machine_check_generic,
478 		.platform		= "ppc7450",
479 	},
480 	{	/* 7455 rev 2.0 */
481 		.pvr_mask		= 0xffffffff,
482 		.pvr_value		= 0x80010200,
483 		.cpu_name		= "7455",
484 		.cpu_features		= CPU_FTRS_7455_20,
485 		.cpu_user_features	= COMMON_USER | PPC_FEATURE_HAS_ALTIVEC_COMP |
486 					  PPC_FEATURE_PPC_LE,
487 		.mmu_features		= MMU_FTR_HPTE_TABLE | MMU_FTR_USE_HIGH_BATS,
488 		.icache_bsize		= 32,
489 		.dcache_bsize		= 32,
490 		.num_pmcs		= 6,
491 		.pmc_type		= PPC_PMC_G4,
492 		.cpu_setup		= __setup_cpu_745x,
493 		.machine_check		= machine_check_generic,
494 		.platform		= "ppc7450",
495 	},
496 	{	/* 7455 others */
497 		.pvr_mask		= 0xffff0000,
498 		.pvr_value		= 0x80010000,
499 		.cpu_name		= "7455",
500 		.cpu_features		= CPU_FTRS_7455,
501 		.cpu_user_features	= COMMON_USER | PPC_FEATURE_HAS_ALTIVEC_COMP |
502 					  PPC_FEATURE_PPC_LE,
503 		.mmu_features		= MMU_FTR_HPTE_TABLE | MMU_FTR_USE_HIGH_BATS,
504 		.icache_bsize		= 32,
505 		.dcache_bsize		= 32,
506 		.num_pmcs		= 6,
507 		.pmc_type		= PPC_PMC_G4,
508 		.cpu_setup		= __setup_cpu_745x,
509 		.machine_check		= machine_check_generic,
510 		.platform		= "ppc7450",
511 	},
512 	{	/* 7447/7457 Rev 1.0 */
513 		.pvr_mask		= 0xffffffff,
514 		.pvr_value		= 0x80020100,
515 		.cpu_name		= "7447/7457",
516 		.cpu_features		= CPU_FTRS_7447_10,
517 		.cpu_user_features	= COMMON_USER | PPC_FEATURE_HAS_ALTIVEC_COMP |
518 					  PPC_FEATURE_PPC_LE,
519 		.mmu_features		= MMU_FTR_HPTE_TABLE | MMU_FTR_USE_HIGH_BATS,
520 		.icache_bsize		= 32,
521 		.dcache_bsize		= 32,
522 		.num_pmcs		= 6,
523 		.pmc_type		= PPC_PMC_G4,
524 		.cpu_setup		= __setup_cpu_745x,
525 		.machine_check		= machine_check_generic,
526 		.platform		= "ppc7450",
527 	},
528 	{	/* 7447/7457 Rev 1.1 */
529 		.pvr_mask		= 0xffffffff,
530 		.pvr_value		= 0x80020101,
531 		.cpu_name		= "7447/7457",
532 		.cpu_features		= CPU_FTRS_7447_10,
533 		.cpu_user_features	= COMMON_USER | PPC_FEATURE_HAS_ALTIVEC_COMP |
534 					  PPC_FEATURE_PPC_LE,
535 		.mmu_features		= MMU_FTR_HPTE_TABLE | MMU_FTR_USE_HIGH_BATS,
536 		.icache_bsize		= 32,
537 		.dcache_bsize		= 32,
538 		.num_pmcs		= 6,
539 		.pmc_type		= PPC_PMC_G4,
540 		.cpu_setup		= __setup_cpu_745x,
541 		.machine_check		= machine_check_generic,
542 		.platform		= "ppc7450",
543 	},
544 	{	/* 7447/7457 Rev 1.2 and later */
545 		.pvr_mask		= 0xffff0000,
546 		.pvr_value		= 0x80020000,
547 		.cpu_name		= "7447/7457",
548 		.cpu_features		= CPU_FTRS_7447,
549 		.cpu_user_features	= COMMON_USER | PPC_FEATURE_HAS_ALTIVEC_COMP |
550 					  PPC_FEATURE_PPC_LE,
551 		.mmu_features		= MMU_FTR_HPTE_TABLE | MMU_FTR_USE_HIGH_BATS,
552 		.icache_bsize		= 32,
553 		.dcache_bsize		= 32,
554 		.num_pmcs		= 6,
555 		.pmc_type		= PPC_PMC_G4,
556 		.cpu_setup		= __setup_cpu_745x,
557 		.machine_check		= machine_check_generic,
558 		.platform		= "ppc7450",
559 	},
560 	{	/* 7447A */
561 		.pvr_mask		= 0xffff0000,
562 		.pvr_value		= 0x80030000,
563 		.cpu_name		= "7447A",
564 		.cpu_features		= CPU_FTRS_7447A,
565 		.cpu_user_features	= COMMON_USER | PPC_FEATURE_HAS_ALTIVEC_COMP |
566 					  PPC_FEATURE_PPC_LE,
567 		.mmu_features		= MMU_FTR_HPTE_TABLE | MMU_FTR_USE_HIGH_BATS,
568 		.icache_bsize		= 32,
569 		.dcache_bsize		= 32,
570 		.num_pmcs		= 6,
571 		.pmc_type		= PPC_PMC_G4,
572 		.cpu_setup		= __setup_cpu_745x,
573 		.machine_check		= machine_check_generic,
574 		.platform		= "ppc7450",
575 	},
576 	{	/* 7448 */
577 		.pvr_mask		= 0xffff0000,
578 		.pvr_value		= 0x80040000,
579 		.cpu_name		= "7448",
580 		.cpu_features		= CPU_FTRS_7448,
581 		.cpu_user_features	= COMMON_USER | PPC_FEATURE_HAS_ALTIVEC_COMP |
582 					  PPC_FEATURE_PPC_LE,
583 		.mmu_features		= MMU_FTR_HPTE_TABLE | MMU_FTR_USE_HIGH_BATS,
584 		.icache_bsize		= 32,
585 		.dcache_bsize		= 32,
586 		.num_pmcs		= 6,
587 		.pmc_type		= PPC_PMC_G4,
588 		.cpu_setup		= __setup_cpu_745x,
589 		.machine_check		= machine_check_generic,
590 		.platform		= "ppc7450",
591 	},
592 	{	/* default match, we assume split I/D cache & TB (non-601)... */
593 		.pvr_mask		= 0x00000000,
594 		.pvr_value		= 0x00000000,
595 		.cpu_name		= "(generic PPC)",
596 		.cpu_features		= CPU_FTRS_CLASSIC32,
597 		.cpu_user_features	= COMMON_USER,
598 		.mmu_features		= MMU_FTR_HPTE_TABLE,
599 		.icache_bsize		= 32,
600 		.dcache_bsize		= 32,
601 		.machine_check		= machine_check_generic,
602 		.platform		= "ppc603",
603 	},
604 #endif /* CONFIG_PPC_BOOK3S_604 */
605 };
606