cputable.c 31.9 KB
Newer Older
L
Linus Torvalds 已提交
1 2 3
/*
 *  Copyright (C) 2001 Ben. Herrenschmidt (benh@kernel.crashing.org)
 *
S
Stephen Rothwell 已提交
4 5 6
 *  Modifications for ppc64:
 *      Copyright (C) 2003 Dave Engebretsen <engebret@us.ibm.com>
 *
L
Linus Torvalds 已提交
7 8 9 10 11 12 13 14 15 16
 *  This program is free software; you can redistribute it and/or
 *  modify it under the terms of the GNU General Public License
 *  as published by the Free Software Foundation; either version
 *  2 of the License, or (at your option) any later version.
 */

#include <linux/string.h>
#include <linux/sched.h>
#include <linux/threads.h>
#include <linux/init.h>
17 18 19
#include <linux/module.h>

#include <asm/oprofile_impl.h>
L
Linus Torvalds 已提交
20 21
#include <asm/cputable.h>

22
struct cpu_spec* cur_cpu_spec = NULL;
S
Stephen Rothwell 已提交
23
EXPORT_SYMBOL(cur_cpu_spec);
L
Linus Torvalds 已提交
24

S
Stephen Rothwell 已提交
25 26 27 28 29 30 31
/* NOTE:
 * Unlike ppc32, ppc64 will only call this once for the boot CPU, it's
 * the responsibility of the appropriate CPU save/restore functions to
 * eventually copy these settings over. Those save/restore aren't yet
 * part of the cputable though. That has to be fixed for both ppc32
 * and ppc64
 */
32
#ifdef CONFIG_PPC32
33 34 35 36 37 38 39 40
extern void __setup_cpu_603(unsigned long offset, struct cpu_spec* spec);
extern void __setup_cpu_604(unsigned long offset, struct cpu_spec* spec);
extern void __setup_cpu_750(unsigned long offset, struct cpu_spec* spec);
extern void __setup_cpu_750cx(unsigned long offset, struct cpu_spec* spec);
extern void __setup_cpu_750fx(unsigned long offset, struct cpu_spec* spec);
extern void __setup_cpu_7400(unsigned long offset, struct cpu_spec* spec);
extern void __setup_cpu_7410(unsigned long offset, struct cpu_spec* spec);
extern void __setup_cpu_745x(unsigned long offset, struct cpu_spec* spec);
S
Stephen Rothwell 已提交
41
#endif /* CONFIG_PPC32 */
O
Olof Johansson 已提交
42
#ifdef CONFIG_PPC64
43
extern void __setup_cpu_ppc970(unsigned long offset, struct cpu_spec* spec);
O
Olof Johansson 已提交
44 45
extern void __restore_cpu_ppc970(void);
#endif /* CONFIG_PPC64 */
L
Linus Torvalds 已提交
46 47 48 49

/* This table only contains "desktop" CPUs, it need to be filled with embedded
 * ones as well...
 */
S
Stephen Rothwell 已提交
50 51 52
#define COMMON_USER		(PPC_FEATURE_32 | PPC_FEATURE_HAS_FPU | \
				 PPC_FEATURE_HAS_MMU)
#define COMMON_USER_PPC64	(COMMON_USER | PPC_FEATURE_64)
53
#define COMMON_USER_POWER4	(COMMON_USER_PPC64 | PPC_FEATURE_POWER4)
54 55 56 57
#define COMMON_USER_POWER5	(COMMON_USER_PPC64 | PPC_FEATURE_POWER5 |\
				 PPC_FEATURE_SMT | PPC_FEATURE_ICACHE_SNOOP)
#define COMMON_USER_POWER5_PLUS	(COMMON_USER_PPC64 | PPC_FEATURE_POWER5_PLUS|\
				 PPC_FEATURE_SMT | PPC_FEATURE_ICACHE_SNOOP)
58
#define COMMON_USER_POWER6	(COMMON_USER_PPC64 | PPC_FEATURE_ARCH_2_05 |\
59 60
				 PPC_FEATURE_SMT | PPC_FEATURE_ICACHE_SNOOP | \
				 PPC_FEATURE_TRUE_LE)
61 62 63
#define COMMON_USER_PA6T	(COMMON_USER_PPC64 | PPC_FEATURE_PA6T |\
				 PPC_FEATURE_TRUE_LE | \
				 PPC_FEATURE_HAS_ALTIVEC_COMP)
64 65
#define COMMON_USER_BOOKE	(PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU | \
				 PPC_FEATURE_BOOKE)
L
Linus Torvalds 已提交
66 67 68 69 70

/* We only set the spe features if the kernel was compiled with
 * spe support
 */
#ifdef CONFIG_SPE
S
Stephen Rothwell 已提交
71
#define PPC_FEATURE_SPE_COMP	PPC_FEATURE_HAS_SPE
L
Linus Torvalds 已提交
72
#else
S
Stephen Rothwell 已提交
73
#define PPC_FEATURE_SPE_COMP	0
L
Linus Torvalds 已提交
74 75 76
#endif

struct cpu_spec	cpu_specs[] = {
S
Stephen Rothwell 已提交
77 78 79 80 81 82
#ifdef CONFIG_PPC64
	{	/* Power3 */
		.pvr_mask		= 0xffff0000,
		.pvr_value		= 0x00400000,
		.cpu_name		= "POWER3 (630)",
		.cpu_features		= CPU_FTRS_POWER3,
83
		.cpu_user_features	= COMMON_USER_PPC64|PPC_FEATURE_PPC_LE,
S
Stephen Rothwell 已提交
84 85 86 87
		.icache_bsize		= 128,
		.dcache_bsize		= 128,
		.num_pmcs		= 8,
		.oprofile_cpu_type	= "ppc64/power3",
88
		.oprofile_type		= PPC_OPROFILE_RS64,
89
		.platform		= "power3",
S
Stephen Rothwell 已提交
90 91 92 93 94 95
	},
	{	/* Power3+ */
		.pvr_mask		= 0xffff0000,
		.pvr_value		= 0x00410000,
		.cpu_name		= "POWER3 (630+)",
		.cpu_features		= CPU_FTRS_POWER3,
96
		.cpu_user_features	= COMMON_USER_PPC64|PPC_FEATURE_PPC_LE,
S
Stephen Rothwell 已提交
97 98 99 100
		.icache_bsize		= 128,
		.dcache_bsize		= 128,
		.num_pmcs		= 8,
		.oprofile_cpu_type	= "ppc64/power3",
101
		.oprofile_type		= PPC_OPROFILE_RS64,
102
		.platform		= "power3",
S
Stephen Rothwell 已提交
103 104 105 106 107 108 109 110 111 112 113
	},
	{	/* Northstar */
		.pvr_mask		= 0xffff0000,
		.pvr_value		= 0x00330000,
		.cpu_name		= "RS64-II (northstar)",
		.cpu_features		= CPU_FTRS_RS64,
		.cpu_user_features	= COMMON_USER_PPC64,
		.icache_bsize		= 128,
		.dcache_bsize		= 128,
		.num_pmcs		= 8,
		.oprofile_cpu_type	= "ppc64/rs64",
114
		.oprofile_type		= PPC_OPROFILE_RS64,
115
		.platform		= "rs64",
S
Stephen Rothwell 已提交
116 117 118 119 120 121 122 123 124 125 126
	},
	{	/* Pulsar */
		.pvr_mask		= 0xffff0000,
		.pvr_value		= 0x00340000,
		.cpu_name		= "RS64-III (pulsar)",
		.cpu_features		= CPU_FTRS_RS64,
		.cpu_user_features	= COMMON_USER_PPC64,
		.icache_bsize		= 128,
		.dcache_bsize		= 128,
		.num_pmcs		= 8,
		.oprofile_cpu_type	= "ppc64/rs64",
127
		.oprofile_type		= PPC_OPROFILE_RS64,
128
		.platform		= "rs64",
S
Stephen Rothwell 已提交
129 130 131 132 133 134 135 136 137 138 139
	},
	{	/* I-star */
		.pvr_mask		= 0xffff0000,
		.pvr_value		= 0x00360000,
		.cpu_name		= "RS64-III (icestar)",
		.cpu_features		= CPU_FTRS_RS64,
		.cpu_user_features	= COMMON_USER_PPC64,
		.icache_bsize		= 128,
		.dcache_bsize		= 128,
		.num_pmcs		= 8,
		.oprofile_cpu_type	= "ppc64/rs64",
140
		.oprofile_type		= PPC_OPROFILE_RS64,
141
		.platform		= "rs64",
S
Stephen Rothwell 已提交
142 143 144 145 146 147 148 149 150 151 152
	},
	{	/* S-star */
		.pvr_mask		= 0xffff0000,
		.pvr_value		= 0x00370000,
		.cpu_name		= "RS64-IV (sstar)",
		.cpu_features		= CPU_FTRS_RS64,
		.cpu_user_features	= COMMON_USER_PPC64,
		.icache_bsize		= 128,
		.dcache_bsize		= 128,
		.num_pmcs		= 8,
		.oprofile_cpu_type	= "ppc64/rs64",
153
		.oprofile_type		= PPC_OPROFILE_RS64,
154
		.platform		= "rs64",
S
Stephen Rothwell 已提交
155 156 157 158 159 160
	},
	{	/* Power4 */
		.pvr_mask		= 0xffff0000,
		.pvr_value		= 0x00350000,
		.cpu_name		= "POWER4 (gp)",
		.cpu_features		= CPU_FTRS_POWER4,
161
		.cpu_user_features	= COMMON_USER_POWER4,
S
Stephen Rothwell 已提交
162 163 164 165
		.icache_bsize		= 128,
		.dcache_bsize		= 128,
		.num_pmcs		= 8,
		.oprofile_cpu_type	= "ppc64/power4",
166
		.oprofile_type		= PPC_OPROFILE_POWER4,
167
		.platform		= "power4",
S
Stephen Rothwell 已提交
168 169 170 171 172 173
	},
	{	/* Power4+ */
		.pvr_mask		= 0xffff0000,
		.pvr_value		= 0x00380000,
		.cpu_name		= "POWER4+ (gq)",
		.cpu_features		= CPU_FTRS_POWER4,
174
		.cpu_user_features	= COMMON_USER_POWER4,
S
Stephen Rothwell 已提交
175 176 177 178
		.icache_bsize		= 128,
		.dcache_bsize		= 128,
		.num_pmcs		= 8,
		.oprofile_cpu_type	= "ppc64/power4",
179
		.oprofile_type		= PPC_OPROFILE_POWER4,
180
		.platform		= "power4",
S
Stephen Rothwell 已提交
181 182 183 184 185 186
	},
	{	/* PPC970 */
		.pvr_mask		= 0xffff0000,
		.pvr_value		= 0x00390000,
		.cpu_name		= "PPC970",
		.cpu_features		= CPU_FTRS_PPC970,
187
		.cpu_user_features	= COMMON_USER_POWER4 |
S
Stephen Rothwell 已提交
188 189 190 191 192
			PPC_FEATURE_HAS_ALTIVEC_COMP,
		.icache_bsize		= 128,
		.dcache_bsize		= 128,
		.num_pmcs		= 8,
		.cpu_setup		= __setup_cpu_ppc970,
O
Olof Johansson 已提交
193
		.cpu_restore		= __restore_cpu_ppc970,
S
Stephen Rothwell 已提交
194
		.oprofile_cpu_type	= "ppc64/970",
195
		.oprofile_type		= PPC_OPROFILE_POWER4,
196
		.platform		= "ppc970",
S
Stephen Rothwell 已提交
197 198 199 200 201 202
	},
	{	/* PPC970FX */
		.pvr_mask		= 0xffff0000,
		.pvr_value		= 0x003c0000,
		.cpu_name		= "PPC970FX",
		.cpu_features		= CPU_FTRS_PPC970,
203
		.cpu_user_features	= COMMON_USER_POWER4 |
S
Stephen Rothwell 已提交
204 205 206 207 208
			PPC_FEATURE_HAS_ALTIVEC_COMP,
		.icache_bsize		= 128,
		.dcache_bsize		= 128,
		.num_pmcs		= 8,
		.cpu_setup		= __setup_cpu_ppc970,
O
Olof Johansson 已提交
209
		.cpu_restore		= __restore_cpu_ppc970,
S
Stephen Rothwell 已提交
210
		.oprofile_cpu_type	= "ppc64/970",
211
		.oprofile_type		= PPC_OPROFILE_POWER4,
212
		.platform		= "ppc970",
S
Stephen Rothwell 已提交
213 214 215 216 217 218
	},
	{	/* PPC970MP */
		.pvr_mask		= 0xffff0000,
		.pvr_value		= 0x00440000,
		.cpu_name		= "PPC970MP",
		.cpu_features		= CPU_FTRS_PPC970,
219
		.cpu_user_features	= COMMON_USER_POWER4 |
S
Stephen Rothwell 已提交
220 221 222
			PPC_FEATURE_HAS_ALTIVEC_COMP,
		.icache_bsize		= 128,
		.dcache_bsize		= 128,
223
		.num_pmcs		= 8,
S
Stephen Rothwell 已提交
224
		.cpu_setup		= __setup_cpu_ppc970,
O
Olof Johansson 已提交
225
		.cpu_restore		= __restore_cpu_ppc970,
S
Stephen Rothwell 已提交
226
		.oprofile_cpu_type	= "ppc64/970",
227
		.oprofile_type		= PPC_OPROFILE_POWER4,
228
		.platform		= "ppc970",
S
Stephen Rothwell 已提交
229
	},
230
	{	/* Power5 GR */
S
Stephen Rothwell 已提交
231 232 233 234
		.pvr_mask		= 0xffff0000,
		.pvr_value		= 0x003a0000,
		.cpu_name		= "POWER5 (gr)",
		.cpu_features		= CPU_FTRS_POWER5,
235
		.cpu_user_features	= COMMON_USER_POWER5,
S
Stephen Rothwell 已提交
236 237 238 239
		.icache_bsize		= 128,
		.dcache_bsize		= 128,
		.num_pmcs		= 6,
		.oprofile_cpu_type	= "ppc64/power5",
240
		.oprofile_type		= PPC_OPROFILE_POWER4,
241 242 243 244 245
		/* SIHV / SIPR bits are implemented on POWER4+ (GQ)
		 * and above but only works on POWER5 and above
		 */
		.oprofile_mmcra_sihv	= MMCRA_SIHV,
		.oprofile_mmcra_sipr	= MMCRA_SIPR,
246
		.platform		= "power5",
S
Stephen Rothwell 已提交
247
	},
248
	{	/* Power5 GS */
S
Stephen Rothwell 已提交
249 250
		.pvr_mask		= 0xffff0000,
		.pvr_value		= 0x003b0000,
251
		.cpu_name		= "POWER5+ (gs)",
S
Stephen Rothwell 已提交
252
		.cpu_features		= CPU_FTRS_POWER5,
253
		.cpu_user_features	= COMMON_USER_POWER5_PLUS,
S
Stephen Rothwell 已提交
254 255 256
		.icache_bsize		= 128,
		.dcache_bsize		= 128,
		.num_pmcs		= 6,
257
		.oprofile_cpu_type	= "ppc64/power5+",
258
		.oprofile_type		= PPC_OPROFILE_POWER4,
259 260
		.oprofile_mmcra_sihv	= MMCRA_SIHV,
		.oprofile_mmcra_sipr	= MMCRA_SIPR,
261
		.platform		= "power5+",
S
Stephen Rothwell 已提交
262
	},
263 264 265 266 267 268 269 270
	{	/* Power6 */
		.pvr_mask		= 0xffff0000,
		.pvr_value		= 0x003e0000,
		.cpu_name		= "POWER6",
		.cpu_features		= CPU_FTRS_POWER6,
		.cpu_user_features	= COMMON_USER_POWER6,
		.icache_bsize		= 128,
		.dcache_bsize		= 128,
A
Anton Blanchard 已提交
271
		.num_pmcs		= 6,
272 273
		.oprofile_cpu_type	= "ppc64/power6",
		.oprofile_type		= PPC_OPROFILE_POWER4,
274 275 276 277
 		.oprofile_mmcra_sihv	= POWER6_MMCRA_SIHV,
 		.oprofile_mmcra_sipr	= POWER6_MMCRA_SIPR,
 		.oprofile_mmcra_clear	= POWER6_MMCRA_THRM |
 			POWER6_MMCRA_OTHER,
278 279
		.platform		= "power6",
	},
280
	{	/* Cell Broadband Engine */
S
Stephen Rothwell 已提交
281 282 283 284 285
		.pvr_mask		= 0xffff0000,
		.pvr_value		= 0x00700000,
		.cpu_name		= "Cell Broadband Engine",
		.cpu_features		= CPU_FTRS_CELL,
		.cpu_user_features	= COMMON_USER_PPC64 |
286 287
			PPC_FEATURE_CELL | PPC_FEATURE_HAS_ALTIVEC_COMP |
			PPC_FEATURE_SMT,
S
Stephen Rothwell 已提交
288 289
		.icache_bsize		= 128,
		.dcache_bsize		= 128,
290
		.platform		= "ppc-cell-be",
S
Stephen Rothwell 已提交
291
	},
292 293 294 295 296 297 298 299 300 301 302
	{	/* PA Semi PA6T */
		.pvr_mask		= 0x7fff0000,
		.pvr_value		= 0x00900000,
		.cpu_name		= "PA6T",
		.cpu_features		= CPU_FTRS_PA6T,
		.cpu_user_features	= COMMON_USER_PA6T,
		.icache_bsize		= 64,
		.dcache_bsize		= 64,
		.num_pmcs		= 6,
		.platform		= "pa6t",
	},
S
Stephen Rothwell 已提交
303 304 305 306 307 308 309 310 311
	{	/* default match */
		.pvr_mask		= 0x00000000,
		.pvr_value		= 0x00000000,
		.cpu_name		= "POWER4 (compatible)",
		.cpu_features		= CPU_FTRS_COMPATIBLE,
		.cpu_user_features	= COMMON_USER_PPC64,
		.icache_bsize		= 128,
		.dcache_bsize		= 128,
		.num_pmcs		= 6,
312
		.platform		= "power4",
S
Stephen Rothwell 已提交
313 314 315
	}
#endif	/* CONFIG_PPC64 */
#ifdef CONFIG_PPC32
L
Linus Torvalds 已提交
316
#if CLASSIC_PPC
S
Stephen Rothwell 已提交
317
	{	/* 601 */
L
Linus Torvalds 已提交
318 319 320
		.pvr_mask		= 0xffff0000,
		.pvr_value		= 0x00010000,
		.cpu_name		= "601",
321
		.cpu_features		= CPU_FTRS_PPC601,
S
Stephen Rothwell 已提交
322
		.cpu_user_features	= COMMON_USER | PPC_FEATURE_601_INSTR |
323
			PPC_FEATURE_UNIFIED_CACHE | PPC_FEATURE_NO_TB,
L
Linus Torvalds 已提交
324 325
		.icache_bsize		= 32,
		.dcache_bsize		= 32,
326
		.platform		= "ppc601",
L
Linus Torvalds 已提交
327 328 329 330 331
	},
	{	/* 603 */
		.pvr_mask		= 0xffff0000,
		.pvr_value		= 0x00030000,
		.cpu_name		= "603",
332
		.cpu_features		= CPU_FTRS_603,
333
		.cpu_user_features	= COMMON_USER | PPC_FEATURE_PPC_LE,
L
Linus Torvalds 已提交
334 335
		.icache_bsize		= 32,
		.dcache_bsize		= 32,
336 337
		.cpu_setup		= __setup_cpu_603,
		.platform		= "ppc603",
L
Linus Torvalds 已提交
338 339 340 341 342
	},
	{	/* 603e */
		.pvr_mask		= 0xffff0000,
		.pvr_value		= 0x00060000,
		.cpu_name		= "603e",
343
		.cpu_features		= CPU_FTRS_603,
344
		.cpu_user_features	= COMMON_USER | PPC_FEATURE_PPC_LE,
L
Linus Torvalds 已提交
345 346
		.icache_bsize		= 32,
		.dcache_bsize		= 32,
347 348
		.cpu_setup		= __setup_cpu_603,
		.platform		= "ppc603",
L
Linus Torvalds 已提交
349 350 351 352 353
	},
	{	/* 603ev */
		.pvr_mask		= 0xffff0000,
		.pvr_value		= 0x00070000,
		.cpu_name		= "603ev",
354
		.cpu_features		= CPU_FTRS_603,
355
		.cpu_user_features	= COMMON_USER | PPC_FEATURE_PPC_LE,
L
Linus Torvalds 已提交
356 357
		.icache_bsize		= 32,
		.dcache_bsize		= 32,
358 359
		.cpu_setup		= __setup_cpu_603,
		.platform		= "ppc603",
L
Linus Torvalds 已提交
360 361 362 363 364
	},
	{	/* 604 */
		.pvr_mask		= 0xffff0000,
		.pvr_value		= 0x00040000,
		.cpu_name		= "604",
365
		.cpu_features		= CPU_FTRS_604,
366
		.cpu_user_features	= COMMON_USER | PPC_FEATURE_PPC_LE,
L
Linus Torvalds 已提交
367 368 369
		.icache_bsize		= 32,
		.dcache_bsize		= 32,
		.num_pmcs		= 2,
370 371
		.cpu_setup		= __setup_cpu_604,
		.platform		= "ppc604",
L
Linus Torvalds 已提交
372 373 374 375 376
	},
	{	/* 604e */
		.pvr_mask		= 0xfffff000,
		.pvr_value		= 0x00090000,
		.cpu_name		= "604e",
377
		.cpu_features		= CPU_FTRS_604,
378
		.cpu_user_features	= COMMON_USER | PPC_FEATURE_PPC_LE,
L
Linus Torvalds 已提交
379 380 381
		.icache_bsize		= 32,
		.dcache_bsize		= 32,
		.num_pmcs		= 4,
382 383
		.cpu_setup		= __setup_cpu_604,
		.platform		= "ppc604",
L
Linus Torvalds 已提交
384 385 386 387 388
	},
	{	/* 604r */
		.pvr_mask		= 0xffff0000,
		.pvr_value		= 0x00090000,
		.cpu_name		= "604r",
389
		.cpu_features		= CPU_FTRS_604,
390
		.cpu_user_features	= COMMON_USER | PPC_FEATURE_PPC_LE,
L
Linus Torvalds 已提交
391 392 393
		.icache_bsize		= 32,
		.dcache_bsize		= 32,
		.num_pmcs		= 4,
394 395
		.cpu_setup		= __setup_cpu_604,
		.platform		= "ppc604",
L
Linus Torvalds 已提交
396 397 398 399 400
	},
	{	/* 604ev */
		.pvr_mask		= 0xffff0000,
		.pvr_value		= 0x000a0000,
		.cpu_name		= "604ev",
401
		.cpu_features		= CPU_FTRS_604,
402
		.cpu_user_features	= COMMON_USER | PPC_FEATURE_PPC_LE,
L
Linus Torvalds 已提交
403 404 405
		.icache_bsize		= 32,
		.dcache_bsize		= 32,
		.num_pmcs		= 4,
406 407
		.cpu_setup		= __setup_cpu_604,
		.platform		= "ppc604",
L
Linus Torvalds 已提交
408 409 410 411 412
	},
	{	/* 740/750 (0x4202, don't support TAU ?) */
		.pvr_mask		= 0xffffffff,
		.pvr_value		= 0x00084202,
		.cpu_name		= "740/750",
413
		.cpu_features		= CPU_FTRS_740_NOTAU,
414
		.cpu_user_features	= COMMON_USER | PPC_FEATURE_PPC_LE,
L
Linus Torvalds 已提交
415 416 417
		.icache_bsize		= 32,
		.dcache_bsize		= 32,
		.num_pmcs		= 4,
418 419
		.cpu_setup		= __setup_cpu_750,
		.platform		= "ppc750",
L
Linus Torvalds 已提交
420 421 422 423 424
	},
	{	/* 750CX (80100 and 8010x?) */
		.pvr_mask		= 0xfffffff0,
		.pvr_value		= 0x00080100,
		.cpu_name		= "750CX",
425
		.cpu_features		= CPU_FTRS_750,
426
		.cpu_user_features	= COMMON_USER | PPC_FEATURE_PPC_LE,
L
Linus Torvalds 已提交
427 428 429
		.icache_bsize		= 32,
		.dcache_bsize		= 32,
		.num_pmcs		= 4,
430 431
		.cpu_setup		= __setup_cpu_750cx,
		.platform		= "ppc750",
L
Linus Torvalds 已提交
432 433 434 435 436
	},
	{	/* 750CX (82201 and 82202) */
		.pvr_mask		= 0xfffffff0,
		.pvr_value		= 0x00082200,
		.cpu_name		= "750CX",
437
		.cpu_features		= CPU_FTRS_750,
438
		.cpu_user_features	= COMMON_USER | PPC_FEATURE_PPC_LE,
L
Linus Torvalds 已提交
439 440 441
		.icache_bsize		= 32,
		.dcache_bsize		= 32,
		.num_pmcs		= 4,
442 443
		.cpu_setup		= __setup_cpu_750cx,
		.platform		= "ppc750",
L
Linus Torvalds 已提交
444 445 446 447 448
	},
	{	/* 750CXe (82214) */
		.pvr_mask		= 0xfffffff0,
		.pvr_value		= 0x00082210,
		.cpu_name		= "750CXe",
449
		.cpu_features		= CPU_FTRS_750,
450
		.cpu_user_features	= COMMON_USER | PPC_FEATURE_PPC_LE,
L
Linus Torvalds 已提交
451 452 453
		.icache_bsize		= 32,
		.dcache_bsize		= 32,
		.num_pmcs		= 4,
454 455
		.cpu_setup		= __setup_cpu_750cx,
		.platform		= "ppc750",
L
Linus Torvalds 已提交
456
	},
457 458 459 460
	{	/* 750CXe "Gekko" (83214) */
		.pvr_mask		= 0xffffffff,
		.pvr_value		= 0x00083214,
		.cpu_name		= "750CXe",
461
		.cpu_features		= CPU_FTRS_750,
462
		.cpu_user_features	= COMMON_USER | PPC_FEATURE_PPC_LE,
463 464 465
		.icache_bsize		= 32,
		.dcache_bsize		= 32,
		.num_pmcs		= 4,
466 467
		.cpu_setup		= __setup_cpu_750cx,
		.platform		= "ppc750",
468
	},
469 470 471 472
	{	/* 745/755 */
		.pvr_mask		= 0xfffff000,
		.pvr_value		= 0x00083000,
		.cpu_name		= "745/755",
473
		.cpu_features		= CPU_FTRS_750,
474
		.cpu_user_features	= COMMON_USER | PPC_FEATURE_PPC_LE,
475 476 477
		.icache_bsize		= 32,
		.dcache_bsize		= 32,
		.num_pmcs		= 4,
478 479
		.cpu_setup		= __setup_cpu_750,
		.platform		= "ppc750",
480
	},
L
Linus Torvalds 已提交
481 482 483 484
	{	/* 750FX rev 1.x */
		.pvr_mask		= 0xffffff00,
		.pvr_value		= 0x70000100,
		.cpu_name		= "750FX",
485
		.cpu_features		= CPU_FTRS_750FX1,
486
		.cpu_user_features	= COMMON_USER | PPC_FEATURE_PPC_LE,
L
Linus Torvalds 已提交
487 488 489
		.icache_bsize		= 32,
		.dcache_bsize		= 32,
		.num_pmcs		= 4,
490 491
		.cpu_setup		= __setup_cpu_750,
		.platform		= "ppc750",
L
Linus Torvalds 已提交
492 493 494 495 496
	},
	{	/* 750FX rev 2.0 must disable HID0[DPM] */
		.pvr_mask		= 0xffffffff,
		.pvr_value		= 0x70000200,
		.cpu_name		= "750FX",
497
		.cpu_features		= CPU_FTRS_750FX2,
498
		.cpu_user_features	= COMMON_USER | PPC_FEATURE_PPC_LE,
L
Linus Torvalds 已提交
499 500 501
		.icache_bsize		= 32,
		.dcache_bsize		= 32,
		.num_pmcs		= 4,
502 503
		.cpu_setup		= __setup_cpu_750,
		.platform		= "ppc750",
L
Linus Torvalds 已提交
504 505 506 507 508
	},
	{	/* 750FX (All revs except 2.0) */
		.pvr_mask		= 0xffff0000,
		.pvr_value		= 0x70000000,
		.cpu_name		= "750FX",
509
		.cpu_features		= CPU_FTRS_750FX,
510
		.cpu_user_features	= COMMON_USER | PPC_FEATURE_PPC_LE,
L
Linus Torvalds 已提交
511 512 513
		.icache_bsize		= 32,
		.dcache_bsize		= 32,
		.num_pmcs		= 4,
514 515
		.cpu_setup		= __setup_cpu_750fx,
		.platform		= "ppc750",
L
Linus Torvalds 已提交
516 517 518 519 520
	},
	{	/* 750GX */
		.pvr_mask		= 0xffff0000,
		.pvr_value		= 0x70020000,
		.cpu_name		= "750GX",
521
		.cpu_features		= CPU_FTRS_750GX,
522
		.cpu_user_features	= COMMON_USER | PPC_FEATURE_PPC_LE,
L
Linus Torvalds 已提交
523 524 525
		.icache_bsize		= 32,
		.dcache_bsize		= 32,
		.num_pmcs		= 4,
526 527
		.cpu_setup		= __setup_cpu_750fx,
		.platform		= "ppc750",
L
Linus Torvalds 已提交
528 529 530 531 532
	},
	{	/* 740/750 (L2CR bit need fixup for 740) */
		.pvr_mask		= 0xffff0000,
		.pvr_value		= 0x00080000,
		.cpu_name		= "740/750",
533
		.cpu_features		= CPU_FTRS_740,
534
		.cpu_user_features	= COMMON_USER | PPC_FEATURE_PPC_LE,
L
Linus Torvalds 已提交
535 536 537
		.icache_bsize		= 32,
		.dcache_bsize		= 32,
		.num_pmcs		= 4,
538 539
		.cpu_setup		= __setup_cpu_750,
		.platform		= "ppc750",
L
Linus Torvalds 已提交
540 541 542 543 544
	},
	{	/* 7400 rev 1.1 ? (no TAU) */
		.pvr_mask		= 0xffffffff,
		.pvr_value		= 0x000c1101,
		.cpu_name		= "7400 (1.1)",
545
		.cpu_features		= CPU_FTRS_7400_NOTAU,
546 547
		.cpu_user_features	= COMMON_USER |
			PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_PPC_LE,
L
Linus Torvalds 已提交
548 549 550
		.icache_bsize		= 32,
		.dcache_bsize		= 32,
		.num_pmcs		= 4,
551 552
		.cpu_setup		= __setup_cpu_7400,
		.platform		= "ppc7400",
L
Linus Torvalds 已提交
553 554 555 556 557
	},
	{	/* 7400 */
		.pvr_mask		= 0xffff0000,
		.pvr_value		= 0x000c0000,
		.cpu_name		= "7400",
558
		.cpu_features		= CPU_FTRS_7400,
559 560
		.cpu_user_features	= COMMON_USER |
			PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_PPC_LE,
L
Linus Torvalds 已提交
561 562 563
		.icache_bsize		= 32,
		.dcache_bsize		= 32,
		.num_pmcs		= 4,
564 565
		.cpu_setup		= __setup_cpu_7400,
		.platform		= "ppc7400",
L
Linus Torvalds 已提交
566 567 568 569 570
	},
	{	/* 7410 */
		.pvr_mask		= 0xffff0000,
		.pvr_value		= 0x800c0000,
		.cpu_name		= "7410",
571
		.cpu_features		= CPU_FTRS_7400,
572 573
		.cpu_user_features	= COMMON_USER |
			PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_PPC_LE,
L
Linus Torvalds 已提交
574 575 576
		.icache_bsize		= 32,
		.dcache_bsize		= 32,
		.num_pmcs		= 4,
577 578
		.cpu_setup		= __setup_cpu_7410,
		.platform		= "ppc7400",
L
Linus Torvalds 已提交
579 580 581 582 583
	},
	{	/* 7450 2.0 - no doze/nap */
		.pvr_mask		= 0xffffffff,
		.pvr_value		= 0x80000200,
		.cpu_name		= "7450",
584
		.cpu_features		= CPU_FTRS_7450_20,
585 586
		.cpu_user_features	= COMMON_USER |
			PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_PPC_LE,
L
Linus Torvalds 已提交
587 588 589
		.icache_bsize		= 32,
		.dcache_bsize		= 32,
		.num_pmcs		= 6,
590 591
		.cpu_setup		= __setup_cpu_745x,
		.oprofile_cpu_type      = "ppc/7450",
592
		.oprofile_type		= PPC_OPROFILE_G4,
593
		.platform		= "ppc7450",
L
Linus Torvalds 已提交
594 595 596 597 598
	},
	{	/* 7450 2.1 */
		.pvr_mask		= 0xffffffff,
		.pvr_value		= 0x80000201,
		.cpu_name		= "7450",
599
		.cpu_features		= CPU_FTRS_7450_21,
600 601
		.cpu_user_features	= COMMON_USER |
			PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_PPC_LE,
L
Linus Torvalds 已提交
602 603 604
		.icache_bsize		= 32,
		.dcache_bsize		= 32,
		.num_pmcs		= 6,
605 606
		.cpu_setup		= __setup_cpu_745x,
		.oprofile_cpu_type      = "ppc/7450",
607
		.oprofile_type		= PPC_OPROFILE_G4,
608
		.platform		= "ppc7450",
L
Linus Torvalds 已提交
609 610 611 612 613
	},
	{	/* 7450 2.3 and newer */
		.pvr_mask		= 0xffff0000,
		.pvr_value		= 0x80000000,
		.cpu_name		= "7450",
614
		.cpu_features		= CPU_FTRS_7450_23,
615 616
		.cpu_user_features	= COMMON_USER |
			PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_PPC_LE,
L
Linus Torvalds 已提交
617 618 619
		.icache_bsize		= 32,
		.dcache_bsize		= 32,
		.num_pmcs		= 6,
620 621
		.cpu_setup		= __setup_cpu_745x,
		.oprofile_cpu_type      = "ppc/7450",
622
		.oprofile_type		= PPC_OPROFILE_G4,
623
		.platform		= "ppc7450",
L
Linus Torvalds 已提交
624 625 626 627 628
	},
	{	/* 7455 rev 1.x */
		.pvr_mask		= 0xffffff00,
		.pvr_value		= 0x80010100,
		.cpu_name		= "7455",
629
		.cpu_features		= CPU_FTRS_7455_1,
630 631
		.cpu_user_features	= COMMON_USER |
			PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_PPC_LE,
L
Linus Torvalds 已提交
632 633 634
		.icache_bsize		= 32,
		.dcache_bsize		= 32,
		.num_pmcs		= 6,
635 636
		.cpu_setup		= __setup_cpu_745x,
		.oprofile_cpu_type      = "ppc/7450",
637
		.oprofile_type		= PPC_OPROFILE_G4,
638
		.platform		= "ppc7450",
L
Linus Torvalds 已提交
639 640 641 642 643
	},
	{	/* 7455 rev 2.0 */
		.pvr_mask		= 0xffffffff,
		.pvr_value		= 0x80010200,
		.cpu_name		= "7455",
644
		.cpu_features		= CPU_FTRS_7455_20,
645 646
		.cpu_user_features	= COMMON_USER |
			PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_PPC_LE,
L
Linus Torvalds 已提交
647 648 649
		.icache_bsize		= 32,
		.dcache_bsize		= 32,
		.num_pmcs		= 6,
650 651
		.cpu_setup		= __setup_cpu_745x,
		.oprofile_cpu_type      = "ppc/7450",
652
		.oprofile_type		= PPC_OPROFILE_G4,
653
		.platform		= "ppc7450",
L
Linus Torvalds 已提交
654 655 656 657 658
	},
	{	/* 7455 others */
		.pvr_mask		= 0xffff0000,
		.pvr_value		= 0x80010000,
		.cpu_name		= "7455",
659
		.cpu_features		= CPU_FTRS_7455,
660 661
		.cpu_user_features	= COMMON_USER |
			PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_PPC_LE,
L
Linus Torvalds 已提交
662 663 664
		.icache_bsize		= 32,
		.dcache_bsize		= 32,
		.num_pmcs		= 6,
665 666
		.cpu_setup		= __setup_cpu_745x,
		.oprofile_cpu_type      = "ppc/7450",
667
		.oprofile_type		= PPC_OPROFILE_G4,
668
		.platform		= "ppc7450",
L
Linus Torvalds 已提交
669 670 671 672 673
	},
	{	/* 7447/7457 Rev 1.0 */
		.pvr_mask		= 0xffffffff,
		.pvr_value		= 0x80020100,
		.cpu_name		= "7447/7457",
674
		.cpu_features		= CPU_FTRS_7447_10,
675 676
		.cpu_user_features	= COMMON_USER |
			PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_PPC_LE,
L
Linus Torvalds 已提交
677 678 679
		.icache_bsize		= 32,
		.dcache_bsize		= 32,
		.num_pmcs		= 6,
680 681
		.cpu_setup		= __setup_cpu_745x,
		.oprofile_cpu_type      = "ppc/7450",
682
		.oprofile_type		= PPC_OPROFILE_G4,
683
		.platform		= "ppc7450",
L
Linus Torvalds 已提交
684 685 686 687 688
	},
	{	/* 7447/7457 Rev 1.1 */
		.pvr_mask		= 0xffffffff,
		.pvr_value		= 0x80020101,
		.cpu_name		= "7447/7457",
689
		.cpu_features		= CPU_FTRS_7447_10,
690 691
		.cpu_user_features	= COMMON_USER |
			PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_PPC_LE,
L
Linus Torvalds 已提交
692 693 694
		.icache_bsize		= 32,
		.dcache_bsize		= 32,
		.num_pmcs		= 6,
695 696
		.cpu_setup		= __setup_cpu_745x,
		.oprofile_cpu_type      = "ppc/7450",
697
		.oprofile_type		= PPC_OPROFILE_G4,
698
		.platform		= "ppc7450",
L
Linus Torvalds 已提交
699 700 701 702 703
	},
	{	/* 7447/7457 Rev 1.2 and later */
		.pvr_mask		= 0xffff0000,
		.pvr_value		= 0x80020000,
		.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,
L
Linus Torvalds 已提交
706 707 708
		.icache_bsize		= 32,
		.dcache_bsize		= 32,
		.num_pmcs		= 6,
709 710
		.cpu_setup		= __setup_cpu_745x,
		.oprofile_cpu_type      = "ppc/7450",
711
		.oprofile_type		= PPC_OPROFILE_G4,
712
		.platform		= "ppc7450",
L
Linus Torvalds 已提交
713 714 715 716 717
	},
	{	/* 7447A */
		.pvr_mask		= 0xffff0000,
		.pvr_value		= 0x80030000,
		.cpu_name		= "7447A",
718
		.cpu_features		= CPU_FTRS_7447A,
719 720
		.cpu_user_features	= COMMON_USER |
			PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_PPC_LE,
721 722 723
		.icache_bsize		= 32,
		.dcache_bsize		= 32,
		.num_pmcs		= 6,
724 725
		.cpu_setup		= __setup_cpu_745x,
		.oprofile_cpu_type      = "ppc/7450",
726
		.oprofile_type		= PPC_OPROFILE_G4,
727
		.platform		= "ppc7450",
728 729 730 731 732
	},
	{	/* 7448 */
		.pvr_mask		= 0xffff0000,
		.pvr_value		= 0x80040000,
		.cpu_name		= "7448",
733
		.cpu_features		= CPU_FTRS_7447A,
734 735
		.cpu_user_features	= COMMON_USER |
			PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_PPC_LE,
L
Linus Torvalds 已提交
736 737 738
		.icache_bsize		= 32,
		.dcache_bsize		= 32,
		.num_pmcs		= 6,
739 740
		.cpu_setup		= __setup_cpu_745x,
		.oprofile_cpu_type      = "ppc/7450",
741
		.oprofile_type		= PPC_OPROFILE_G4,
742
		.platform		= "ppc7450",
L
Linus Torvalds 已提交
743 744 745 746 747
	},
	{	/* 82xx (8240, 8245, 8260 are all 603e cores) */
		.pvr_mask		= 0x7fff0000,
		.pvr_value		= 0x00810000,
		.cpu_name		= "82xx",
748
		.cpu_features		= CPU_FTRS_82XX,
S
Stephen Rothwell 已提交
749
		.cpu_user_features	= COMMON_USER,
L
Linus Torvalds 已提交
750 751
		.icache_bsize		= 32,
		.dcache_bsize		= 32,
752 753
		.cpu_setup		= __setup_cpu_603,
		.platform		= "ppc603",
L
Linus Torvalds 已提交
754 755 756 757 758
	},
	{	/* All G2_LE (603e core, plus some) have the same pvr */
		.pvr_mask		= 0x7fff0000,
		.pvr_value		= 0x00820000,
		.cpu_name		= "G2_LE",
759
		.cpu_features		= CPU_FTRS_G2_LE,
S
Stephen Rothwell 已提交
760
		.cpu_user_features	= COMMON_USER,
L
Linus Torvalds 已提交
761 762
		.icache_bsize		= 32,
		.dcache_bsize		= 32,
763 764
		.cpu_setup		= __setup_cpu_603,
		.platform		= "ppc603",
L
Linus Torvalds 已提交
765
	},
766
	{	/* e300c1 (a 603e core, plus some) on 83xx */
L
Linus Torvalds 已提交
767 768
		.pvr_mask		= 0x7fff0000,
		.pvr_value		= 0x00830000,
769
		.cpu_name		= "e300c1",
770
		.cpu_features		= CPU_FTRS_E300,
S
Stephen Rothwell 已提交
771
		.cpu_user_features	= COMMON_USER,
L
Linus Torvalds 已提交
772 773
		.icache_bsize		= 32,
		.dcache_bsize		= 32,
774 775
		.cpu_setup		= __setup_cpu_603,
		.platform		= "ppc603",
L
Linus Torvalds 已提交
776
	},
777 778 779 780 781 782 783 784 785 786 787
	{	/* e300c2 (an e300c1 core, plus some, minus FPU) on 83xx */
		.pvr_mask		= 0x7fff0000,
		.pvr_value		= 0x00840000,
		.cpu_name		= "e300c2",
		.cpu_features		= CPU_FTRS_E300,
		.cpu_user_features	= PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU,
		.icache_bsize		= 32,
		.dcache_bsize		= 32,
		.cpu_setup		= __setup_cpu_603,
		.platform		= "ppc603",
	},
L
Linus Torvalds 已提交
788 789 790 791
	{	/* default match, we assume split I/D cache & TB (non-601)... */
		.pvr_mask		= 0x00000000,
		.pvr_value		= 0x00000000,
		.cpu_name		= "(generic PPC)",
792
		.cpu_features		= CPU_FTRS_CLASSIC32,
S
Stephen Rothwell 已提交
793
		.cpu_user_features	= COMMON_USER,
L
Linus Torvalds 已提交
794 795
		.icache_bsize		= 32,
		.dcache_bsize		= 32,
796
		.platform		= "ppc603",
L
Linus Torvalds 已提交
797 798 799 800 801 802 803 804 805
	},
#endif /* CLASSIC_PPC */
#ifdef CONFIG_8xx
	{	/* 8xx */
		.pvr_mask		= 0xffff0000,
		.pvr_value		= 0x00500000,
		.cpu_name		= "8xx",
		/* CPU_FTR_MAYBE_CAN_DOZE is possible,
		 * if the 8xx code is there.... */
806
		.cpu_features		= CPU_FTRS_8XX,
L
Linus Torvalds 已提交
807 808 809
		.cpu_user_features	= PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU,
		.icache_bsize		= 16,
		.dcache_bsize		= 16,
810
		.platform		= "ppc823",
L
Linus Torvalds 已提交
811 812 813 814 815 816 817
	},
#endif /* CONFIG_8xx */
#ifdef CONFIG_40x
	{	/* 403GC */
		.pvr_mask		= 0xffffff00,
		.pvr_value		= 0x00200200,
		.cpu_name		= "403GC",
818
		.cpu_features		= CPU_FTRS_40X,
L
Linus Torvalds 已提交
819 820 821
		.cpu_user_features	= PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU,
		.icache_bsize		= 16,
		.dcache_bsize		= 16,
822
		.platform		= "ppc403",
L
Linus Torvalds 已提交
823 824 825 826 827
	},
	{	/* 403GCX */
		.pvr_mask		= 0xffffff00,
		.pvr_value		= 0x00201400,
		.cpu_name		= "403GCX",
828
		.cpu_features		= CPU_FTRS_40X,
829 830
		.cpu_user_features	= PPC_FEATURE_32 |
		 	PPC_FEATURE_HAS_MMU | PPC_FEATURE_NO_TB,
L
Linus Torvalds 已提交
831 832
		.icache_bsize		= 16,
		.dcache_bsize		= 16,
833
		.platform		= "ppc403",
L
Linus Torvalds 已提交
834 835 836 837 838
	},
	{	/* 403G ?? */
		.pvr_mask		= 0xffff0000,
		.pvr_value		= 0x00200000,
		.cpu_name		= "403G ??",
839
		.cpu_features		= CPU_FTRS_40X,
L
Linus Torvalds 已提交
840 841 842
		.cpu_user_features	= PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU,
		.icache_bsize		= 16,
		.dcache_bsize		= 16,
843
		.platform		= "ppc403",
L
Linus Torvalds 已提交
844 845 846 847 848
	},
	{	/* 405GP */
		.pvr_mask		= 0xffff0000,
		.pvr_value		= 0x40110000,
		.cpu_name		= "405GP",
849
		.cpu_features		= CPU_FTRS_40X,
L
Linus Torvalds 已提交
850 851 852 853
		.cpu_user_features	= PPC_FEATURE_32 |
			PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC,
		.icache_bsize		= 32,
		.dcache_bsize		= 32,
854
		.platform		= "ppc405",
L
Linus Torvalds 已提交
855 856 857 858 859
	},
	{	/* STB 03xxx */
		.pvr_mask		= 0xffff0000,
		.pvr_value		= 0x40130000,
		.cpu_name		= "STB03xxx",
860
		.cpu_features		= CPU_FTRS_40X,
L
Linus Torvalds 已提交
861 862 863 864
		.cpu_user_features	= PPC_FEATURE_32 |
			PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC,
		.icache_bsize		= 32,
		.dcache_bsize		= 32,
865
		.platform		= "ppc405",
L
Linus Torvalds 已提交
866 867 868 869 870
	},
	{	/* STB 04xxx */
		.pvr_mask		= 0xffff0000,
		.pvr_value		= 0x41810000,
		.cpu_name		= "STB04xxx",
871
		.cpu_features		= CPU_FTRS_40X,
L
Linus Torvalds 已提交
872 873 874 875
		.cpu_user_features	= PPC_FEATURE_32 |
			PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC,
		.icache_bsize		= 32,
		.dcache_bsize		= 32,
876
		.platform		= "ppc405",
L
Linus Torvalds 已提交
877 878 879 880 881
	},
	{	/* NP405L */
		.pvr_mask		= 0xffff0000,
		.pvr_value		= 0x41610000,
		.cpu_name		= "NP405L",
882
		.cpu_features		= CPU_FTRS_40X,
L
Linus Torvalds 已提交
883 884 885 886
		.cpu_user_features	= PPC_FEATURE_32 |
			PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC,
		.icache_bsize		= 32,
		.dcache_bsize		= 32,
887
		.platform		= "ppc405",
L
Linus Torvalds 已提交
888 889 890 891 892
	},
	{	/* NP4GS3 */
		.pvr_mask		= 0xffff0000,
		.pvr_value		= 0x40B10000,
		.cpu_name		= "NP4GS3",
893
		.cpu_features		= CPU_FTRS_40X,
L
Linus Torvalds 已提交
894 895 896 897
		.cpu_user_features	= PPC_FEATURE_32 |
			PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC,
		.icache_bsize		= 32,
		.dcache_bsize		= 32,
898
		.platform		= "ppc405",
L
Linus Torvalds 已提交
899 900 901 902 903
	},
	{   /* NP405H */
		.pvr_mask		= 0xffff0000,
		.pvr_value		= 0x41410000,
		.cpu_name		= "NP405H",
904
		.cpu_features		= CPU_FTRS_40X,
L
Linus Torvalds 已提交
905 906 907 908
		.cpu_user_features	= PPC_FEATURE_32 |
			PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC,
		.icache_bsize		= 32,
		.dcache_bsize		= 32,
909
		.platform		= "ppc405",
L
Linus Torvalds 已提交
910 911 912 913 914
	},
	{	/* 405GPr */
		.pvr_mask		= 0xffff0000,
		.pvr_value		= 0x50910000,
		.cpu_name		= "405GPr",
915
		.cpu_features		= CPU_FTRS_40X,
L
Linus Torvalds 已提交
916 917 918 919
		.cpu_user_features	= PPC_FEATURE_32 |
			PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC,
		.icache_bsize		= 32,
		.dcache_bsize		= 32,
920
		.platform		= "ppc405",
L
Linus Torvalds 已提交
921 922 923 924 925
	},
	{   /* STBx25xx */
		.pvr_mask		= 0xffff0000,
		.pvr_value		= 0x51510000,
		.cpu_name		= "STBx25xx",
926
		.cpu_features		= CPU_FTRS_40X,
L
Linus Torvalds 已提交
927 928 929 930
		.cpu_user_features	= PPC_FEATURE_32 |
			PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC,
		.icache_bsize		= 32,
		.dcache_bsize		= 32,
931
		.platform		= "ppc405",
L
Linus Torvalds 已提交
932 933 934 935 936
	},
	{	/* 405LP */
		.pvr_mask		= 0xffff0000,
		.pvr_value		= 0x41F10000,
		.cpu_name		= "405LP",
937
		.cpu_features		= CPU_FTRS_40X,
L
Linus Torvalds 已提交
938 939 940
		.cpu_user_features	= PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU,
		.icache_bsize		= 32,
		.dcache_bsize		= 32,
941
		.platform		= "ppc405",
L
Linus Torvalds 已提交
942 943
	},
	{	/* Xilinx Virtex-II Pro  */
944
		.pvr_mask		= 0xfffff000,
L
Linus Torvalds 已提交
945 946
		.pvr_value		= 0x20010000,
		.cpu_name		= "Virtex-II Pro",
947
		.cpu_features		= CPU_FTRS_40X,
L
Linus Torvalds 已提交
948 949 950 951
		.cpu_user_features	= PPC_FEATURE_32 |
			PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC,
		.icache_bsize		= 32,
		.dcache_bsize		= 32,
952
		.platform		= "ppc405",
L
Linus Torvalds 已提交
953
	},
954 955 956 957 958 959 960 961 962
	{	/* Xilinx Virtex-4 FX */
		.pvr_mask		= 0xfffff000,
		.pvr_value		= 0x20011000,
		.cpu_name		= "Virtex-4 FX",
		.cpu_features		= CPU_FTRS_40X,
		.cpu_user_features	= PPC_FEATURE_32 |
			PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC,
		.icache_bsize		= 32,
		.dcache_bsize		= 32,
963
		.platform		= "ppc405",
964
	},
965 966 967 968
	{	/* 405EP */
		.pvr_mask		= 0xffff0000,
		.pvr_value		= 0x51210000,
		.cpu_name		= "405EP",
969
		.cpu_features		= CPU_FTRS_40X,
970 971 972 973
		.cpu_user_features	= PPC_FEATURE_32 |
			PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC,
		.icache_bsize		= 32,
		.dcache_bsize		= 32,
974
		.platform		= "ppc405",
975
	},
L
Linus Torvalds 已提交
976 977 978

#endif /* CONFIG_40x */
#ifdef CONFIG_44x
M
Matt Porter 已提交
979 980 981 982
	{
		.pvr_mask		= 0xf0000fff,
		.pvr_value		= 0x40000850,
		.cpu_name		= "440EP Rev. A",
983
		.cpu_features		= CPU_FTRS_44X,
984
		.cpu_user_features	= COMMON_USER_BOOKE | PPC_FEATURE_HAS_FPU,
M
Matt Porter 已提交
985 986
		.icache_bsize		= 32,
		.dcache_bsize		= 32,
987
		.platform		= "ppc440",
M
Matt Porter 已提交
988 989 990 991 992
	},
	{
		.pvr_mask		= 0xf0000fff,
		.pvr_value		= 0x400008d3,
		.cpu_name		= "440EP Rev. B",
993
		.cpu_features		= CPU_FTRS_44X,
994
		.cpu_user_features	= COMMON_USER_BOOKE | PPC_FEATURE_HAS_FPU,
M
Matt Porter 已提交
995 996
		.icache_bsize		= 32,
		.dcache_bsize		= 32,
997
		.platform		= "ppc440",
M
Matt Porter 已提交
998
	},
S
Stephen Rothwell 已提交
999
	{	/* 440GP Rev. B */
L
Linus Torvalds 已提交
1000 1001 1002
		.pvr_mask		= 0xf0000fff,
		.pvr_value		= 0x40000440,
		.cpu_name		= "440GP Rev. B",
1003
		.cpu_features		= CPU_FTRS_44X,
1004
		.cpu_user_features	= COMMON_USER_BOOKE,
L
Linus Torvalds 已提交
1005 1006
		.icache_bsize		= 32,
		.dcache_bsize		= 32,
1007
		.platform		= "ppc440gp",
L
Linus Torvalds 已提交
1008
	},
S
Stephen Rothwell 已提交
1009
	{	/* 440GP Rev. C */
L
Linus Torvalds 已提交
1010 1011 1012
		.pvr_mask		= 0xf0000fff,
		.pvr_value		= 0x40000481,
		.cpu_name		= "440GP Rev. C",
1013
		.cpu_features		= CPU_FTRS_44X,
1014
		.cpu_user_features	= COMMON_USER_BOOKE,
L
Linus Torvalds 已提交
1015 1016
		.icache_bsize		= 32,
		.dcache_bsize		= 32,
1017
		.platform		= "ppc440gp",
L
Linus Torvalds 已提交
1018 1019 1020 1021 1022
	},
	{ /* 440GX Rev. A */
		.pvr_mask		= 0xf0000fff,
		.pvr_value		= 0x50000850,
		.cpu_name		= "440GX Rev. A",
1023
		.cpu_features		= CPU_FTRS_44X,
1024
		.cpu_user_features	= COMMON_USER_BOOKE,
L
Linus Torvalds 已提交
1025 1026
		.icache_bsize		= 32,
		.dcache_bsize		= 32,
1027
		.platform		= "ppc440",
L
Linus Torvalds 已提交
1028 1029 1030 1031 1032
	},
	{ /* 440GX Rev. B */
		.pvr_mask		= 0xf0000fff,
		.pvr_value		= 0x50000851,
		.cpu_name		= "440GX Rev. B",
1033
		.cpu_features		= CPU_FTRS_44X,
1034
		.cpu_user_features	= COMMON_USER_BOOKE,
L
Linus Torvalds 已提交
1035 1036
		.icache_bsize		= 32,
		.dcache_bsize		= 32,
1037
		.platform		= "ppc440",
L
Linus Torvalds 已提交
1038 1039 1040 1041 1042
	},
	{ /* 440GX Rev. C */
		.pvr_mask		= 0xf0000fff,
		.pvr_value		= 0x50000892,
		.cpu_name		= "440GX Rev. C",
1043
		.cpu_features		= CPU_FTRS_44X,
1044
		.cpu_user_features	= COMMON_USER_BOOKE,
L
Linus Torvalds 已提交
1045 1046
		.icache_bsize		= 32,
		.dcache_bsize		= 32,
1047
		.platform		= "ppc440",
L
Linus Torvalds 已提交
1048
	},
1049 1050 1051 1052
	{ /* 440GX Rev. F */
		.pvr_mask		= 0xf0000fff,
		.pvr_value		= 0x50000894,
		.cpu_name		= "440GX Rev. F",
1053
		.cpu_features		= CPU_FTRS_44X,
1054
		.cpu_user_features	= COMMON_USER_BOOKE,
1055 1056
		.icache_bsize		= 32,
		.dcache_bsize		= 32,
1057
		.platform		= "ppc440",
1058
	},
1059 1060 1061 1062
	{ /* 440SP Rev. A */
		.pvr_mask		= 0xff000fff,
		.pvr_value		= 0x53000891,
		.cpu_name		= "440SP Rev. A",
1063
		.cpu_features		= CPU_FTRS_44X,
1064
		.cpu_user_features	= COMMON_USER_BOOKE,
1065 1066
		.icache_bsize		= 32,
		.dcache_bsize		= 32,
1067
		.platform		= "ppc440",
1068
	},
R
Roland Dreier 已提交
1069 1070 1071 1072 1073 1074
	{ /* 440SPe Rev. A */
		.pvr_mask		= 0xff000fff,
		.pvr_value		= 0x53000890,
		.cpu_name		= "440SPe Rev. A",
		.cpu_features		= CPU_FTR_SPLIT_ID_CACHE |
			CPU_FTR_USE_TB,
1075
		.cpu_user_features	= COMMON_USER_BOOKE,
R
Roland Dreier 已提交
1076 1077
		.icache_bsize		= 32,
		.dcache_bsize		= 32,
1078
		.platform		= "ppc440",
R
Roland Dreier 已提交
1079
	},
L
Linus Torvalds 已提交
1080
#endif /* CONFIG_44x */
1081
#ifdef CONFIG_FSL_BOOKE
S
Stephen Rothwell 已提交
1082
	{	/* e200z5 */
1083 1084 1085 1086
		.pvr_mask		= 0xfff00000,
		.pvr_value		= 0x81000000,
		.cpu_name		= "e200z5",
		/* xxx - galak: add CPU_FTR_MAYBE_CAN_DOZE */
1087
		.cpu_features		= CPU_FTRS_E200,
1088 1089
		.cpu_user_features	= COMMON_USER_BOOKE |
			PPC_FEATURE_HAS_EFP_SINGLE |
1090 1091
			PPC_FEATURE_UNIFIED_CACHE,
		.dcache_bsize		= 32,
1092
		.platform		= "ppc5554",
1093
	},
S
Stephen Rothwell 已提交
1094
	{	/* e200z6 */
1095 1096 1097 1098
		.pvr_mask		= 0xfff00000,
		.pvr_value		= 0x81100000,
		.cpu_name		= "e200z6",
		/* xxx - galak: add CPU_FTR_MAYBE_CAN_DOZE */
1099
		.cpu_features		= CPU_FTRS_E200,
1100 1101
		.cpu_user_features	= COMMON_USER_BOOKE |
			PPC_FEATURE_SPE_COMP |
1102 1103 1104
			PPC_FEATURE_HAS_EFP_SINGLE |
			PPC_FEATURE_UNIFIED_CACHE,
		.dcache_bsize		= 32,
1105
		.platform		= "ppc5554",
1106
	},
S
Stephen Rothwell 已提交
1107
	{	/* e500 */
L
Linus Torvalds 已提交
1108 1109 1110 1111
		.pvr_mask		= 0xffff0000,
		.pvr_value		= 0x80200000,
		.cpu_name		= "e500",
		/* xxx - galak: add CPU_FTR_MAYBE_CAN_DOZE */
1112
		.cpu_features		= CPU_FTRS_E500,
1113 1114
		.cpu_user_features	= COMMON_USER_BOOKE |
			PPC_FEATURE_SPE_COMP |
L
Linus Torvalds 已提交
1115 1116 1117 1118
			PPC_FEATURE_HAS_EFP_SINGLE,
		.icache_bsize		= 32,
		.dcache_bsize		= 32,
		.num_pmcs		= 4,
1119
		.oprofile_cpu_type	= "ppc/e500",
1120
		.oprofile_type		= PPC_OPROFILE_BOOKE,
1121
		.platform		= "ppc8540",
L
Linus Torvalds 已提交
1122
	},
S
Stephen Rothwell 已提交
1123
	{	/* e500v2 */
1124 1125 1126 1127
		.pvr_mask		= 0xffff0000,
		.pvr_value		= 0x80210000,
		.cpu_name		= "e500v2",
		/* xxx - galak: add CPU_FTR_MAYBE_CAN_DOZE */
1128
		.cpu_features		= CPU_FTRS_E500_2,
1129 1130 1131 1132
		.cpu_user_features	= COMMON_USER_BOOKE |
			PPC_FEATURE_SPE_COMP |
			PPC_FEATURE_HAS_EFP_SINGLE |
			PPC_FEATURE_HAS_EFP_DOUBLE,
1133 1134 1135
		.icache_bsize		= 32,
		.dcache_bsize		= 32,
		.num_pmcs		= 4,
1136
		.oprofile_cpu_type	= "ppc/e500",
1137
		.oprofile_type		= PPC_OPROFILE_BOOKE,
1138
		.platform		= "ppc8548",
1139
	},
L
Linus Torvalds 已提交
1140 1141 1142 1143 1144 1145
#endif
#if !CLASSIC_PPC
	{	/* default match */
		.pvr_mask		= 0x00000000,
		.pvr_value		= 0x00000000,
		.cpu_name		= "(generic PPC)",
1146
		.cpu_features		= CPU_FTRS_GENERIC_32,
L
Linus Torvalds 已提交
1147 1148 1149
		.cpu_user_features	= PPC_FEATURE_32,
		.icache_bsize		= 32,
		.dcache_bsize		= 32,
1150
		.platform		= "powerpc",
L
Linus Torvalds 已提交
1151 1152
	}
#endif /* !CLASSIC_PPC */
S
Stephen Rothwell 已提交
1153
#endif /* CONFIG_PPC32 */
L
Linus Torvalds 已提交
1154
};