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

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

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

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

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

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

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