cputable.c 30.0 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 17
 *  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/config.h>
#include <linux/string.h>
#include <linux/sched.h>
#include <linux/threads.h>
#include <linux/init.h>
18 19 20
#include <linux/module.h>

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

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

S
Stephen Rothwell 已提交
26 27 28 29 30 31 32
/* 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
 */
33
#ifdef CONFIG_PPC32
34 35 36 37 38 39 40 41
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 已提交
42
#endif /* CONFIG_PPC32 */
43
extern void __setup_cpu_ppc970(unsigned long offset, struct cpu_spec* spec);
L
Linus Torvalds 已提交
44 45 46 47

/* This table only contains "desktop" CPUs, it need to be filled with embedded
 * ones as well...
 */
S
Stephen Rothwell 已提交
48 49 50
#define COMMON_USER		(PPC_FEATURE_32 | PPC_FEATURE_HAS_FPU | \
				 PPC_FEATURE_HAS_MMU)
#define COMMON_USER_PPC64	(COMMON_USER | PPC_FEATURE_64)
51
#define COMMON_USER_POWER4	(COMMON_USER_PPC64 | PPC_FEATURE_POWER4)
52 53 54 55
#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)
56 57
#define COMMON_USER_POWER6	(COMMON_USER_PPC64 | PPC_FEATURE_ARCH_2_05 |\
				 PPC_FEATURE_SMT | PPC_FEATURE_ICACHE_SNOOP)
58 59
#define COMMON_USER_BOOKE	(PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU | \
				 PPC_FEATURE_BOOKE)
L
Linus Torvalds 已提交
60 61 62 63 64

/* We only set the spe features if the kernel was compiled with
 * spe support
 */
#ifdef CONFIG_SPE
S
Stephen Rothwell 已提交
65
#define PPC_FEATURE_SPE_COMP	PPC_FEATURE_HAS_SPE
L
Linus Torvalds 已提交
66
#else
S
Stephen Rothwell 已提交
67
#define PPC_FEATURE_SPE_COMP	0
L
Linus Torvalds 已提交
68 69 70
#endif

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

#endif /* CONFIG_40x */
#ifdef CONFIG_44x
M
Matt Porter 已提交
930 931 932 933
	{
		.pvr_mask		= 0xf0000fff,
		.pvr_value		= 0x40000850,
		.cpu_name		= "440EP Rev. A",
934
		.cpu_features		= CPU_FTRS_44X,
935
		.cpu_user_features	= COMMON_USER_BOOKE | PPC_FEATURE_HAS_FPU,
M
Matt Porter 已提交
936 937
		.icache_bsize		= 32,
		.dcache_bsize		= 32,
938
		.platform		= "ppc440",
M
Matt Porter 已提交
939 940 941 942 943
	},
	{
		.pvr_mask		= 0xf0000fff,
		.pvr_value		= 0x400008d3,
		.cpu_name		= "440EP Rev. B",
944
		.cpu_features		= CPU_FTRS_44X,
945
		.cpu_user_features	= COMMON_USER_BOOKE | PPC_FEATURE_HAS_FPU,
M
Matt Porter 已提交
946 947
		.icache_bsize		= 32,
		.dcache_bsize		= 32,
948
		.platform		= "ppc440",
M
Matt Porter 已提交
949
	},
S
Stephen Rothwell 已提交
950
	{	/* 440GP Rev. B */
L
Linus Torvalds 已提交
951 952 953
		.pvr_mask		= 0xf0000fff,
		.pvr_value		= 0x40000440,
		.cpu_name		= "440GP Rev. B",
954
		.cpu_features		= CPU_FTRS_44X,
955
		.cpu_user_features	= COMMON_USER_BOOKE,
L
Linus Torvalds 已提交
956 957
		.icache_bsize		= 32,
		.dcache_bsize		= 32,
958
		.platform		= "ppc440gp",
L
Linus Torvalds 已提交
959
	},
S
Stephen Rothwell 已提交
960
	{	/* 440GP Rev. C */
L
Linus Torvalds 已提交
961 962 963
		.pvr_mask		= 0xf0000fff,
		.pvr_value		= 0x40000481,
		.cpu_name		= "440GP Rev. C",
964
		.cpu_features		= CPU_FTRS_44X,
965
		.cpu_user_features	= COMMON_USER_BOOKE,
L
Linus Torvalds 已提交
966 967
		.icache_bsize		= 32,
		.dcache_bsize		= 32,
968
		.platform		= "ppc440gp",
L
Linus Torvalds 已提交
969 970 971 972 973
	},
	{ /* 440GX Rev. A */
		.pvr_mask		= 0xf0000fff,
		.pvr_value		= 0x50000850,
		.cpu_name		= "440GX Rev. A",
974
		.cpu_features		= CPU_FTRS_44X,
975
		.cpu_user_features	= COMMON_USER_BOOKE,
L
Linus Torvalds 已提交
976 977
		.icache_bsize		= 32,
		.dcache_bsize		= 32,
978
		.platform		= "ppc440",
L
Linus Torvalds 已提交
979 980 981 982 983
	},
	{ /* 440GX Rev. B */
		.pvr_mask		= 0xf0000fff,
		.pvr_value		= 0x50000851,
		.cpu_name		= "440GX Rev. B",
984
		.cpu_features		= CPU_FTRS_44X,
985
		.cpu_user_features	= COMMON_USER_BOOKE,
L
Linus Torvalds 已提交
986 987
		.icache_bsize		= 32,
		.dcache_bsize		= 32,
988
		.platform		= "ppc440",
L
Linus Torvalds 已提交
989 990 991 992 993
	},
	{ /* 440GX Rev. C */
		.pvr_mask		= 0xf0000fff,
		.pvr_value		= 0x50000892,
		.cpu_name		= "440GX Rev. C",
994
		.cpu_features		= CPU_FTRS_44X,
995
		.cpu_user_features	= COMMON_USER_BOOKE,
L
Linus Torvalds 已提交
996 997
		.icache_bsize		= 32,
		.dcache_bsize		= 32,
998
		.platform		= "ppc440",
L
Linus Torvalds 已提交
999
	},
1000 1001 1002 1003
	{ /* 440GX Rev. F */
		.pvr_mask		= 0xf0000fff,
		.pvr_value		= 0x50000894,
		.cpu_name		= "440GX Rev. F",
1004
		.cpu_features		= CPU_FTRS_44X,
1005
		.cpu_user_features	= COMMON_USER_BOOKE,
1006 1007
		.icache_bsize		= 32,
		.dcache_bsize		= 32,
1008
		.platform		= "ppc440",
1009
	},
1010 1011 1012 1013
	{ /* 440SP Rev. A */
		.pvr_mask		= 0xff000fff,
		.pvr_value		= 0x53000891,
		.cpu_name		= "440SP Rev. A",
1014
		.cpu_features		= CPU_FTRS_44X,
1015
		.cpu_user_features	= COMMON_USER_BOOKE,
1016 1017
		.icache_bsize		= 32,
		.dcache_bsize		= 32,
1018
		.platform		= "ppc440",
1019
	},
R
Roland Dreier 已提交
1020 1021 1022 1023 1024 1025
	{ /* 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,
1026
		.cpu_user_features	= COMMON_USER_BOOKE,
R
Roland Dreier 已提交
1027 1028
		.icache_bsize		= 32,
		.dcache_bsize		= 32,
1029
		.platform		= "ppc440",
R
Roland Dreier 已提交
1030
	},
L
Linus Torvalds 已提交
1031
#endif /* CONFIG_44x */
1032
#ifdef CONFIG_FSL_BOOKE
S
Stephen Rothwell 已提交
1033
	{	/* e200z5 */
1034 1035 1036 1037
		.pvr_mask		= 0xfff00000,
		.pvr_value		= 0x81000000,
		.cpu_name		= "e200z5",
		/* xxx - galak: add CPU_FTR_MAYBE_CAN_DOZE */
1038
		.cpu_features		= CPU_FTRS_E200,
1039 1040
		.cpu_user_features	= COMMON_USER_BOOKE |
			PPC_FEATURE_HAS_EFP_SINGLE |
1041 1042
			PPC_FEATURE_UNIFIED_CACHE,
		.dcache_bsize		= 32,
1043
		.platform		= "ppc5554",
1044
	},
S
Stephen Rothwell 已提交
1045
	{	/* e200z6 */
1046 1047 1048 1049
		.pvr_mask		= 0xfff00000,
		.pvr_value		= 0x81100000,
		.cpu_name		= "e200z6",
		/* xxx - galak: add CPU_FTR_MAYBE_CAN_DOZE */
1050
		.cpu_features		= CPU_FTRS_E200,
1051 1052
		.cpu_user_features	= COMMON_USER_BOOKE |
			PPC_FEATURE_SPE_COMP |
1053 1054 1055
			PPC_FEATURE_HAS_EFP_SINGLE |
			PPC_FEATURE_UNIFIED_CACHE,
		.dcache_bsize		= 32,
1056
		.platform		= "ppc5554",
1057
	},
S
Stephen Rothwell 已提交
1058
	{	/* e500 */
L
Linus Torvalds 已提交
1059 1060 1061 1062
		.pvr_mask		= 0xffff0000,
		.pvr_value		= 0x80200000,
		.cpu_name		= "e500",
		/* xxx - galak: add CPU_FTR_MAYBE_CAN_DOZE */
1063
		.cpu_features		= CPU_FTRS_E500,
1064 1065
		.cpu_user_features	= COMMON_USER_BOOKE |
			PPC_FEATURE_SPE_COMP |
L
Linus Torvalds 已提交
1066 1067 1068 1069
			PPC_FEATURE_HAS_EFP_SINGLE,
		.icache_bsize		= 32,
		.dcache_bsize		= 32,
		.num_pmcs		= 4,
1070
		.oprofile_cpu_type	= "ppc/e500",
1071
		.oprofile_type		= PPC_OPROFILE_BOOKE,
1072
		.platform		= "ppc8540",
L
Linus Torvalds 已提交
1073
	},
S
Stephen Rothwell 已提交
1074
	{	/* e500v2 */
1075 1076 1077 1078
		.pvr_mask		= 0xffff0000,
		.pvr_value		= 0x80210000,
		.cpu_name		= "e500v2",
		/* xxx - galak: add CPU_FTR_MAYBE_CAN_DOZE */
1079
		.cpu_features		= CPU_FTRS_E500_2,
1080 1081 1082 1083
		.cpu_user_features	= COMMON_USER_BOOKE |
			PPC_FEATURE_SPE_COMP |
			PPC_FEATURE_HAS_EFP_SINGLE |
			PPC_FEATURE_HAS_EFP_DOUBLE,
1084 1085 1086
		.icache_bsize		= 32,
		.dcache_bsize		= 32,
		.num_pmcs		= 4,
1087
		.oprofile_cpu_type	= "ppc/e500",
1088
		.oprofile_type		= PPC_OPROFILE_BOOKE,
1089
		.platform		= "ppc8548",
1090
	},
L
Linus Torvalds 已提交
1091 1092 1093 1094 1095 1096
#endif
#if !CLASSIC_PPC
	{	/* default match */
		.pvr_mask		= 0x00000000,
		.pvr_value		= 0x00000000,
		.cpu_name		= "(generic PPC)",
1097
		.cpu_features		= CPU_FTRS_GENERIC_32,
L
Linus Torvalds 已提交
1098 1099 1100
		.cpu_user_features	= PPC_FEATURE_32,
		.icache_bsize		= 32,
		.dcache_bsize		= 32,
1101
		.platform		= "powerpc",
L
Linus Torvalds 已提交
1102 1103
	}
#endif /* !CLASSIC_PPC */
S
Stephen Rothwell 已提交
1104
#endif /* CONFIG_PPC32 */
L
Linus Torvalds 已提交
1105
};