cputable.c 27.5 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)
S
Stephen Rothwell 已提交
58

L
Linus Torvalds 已提交
59 60 61 62 63

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

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

#endif /* CONFIG_40x */
#ifdef CONFIG_44x
M
Matt Porter 已提交
850 851 852 853
	{
		.pvr_mask		= 0xf0000fff,
		.pvr_value		= 0x40000850,
		.cpu_name		= "440EP Rev. A",
854
		.cpu_features		= CPU_FTRS_44X,
S
Stephen Rothwell 已提交
855
		.cpu_user_features	= COMMON_USER, /* 440EP has an FPU */
M
Matt Porter 已提交
856 857 858 859 860 861 862
		.icache_bsize		= 32,
		.dcache_bsize		= 32,
	},
	{
		.pvr_mask		= 0xf0000fff,
		.pvr_value		= 0x400008d3,
		.cpu_name		= "440EP Rev. B",
863
		.cpu_features		= CPU_FTRS_44X,
S
Stephen Rothwell 已提交
864
		.cpu_user_features	= COMMON_USER, /* 440EP has an FPU */
M
Matt Porter 已提交
865 866 867
		.icache_bsize		= 32,
		.dcache_bsize		= 32,
	},
S
Stephen Rothwell 已提交
868
	{	/* 440GP Rev. B */
L
Linus Torvalds 已提交
869 870 871
		.pvr_mask		= 0xf0000fff,
		.pvr_value		= 0x40000440,
		.cpu_name		= "440GP Rev. B",
872
		.cpu_features		= CPU_FTRS_44X,
L
Linus Torvalds 已提交
873 874 875 876
		.cpu_user_features	= PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU,
		.icache_bsize		= 32,
		.dcache_bsize		= 32,
	},
S
Stephen Rothwell 已提交
877
	{	/* 440GP Rev. C */
L
Linus Torvalds 已提交
878 879 880
		.pvr_mask		= 0xf0000fff,
		.pvr_value		= 0x40000481,
		.cpu_name		= "440GP Rev. C",
881
		.cpu_features		= CPU_FTRS_44X,
L
Linus Torvalds 已提交
882 883 884 885 886 887 888 889
		.cpu_user_features	= PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU,
		.icache_bsize		= 32,
		.dcache_bsize		= 32,
	},
	{ /* 440GX Rev. A */
		.pvr_mask		= 0xf0000fff,
		.pvr_value		= 0x50000850,
		.cpu_name		= "440GX Rev. A",
890
		.cpu_features		= CPU_FTRS_44X,
L
Linus Torvalds 已提交
891 892 893 894 895 896 897 898
		.cpu_user_features	= PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU,
		.icache_bsize		= 32,
		.dcache_bsize		= 32,
	},
	{ /* 440GX Rev. B */
		.pvr_mask		= 0xf0000fff,
		.pvr_value		= 0x50000851,
		.cpu_name		= "440GX Rev. B",
899
		.cpu_features		= CPU_FTRS_44X,
L
Linus Torvalds 已提交
900 901 902 903 904 905 906 907
		.cpu_user_features	= PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU,
		.icache_bsize		= 32,
		.dcache_bsize		= 32,
	},
	{ /* 440GX Rev. C */
		.pvr_mask		= 0xf0000fff,
		.pvr_value		= 0x50000892,
		.cpu_name		= "440GX Rev. C",
908
		.cpu_features		= CPU_FTRS_44X,
L
Linus Torvalds 已提交
909 910 911 912
		.cpu_user_features	= PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU,
		.icache_bsize		= 32,
		.dcache_bsize		= 32,
	},
913 914 915 916
	{ /* 440GX Rev. F */
		.pvr_mask		= 0xf0000fff,
		.pvr_value		= 0x50000894,
		.cpu_name		= "440GX Rev. F",
917
		.cpu_features		= CPU_FTRS_44X,
918 919 920 921
		.cpu_user_features	= PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU,
		.icache_bsize		= 32,
		.dcache_bsize		= 32,
	},
922 923 924 925
	{ /* 440SP Rev. A */
		.pvr_mask		= 0xff000fff,
		.pvr_value		= 0x53000891,
		.cpu_name		= "440SP Rev. A",
926
		.cpu_features		= CPU_FTRS_44X,
927 928 929 930
		.cpu_user_features	= PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU,
		.icache_bsize		= 32,
		.dcache_bsize		= 32,
	},
R
Roland Dreier 已提交
931 932 933 934 935 936 937 938 939 940
	{ /* 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,
		.cpu_user_features	= PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU,
		.icache_bsize		= 32,
		.dcache_bsize		= 32,
	},
L
Linus Torvalds 已提交
941
#endif /* CONFIG_44x */
942
#ifdef CONFIG_FSL_BOOKE
S
Stephen Rothwell 已提交
943
	{	/* e200z5 */
944 945 946 947
		.pvr_mask		= 0xfff00000,
		.pvr_value		= 0x81000000,
		.cpu_name		= "e200z5",
		/* xxx - galak: add CPU_FTR_MAYBE_CAN_DOZE */
948
		.cpu_features		= CPU_FTRS_E200,
949 950 951 952 953
		.cpu_user_features	= PPC_FEATURE_32 |
			PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_EFP_SINGLE |
			PPC_FEATURE_UNIFIED_CACHE,
		.dcache_bsize		= 32,
	},
S
Stephen Rothwell 已提交
954
	{	/* e200z6 */
955 956 957 958
		.pvr_mask		= 0xfff00000,
		.pvr_value		= 0x81100000,
		.cpu_name		= "e200z6",
		/* xxx - galak: add CPU_FTR_MAYBE_CAN_DOZE */
959
		.cpu_features		= CPU_FTRS_E200,
960 961 962 963 964 965
		.cpu_user_features	= PPC_FEATURE_32 |
			PPC_FEATURE_HAS_MMU | PPC_FEATURE_SPE_COMP |
			PPC_FEATURE_HAS_EFP_SINGLE |
			PPC_FEATURE_UNIFIED_CACHE,
		.dcache_bsize		= 32,
	},
S
Stephen Rothwell 已提交
966
	{	/* e500 */
L
Linus Torvalds 已提交
967 968 969 970
		.pvr_mask		= 0xffff0000,
		.pvr_value		= 0x80200000,
		.cpu_name		= "e500",
		/* xxx - galak: add CPU_FTR_MAYBE_CAN_DOZE */
971
		.cpu_features		= CPU_FTRS_E500,
L
Linus Torvalds 已提交
972 973 974 975 976 977
		.cpu_user_features	= PPC_FEATURE_32 |
			PPC_FEATURE_HAS_MMU | PPC_FEATURE_SPE_COMP |
			PPC_FEATURE_HAS_EFP_SINGLE,
		.icache_bsize		= 32,
		.dcache_bsize		= 32,
		.num_pmcs		= 4,
978
		.oprofile_cpu_type	= "ppc/e500",
979
		.oprofile_type		= BOOKE,
L
Linus Torvalds 已提交
980
	},
S
Stephen Rothwell 已提交
981
	{	/* e500v2 */
982 983 984 985
		.pvr_mask		= 0xffff0000,
		.pvr_value		= 0x80210000,
		.cpu_name		= "e500v2",
		/* xxx - galak: add CPU_FTR_MAYBE_CAN_DOZE */
986
		.cpu_features		= CPU_FTRS_E500_2,
987 988 989 990 991 992
		.cpu_user_features	= PPC_FEATURE_32 |
			PPC_FEATURE_HAS_MMU | PPC_FEATURE_SPE_COMP |
			PPC_FEATURE_HAS_EFP_SINGLE | PPC_FEATURE_HAS_EFP_DOUBLE,
		.icache_bsize		= 32,
		.dcache_bsize		= 32,
		.num_pmcs		= 4,
993
		.oprofile_cpu_type	= "ppc/e500",
994
		.oprofile_type		= BOOKE,
995
	},
L
Linus Torvalds 已提交
996 997 998 999 1000 1001
#endif
#if !CLASSIC_PPC
	{	/* default match */
		.pvr_mask		= 0x00000000,
		.pvr_value		= 0x00000000,
		.cpu_name		= "(generic PPC)",
1002
		.cpu_features		= CPU_FTRS_GENERIC_32,
L
Linus Torvalds 已提交
1003 1004 1005 1006 1007
		.cpu_user_features	= PPC_FEATURE_32,
		.icache_bsize		= 32,
		.dcache_bsize		= 32,
	}
#endif /* !CLASSIC_PPC */
S
Stephen Rothwell 已提交
1008
#endif /* CONFIG_PPC32 */
L
Linus Torvalds 已提交
1009
};