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

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