cputable.c 30.2 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 33 34 35 36 37
/* 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
 */
#ifdef CONFIG_PPC64
extern void __setup_cpu_power3(unsigned long offset, struct cpu_spec* spec);
extern void __setup_cpu_power4(unsigned long offset, struct cpu_spec* spec);
extern void __setup_cpu_be(unsigned long offset, struct cpu_spec* spec);
#else
38 39 40 41 42 43 44 45
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 已提交
46
#endif /* CONFIG_PPC32 */
47
extern void __setup_cpu_ppc970(unsigned long offset, struct cpu_spec* spec);
L
Linus Torvalds 已提交
48 49 50 51

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

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

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

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