xref: /linux/arch/powerpc/kernel/cputable.c (revision f24e9f586b377749dff37554696cf3a105540c94)
1 /*
2  *  Copyright (C) 2001 Ben. Herrenschmidt (benh@kernel.crashing.org)
3  *
4  *  Modifications for ppc64:
5  *      Copyright (C) 2003 Dave Engebretsen <engebret@us.ibm.com>
6  *
7  *  This program is free software; you can redistribute it and/or
8  *  modify it under the terms of the GNU General Public License
9  *  as published by the Free Software Foundation; either version
10  *  2 of the License, or (at your option) any later version.
11  */
12 
13 #include <linux/string.h>
14 #include <linux/sched.h>
15 #include <linux/threads.h>
16 #include <linux/init.h>
17 #include <linux/module.h>
18 
19 #include <asm/oprofile_impl.h>
20 #include <asm/cputable.h>
21 
22 struct cpu_spec* cur_cpu_spec = NULL;
23 EXPORT_SYMBOL(cur_cpu_spec);
24 
25 /* NOTE:
26  * Unlike ppc32, ppc64 will only call this once for the boot CPU, it's
27  * the responsibility of the appropriate CPU save/restore functions to
28  * eventually copy these settings over. Those save/restore aren't yet
29  * part of the cputable though. That has to be fixed for both ppc32
30  * and ppc64
31  */
32 #ifdef CONFIG_PPC32
33 extern void __setup_cpu_603(unsigned long offset, struct cpu_spec* spec);
34 extern void __setup_cpu_604(unsigned long offset, struct cpu_spec* spec);
35 extern void __setup_cpu_750(unsigned long offset, struct cpu_spec* spec);
36 extern void __setup_cpu_750cx(unsigned long offset, struct cpu_spec* spec);
37 extern void __setup_cpu_750fx(unsigned long offset, struct cpu_spec* spec);
38 extern void __setup_cpu_7400(unsigned long offset, struct cpu_spec* spec);
39 extern void __setup_cpu_7410(unsigned long offset, struct cpu_spec* spec);
40 extern void __setup_cpu_745x(unsigned long offset, struct cpu_spec* spec);
41 #endif /* CONFIG_PPC32 */
42 #ifdef CONFIG_PPC64
43 extern void __setup_cpu_ppc970(unsigned long offset, struct cpu_spec* spec);
44 extern void __restore_cpu_ppc970(void);
45 #endif /* CONFIG_PPC64 */
46 
47 /* This table only contains "desktop" CPUs, it need to be filled with embedded
48  * ones as well...
49  */
50 #define COMMON_USER		(PPC_FEATURE_32 | PPC_FEATURE_HAS_FPU | \
51 				 PPC_FEATURE_HAS_MMU)
52 #define COMMON_USER_PPC64	(COMMON_USER | PPC_FEATURE_64)
53 #define COMMON_USER_POWER4	(COMMON_USER_PPC64 | PPC_FEATURE_POWER4)
54 #define COMMON_USER_POWER5	(COMMON_USER_PPC64 | PPC_FEATURE_POWER5 |\
55 				 PPC_FEATURE_SMT | PPC_FEATURE_ICACHE_SNOOP)
56 #define COMMON_USER_POWER5_PLUS	(COMMON_USER_PPC64 | PPC_FEATURE_POWER5_PLUS|\
57 				 PPC_FEATURE_SMT | PPC_FEATURE_ICACHE_SNOOP)
58 #define COMMON_USER_POWER6	(COMMON_USER_PPC64 | PPC_FEATURE_ARCH_2_05 |\
59 				 PPC_FEATURE_SMT | PPC_FEATURE_ICACHE_SNOOP | \
60 				 PPC_FEATURE_TRUE_LE)
61 #define COMMON_USER_PA6T	(COMMON_USER_PPC64 | PPC_FEATURE_PA6T |\
62 				 PPC_FEATURE_TRUE_LE | \
63 				 PPC_FEATURE_HAS_ALTIVEC_COMP)
64 #define COMMON_USER_BOOKE	(PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU | \
65 				 PPC_FEATURE_BOOKE)
66 
67 /* We only set the spe features if the kernel was compiled with
68  * spe support
69  */
70 #ifdef CONFIG_SPE
71 #define PPC_FEATURE_SPE_COMP	PPC_FEATURE_HAS_SPE
72 #else
73 #define PPC_FEATURE_SPE_COMP	0
74 #endif
75 
76 struct cpu_spec	cpu_specs[] = {
77 #ifdef CONFIG_PPC64
78 	{	/* Power3 */
79 		.pvr_mask		= 0xffff0000,
80 		.pvr_value		= 0x00400000,
81 		.cpu_name		= "POWER3 (630)",
82 		.cpu_features		= CPU_FTRS_POWER3,
83 		.cpu_user_features	= COMMON_USER_PPC64|PPC_FEATURE_PPC_LE,
84 		.icache_bsize		= 128,
85 		.dcache_bsize		= 128,
86 		.num_pmcs		= 8,
87 		.oprofile_cpu_type	= "ppc64/power3",
88 		.oprofile_type		= PPC_OPROFILE_RS64,
89 		.platform		= "power3",
90 	},
91 	{	/* Power3+ */
92 		.pvr_mask		= 0xffff0000,
93 		.pvr_value		= 0x00410000,
94 		.cpu_name		= "POWER3 (630+)",
95 		.cpu_features		= CPU_FTRS_POWER3,
96 		.cpu_user_features	= COMMON_USER_PPC64|PPC_FEATURE_PPC_LE,
97 		.icache_bsize		= 128,
98 		.dcache_bsize		= 128,
99 		.num_pmcs		= 8,
100 		.oprofile_cpu_type	= "ppc64/power3",
101 		.oprofile_type		= PPC_OPROFILE_RS64,
102 		.platform		= "power3",
103 	},
104 	{	/* Northstar */
105 		.pvr_mask		= 0xffff0000,
106 		.pvr_value		= 0x00330000,
107 		.cpu_name		= "RS64-II (northstar)",
108 		.cpu_features		= CPU_FTRS_RS64,
109 		.cpu_user_features	= COMMON_USER_PPC64,
110 		.icache_bsize		= 128,
111 		.dcache_bsize		= 128,
112 		.num_pmcs		= 8,
113 		.oprofile_cpu_type	= "ppc64/rs64",
114 		.oprofile_type		= PPC_OPROFILE_RS64,
115 		.platform		= "rs64",
116 	},
117 	{	/* Pulsar */
118 		.pvr_mask		= 0xffff0000,
119 		.pvr_value		= 0x00340000,
120 		.cpu_name		= "RS64-III (pulsar)",
121 		.cpu_features		= CPU_FTRS_RS64,
122 		.cpu_user_features	= COMMON_USER_PPC64,
123 		.icache_bsize		= 128,
124 		.dcache_bsize		= 128,
125 		.num_pmcs		= 8,
126 		.oprofile_cpu_type	= "ppc64/rs64",
127 		.oprofile_type		= PPC_OPROFILE_RS64,
128 		.platform		= "rs64",
129 	},
130 	{	/* I-star */
131 		.pvr_mask		= 0xffff0000,
132 		.pvr_value		= 0x00360000,
133 		.cpu_name		= "RS64-III (icestar)",
134 		.cpu_features		= CPU_FTRS_RS64,
135 		.cpu_user_features	= COMMON_USER_PPC64,
136 		.icache_bsize		= 128,
137 		.dcache_bsize		= 128,
138 		.num_pmcs		= 8,
139 		.oprofile_cpu_type	= "ppc64/rs64",
140 		.oprofile_type		= PPC_OPROFILE_RS64,
141 		.platform		= "rs64",
142 	},
143 	{	/* S-star */
144 		.pvr_mask		= 0xffff0000,
145 		.pvr_value		= 0x00370000,
146 		.cpu_name		= "RS64-IV (sstar)",
147 		.cpu_features		= CPU_FTRS_RS64,
148 		.cpu_user_features	= COMMON_USER_PPC64,
149 		.icache_bsize		= 128,
150 		.dcache_bsize		= 128,
151 		.num_pmcs		= 8,
152 		.oprofile_cpu_type	= "ppc64/rs64",
153 		.oprofile_type		= PPC_OPROFILE_RS64,
154 		.platform		= "rs64",
155 	},
156 	{	/* Power4 */
157 		.pvr_mask		= 0xffff0000,
158 		.pvr_value		= 0x00350000,
159 		.cpu_name		= "POWER4 (gp)",
160 		.cpu_features		= CPU_FTRS_POWER4,
161 		.cpu_user_features	= COMMON_USER_POWER4,
162 		.icache_bsize		= 128,
163 		.dcache_bsize		= 128,
164 		.num_pmcs		= 8,
165 		.oprofile_cpu_type	= "ppc64/power4",
166 		.oprofile_type		= PPC_OPROFILE_POWER4,
167 		.platform		= "power4",
168 	},
169 	{	/* Power4+ */
170 		.pvr_mask		= 0xffff0000,
171 		.pvr_value		= 0x00380000,
172 		.cpu_name		= "POWER4+ (gq)",
173 		.cpu_features		= CPU_FTRS_POWER4,
174 		.cpu_user_features	= COMMON_USER_POWER4,
175 		.icache_bsize		= 128,
176 		.dcache_bsize		= 128,
177 		.num_pmcs		= 8,
178 		.oprofile_cpu_type	= "ppc64/power4",
179 		.oprofile_type		= PPC_OPROFILE_POWER4,
180 		.platform		= "power4",
181 	},
182 	{	/* PPC970 */
183 		.pvr_mask		= 0xffff0000,
184 		.pvr_value		= 0x00390000,
185 		.cpu_name		= "PPC970",
186 		.cpu_features		= CPU_FTRS_PPC970,
187 		.cpu_user_features	= COMMON_USER_POWER4 |
188 			PPC_FEATURE_HAS_ALTIVEC_COMP,
189 		.icache_bsize		= 128,
190 		.dcache_bsize		= 128,
191 		.num_pmcs		= 8,
192 		.cpu_setup		= __setup_cpu_ppc970,
193 		.cpu_restore		= __restore_cpu_ppc970,
194 		.oprofile_cpu_type	= "ppc64/970",
195 		.oprofile_type		= PPC_OPROFILE_POWER4,
196 		.platform		= "ppc970",
197 	},
198 	{	/* PPC970FX */
199 		.pvr_mask		= 0xffff0000,
200 		.pvr_value		= 0x003c0000,
201 		.cpu_name		= "PPC970FX",
202 		.cpu_features		= CPU_FTRS_PPC970,
203 		.cpu_user_features	= COMMON_USER_POWER4 |
204 			PPC_FEATURE_HAS_ALTIVEC_COMP,
205 		.icache_bsize		= 128,
206 		.dcache_bsize		= 128,
207 		.num_pmcs		= 8,
208 		.cpu_setup		= __setup_cpu_ppc970,
209 		.cpu_restore		= __restore_cpu_ppc970,
210 		.oprofile_cpu_type	= "ppc64/970",
211 		.oprofile_type		= PPC_OPROFILE_POWER4,
212 		.platform		= "ppc970",
213 	},
214 	{	/* PPC970MP */
215 		.pvr_mask		= 0xffff0000,
216 		.pvr_value		= 0x00440000,
217 		.cpu_name		= "PPC970MP",
218 		.cpu_features		= CPU_FTRS_PPC970,
219 		.cpu_user_features	= COMMON_USER_POWER4 |
220 			PPC_FEATURE_HAS_ALTIVEC_COMP,
221 		.icache_bsize		= 128,
222 		.dcache_bsize		= 128,
223 		.num_pmcs		= 8,
224 		.cpu_setup		= __setup_cpu_ppc970,
225 		.cpu_restore		= __restore_cpu_ppc970,
226 		.oprofile_cpu_type	= "ppc64/970",
227 		.oprofile_type		= PPC_OPROFILE_POWER4,
228 		.platform		= "ppc970",
229 	},
230 	{	/* Power5 GR */
231 		.pvr_mask		= 0xffff0000,
232 		.pvr_value		= 0x003a0000,
233 		.cpu_name		= "POWER5 (gr)",
234 		.cpu_features		= CPU_FTRS_POWER5,
235 		.cpu_user_features	= COMMON_USER_POWER5,
236 		.icache_bsize		= 128,
237 		.dcache_bsize		= 128,
238 		.num_pmcs		= 6,
239 		.oprofile_cpu_type	= "ppc64/power5",
240 		.oprofile_type		= PPC_OPROFILE_POWER4,
241 		/* SIHV / SIPR bits are implemented on POWER4+ (GQ)
242 		 * and above but only works on POWER5 and above
243 		 */
244 		.oprofile_mmcra_sihv	= MMCRA_SIHV,
245 		.oprofile_mmcra_sipr	= MMCRA_SIPR,
246 		.platform		= "power5",
247 	},
248 	{	/* Power5 GS */
249 		.pvr_mask		= 0xffff0000,
250 		.pvr_value		= 0x003b0000,
251 		.cpu_name		= "POWER5+ (gs)",
252 		.cpu_features		= CPU_FTRS_POWER5,
253 		.cpu_user_features	= COMMON_USER_POWER5_PLUS,
254 		.icache_bsize		= 128,
255 		.dcache_bsize		= 128,
256 		.num_pmcs		= 6,
257 		.oprofile_cpu_type	= "ppc64/power5+",
258 		.oprofile_type		= PPC_OPROFILE_POWER4,
259 		.oprofile_mmcra_sihv	= MMCRA_SIHV,
260 		.oprofile_mmcra_sipr	= MMCRA_SIPR,
261 		.platform		= "power5+",
262 	},
263 	{	/* Power6 */
264 		.pvr_mask		= 0xffff0000,
265 		.pvr_value		= 0x003e0000,
266 		.cpu_name		= "POWER6",
267 		.cpu_features		= CPU_FTRS_POWER6,
268 		.cpu_user_features	= COMMON_USER_POWER6,
269 		.icache_bsize		= 128,
270 		.dcache_bsize		= 128,
271 		.num_pmcs		= 8,
272 		.oprofile_cpu_type	= "ppc64/power6",
273 		.oprofile_type		= PPC_OPROFILE_POWER4,
274  		.oprofile_mmcra_sihv	= POWER6_MMCRA_SIHV,
275  		.oprofile_mmcra_sipr	= POWER6_MMCRA_SIPR,
276  		.oprofile_mmcra_clear	= POWER6_MMCRA_THRM |
277  			POWER6_MMCRA_OTHER,
278 		.platform		= "power6",
279 	},
280 	{	/* Cell Broadband Engine */
281 		.pvr_mask		= 0xffff0000,
282 		.pvr_value		= 0x00700000,
283 		.cpu_name		= "Cell Broadband Engine",
284 		.cpu_features		= CPU_FTRS_CELL,
285 		.cpu_user_features	= COMMON_USER_PPC64 |
286 			PPC_FEATURE_CELL | PPC_FEATURE_HAS_ALTIVEC_COMP |
287 			PPC_FEATURE_SMT,
288 		.icache_bsize		= 128,
289 		.dcache_bsize		= 128,
290 		.platform		= "ppc-cell-be",
291 	},
292 	{	/* PA Semi PA6T */
293 		.pvr_mask		= 0x7fff0000,
294 		.pvr_value		= 0x00900000,
295 		.cpu_name		= "PA6T",
296 		.cpu_features		= CPU_FTRS_PA6T,
297 		.cpu_user_features	= COMMON_USER_PA6T,
298 		.icache_bsize		= 64,
299 		.dcache_bsize		= 64,
300 		.num_pmcs		= 6,
301 		.platform		= "pa6t",
302 	},
303 	{	/* default match */
304 		.pvr_mask		= 0x00000000,
305 		.pvr_value		= 0x00000000,
306 		.cpu_name		= "POWER4 (compatible)",
307 		.cpu_features		= CPU_FTRS_COMPATIBLE,
308 		.cpu_user_features	= COMMON_USER_PPC64,
309 		.icache_bsize		= 128,
310 		.dcache_bsize		= 128,
311 		.num_pmcs		= 6,
312 		.platform		= "power4",
313 	}
314 #endif	/* CONFIG_PPC64 */
315 #ifdef CONFIG_PPC32
316 #if CLASSIC_PPC
317 	{	/* 601 */
318 		.pvr_mask		= 0xffff0000,
319 		.pvr_value		= 0x00010000,
320 		.cpu_name		= "601",
321 		.cpu_features		= CPU_FTRS_PPC601,
322 		.cpu_user_features	= COMMON_USER | PPC_FEATURE_601_INSTR |
323 			PPC_FEATURE_UNIFIED_CACHE | PPC_FEATURE_NO_TB,
324 		.icache_bsize		= 32,
325 		.dcache_bsize		= 32,
326 		.platform		= "ppc601",
327 	},
328 	{	/* 603 */
329 		.pvr_mask		= 0xffff0000,
330 		.pvr_value		= 0x00030000,
331 		.cpu_name		= "603",
332 		.cpu_features		= CPU_FTRS_603,
333 		.cpu_user_features	= COMMON_USER | PPC_FEATURE_PPC_LE,
334 		.icache_bsize		= 32,
335 		.dcache_bsize		= 32,
336 		.cpu_setup		= __setup_cpu_603,
337 		.platform		= "ppc603",
338 	},
339 	{	/* 603e */
340 		.pvr_mask		= 0xffff0000,
341 		.pvr_value		= 0x00060000,
342 		.cpu_name		= "603e",
343 		.cpu_features		= CPU_FTRS_603,
344 		.cpu_user_features	= COMMON_USER | PPC_FEATURE_PPC_LE,
345 		.icache_bsize		= 32,
346 		.dcache_bsize		= 32,
347 		.cpu_setup		= __setup_cpu_603,
348 		.platform		= "ppc603",
349 	},
350 	{	/* 603ev */
351 		.pvr_mask		= 0xffff0000,
352 		.pvr_value		= 0x00070000,
353 		.cpu_name		= "603ev",
354 		.cpu_features		= CPU_FTRS_603,
355 		.cpu_user_features	= COMMON_USER | PPC_FEATURE_PPC_LE,
356 		.icache_bsize		= 32,
357 		.dcache_bsize		= 32,
358 		.cpu_setup		= __setup_cpu_603,
359 		.platform		= "ppc603",
360 	},
361 	{	/* 604 */
362 		.pvr_mask		= 0xffff0000,
363 		.pvr_value		= 0x00040000,
364 		.cpu_name		= "604",
365 		.cpu_features		= CPU_FTRS_604,
366 		.cpu_user_features	= COMMON_USER | PPC_FEATURE_PPC_LE,
367 		.icache_bsize		= 32,
368 		.dcache_bsize		= 32,
369 		.num_pmcs		= 2,
370 		.cpu_setup		= __setup_cpu_604,
371 		.platform		= "ppc604",
372 	},
373 	{	/* 604e */
374 		.pvr_mask		= 0xfffff000,
375 		.pvr_value		= 0x00090000,
376 		.cpu_name		= "604e",
377 		.cpu_features		= CPU_FTRS_604,
378 		.cpu_user_features	= COMMON_USER | PPC_FEATURE_PPC_LE,
379 		.icache_bsize		= 32,
380 		.dcache_bsize		= 32,
381 		.num_pmcs		= 4,
382 		.cpu_setup		= __setup_cpu_604,
383 		.platform		= "ppc604",
384 	},
385 	{	/* 604r */
386 		.pvr_mask		= 0xffff0000,
387 		.pvr_value		= 0x00090000,
388 		.cpu_name		= "604r",
389 		.cpu_features		= CPU_FTRS_604,
390 		.cpu_user_features	= COMMON_USER | PPC_FEATURE_PPC_LE,
391 		.icache_bsize		= 32,
392 		.dcache_bsize		= 32,
393 		.num_pmcs		= 4,
394 		.cpu_setup		= __setup_cpu_604,
395 		.platform		= "ppc604",
396 	},
397 	{	/* 604ev */
398 		.pvr_mask		= 0xffff0000,
399 		.pvr_value		= 0x000a0000,
400 		.cpu_name		= "604ev",
401 		.cpu_features		= CPU_FTRS_604,
402 		.cpu_user_features	= COMMON_USER | PPC_FEATURE_PPC_LE,
403 		.icache_bsize		= 32,
404 		.dcache_bsize		= 32,
405 		.num_pmcs		= 4,
406 		.cpu_setup		= __setup_cpu_604,
407 		.platform		= "ppc604",
408 	},
409 	{	/* 740/750 (0x4202, don't support TAU ?) */
410 		.pvr_mask		= 0xffffffff,
411 		.pvr_value		= 0x00084202,
412 		.cpu_name		= "740/750",
413 		.cpu_features		= CPU_FTRS_740_NOTAU,
414 		.cpu_user_features	= COMMON_USER | PPC_FEATURE_PPC_LE,
415 		.icache_bsize		= 32,
416 		.dcache_bsize		= 32,
417 		.num_pmcs		= 4,
418 		.cpu_setup		= __setup_cpu_750,
419 		.platform		= "ppc750",
420 	},
421 	{	/* 750CX (80100 and 8010x?) */
422 		.pvr_mask		= 0xfffffff0,
423 		.pvr_value		= 0x00080100,
424 		.cpu_name		= "750CX",
425 		.cpu_features		= CPU_FTRS_750,
426 		.cpu_user_features	= COMMON_USER | PPC_FEATURE_PPC_LE,
427 		.icache_bsize		= 32,
428 		.dcache_bsize		= 32,
429 		.num_pmcs		= 4,
430 		.cpu_setup		= __setup_cpu_750cx,
431 		.platform		= "ppc750",
432 	},
433 	{	/* 750CX (82201 and 82202) */
434 		.pvr_mask		= 0xfffffff0,
435 		.pvr_value		= 0x00082200,
436 		.cpu_name		= "750CX",
437 		.cpu_features		= CPU_FTRS_750,
438 		.cpu_user_features	= COMMON_USER | PPC_FEATURE_PPC_LE,
439 		.icache_bsize		= 32,
440 		.dcache_bsize		= 32,
441 		.num_pmcs		= 4,
442 		.cpu_setup		= __setup_cpu_750cx,
443 		.platform		= "ppc750",
444 	},
445 	{	/* 750CXe (82214) */
446 		.pvr_mask		= 0xfffffff0,
447 		.pvr_value		= 0x00082210,
448 		.cpu_name		= "750CXe",
449 		.cpu_features		= CPU_FTRS_750,
450 		.cpu_user_features	= COMMON_USER | PPC_FEATURE_PPC_LE,
451 		.icache_bsize		= 32,
452 		.dcache_bsize		= 32,
453 		.num_pmcs		= 4,
454 		.cpu_setup		= __setup_cpu_750cx,
455 		.platform		= "ppc750",
456 	},
457 	{	/* 750CXe "Gekko" (83214) */
458 		.pvr_mask		= 0xffffffff,
459 		.pvr_value		= 0x00083214,
460 		.cpu_name		= "750CXe",
461 		.cpu_features		= CPU_FTRS_750,
462 		.cpu_user_features	= COMMON_USER | PPC_FEATURE_PPC_LE,
463 		.icache_bsize		= 32,
464 		.dcache_bsize		= 32,
465 		.num_pmcs		= 4,
466 		.cpu_setup		= __setup_cpu_750cx,
467 		.platform		= "ppc750",
468 	},
469 	{	/* 745/755 */
470 		.pvr_mask		= 0xfffff000,
471 		.pvr_value		= 0x00083000,
472 		.cpu_name		= "745/755",
473 		.cpu_features		= CPU_FTRS_750,
474 		.cpu_user_features	= COMMON_USER | PPC_FEATURE_PPC_LE,
475 		.icache_bsize		= 32,
476 		.dcache_bsize		= 32,
477 		.num_pmcs		= 4,
478 		.cpu_setup		= __setup_cpu_750,
479 		.platform		= "ppc750",
480 	},
481 	{	/* 750FX rev 1.x */
482 		.pvr_mask		= 0xffffff00,
483 		.pvr_value		= 0x70000100,
484 		.cpu_name		= "750FX",
485 		.cpu_features		= CPU_FTRS_750FX1,
486 		.cpu_user_features	= COMMON_USER | PPC_FEATURE_PPC_LE,
487 		.icache_bsize		= 32,
488 		.dcache_bsize		= 32,
489 		.num_pmcs		= 4,
490 		.cpu_setup		= __setup_cpu_750,
491 		.platform		= "ppc750",
492 	},
493 	{	/* 750FX rev 2.0 must disable HID0[DPM] */
494 		.pvr_mask		= 0xffffffff,
495 		.pvr_value		= 0x70000200,
496 		.cpu_name		= "750FX",
497 		.cpu_features		= CPU_FTRS_750FX2,
498 		.cpu_user_features	= COMMON_USER | PPC_FEATURE_PPC_LE,
499 		.icache_bsize		= 32,
500 		.dcache_bsize		= 32,
501 		.num_pmcs		= 4,
502 		.cpu_setup		= __setup_cpu_750,
503 		.platform		= "ppc750",
504 	},
505 	{	/* 750FX (All revs except 2.0) */
506 		.pvr_mask		= 0xffff0000,
507 		.pvr_value		= 0x70000000,
508 		.cpu_name		= "750FX",
509 		.cpu_features		= CPU_FTRS_750FX,
510 		.cpu_user_features	= COMMON_USER | PPC_FEATURE_PPC_LE,
511 		.icache_bsize		= 32,
512 		.dcache_bsize		= 32,
513 		.num_pmcs		= 4,
514 		.cpu_setup		= __setup_cpu_750fx,
515 		.platform		= "ppc750",
516 	},
517 	{	/* 750GX */
518 		.pvr_mask		= 0xffff0000,
519 		.pvr_value		= 0x70020000,
520 		.cpu_name		= "750GX",
521 		.cpu_features		= CPU_FTRS_750GX,
522 		.cpu_user_features	= COMMON_USER | PPC_FEATURE_PPC_LE,
523 		.icache_bsize		= 32,
524 		.dcache_bsize		= 32,
525 		.num_pmcs		= 4,
526 		.cpu_setup		= __setup_cpu_750fx,
527 		.platform		= "ppc750",
528 	},
529 	{	/* 740/750 (L2CR bit need fixup for 740) */
530 		.pvr_mask		= 0xffff0000,
531 		.pvr_value		= 0x00080000,
532 		.cpu_name		= "740/750",
533 		.cpu_features		= CPU_FTRS_740,
534 		.cpu_user_features	= COMMON_USER | PPC_FEATURE_PPC_LE,
535 		.icache_bsize		= 32,
536 		.dcache_bsize		= 32,
537 		.num_pmcs		= 4,
538 		.cpu_setup		= __setup_cpu_750,
539 		.platform		= "ppc750",
540 	},
541 	{	/* 7400 rev 1.1 ? (no TAU) */
542 		.pvr_mask		= 0xffffffff,
543 		.pvr_value		= 0x000c1101,
544 		.cpu_name		= "7400 (1.1)",
545 		.cpu_features		= CPU_FTRS_7400_NOTAU,
546 		.cpu_user_features	= COMMON_USER |
547 			PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_PPC_LE,
548 		.icache_bsize		= 32,
549 		.dcache_bsize		= 32,
550 		.num_pmcs		= 4,
551 		.cpu_setup		= __setup_cpu_7400,
552 		.platform		= "ppc7400",
553 	},
554 	{	/* 7400 */
555 		.pvr_mask		= 0xffff0000,
556 		.pvr_value		= 0x000c0000,
557 		.cpu_name		= "7400",
558 		.cpu_features		= CPU_FTRS_7400,
559 		.cpu_user_features	= COMMON_USER |
560 			PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_PPC_LE,
561 		.icache_bsize		= 32,
562 		.dcache_bsize		= 32,
563 		.num_pmcs		= 4,
564 		.cpu_setup		= __setup_cpu_7400,
565 		.platform		= "ppc7400",
566 	},
567 	{	/* 7410 */
568 		.pvr_mask		= 0xffff0000,
569 		.pvr_value		= 0x800c0000,
570 		.cpu_name		= "7410",
571 		.cpu_features		= CPU_FTRS_7400,
572 		.cpu_user_features	= COMMON_USER |
573 			PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_PPC_LE,
574 		.icache_bsize		= 32,
575 		.dcache_bsize		= 32,
576 		.num_pmcs		= 4,
577 		.cpu_setup		= __setup_cpu_7410,
578 		.platform		= "ppc7400",
579 	},
580 	{	/* 7450 2.0 - no doze/nap */
581 		.pvr_mask		= 0xffffffff,
582 		.pvr_value		= 0x80000200,
583 		.cpu_name		= "7450",
584 		.cpu_features		= CPU_FTRS_7450_20,
585 		.cpu_user_features	= COMMON_USER |
586 			PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_PPC_LE,
587 		.icache_bsize		= 32,
588 		.dcache_bsize		= 32,
589 		.num_pmcs		= 6,
590 		.cpu_setup		= __setup_cpu_745x,
591 		.oprofile_cpu_type      = "ppc/7450",
592 		.oprofile_type		= PPC_OPROFILE_G4,
593 		.platform		= "ppc7450",
594 	},
595 	{	/* 7450 2.1 */
596 		.pvr_mask		= 0xffffffff,
597 		.pvr_value		= 0x80000201,
598 		.cpu_name		= "7450",
599 		.cpu_features		= CPU_FTRS_7450_21,
600 		.cpu_user_features	= COMMON_USER |
601 			PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_PPC_LE,
602 		.icache_bsize		= 32,
603 		.dcache_bsize		= 32,
604 		.num_pmcs		= 6,
605 		.cpu_setup		= __setup_cpu_745x,
606 		.oprofile_cpu_type      = "ppc/7450",
607 		.oprofile_type		= PPC_OPROFILE_G4,
608 		.platform		= "ppc7450",
609 	},
610 	{	/* 7450 2.3 and newer */
611 		.pvr_mask		= 0xffff0000,
612 		.pvr_value		= 0x80000000,
613 		.cpu_name		= "7450",
614 		.cpu_features		= CPU_FTRS_7450_23,
615 		.cpu_user_features	= COMMON_USER |
616 			PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_PPC_LE,
617 		.icache_bsize		= 32,
618 		.dcache_bsize		= 32,
619 		.num_pmcs		= 6,
620 		.cpu_setup		= __setup_cpu_745x,
621 		.oprofile_cpu_type      = "ppc/7450",
622 		.oprofile_type		= PPC_OPROFILE_G4,
623 		.platform		= "ppc7450",
624 	},
625 	{	/* 7455 rev 1.x */
626 		.pvr_mask		= 0xffffff00,
627 		.pvr_value		= 0x80010100,
628 		.cpu_name		= "7455",
629 		.cpu_features		= CPU_FTRS_7455_1,
630 		.cpu_user_features	= COMMON_USER |
631 			PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_PPC_LE,
632 		.icache_bsize		= 32,
633 		.dcache_bsize		= 32,
634 		.num_pmcs		= 6,
635 		.cpu_setup		= __setup_cpu_745x,
636 		.oprofile_cpu_type      = "ppc/7450",
637 		.oprofile_type		= PPC_OPROFILE_G4,
638 		.platform		= "ppc7450",
639 	},
640 	{	/* 7455 rev 2.0 */
641 		.pvr_mask		= 0xffffffff,
642 		.pvr_value		= 0x80010200,
643 		.cpu_name		= "7455",
644 		.cpu_features		= CPU_FTRS_7455_20,
645 		.cpu_user_features	= COMMON_USER |
646 			PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_PPC_LE,
647 		.icache_bsize		= 32,
648 		.dcache_bsize		= 32,
649 		.num_pmcs		= 6,
650 		.cpu_setup		= __setup_cpu_745x,
651 		.oprofile_cpu_type      = "ppc/7450",
652 		.oprofile_type		= PPC_OPROFILE_G4,
653 		.platform		= "ppc7450",
654 	},
655 	{	/* 7455 others */
656 		.pvr_mask		= 0xffff0000,
657 		.pvr_value		= 0x80010000,
658 		.cpu_name		= "7455",
659 		.cpu_features		= CPU_FTRS_7455,
660 		.cpu_user_features	= COMMON_USER |
661 			PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_PPC_LE,
662 		.icache_bsize		= 32,
663 		.dcache_bsize		= 32,
664 		.num_pmcs		= 6,
665 		.cpu_setup		= __setup_cpu_745x,
666 		.oprofile_cpu_type      = "ppc/7450",
667 		.oprofile_type		= PPC_OPROFILE_G4,
668 		.platform		= "ppc7450",
669 	},
670 	{	/* 7447/7457 Rev 1.0 */
671 		.pvr_mask		= 0xffffffff,
672 		.pvr_value		= 0x80020100,
673 		.cpu_name		= "7447/7457",
674 		.cpu_features		= CPU_FTRS_7447_10,
675 		.cpu_user_features	= COMMON_USER |
676 			PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_PPC_LE,
677 		.icache_bsize		= 32,
678 		.dcache_bsize		= 32,
679 		.num_pmcs		= 6,
680 		.cpu_setup		= __setup_cpu_745x,
681 		.oprofile_cpu_type      = "ppc/7450",
682 		.oprofile_type		= PPC_OPROFILE_G4,
683 		.platform		= "ppc7450",
684 	},
685 	{	/* 7447/7457 Rev 1.1 */
686 		.pvr_mask		= 0xffffffff,
687 		.pvr_value		= 0x80020101,
688 		.cpu_name		= "7447/7457",
689 		.cpu_features		= CPU_FTRS_7447_10,
690 		.cpu_user_features	= COMMON_USER |
691 			PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_PPC_LE,
692 		.icache_bsize		= 32,
693 		.dcache_bsize		= 32,
694 		.num_pmcs		= 6,
695 		.cpu_setup		= __setup_cpu_745x,
696 		.oprofile_cpu_type      = "ppc/7450",
697 		.oprofile_type		= PPC_OPROFILE_G4,
698 		.platform		= "ppc7450",
699 	},
700 	{	/* 7447/7457 Rev 1.2 and later */
701 		.pvr_mask		= 0xffff0000,
702 		.pvr_value		= 0x80020000,
703 		.cpu_name		= "7447/7457",
704 		.cpu_features		= CPU_FTRS_7447,
705 		.cpu_user_features	= COMMON_USER | PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_PPC_LE,
706 		.icache_bsize		= 32,
707 		.dcache_bsize		= 32,
708 		.num_pmcs		= 6,
709 		.cpu_setup		= __setup_cpu_745x,
710 		.oprofile_cpu_type      = "ppc/7450",
711 		.oprofile_type		= PPC_OPROFILE_G4,
712 		.platform		= "ppc7450",
713 	},
714 	{	/* 7447A */
715 		.pvr_mask		= 0xffff0000,
716 		.pvr_value		= 0x80030000,
717 		.cpu_name		= "7447A",
718 		.cpu_features		= CPU_FTRS_7447A,
719 		.cpu_user_features	= COMMON_USER |
720 			PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_PPC_LE,
721 		.icache_bsize		= 32,
722 		.dcache_bsize		= 32,
723 		.num_pmcs		= 6,
724 		.cpu_setup		= __setup_cpu_745x,
725 		.oprofile_cpu_type      = "ppc/7450",
726 		.oprofile_type		= PPC_OPROFILE_G4,
727 		.platform		= "ppc7450",
728 	},
729 	{	/* 7448 */
730 		.pvr_mask		= 0xffff0000,
731 		.pvr_value		= 0x80040000,
732 		.cpu_name		= "7448",
733 		.cpu_features		= CPU_FTRS_7447A,
734 		.cpu_user_features	= COMMON_USER |
735 			PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_PPC_LE,
736 		.icache_bsize		= 32,
737 		.dcache_bsize		= 32,
738 		.num_pmcs		= 6,
739 		.cpu_setup		= __setup_cpu_745x,
740 		.oprofile_cpu_type      = "ppc/7450",
741 		.oprofile_type		= PPC_OPROFILE_G4,
742 		.platform		= "ppc7450",
743 	},
744 	{	/* 82xx (8240, 8245, 8260 are all 603e cores) */
745 		.pvr_mask		= 0x7fff0000,
746 		.pvr_value		= 0x00810000,
747 		.cpu_name		= "82xx",
748 		.cpu_features		= CPU_FTRS_82XX,
749 		.cpu_user_features	= COMMON_USER,
750 		.icache_bsize		= 32,
751 		.dcache_bsize		= 32,
752 		.cpu_setup		= __setup_cpu_603,
753 		.platform		= "ppc603",
754 	},
755 	{	/* All G2_LE (603e core, plus some) have the same pvr */
756 		.pvr_mask		= 0x7fff0000,
757 		.pvr_value		= 0x00820000,
758 		.cpu_name		= "G2_LE",
759 		.cpu_features		= CPU_FTRS_G2_LE,
760 		.cpu_user_features	= COMMON_USER,
761 		.icache_bsize		= 32,
762 		.dcache_bsize		= 32,
763 		.cpu_setup		= __setup_cpu_603,
764 		.platform		= "ppc603",
765 	},
766 	{	/* e300 (a 603e core, plus some) on 83xx */
767 		.pvr_mask		= 0x7fff0000,
768 		.pvr_value		= 0x00830000,
769 		.cpu_name		= "e300",
770 		.cpu_features		= CPU_FTRS_E300,
771 		.cpu_user_features	= COMMON_USER,
772 		.icache_bsize		= 32,
773 		.dcache_bsize		= 32,
774 		.cpu_setup		= __setup_cpu_603,
775 		.platform		= "ppc603",
776 	},
777 	{	/* default match, we assume split I/D cache & TB (non-601)... */
778 		.pvr_mask		= 0x00000000,
779 		.pvr_value		= 0x00000000,
780 		.cpu_name		= "(generic PPC)",
781 		.cpu_features		= CPU_FTRS_CLASSIC32,
782 		.cpu_user_features	= COMMON_USER,
783 		.icache_bsize		= 32,
784 		.dcache_bsize		= 32,
785 		.platform		= "ppc603",
786 	},
787 #endif /* CLASSIC_PPC */
788 #ifdef CONFIG_8xx
789 	{	/* 8xx */
790 		.pvr_mask		= 0xffff0000,
791 		.pvr_value		= 0x00500000,
792 		.cpu_name		= "8xx",
793 		/* CPU_FTR_MAYBE_CAN_DOZE is possible,
794 		 * if the 8xx code is there.... */
795 		.cpu_features		= CPU_FTRS_8XX,
796 		.cpu_user_features	= PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU,
797 		.icache_bsize		= 16,
798 		.dcache_bsize		= 16,
799 		.platform		= "ppc823",
800 	},
801 #endif /* CONFIG_8xx */
802 #ifdef CONFIG_40x
803 	{	/* 403GC */
804 		.pvr_mask		= 0xffffff00,
805 		.pvr_value		= 0x00200200,
806 		.cpu_name		= "403GC",
807 		.cpu_features		= CPU_FTRS_40X,
808 		.cpu_user_features	= PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU,
809 		.icache_bsize		= 16,
810 		.dcache_bsize		= 16,
811 		.platform		= "ppc403",
812 	},
813 	{	/* 403GCX */
814 		.pvr_mask		= 0xffffff00,
815 		.pvr_value		= 0x00201400,
816 		.cpu_name		= "403GCX",
817 		.cpu_features		= CPU_FTRS_40X,
818 		.cpu_user_features	= PPC_FEATURE_32 |
819 		 	PPC_FEATURE_HAS_MMU | PPC_FEATURE_NO_TB,
820 		.icache_bsize		= 16,
821 		.dcache_bsize		= 16,
822 		.platform		= "ppc403",
823 	},
824 	{	/* 403G ?? */
825 		.pvr_mask		= 0xffff0000,
826 		.pvr_value		= 0x00200000,
827 		.cpu_name		= "403G ??",
828 		.cpu_features		= CPU_FTRS_40X,
829 		.cpu_user_features	= PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU,
830 		.icache_bsize		= 16,
831 		.dcache_bsize		= 16,
832 		.platform		= "ppc403",
833 	},
834 	{	/* 405GP */
835 		.pvr_mask		= 0xffff0000,
836 		.pvr_value		= 0x40110000,
837 		.cpu_name		= "405GP",
838 		.cpu_features		= CPU_FTRS_40X,
839 		.cpu_user_features	= PPC_FEATURE_32 |
840 			PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC,
841 		.icache_bsize		= 32,
842 		.dcache_bsize		= 32,
843 		.platform		= "ppc405",
844 	},
845 	{	/* STB 03xxx */
846 		.pvr_mask		= 0xffff0000,
847 		.pvr_value		= 0x40130000,
848 		.cpu_name		= "STB03xxx",
849 		.cpu_features		= CPU_FTRS_40X,
850 		.cpu_user_features	= PPC_FEATURE_32 |
851 			PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC,
852 		.icache_bsize		= 32,
853 		.dcache_bsize		= 32,
854 		.platform		= "ppc405",
855 	},
856 	{	/* STB 04xxx */
857 		.pvr_mask		= 0xffff0000,
858 		.pvr_value		= 0x41810000,
859 		.cpu_name		= "STB04xxx",
860 		.cpu_features		= CPU_FTRS_40X,
861 		.cpu_user_features	= PPC_FEATURE_32 |
862 			PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC,
863 		.icache_bsize		= 32,
864 		.dcache_bsize		= 32,
865 		.platform		= "ppc405",
866 	},
867 	{	/* NP405L */
868 		.pvr_mask		= 0xffff0000,
869 		.pvr_value		= 0x41610000,
870 		.cpu_name		= "NP405L",
871 		.cpu_features		= CPU_FTRS_40X,
872 		.cpu_user_features	= PPC_FEATURE_32 |
873 			PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC,
874 		.icache_bsize		= 32,
875 		.dcache_bsize		= 32,
876 		.platform		= "ppc405",
877 	},
878 	{	/* NP4GS3 */
879 		.pvr_mask		= 0xffff0000,
880 		.pvr_value		= 0x40B10000,
881 		.cpu_name		= "NP4GS3",
882 		.cpu_features		= CPU_FTRS_40X,
883 		.cpu_user_features	= PPC_FEATURE_32 |
884 			PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC,
885 		.icache_bsize		= 32,
886 		.dcache_bsize		= 32,
887 		.platform		= "ppc405",
888 	},
889 	{   /* NP405H */
890 		.pvr_mask		= 0xffff0000,
891 		.pvr_value		= 0x41410000,
892 		.cpu_name		= "NP405H",
893 		.cpu_features		= CPU_FTRS_40X,
894 		.cpu_user_features	= PPC_FEATURE_32 |
895 			PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC,
896 		.icache_bsize		= 32,
897 		.dcache_bsize		= 32,
898 		.platform		= "ppc405",
899 	},
900 	{	/* 405GPr */
901 		.pvr_mask		= 0xffff0000,
902 		.pvr_value		= 0x50910000,
903 		.cpu_name		= "405GPr",
904 		.cpu_features		= CPU_FTRS_40X,
905 		.cpu_user_features	= PPC_FEATURE_32 |
906 			PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC,
907 		.icache_bsize		= 32,
908 		.dcache_bsize		= 32,
909 		.platform		= "ppc405",
910 	},
911 	{   /* STBx25xx */
912 		.pvr_mask		= 0xffff0000,
913 		.pvr_value		= 0x51510000,
914 		.cpu_name		= "STBx25xx",
915 		.cpu_features		= CPU_FTRS_40X,
916 		.cpu_user_features	= PPC_FEATURE_32 |
917 			PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC,
918 		.icache_bsize		= 32,
919 		.dcache_bsize		= 32,
920 		.platform		= "ppc405",
921 	},
922 	{	/* 405LP */
923 		.pvr_mask		= 0xffff0000,
924 		.pvr_value		= 0x41F10000,
925 		.cpu_name		= "405LP",
926 		.cpu_features		= CPU_FTRS_40X,
927 		.cpu_user_features	= PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU,
928 		.icache_bsize		= 32,
929 		.dcache_bsize		= 32,
930 		.platform		= "ppc405",
931 	},
932 	{	/* Xilinx Virtex-II Pro  */
933 		.pvr_mask		= 0xfffff000,
934 		.pvr_value		= 0x20010000,
935 		.cpu_name		= "Virtex-II Pro",
936 		.cpu_features		= CPU_FTRS_40X,
937 		.cpu_user_features	= PPC_FEATURE_32 |
938 			PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC,
939 		.icache_bsize		= 32,
940 		.dcache_bsize		= 32,
941 		.platform		= "ppc405",
942 	},
943 	{	/* Xilinx Virtex-4 FX */
944 		.pvr_mask		= 0xfffff000,
945 		.pvr_value		= 0x20011000,
946 		.cpu_name		= "Virtex-4 FX",
947 		.cpu_features		= CPU_FTRS_40X,
948 		.cpu_user_features	= PPC_FEATURE_32 |
949 			PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC,
950 		.icache_bsize		= 32,
951 		.dcache_bsize		= 32,
952 		.platform		= "ppc405",
953 	},
954 	{	/* 405EP */
955 		.pvr_mask		= 0xffff0000,
956 		.pvr_value		= 0x51210000,
957 		.cpu_name		= "405EP",
958 		.cpu_features		= CPU_FTRS_40X,
959 		.cpu_user_features	= PPC_FEATURE_32 |
960 			PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC,
961 		.icache_bsize		= 32,
962 		.dcache_bsize		= 32,
963 		.platform		= "ppc405",
964 	},
965 
966 #endif /* CONFIG_40x */
967 #ifdef CONFIG_44x
968 	{
969 		.pvr_mask		= 0xf0000fff,
970 		.pvr_value		= 0x40000850,
971 		.cpu_name		= "440EP Rev. A",
972 		.cpu_features		= CPU_FTRS_44X,
973 		.cpu_user_features	= COMMON_USER_BOOKE | PPC_FEATURE_HAS_FPU,
974 		.icache_bsize		= 32,
975 		.dcache_bsize		= 32,
976 		.platform		= "ppc440",
977 	},
978 	{
979 		.pvr_mask		= 0xf0000fff,
980 		.pvr_value		= 0x400008d3,
981 		.cpu_name		= "440EP Rev. B",
982 		.cpu_features		= CPU_FTRS_44X,
983 		.cpu_user_features	= COMMON_USER_BOOKE | PPC_FEATURE_HAS_FPU,
984 		.icache_bsize		= 32,
985 		.dcache_bsize		= 32,
986 		.platform		= "ppc440",
987 	},
988 	{	/* 440GP Rev. B */
989 		.pvr_mask		= 0xf0000fff,
990 		.pvr_value		= 0x40000440,
991 		.cpu_name		= "440GP Rev. B",
992 		.cpu_features		= CPU_FTRS_44X,
993 		.cpu_user_features	= COMMON_USER_BOOKE,
994 		.icache_bsize		= 32,
995 		.dcache_bsize		= 32,
996 		.platform		= "ppc440gp",
997 	},
998 	{	/* 440GP Rev. C */
999 		.pvr_mask		= 0xf0000fff,
1000 		.pvr_value		= 0x40000481,
1001 		.cpu_name		= "440GP Rev. C",
1002 		.cpu_features		= CPU_FTRS_44X,
1003 		.cpu_user_features	= COMMON_USER_BOOKE,
1004 		.icache_bsize		= 32,
1005 		.dcache_bsize		= 32,
1006 		.platform		= "ppc440gp",
1007 	},
1008 	{ /* 440GX Rev. A */
1009 		.pvr_mask		= 0xf0000fff,
1010 		.pvr_value		= 0x50000850,
1011 		.cpu_name		= "440GX Rev. A",
1012 		.cpu_features		= CPU_FTRS_44X,
1013 		.cpu_user_features	= COMMON_USER_BOOKE,
1014 		.icache_bsize		= 32,
1015 		.dcache_bsize		= 32,
1016 		.platform		= "ppc440",
1017 	},
1018 	{ /* 440GX Rev. B */
1019 		.pvr_mask		= 0xf0000fff,
1020 		.pvr_value		= 0x50000851,
1021 		.cpu_name		= "440GX Rev. B",
1022 		.cpu_features		= CPU_FTRS_44X,
1023 		.cpu_user_features	= COMMON_USER_BOOKE,
1024 		.icache_bsize		= 32,
1025 		.dcache_bsize		= 32,
1026 		.platform		= "ppc440",
1027 	},
1028 	{ /* 440GX Rev. C */
1029 		.pvr_mask		= 0xf0000fff,
1030 		.pvr_value		= 0x50000892,
1031 		.cpu_name		= "440GX Rev. C",
1032 		.cpu_features		= CPU_FTRS_44X,
1033 		.cpu_user_features	= COMMON_USER_BOOKE,
1034 		.icache_bsize		= 32,
1035 		.dcache_bsize		= 32,
1036 		.platform		= "ppc440",
1037 	},
1038 	{ /* 440GX Rev. F */
1039 		.pvr_mask		= 0xf0000fff,
1040 		.pvr_value		= 0x50000894,
1041 		.cpu_name		= "440GX Rev. F",
1042 		.cpu_features		= CPU_FTRS_44X,
1043 		.cpu_user_features	= COMMON_USER_BOOKE,
1044 		.icache_bsize		= 32,
1045 		.dcache_bsize		= 32,
1046 		.platform		= "ppc440",
1047 	},
1048 	{ /* 440SP Rev. A */
1049 		.pvr_mask		= 0xff000fff,
1050 		.pvr_value		= 0x53000891,
1051 		.cpu_name		= "440SP Rev. A",
1052 		.cpu_features		= CPU_FTRS_44X,
1053 		.cpu_user_features	= COMMON_USER_BOOKE,
1054 		.icache_bsize		= 32,
1055 		.dcache_bsize		= 32,
1056 		.platform		= "ppc440",
1057 	},
1058 	{ /* 440SPe Rev. A */
1059 		.pvr_mask		= 0xff000fff,
1060 		.pvr_value		= 0x53000890,
1061 		.cpu_name		= "440SPe Rev. A",
1062 		.cpu_features		= CPU_FTR_SPLIT_ID_CACHE |
1063 			CPU_FTR_USE_TB,
1064 		.cpu_user_features	= COMMON_USER_BOOKE,
1065 		.icache_bsize		= 32,
1066 		.dcache_bsize		= 32,
1067 		.platform		= "ppc440",
1068 	},
1069 #endif /* CONFIG_44x */
1070 #ifdef CONFIG_FSL_BOOKE
1071 	{	/* e200z5 */
1072 		.pvr_mask		= 0xfff00000,
1073 		.pvr_value		= 0x81000000,
1074 		.cpu_name		= "e200z5",
1075 		/* xxx - galak: add CPU_FTR_MAYBE_CAN_DOZE */
1076 		.cpu_features		= CPU_FTRS_E200,
1077 		.cpu_user_features	= COMMON_USER_BOOKE |
1078 			PPC_FEATURE_HAS_EFP_SINGLE |
1079 			PPC_FEATURE_UNIFIED_CACHE,
1080 		.dcache_bsize		= 32,
1081 		.platform		= "ppc5554",
1082 	},
1083 	{	/* e200z6 */
1084 		.pvr_mask		= 0xfff00000,
1085 		.pvr_value		= 0x81100000,
1086 		.cpu_name		= "e200z6",
1087 		/* xxx - galak: add CPU_FTR_MAYBE_CAN_DOZE */
1088 		.cpu_features		= CPU_FTRS_E200,
1089 		.cpu_user_features	= COMMON_USER_BOOKE |
1090 			PPC_FEATURE_SPE_COMP |
1091 			PPC_FEATURE_HAS_EFP_SINGLE |
1092 			PPC_FEATURE_UNIFIED_CACHE,
1093 		.dcache_bsize		= 32,
1094 		.platform		= "ppc5554",
1095 	},
1096 	{	/* e500 */
1097 		.pvr_mask		= 0xffff0000,
1098 		.pvr_value		= 0x80200000,
1099 		.cpu_name		= "e500",
1100 		/* xxx - galak: add CPU_FTR_MAYBE_CAN_DOZE */
1101 		.cpu_features		= CPU_FTRS_E500,
1102 		.cpu_user_features	= COMMON_USER_BOOKE |
1103 			PPC_FEATURE_SPE_COMP |
1104 			PPC_FEATURE_HAS_EFP_SINGLE,
1105 		.icache_bsize		= 32,
1106 		.dcache_bsize		= 32,
1107 		.num_pmcs		= 4,
1108 		.oprofile_cpu_type	= "ppc/e500",
1109 		.oprofile_type		= PPC_OPROFILE_BOOKE,
1110 		.platform		= "ppc8540",
1111 	},
1112 	{	/* e500v2 */
1113 		.pvr_mask		= 0xffff0000,
1114 		.pvr_value		= 0x80210000,
1115 		.cpu_name		= "e500v2",
1116 		/* xxx - galak: add CPU_FTR_MAYBE_CAN_DOZE */
1117 		.cpu_features		= CPU_FTRS_E500_2,
1118 		.cpu_user_features	= COMMON_USER_BOOKE |
1119 			PPC_FEATURE_SPE_COMP |
1120 			PPC_FEATURE_HAS_EFP_SINGLE |
1121 			PPC_FEATURE_HAS_EFP_DOUBLE,
1122 		.icache_bsize		= 32,
1123 		.dcache_bsize		= 32,
1124 		.num_pmcs		= 4,
1125 		.oprofile_cpu_type	= "ppc/e500",
1126 		.oprofile_type		= PPC_OPROFILE_BOOKE,
1127 		.platform		= "ppc8548",
1128 	},
1129 #endif
1130 #if !CLASSIC_PPC
1131 	{	/* default match */
1132 		.pvr_mask		= 0x00000000,
1133 		.pvr_value		= 0x00000000,
1134 		.cpu_name		= "(generic PPC)",
1135 		.cpu_features		= CPU_FTRS_GENERIC_32,
1136 		.cpu_user_features	= PPC_FEATURE_32,
1137 		.icache_bsize		= 32,
1138 		.dcache_bsize		= 32,
1139 		.platform		= "powerpc",
1140 	}
1141 #endif /* !CLASSIC_PPC */
1142 #endif /* CONFIG_PPC32 */
1143 };
1144