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
9static 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