cputable.c 32.3 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 */
O
Olof Johansson 已提交
42
#ifdef CONFIG_PPC64
43
extern void __setup_cpu_ppc970(unsigned long offset, struct cpu_spec* spec);
O
Olof Johansson 已提交
44 45
extern void __restore_cpu_ppc970(void);
#endif /* CONFIG_PPC64 */
L
Linus Torvalds 已提交
46 47 48 49

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

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

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

#endif /* CONFIG_40x */
#ifdef CONFIG_44x
M
Matt Porter 已提交
994 995 996 997
	{
		.pvr_mask		= 0xf0000fff,
		.pvr_value		= 0x40000850,
		.cpu_name		= "440EP Rev. A",
998
		.cpu_features		= CPU_FTRS_44X,
999
		.cpu_user_features	= COMMON_USER_BOOKE | PPC_FEATURE_HAS_FPU,
M
Matt Porter 已提交
1000 1001
		.icache_bsize		= 32,
		.dcache_bsize		= 32,
1002
		.platform		= "ppc440",
M
Matt Porter 已提交
1003 1004 1005 1006 1007
	},
	{
		.pvr_mask		= 0xf0000fff,
		.pvr_value		= 0x400008d3,
		.cpu_name		= "440EP Rev. B",
1008
		.cpu_features		= CPU_FTRS_44X,
1009
		.cpu_user_features	= COMMON_USER_BOOKE | PPC_FEATURE_HAS_FPU,
M
Matt Porter 已提交
1010 1011
		.icache_bsize		= 32,
		.dcache_bsize		= 32,
1012
		.platform		= "ppc440",
M
Matt Porter 已提交
1013
	},
S
Stephen Rothwell 已提交
1014
	{	/* 440GP Rev. B */
L
Linus Torvalds 已提交
1015 1016 1017
		.pvr_mask		= 0xf0000fff,
		.pvr_value		= 0x40000440,
		.cpu_name		= "440GP Rev. B",
1018
		.cpu_features		= CPU_FTRS_44X,
1019
		.cpu_user_features	= COMMON_USER_BOOKE,
L
Linus Torvalds 已提交
1020 1021
		.icache_bsize		= 32,
		.dcache_bsize		= 32,
1022
		.platform		= "ppc440gp",
L
Linus Torvalds 已提交
1023
	},
S
Stephen Rothwell 已提交
1024
	{	/* 440GP Rev. C */
L
Linus Torvalds 已提交
1025 1026 1027
		.pvr_mask		= 0xf0000fff,
		.pvr_value		= 0x40000481,
		.cpu_name		= "440GP Rev. C",
1028
		.cpu_features		= CPU_FTRS_44X,
1029
		.cpu_user_features	= COMMON_USER_BOOKE,
L
Linus Torvalds 已提交
1030 1031
		.icache_bsize		= 32,
		.dcache_bsize		= 32,
1032
		.platform		= "ppc440gp",
L
Linus Torvalds 已提交
1033 1034 1035 1036 1037
	},
	{ /* 440GX Rev. A */
		.pvr_mask		= 0xf0000fff,
		.pvr_value		= 0x50000850,
		.cpu_name		= "440GX Rev. A",
1038
		.cpu_features		= CPU_FTRS_44X,
1039
		.cpu_user_features	= COMMON_USER_BOOKE,
L
Linus Torvalds 已提交
1040 1041
		.icache_bsize		= 32,
		.dcache_bsize		= 32,
1042
		.platform		= "ppc440",
L
Linus Torvalds 已提交
1043 1044 1045 1046 1047
	},
	{ /* 440GX Rev. B */
		.pvr_mask		= 0xf0000fff,
		.pvr_value		= 0x50000851,
		.cpu_name		= "440GX Rev. B",
1048
		.cpu_features		= CPU_FTRS_44X,
1049
		.cpu_user_features	= COMMON_USER_BOOKE,
L
Linus Torvalds 已提交
1050 1051
		.icache_bsize		= 32,
		.dcache_bsize		= 32,
1052
		.platform		= "ppc440",
L
Linus Torvalds 已提交
1053 1054 1055 1056 1057
	},
	{ /* 440GX Rev. C */
		.pvr_mask		= 0xf0000fff,
		.pvr_value		= 0x50000892,
		.cpu_name		= "440GX Rev. C",
1058
		.cpu_features		= CPU_FTRS_44X,
1059
		.cpu_user_features	= COMMON_USER_BOOKE,
L
Linus Torvalds 已提交
1060 1061
		.icache_bsize		= 32,
		.dcache_bsize		= 32,
1062
		.platform		= "ppc440",
L
Linus Torvalds 已提交
1063
	},
1064 1065 1066 1067
	{ /* 440GX Rev. F */
		.pvr_mask		= 0xf0000fff,
		.pvr_value		= 0x50000894,
		.cpu_name		= "440GX Rev. F",
1068
		.cpu_features		= CPU_FTRS_44X,
1069
		.cpu_user_features	= COMMON_USER_BOOKE,
1070 1071
		.icache_bsize		= 32,
		.dcache_bsize		= 32,
1072
		.platform		= "ppc440",
1073
	},
1074 1075 1076 1077
	{ /* 440SP Rev. A */
		.pvr_mask		= 0xff000fff,
		.pvr_value		= 0x53000891,
		.cpu_name		= "440SP Rev. A",
1078
		.cpu_features		= CPU_FTRS_44X,
1079
		.cpu_user_features	= COMMON_USER_BOOKE,
1080 1081
		.icache_bsize		= 32,
		.dcache_bsize		= 32,
1082
		.platform		= "ppc440",
1083
	},
R
Roland Dreier 已提交
1084 1085 1086 1087 1088 1089
	{ /* 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,
1090
		.cpu_user_features	= COMMON_USER_BOOKE,
R
Roland Dreier 已提交
1091 1092
		.icache_bsize		= 32,
		.dcache_bsize		= 32,
1093
		.platform		= "ppc440",
R
Roland Dreier 已提交
1094
	},
L
Linus Torvalds 已提交
1095
#endif /* CONFIG_44x */
1096
#ifdef CONFIG_FSL_BOOKE
S
Stephen Rothwell 已提交
1097
	{	/* e200z5 */
1098 1099 1100 1101
		.pvr_mask		= 0xfff00000,
		.pvr_value		= 0x81000000,
		.cpu_name		= "e200z5",
		/* xxx - galak: add CPU_FTR_MAYBE_CAN_DOZE */
1102
		.cpu_features		= CPU_FTRS_E200,
1103 1104
		.cpu_user_features	= COMMON_USER_BOOKE |
			PPC_FEATURE_HAS_EFP_SINGLE |
1105 1106
			PPC_FEATURE_UNIFIED_CACHE,
		.dcache_bsize		= 32,
1107
		.platform		= "ppc5554",
1108
	},
S
Stephen Rothwell 已提交
1109
	{	/* e200z6 */
1110 1111 1112 1113
		.pvr_mask		= 0xfff00000,
		.pvr_value		= 0x81100000,
		.cpu_name		= "e200z6",
		/* xxx - galak: add CPU_FTR_MAYBE_CAN_DOZE */
1114
		.cpu_features		= CPU_FTRS_E200,
1115 1116
		.cpu_user_features	= COMMON_USER_BOOKE |
			PPC_FEATURE_SPE_COMP |
1117 1118 1119
			PPC_FEATURE_HAS_EFP_SINGLE |
			PPC_FEATURE_UNIFIED_CACHE,
		.dcache_bsize		= 32,
1120
		.platform		= "ppc5554",
1121
	},
S
Stephen Rothwell 已提交
1122
	{	/* e500 */
L
Linus Torvalds 已提交
1123 1124 1125 1126
		.pvr_mask		= 0xffff0000,
		.pvr_value		= 0x80200000,
		.cpu_name		= "e500",
		/* xxx - galak: add CPU_FTR_MAYBE_CAN_DOZE */
1127
		.cpu_features		= CPU_FTRS_E500,
1128 1129
		.cpu_user_features	= COMMON_USER_BOOKE |
			PPC_FEATURE_SPE_COMP |
L
Linus Torvalds 已提交
1130 1131 1132 1133
			PPC_FEATURE_HAS_EFP_SINGLE,
		.icache_bsize		= 32,
		.dcache_bsize		= 32,
		.num_pmcs		= 4,
1134
		.oprofile_cpu_type	= "ppc/e500",
1135
		.oprofile_type		= PPC_OPROFILE_BOOKE,
1136
		.platform		= "ppc8540",
L
Linus Torvalds 已提交
1137
	},
S
Stephen Rothwell 已提交
1138
	{	/* e500v2 */
1139 1140 1141 1142
		.pvr_mask		= 0xffff0000,
		.pvr_value		= 0x80210000,
		.cpu_name		= "e500v2",
		/* xxx - galak: add CPU_FTR_MAYBE_CAN_DOZE */
1143
		.cpu_features		= CPU_FTRS_E500_2,
1144 1145 1146 1147
		.cpu_user_features	= COMMON_USER_BOOKE |
			PPC_FEATURE_SPE_COMP |
			PPC_FEATURE_HAS_EFP_SINGLE |
			PPC_FEATURE_HAS_EFP_DOUBLE,
1148 1149 1150
		.icache_bsize		= 32,
		.dcache_bsize		= 32,
		.num_pmcs		= 4,
1151
		.oprofile_cpu_type	= "ppc/e500",
1152
		.oprofile_type		= PPC_OPROFILE_BOOKE,
1153
		.platform		= "ppc8548",
1154
	},
L
Linus Torvalds 已提交
1155 1156 1157 1158 1159 1160
#endif
#if !CLASSIC_PPC
	{	/* default match */
		.pvr_mask		= 0x00000000,
		.pvr_value		= 0x00000000,
		.cpu_name		= "(generic PPC)",
1161
		.cpu_features		= CPU_FTRS_GENERIC_32,
L
Linus Torvalds 已提交
1162 1163 1164
		.cpu_user_features	= PPC_FEATURE_32,
		.icache_bsize		= 32,
		.dcache_bsize		= 32,
1165
		.platform		= "powerpc",
L
Linus Torvalds 已提交
1166 1167
	}
#endif /* !CLASSIC_PPC */
S
Stephen Rothwell 已提交
1168
#endif /* CONFIG_PPC32 */
L
Linus Torvalds 已提交
1169
};