blob: f02b402c66d9bdbea3adaebfb3757a902f6a37b3 [file] [log] [blame]
Linus Torvalds1da177e2005-04-16 15:20:36 -07001/*
Linus Torvalds1da177e2005-04-16 15:20:36 -07002 * Copyright (C) 2001 Ben. Herrenschmidt (benh@kernel.crashing.org)
3 *
Stephen Rothwell49209602005-10-12 15:55:09 +10004 * Modifications for ppc64:
5 * Copyright (C) 2003 Dave Engebretsen <engebret@us.ibm.com>
6 *
Linus Torvalds1da177e2005-04-16 15:20:36 -07007 * This program is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU General Public License
9 * as published by the Free Software Foundation; either version
10 * 2 of the License, or (at your option) any later version.
11 */
12
Linus Torvalds1da177e2005-04-16 15:20:36 -070013#include <linux/string.h>
14#include <linux/sched.h>
15#include <linux/threads.h>
16#include <linux/init.h>
Kumar Gala400d2212005-09-27 15:13:12 -050017#include <linux/module.h>
18
19#include <asm/oprofile_impl.h>
Linus Torvalds1da177e2005-04-16 15:20:36 -070020#include <asm/cputable.h>
21
Kumar Gala400d2212005-09-27 15:13:12 -050022struct cpu_spec* cur_cpu_spec = NULL;
Stephen Rothwell49209602005-10-12 15:55:09 +100023EXPORT_SYMBOL(cur_cpu_spec);
Linus Torvalds1da177e2005-04-16 15:20:36 -070024
Stephen Rothwell49209602005-10-12 15:55:09 +100025/* NOTE:
26 * Unlike ppc32, ppc64 will only call this once for the boot CPU, it's
27 * the responsibility of the appropriate CPU save/restore functions to
28 * eventually copy these settings over. Those save/restore aren't yet
29 * part of the cputable though. That has to be fixed for both ppc32
30 * and ppc64
31 */
Geoff Levandb26f1002006-05-19 14:24:18 +100032#ifdef CONFIG_PPC32
Kumar Gala400d2212005-09-27 15:13:12 -050033extern void __setup_cpu_603(unsigned long offset, struct cpu_spec* spec);
34extern void __setup_cpu_604(unsigned long offset, struct cpu_spec* spec);
35extern void __setup_cpu_750(unsigned long offset, struct cpu_spec* spec);
36extern void __setup_cpu_750cx(unsigned long offset, struct cpu_spec* spec);
37extern void __setup_cpu_750fx(unsigned long offset, struct cpu_spec* spec);
38extern void __setup_cpu_7400(unsigned long offset, struct cpu_spec* spec);
39extern void __setup_cpu_7410(unsigned long offset, struct cpu_spec* spec);
40extern void __setup_cpu_745x(unsigned long offset, struct cpu_spec* spec);
Stephen Rothwell49209602005-10-12 15:55:09 +100041#endif /* CONFIG_PPC32 */
Olof Johanssonf39b7a52006-08-11 00:07:08 -050042#ifdef CONFIG_PPC64
Kumar Gala400d2212005-09-27 15:13:12 -050043extern void __setup_cpu_ppc970(unsigned long offset, struct cpu_spec* spec);
Olof Johansson5b43d202006-10-04 23:41:41 -050044extern void __setup_cpu_ppc970MP(unsigned long offset, struct cpu_spec* spec);
Olof Johanssonf39b7a52006-08-11 00:07:08 -050045extern void __restore_cpu_ppc970(void);
46#endif /* CONFIG_PPC64 */
Linus Torvalds1da177e2005-04-16 15:20:36 -070047
Linus Torvalds1da177e2005-04-16 15:20:36 -070048/* This table only contains "desktop" CPUs, it need to be filled with embedded
49 * ones as well...
50 */
Stephen Rothwell49209602005-10-12 15:55:09 +100051#define COMMON_USER (PPC_FEATURE_32 | PPC_FEATURE_HAS_FPU | \
52 PPC_FEATURE_HAS_MMU)
53#define COMMON_USER_PPC64 (COMMON_USER | PPC_FEATURE_64)
Paul Mackerrasa7ddc5e2005-11-10 14:29:18 +110054#define COMMON_USER_POWER4 (COMMON_USER_PPC64 | PPC_FEATURE_POWER4)
Benjamin Herrenschmidtaa5cb022006-03-01 15:07:07 +110055#define COMMON_USER_POWER5 (COMMON_USER_PPC64 | PPC_FEATURE_POWER5 |\
56 PPC_FEATURE_SMT | PPC_FEATURE_ICACHE_SNOOP)
57#define COMMON_USER_POWER5_PLUS (COMMON_USER_PPC64 | PPC_FEATURE_POWER5_PLUS|\
58 PPC_FEATURE_SMT | PPC_FEATURE_ICACHE_SNOOP)
Anton Blanchard03054d52006-04-29 09:51:06 +100059#define COMMON_USER_POWER6 (COMMON_USER_PPC64 | PPC_FEATURE_ARCH_2_05 |\
Paul Mackerrasfab5db92006-06-07 16:14:40 +100060 PPC_FEATURE_SMT | PPC_FEATURE_ICACHE_SNOOP | \
61 PPC_FEATURE_TRUE_LE)
Olof Johanssonb3ebd1d2006-09-06 14:35:57 -050062#define COMMON_USER_PA6T (COMMON_USER_PPC64 | PPC_FEATURE_PA6T |\
63 PPC_FEATURE_TRUE_LE | \
64 PPC_FEATURE_HAS_ALTIVEC_COMP)
Paul Mackerras80f15dc2006-01-14 10:11:39 +110065#define COMMON_USER_BOOKE (PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU | \
66 PPC_FEATURE_BOOKE)
Linus Torvalds1da177e2005-04-16 15:20:36 -070067
Linus Torvalds1da177e2005-04-16 15:20:36 -070068/* We only set the spe features if the kernel was compiled with
69 * spe support
70 */
71#ifdef CONFIG_SPE
Stephen Rothwell49209602005-10-12 15:55:09 +100072#define PPC_FEATURE_SPE_COMP PPC_FEATURE_HAS_SPE
Linus Torvalds1da177e2005-04-16 15:20:36 -070073#else
Stephen Rothwell49209602005-10-12 15:55:09 +100074#define PPC_FEATURE_SPE_COMP 0
Linus Torvalds1da177e2005-04-16 15:20:36 -070075#endif
76
Linus Torvalds1da177e2005-04-16 15:20:36 -070077struct cpu_spec cpu_specs[] = {
Stephen Rothwell49209602005-10-12 15:55:09 +100078#ifdef CONFIG_PPC64
79 { /* Power3 */
80 .pvr_mask = 0xffff0000,
81 .pvr_value = 0x00400000,
82 .cpu_name = "POWER3 (630)",
83 .cpu_features = CPU_FTRS_POWER3,
Paul Mackerrasfab5db92006-06-07 16:14:40 +100084 .cpu_user_features = COMMON_USER_PPC64|PPC_FEATURE_PPC_LE,
Stephen Rothwell49209602005-10-12 15:55:09 +100085 .icache_bsize = 128,
86 .dcache_bsize = 128,
87 .num_pmcs = 8,
Stephen Rothwell49209602005-10-12 15:55:09 +100088 .oprofile_cpu_type = "ppc64/power3",
Andy Whitcroft7a45fb12006-01-13 12:35:49 +000089 .oprofile_type = PPC_OPROFILE_RS64,
Paul Mackerras80f15dc2006-01-14 10:11:39 +110090 .platform = "power3",
Stephen Rothwell49209602005-10-12 15:55:09 +100091 },
92 { /* Power3+ */
93 .pvr_mask = 0xffff0000,
94 .pvr_value = 0x00410000,
95 .cpu_name = "POWER3 (630+)",
96 .cpu_features = CPU_FTRS_POWER3,
Paul Mackerrasfab5db92006-06-07 16:14:40 +100097 .cpu_user_features = COMMON_USER_PPC64|PPC_FEATURE_PPC_LE,
Stephen Rothwell49209602005-10-12 15:55:09 +100098 .icache_bsize = 128,
99 .dcache_bsize = 128,
100 .num_pmcs = 8,
Stephen Rothwell49209602005-10-12 15:55:09 +1000101 .oprofile_cpu_type = "ppc64/power3",
Andy Whitcroft7a45fb12006-01-13 12:35:49 +0000102 .oprofile_type = PPC_OPROFILE_RS64,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100103 .platform = "power3",
Stephen Rothwell49209602005-10-12 15:55:09 +1000104 },
105 { /* Northstar */
106 .pvr_mask = 0xffff0000,
107 .pvr_value = 0x00330000,
108 .cpu_name = "RS64-II (northstar)",
109 .cpu_features = CPU_FTRS_RS64,
110 .cpu_user_features = COMMON_USER_PPC64,
111 .icache_bsize = 128,
112 .dcache_bsize = 128,
113 .num_pmcs = 8,
Stephen Rothwell49209602005-10-12 15:55:09 +1000114 .oprofile_cpu_type = "ppc64/rs64",
Andy Whitcroft7a45fb12006-01-13 12:35:49 +0000115 .oprofile_type = PPC_OPROFILE_RS64,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100116 .platform = "rs64",
Stephen Rothwell49209602005-10-12 15:55:09 +1000117 },
118 { /* Pulsar */
119 .pvr_mask = 0xffff0000,
120 .pvr_value = 0x00340000,
121 .cpu_name = "RS64-III (pulsar)",
122 .cpu_features = CPU_FTRS_RS64,
123 .cpu_user_features = COMMON_USER_PPC64,
124 .icache_bsize = 128,
125 .dcache_bsize = 128,
126 .num_pmcs = 8,
Stephen Rothwell49209602005-10-12 15:55:09 +1000127 .oprofile_cpu_type = "ppc64/rs64",
Andy Whitcroft7a45fb12006-01-13 12:35:49 +0000128 .oprofile_type = PPC_OPROFILE_RS64,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100129 .platform = "rs64",
Stephen Rothwell49209602005-10-12 15:55:09 +1000130 },
131 { /* I-star */
132 .pvr_mask = 0xffff0000,
133 .pvr_value = 0x00360000,
134 .cpu_name = "RS64-III (icestar)",
135 .cpu_features = CPU_FTRS_RS64,
136 .cpu_user_features = COMMON_USER_PPC64,
137 .icache_bsize = 128,
138 .dcache_bsize = 128,
139 .num_pmcs = 8,
Stephen Rothwell49209602005-10-12 15:55:09 +1000140 .oprofile_cpu_type = "ppc64/rs64",
Andy Whitcroft7a45fb12006-01-13 12:35:49 +0000141 .oprofile_type = PPC_OPROFILE_RS64,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100142 .platform = "rs64",
Stephen Rothwell49209602005-10-12 15:55:09 +1000143 },
144 { /* S-star */
145 .pvr_mask = 0xffff0000,
146 .pvr_value = 0x00370000,
147 .cpu_name = "RS64-IV (sstar)",
148 .cpu_features = CPU_FTRS_RS64,
149 .cpu_user_features = COMMON_USER_PPC64,
150 .icache_bsize = 128,
151 .dcache_bsize = 128,
152 .num_pmcs = 8,
Stephen Rothwell49209602005-10-12 15:55:09 +1000153 .oprofile_cpu_type = "ppc64/rs64",
Andy Whitcroft7a45fb12006-01-13 12:35:49 +0000154 .oprofile_type = PPC_OPROFILE_RS64,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100155 .platform = "rs64",
Stephen Rothwell49209602005-10-12 15:55:09 +1000156 },
157 { /* Power4 */
158 .pvr_mask = 0xffff0000,
159 .pvr_value = 0x00350000,
160 .cpu_name = "POWER4 (gp)",
161 .cpu_features = CPU_FTRS_POWER4,
Paul Mackerrasa7ddc5e2005-11-10 14:29:18 +1100162 .cpu_user_features = COMMON_USER_POWER4,
Stephen Rothwell49209602005-10-12 15:55:09 +1000163 .icache_bsize = 128,
164 .dcache_bsize = 128,
165 .num_pmcs = 8,
Stephen Rothwell49209602005-10-12 15:55:09 +1000166 .oprofile_cpu_type = "ppc64/power4",
Andy Whitcroft7a45fb12006-01-13 12:35:49 +0000167 .oprofile_type = PPC_OPROFILE_POWER4,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100168 .platform = "power4",
Stephen Rothwell49209602005-10-12 15:55:09 +1000169 },
170 { /* Power4+ */
171 .pvr_mask = 0xffff0000,
172 .pvr_value = 0x00380000,
173 .cpu_name = "POWER4+ (gq)",
174 .cpu_features = CPU_FTRS_POWER4,
Paul Mackerrasa7ddc5e2005-11-10 14:29:18 +1100175 .cpu_user_features = COMMON_USER_POWER4,
Stephen Rothwell49209602005-10-12 15:55:09 +1000176 .icache_bsize = 128,
177 .dcache_bsize = 128,
178 .num_pmcs = 8,
Stephen Rothwell49209602005-10-12 15:55:09 +1000179 .oprofile_cpu_type = "ppc64/power4",
Andy Whitcroft7a45fb12006-01-13 12:35:49 +0000180 .oprofile_type = PPC_OPROFILE_POWER4,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100181 .platform = "power4",
Stephen Rothwell49209602005-10-12 15:55:09 +1000182 },
183 { /* PPC970 */
184 .pvr_mask = 0xffff0000,
185 .pvr_value = 0x00390000,
186 .cpu_name = "PPC970",
187 .cpu_features = CPU_FTRS_PPC970,
Paul Mackerrasa7ddc5e2005-11-10 14:29:18 +1100188 .cpu_user_features = COMMON_USER_POWER4 |
Stephen Rothwell49209602005-10-12 15:55:09 +1000189 PPC_FEATURE_HAS_ALTIVEC_COMP,
190 .icache_bsize = 128,
191 .dcache_bsize = 128,
192 .num_pmcs = 8,
193 .cpu_setup = __setup_cpu_ppc970,
Olof Johanssonf39b7a52006-08-11 00:07:08 -0500194 .cpu_restore = __restore_cpu_ppc970,
Stephen Rothwell49209602005-10-12 15:55:09 +1000195 .oprofile_cpu_type = "ppc64/970",
Andy Whitcroft7a45fb12006-01-13 12:35:49 +0000196 .oprofile_type = PPC_OPROFILE_POWER4,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100197 .platform = "ppc970",
Stephen Rothwell49209602005-10-12 15:55:09 +1000198 },
Stephen Rothwell49209602005-10-12 15:55:09 +1000199 { /* PPC970FX */
200 .pvr_mask = 0xffff0000,
201 .pvr_value = 0x003c0000,
202 .cpu_name = "PPC970FX",
Stephen Rothwell49209602005-10-12 15:55:09 +1000203 .cpu_features = CPU_FTRS_PPC970,
Paul Mackerrasa7ddc5e2005-11-10 14:29:18 +1100204 .cpu_user_features = COMMON_USER_POWER4 |
Stephen Rothwell49209602005-10-12 15:55:09 +1000205 PPC_FEATURE_HAS_ALTIVEC_COMP,
206 .icache_bsize = 128,
207 .dcache_bsize = 128,
208 .num_pmcs = 8,
209 .cpu_setup = __setup_cpu_ppc970,
Olof Johanssonf39b7a52006-08-11 00:07:08 -0500210 .cpu_restore = __restore_cpu_ppc970,
Stephen Rothwell49209602005-10-12 15:55:09 +1000211 .oprofile_cpu_type = "ppc64/970",
Andy Whitcroft7a45fb12006-01-13 12:35:49 +0000212 .oprofile_type = PPC_OPROFILE_POWER4,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100213 .platform = "ppc970",
Stephen Rothwell49209602005-10-12 15:55:09 +1000214 },
Stephen Rothwell49209602005-10-12 15:55:09 +1000215 { /* PPC970MP */
216 .pvr_mask = 0xffff0000,
217 .pvr_value = 0x00440000,
218 .cpu_name = "PPC970MP",
219 .cpu_features = CPU_FTRS_PPC970,
Paul Mackerrasa7ddc5e2005-11-10 14:29:18 +1100220 .cpu_user_features = COMMON_USER_POWER4 |
Stephen Rothwell49209602005-10-12 15:55:09 +1000221 PPC_FEATURE_HAS_ALTIVEC_COMP,
222 .icache_bsize = 128,
223 .dcache_bsize = 128,
Anton Blanchard87af41b2006-05-05 05:44:26 +1000224 .num_pmcs = 8,
Olof Johansson5b43d202006-10-04 23:41:41 -0500225 .cpu_setup = __setup_cpu_ppc970MP,
Olof Johanssonf39b7a52006-08-11 00:07:08 -0500226 .cpu_restore = __restore_cpu_ppc970,
Stephen Rothwell49209602005-10-12 15:55:09 +1000227 .oprofile_cpu_type = "ppc64/970",
Andy Whitcroft7a45fb12006-01-13 12:35:49 +0000228 .oprofile_type = PPC_OPROFILE_POWER4,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100229 .platform = "ppc970",
Stephen Rothwell49209602005-10-12 15:55:09 +1000230 },
Benjamin Herrenschmidt3c726f82005-11-07 11:06:55 +1100231 { /* Power5 GR */
Stephen Rothwell49209602005-10-12 15:55:09 +1000232 .pvr_mask = 0xffff0000,
233 .pvr_value = 0x003a0000,
234 .cpu_name = "POWER5 (gr)",
235 .cpu_features = CPU_FTRS_POWER5,
Paul Mackerrasa7ddc5e2005-11-10 14:29:18 +1100236 .cpu_user_features = COMMON_USER_POWER5,
Stephen Rothwell49209602005-10-12 15:55:09 +1000237 .icache_bsize = 128,
238 .dcache_bsize = 128,
239 .num_pmcs = 6,
Stephen Rothwell49209602005-10-12 15:55:09 +1000240 .oprofile_cpu_type = "ppc64/power5",
Andy Whitcroft7a45fb12006-01-13 12:35:49 +0000241 .oprofile_type = PPC_OPROFILE_POWER4,
Michael Neulinge78dbc82006-06-08 14:42:34 +1000242 /* SIHV / SIPR bits are implemented on POWER4+ (GQ)
243 * and above but only works on POWER5 and above
244 */
245 .oprofile_mmcra_sihv = MMCRA_SIHV,
246 .oprofile_mmcra_sipr = MMCRA_SIPR,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100247 .platform = "power5",
Stephen Rothwell49209602005-10-12 15:55:09 +1000248 },
Benjamin Herrenschmidt3c726f82005-11-07 11:06:55 +1100249 { /* Power5 GS */
Stephen Rothwell49209602005-10-12 15:55:09 +1000250 .pvr_mask = 0xffff0000,
251 .pvr_value = 0x003b0000,
Anton Blanchard834608f2006-01-09 15:42:30 +1100252 .cpu_name = "POWER5+ (gs)",
Stephen Rothwell49209602005-10-12 15:55:09 +1000253 .cpu_features = CPU_FTRS_POWER5,
Paul Mackerrasa7ddc5e2005-11-10 14:29:18 +1100254 .cpu_user_features = COMMON_USER_POWER5_PLUS,
Stephen Rothwell49209602005-10-12 15:55:09 +1000255 .icache_bsize = 128,
256 .dcache_bsize = 128,
257 .num_pmcs = 6,
Anton Blanchard834608f2006-01-09 15:42:30 +1100258 .oprofile_cpu_type = "ppc64/power5+",
Andy Whitcroft7a45fb12006-01-13 12:35:49 +0000259 .oprofile_type = PPC_OPROFILE_POWER4,
Michael Neulinge78dbc82006-06-08 14:42:34 +1000260 .oprofile_mmcra_sihv = MMCRA_SIHV,
261 .oprofile_mmcra_sipr = MMCRA_SIPR,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100262 .platform = "power5+",
Stephen Rothwell49209602005-10-12 15:55:09 +1000263 },
Anton Blanchard03054d52006-04-29 09:51:06 +1000264 { /* Power6 */
265 .pvr_mask = 0xffff0000,
266 .pvr_value = 0x003e0000,
267 .cpu_name = "POWER6",
268 .cpu_features = CPU_FTRS_POWER6,
269 .cpu_user_features = COMMON_USER_POWER6,
270 .icache_bsize = 128,
271 .dcache_bsize = 128,
Anton Blanchard99f48612006-10-13 12:13:12 +1000272 .num_pmcs = 6,
Anton Blanchard03054d52006-04-29 09:51:06 +1000273 .oprofile_cpu_type = "ppc64/power6",
274 .oprofile_type = PPC_OPROFILE_POWER4,
Michael Neulinge78dbc82006-06-08 14:42:34 +1000275 .oprofile_mmcra_sihv = POWER6_MMCRA_SIHV,
276 .oprofile_mmcra_sipr = POWER6_MMCRA_SIPR,
277 .oprofile_mmcra_clear = POWER6_MMCRA_THRM |
278 POWER6_MMCRA_OTHER,
Anton Blanchard03054d52006-04-29 09:51:06 +1000279 .platform = "power6",
280 },
Arnd Bergmannc902be72006-01-04 19:55:53 +0000281 { /* Cell Broadband Engine */
Stephen Rothwell49209602005-10-12 15:55:09 +1000282 .pvr_mask = 0xffff0000,
283 .pvr_value = 0x00700000,
284 .cpu_name = "Cell Broadband Engine",
285 .cpu_features = CPU_FTRS_CELL,
286 .cpu_user_features = COMMON_USER_PPC64 |
Benjamin Herrenschmidtaa5cb022006-03-01 15:07:07 +1100287 PPC_FEATURE_CELL | PPC_FEATURE_HAS_ALTIVEC_COMP |
288 PPC_FEATURE_SMT,
Stephen Rothwell49209602005-10-12 15:55:09 +1000289 .icache_bsize = 128,
290 .dcache_bsize = 128,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100291 .platform = "ppc-cell-be",
Stephen Rothwell49209602005-10-12 15:55:09 +1000292 },
Olof Johanssonb3ebd1d2006-09-06 14:35:57 -0500293 { /* PA Semi PA6T */
294 .pvr_mask = 0x7fff0000,
295 .pvr_value = 0x00900000,
296 .cpu_name = "PA6T",
297 .cpu_features = CPU_FTRS_PA6T,
298 .cpu_user_features = COMMON_USER_PA6T,
299 .icache_bsize = 64,
300 .dcache_bsize = 64,
301 .num_pmcs = 6,
302 .platform = "pa6t",
303 },
Stephen Rothwell49209602005-10-12 15:55:09 +1000304 { /* default match */
305 .pvr_mask = 0x00000000,
306 .pvr_value = 0x00000000,
307 .cpu_name = "POWER4 (compatible)",
308 .cpu_features = CPU_FTRS_COMPATIBLE,
309 .cpu_user_features = COMMON_USER_PPC64,
310 .icache_bsize = 128,
311 .dcache_bsize = 128,
312 .num_pmcs = 6,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100313 .platform = "power4",
Stephen Rothwell49209602005-10-12 15:55:09 +1000314 }
315#endif /* CONFIG_PPC64 */
316#ifdef CONFIG_PPC32
Linus Torvalds1da177e2005-04-16 15:20:36 -0700317#if CLASSIC_PPC
Stephen Rothwell49209602005-10-12 15:55:09 +1000318 { /* 601 */
Linus Torvalds1da177e2005-04-16 15:20:36 -0700319 .pvr_mask = 0xffff0000,
320 .pvr_value = 0x00010000,
321 .cpu_name = "601",
Kumar Gala10b35d92005-09-23 14:08:58 -0500322 .cpu_features = CPU_FTRS_PPC601,
Stephen Rothwell49209602005-10-12 15:55:09 +1000323 .cpu_user_features = COMMON_USER | PPC_FEATURE_601_INSTR |
Paul Mackerras98599012005-10-22 16:51:34 +1000324 PPC_FEATURE_UNIFIED_CACHE | PPC_FEATURE_NO_TB,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700325 .icache_bsize = 32,
326 .dcache_bsize = 32,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100327 .platform = "ppc601",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700328 },
329 { /* 603 */
330 .pvr_mask = 0xffff0000,
331 .pvr_value = 0x00030000,
332 .cpu_name = "603",
Kumar Gala10b35d92005-09-23 14:08:58 -0500333 .cpu_features = CPU_FTRS_603,
Paul Mackerrasfab5db92006-06-07 16:14:40 +1000334 .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700335 .icache_bsize = 32,
336 .dcache_bsize = 32,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100337 .cpu_setup = __setup_cpu_603,
338 .platform = "ppc603",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700339 },
340 { /* 603e */
341 .pvr_mask = 0xffff0000,
342 .pvr_value = 0x00060000,
343 .cpu_name = "603e",
Kumar Gala10b35d92005-09-23 14:08:58 -0500344 .cpu_features = CPU_FTRS_603,
Paul Mackerrasfab5db92006-06-07 16:14:40 +1000345 .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700346 .icache_bsize = 32,
347 .dcache_bsize = 32,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100348 .cpu_setup = __setup_cpu_603,
349 .platform = "ppc603",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700350 },
351 { /* 603ev */
352 .pvr_mask = 0xffff0000,
353 .pvr_value = 0x00070000,
354 .cpu_name = "603ev",
Kumar Gala10b35d92005-09-23 14:08:58 -0500355 .cpu_features = CPU_FTRS_603,
Paul Mackerrasfab5db92006-06-07 16:14:40 +1000356 .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700357 .icache_bsize = 32,
358 .dcache_bsize = 32,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100359 .cpu_setup = __setup_cpu_603,
360 .platform = "ppc603",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700361 },
362 { /* 604 */
363 .pvr_mask = 0xffff0000,
364 .pvr_value = 0x00040000,
365 .cpu_name = "604",
Kumar Gala10b35d92005-09-23 14:08:58 -0500366 .cpu_features = CPU_FTRS_604,
Paul Mackerrasfab5db92006-06-07 16:14:40 +1000367 .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700368 .icache_bsize = 32,
369 .dcache_bsize = 32,
370 .num_pmcs = 2,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100371 .cpu_setup = __setup_cpu_604,
372 .platform = "ppc604",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700373 },
374 { /* 604e */
375 .pvr_mask = 0xfffff000,
376 .pvr_value = 0x00090000,
377 .cpu_name = "604e",
Kumar Gala10b35d92005-09-23 14:08:58 -0500378 .cpu_features = CPU_FTRS_604,
Paul Mackerrasfab5db92006-06-07 16:14:40 +1000379 .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700380 .icache_bsize = 32,
381 .dcache_bsize = 32,
382 .num_pmcs = 4,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100383 .cpu_setup = __setup_cpu_604,
384 .platform = "ppc604",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700385 },
386 { /* 604r */
387 .pvr_mask = 0xffff0000,
388 .pvr_value = 0x00090000,
389 .cpu_name = "604r",
Kumar Gala10b35d92005-09-23 14:08:58 -0500390 .cpu_features = CPU_FTRS_604,
Paul Mackerrasfab5db92006-06-07 16:14:40 +1000391 .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700392 .icache_bsize = 32,
393 .dcache_bsize = 32,
394 .num_pmcs = 4,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100395 .cpu_setup = __setup_cpu_604,
396 .platform = "ppc604",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700397 },
398 { /* 604ev */
399 .pvr_mask = 0xffff0000,
400 .pvr_value = 0x000a0000,
401 .cpu_name = "604ev",
Kumar Gala10b35d92005-09-23 14:08:58 -0500402 .cpu_features = CPU_FTRS_604,
Paul Mackerrasfab5db92006-06-07 16:14:40 +1000403 .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700404 .icache_bsize = 32,
405 .dcache_bsize = 32,
406 .num_pmcs = 4,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100407 .cpu_setup = __setup_cpu_604,
408 .platform = "ppc604",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700409 },
410 { /* 740/750 (0x4202, don't support TAU ?) */
411 .pvr_mask = 0xffffffff,
412 .pvr_value = 0x00084202,
413 .cpu_name = "740/750",
Kumar Gala10b35d92005-09-23 14:08:58 -0500414 .cpu_features = CPU_FTRS_740_NOTAU,
Paul Mackerrasfab5db92006-06-07 16:14:40 +1000415 .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700416 .icache_bsize = 32,
417 .dcache_bsize = 32,
418 .num_pmcs = 4,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100419 .cpu_setup = __setup_cpu_750,
420 .platform = "ppc750",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700421 },
Linus Torvalds1da177e2005-04-16 15:20:36 -0700422 { /* 750CX (80100 and 8010x?) */
423 .pvr_mask = 0xfffffff0,
424 .pvr_value = 0x00080100,
425 .cpu_name = "750CX",
Kumar Gala10b35d92005-09-23 14:08:58 -0500426 .cpu_features = CPU_FTRS_750,
Paul Mackerrasfab5db92006-06-07 16:14:40 +1000427 .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700428 .icache_bsize = 32,
429 .dcache_bsize = 32,
430 .num_pmcs = 4,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100431 .cpu_setup = __setup_cpu_750cx,
432 .platform = "ppc750",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700433 },
434 { /* 750CX (82201 and 82202) */
435 .pvr_mask = 0xfffffff0,
436 .pvr_value = 0x00082200,
437 .cpu_name = "750CX",
Kumar Gala10b35d92005-09-23 14:08:58 -0500438 .cpu_features = CPU_FTRS_750,
Paul Mackerrasfab5db92006-06-07 16:14:40 +1000439 .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700440 .icache_bsize = 32,
441 .dcache_bsize = 32,
442 .num_pmcs = 4,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100443 .cpu_setup = __setup_cpu_750cx,
444 .platform = "ppc750",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700445 },
446 { /* 750CXe (82214) */
447 .pvr_mask = 0xfffffff0,
448 .pvr_value = 0x00082210,
449 .cpu_name = "750CXe",
Kumar Gala10b35d92005-09-23 14:08:58 -0500450 .cpu_features = CPU_FTRS_750,
Paul Mackerrasfab5db92006-06-07 16:14:40 +1000451 .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700452 .icache_bsize = 32,
453 .dcache_bsize = 32,
454 .num_pmcs = 4,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100455 .cpu_setup = __setup_cpu_750cx,
456 .platform = "ppc750",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700457 },
Arthur Othieno7c316252005-09-03 15:55:52 -0700458 { /* 750CXe "Gekko" (83214) */
459 .pvr_mask = 0xffffffff,
460 .pvr_value = 0x00083214,
461 .cpu_name = "750CXe",
Kumar Gala10b35d92005-09-23 14:08:58 -0500462 .cpu_features = CPU_FTRS_750,
Paul Mackerrasfab5db92006-06-07 16:14:40 +1000463 .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE,
Arthur Othieno7c316252005-09-03 15:55:52 -0700464 .icache_bsize = 32,
465 .dcache_bsize = 32,
466 .num_pmcs = 4,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100467 .cpu_setup = __setup_cpu_750cx,
468 .platform = "ppc750",
Arthur Othieno7c316252005-09-03 15:55:52 -0700469 },
Arthur Othienoac1ff042005-09-03 15:55:51 -0700470 { /* 745/755 */
471 .pvr_mask = 0xfffff000,
472 .pvr_value = 0x00083000,
473 .cpu_name = "745/755",
Kumar Gala10b35d92005-09-23 14:08:58 -0500474 .cpu_features = CPU_FTRS_750,
Paul Mackerrasfab5db92006-06-07 16:14:40 +1000475 .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE,
Arthur Othienoac1ff042005-09-03 15:55:51 -0700476 .icache_bsize = 32,
477 .dcache_bsize = 32,
478 .num_pmcs = 4,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100479 .cpu_setup = __setup_cpu_750,
480 .platform = "ppc750",
Arthur Othienoac1ff042005-09-03 15:55:51 -0700481 },
Linus Torvalds1da177e2005-04-16 15:20:36 -0700482 { /* 750FX rev 1.x */
483 .pvr_mask = 0xffffff00,
484 .pvr_value = 0x70000100,
485 .cpu_name = "750FX",
Kumar Gala10b35d92005-09-23 14:08:58 -0500486 .cpu_features = CPU_FTRS_750FX1,
Paul Mackerrasfab5db92006-06-07 16:14:40 +1000487 .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700488 .icache_bsize = 32,
489 .dcache_bsize = 32,
490 .num_pmcs = 4,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100491 .cpu_setup = __setup_cpu_750,
492 .platform = "ppc750",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700493 },
494 { /* 750FX rev 2.0 must disable HID0[DPM] */
495 .pvr_mask = 0xffffffff,
496 .pvr_value = 0x70000200,
497 .cpu_name = "750FX",
Kumar Gala10b35d92005-09-23 14:08:58 -0500498 .cpu_features = CPU_FTRS_750FX2,
Paul Mackerrasfab5db92006-06-07 16:14:40 +1000499 .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700500 .icache_bsize = 32,
501 .dcache_bsize = 32,
502 .num_pmcs = 4,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100503 .cpu_setup = __setup_cpu_750,
504 .platform = "ppc750",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700505 },
506 { /* 750FX (All revs except 2.0) */
507 .pvr_mask = 0xffff0000,
508 .pvr_value = 0x70000000,
509 .cpu_name = "750FX",
Kumar Gala10b35d92005-09-23 14:08:58 -0500510 .cpu_features = CPU_FTRS_750FX,
Paul Mackerrasfab5db92006-06-07 16:14:40 +1000511 .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700512 .icache_bsize = 32,
513 .dcache_bsize = 32,
514 .num_pmcs = 4,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100515 .cpu_setup = __setup_cpu_750fx,
516 .platform = "ppc750",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700517 },
518 { /* 750GX */
519 .pvr_mask = 0xffff0000,
520 .pvr_value = 0x70020000,
521 .cpu_name = "750GX",
Kumar Gala10b35d92005-09-23 14:08:58 -0500522 .cpu_features = CPU_FTRS_750GX,
Paul Mackerrasfab5db92006-06-07 16:14:40 +1000523 .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700524 .icache_bsize = 32,
525 .dcache_bsize = 32,
526 .num_pmcs = 4,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100527 .cpu_setup = __setup_cpu_750fx,
528 .platform = "ppc750",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700529 },
530 { /* 740/750 (L2CR bit need fixup for 740) */
531 .pvr_mask = 0xffff0000,
532 .pvr_value = 0x00080000,
533 .cpu_name = "740/750",
Kumar Gala10b35d92005-09-23 14:08:58 -0500534 .cpu_features = CPU_FTRS_740,
Paul Mackerrasfab5db92006-06-07 16:14:40 +1000535 .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700536 .icache_bsize = 32,
537 .dcache_bsize = 32,
538 .num_pmcs = 4,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100539 .cpu_setup = __setup_cpu_750,
540 .platform = "ppc750",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700541 },
542 { /* 7400 rev 1.1 ? (no TAU) */
543 .pvr_mask = 0xffffffff,
544 .pvr_value = 0x000c1101,
545 .cpu_name = "7400 (1.1)",
Kumar Gala10b35d92005-09-23 14:08:58 -0500546 .cpu_features = CPU_FTRS_7400_NOTAU,
Paul Mackerrasfab5db92006-06-07 16:14:40 +1000547 .cpu_user_features = COMMON_USER |
548 PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_PPC_LE,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700549 .icache_bsize = 32,
550 .dcache_bsize = 32,
551 .num_pmcs = 4,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100552 .cpu_setup = __setup_cpu_7400,
553 .platform = "ppc7400",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700554 },
555 { /* 7400 */
556 .pvr_mask = 0xffff0000,
557 .pvr_value = 0x000c0000,
558 .cpu_name = "7400",
Kumar Gala10b35d92005-09-23 14:08:58 -0500559 .cpu_features = CPU_FTRS_7400,
Paul Mackerrasfab5db92006-06-07 16:14:40 +1000560 .cpu_user_features = COMMON_USER |
561 PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_PPC_LE,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700562 .icache_bsize = 32,
563 .dcache_bsize = 32,
564 .num_pmcs = 4,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100565 .cpu_setup = __setup_cpu_7400,
566 .platform = "ppc7400",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700567 },
568 { /* 7410 */
569 .pvr_mask = 0xffff0000,
570 .pvr_value = 0x800c0000,
571 .cpu_name = "7410",
Kumar Gala10b35d92005-09-23 14:08:58 -0500572 .cpu_features = CPU_FTRS_7400,
Paul Mackerrasfab5db92006-06-07 16:14:40 +1000573 .cpu_user_features = COMMON_USER |
574 PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_PPC_LE,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700575 .icache_bsize = 32,
576 .dcache_bsize = 32,
577 .num_pmcs = 4,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100578 .cpu_setup = __setup_cpu_7410,
579 .platform = "ppc7400",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700580 },
581 { /* 7450 2.0 - no doze/nap */
582 .pvr_mask = 0xffffffff,
583 .pvr_value = 0x80000200,
584 .cpu_name = "7450",
Kumar Gala10b35d92005-09-23 14:08:58 -0500585 .cpu_features = CPU_FTRS_7450_20,
Paul Mackerrasfab5db92006-06-07 16:14:40 +1000586 .cpu_user_features = COMMON_USER |
587 PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_PPC_LE,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700588 .icache_bsize = 32,
589 .dcache_bsize = 32,
590 .num_pmcs = 6,
Andy Fleming555d97a2005-12-15 20:02:04 -0600591 .cpu_setup = __setup_cpu_745x,
Andy Fleming555d97a2005-12-15 20:02:04 -0600592 .oprofile_cpu_type = "ppc/7450",
Andy Whitcroft7a45fb12006-01-13 12:35:49 +0000593 .oprofile_type = PPC_OPROFILE_G4,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100594 .platform = "ppc7450",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700595 },
596 { /* 7450 2.1 */
597 .pvr_mask = 0xffffffff,
598 .pvr_value = 0x80000201,
599 .cpu_name = "7450",
Kumar Gala10b35d92005-09-23 14:08:58 -0500600 .cpu_features = CPU_FTRS_7450_21,
Paul Mackerrasfab5db92006-06-07 16:14:40 +1000601 .cpu_user_features = COMMON_USER |
602 PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_PPC_LE,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700603 .icache_bsize = 32,
604 .dcache_bsize = 32,
605 .num_pmcs = 6,
Andy Fleming555d97a2005-12-15 20:02:04 -0600606 .cpu_setup = __setup_cpu_745x,
Andy Fleming555d97a2005-12-15 20:02:04 -0600607 .oprofile_cpu_type = "ppc/7450",
Andy Whitcroft7a45fb12006-01-13 12:35:49 +0000608 .oprofile_type = PPC_OPROFILE_G4,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100609 .platform = "ppc7450",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700610 },
611 { /* 7450 2.3 and newer */
612 .pvr_mask = 0xffff0000,
613 .pvr_value = 0x80000000,
614 .cpu_name = "7450",
Kumar Gala10b35d92005-09-23 14:08:58 -0500615 .cpu_features = CPU_FTRS_7450_23,
Paul Mackerrasfab5db92006-06-07 16:14:40 +1000616 .cpu_user_features = COMMON_USER |
617 PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_PPC_LE,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700618 .icache_bsize = 32,
619 .dcache_bsize = 32,
620 .num_pmcs = 6,
Andy Fleming555d97a2005-12-15 20:02:04 -0600621 .cpu_setup = __setup_cpu_745x,
Andy Fleming555d97a2005-12-15 20:02:04 -0600622 .oprofile_cpu_type = "ppc/7450",
Andy Whitcroft7a45fb12006-01-13 12:35:49 +0000623 .oprofile_type = PPC_OPROFILE_G4,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100624 .platform = "ppc7450",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700625 },
626 { /* 7455 rev 1.x */
627 .pvr_mask = 0xffffff00,
628 .pvr_value = 0x80010100,
629 .cpu_name = "7455",
Kumar Gala10b35d92005-09-23 14:08:58 -0500630 .cpu_features = CPU_FTRS_7455_1,
Paul Mackerrasfab5db92006-06-07 16:14:40 +1000631 .cpu_user_features = COMMON_USER |
632 PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_PPC_LE,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700633 .icache_bsize = 32,
634 .dcache_bsize = 32,
635 .num_pmcs = 6,
Andy Fleming555d97a2005-12-15 20:02:04 -0600636 .cpu_setup = __setup_cpu_745x,
Andy Fleming555d97a2005-12-15 20:02:04 -0600637 .oprofile_cpu_type = "ppc/7450",
Andy Whitcroft7a45fb12006-01-13 12:35:49 +0000638 .oprofile_type = PPC_OPROFILE_G4,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100639 .platform = "ppc7450",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700640 },
641 { /* 7455 rev 2.0 */
642 .pvr_mask = 0xffffffff,
643 .pvr_value = 0x80010200,
644 .cpu_name = "7455",
Kumar Gala10b35d92005-09-23 14:08:58 -0500645 .cpu_features = CPU_FTRS_7455_20,
Paul Mackerrasfab5db92006-06-07 16:14:40 +1000646 .cpu_user_features = COMMON_USER |
647 PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_PPC_LE,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700648 .icache_bsize = 32,
649 .dcache_bsize = 32,
650 .num_pmcs = 6,
Andy Fleming555d97a2005-12-15 20:02:04 -0600651 .cpu_setup = __setup_cpu_745x,
Andy Fleming555d97a2005-12-15 20:02:04 -0600652 .oprofile_cpu_type = "ppc/7450",
Andy Whitcroft7a45fb12006-01-13 12:35:49 +0000653 .oprofile_type = PPC_OPROFILE_G4,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100654 .platform = "ppc7450",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700655 },
656 { /* 7455 others */
657 .pvr_mask = 0xffff0000,
658 .pvr_value = 0x80010000,
659 .cpu_name = "7455",
Kumar Gala10b35d92005-09-23 14:08:58 -0500660 .cpu_features = CPU_FTRS_7455,
Paul Mackerrasfab5db92006-06-07 16:14:40 +1000661 .cpu_user_features = COMMON_USER |
662 PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_PPC_LE,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700663 .icache_bsize = 32,
664 .dcache_bsize = 32,
665 .num_pmcs = 6,
Andy Fleming555d97a2005-12-15 20:02:04 -0600666 .cpu_setup = __setup_cpu_745x,
Andy Fleming555d97a2005-12-15 20:02:04 -0600667 .oprofile_cpu_type = "ppc/7450",
Andy Whitcroft7a45fb12006-01-13 12:35:49 +0000668 .oprofile_type = PPC_OPROFILE_G4,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100669 .platform = "ppc7450",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700670 },
671 { /* 7447/7457 Rev 1.0 */
672 .pvr_mask = 0xffffffff,
673 .pvr_value = 0x80020100,
674 .cpu_name = "7447/7457",
Kumar Gala10b35d92005-09-23 14:08:58 -0500675 .cpu_features = CPU_FTRS_7447_10,
Paul Mackerrasfab5db92006-06-07 16:14:40 +1000676 .cpu_user_features = COMMON_USER |
677 PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_PPC_LE,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700678 .icache_bsize = 32,
679 .dcache_bsize = 32,
680 .num_pmcs = 6,
Andy Fleming555d97a2005-12-15 20:02:04 -0600681 .cpu_setup = __setup_cpu_745x,
Andy Fleming555d97a2005-12-15 20:02:04 -0600682 .oprofile_cpu_type = "ppc/7450",
Andy Whitcroft7a45fb12006-01-13 12:35:49 +0000683 .oprofile_type = PPC_OPROFILE_G4,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100684 .platform = "ppc7450",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700685 },
686 { /* 7447/7457 Rev 1.1 */
687 .pvr_mask = 0xffffffff,
688 .pvr_value = 0x80020101,
689 .cpu_name = "7447/7457",
Kumar Gala10b35d92005-09-23 14:08:58 -0500690 .cpu_features = CPU_FTRS_7447_10,
Paul Mackerrasfab5db92006-06-07 16:14:40 +1000691 .cpu_user_features = COMMON_USER |
692 PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_PPC_LE,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700693 .icache_bsize = 32,
694 .dcache_bsize = 32,
695 .num_pmcs = 6,
Andy Fleming555d97a2005-12-15 20:02:04 -0600696 .cpu_setup = __setup_cpu_745x,
Andy Fleming555d97a2005-12-15 20:02:04 -0600697 .oprofile_cpu_type = "ppc/7450",
Andy Whitcroft7a45fb12006-01-13 12:35:49 +0000698 .oprofile_type = PPC_OPROFILE_G4,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100699 .platform = "ppc7450",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700700 },
701 { /* 7447/7457 Rev 1.2 and later */
702 .pvr_mask = 0xffff0000,
703 .pvr_value = 0x80020000,
704 .cpu_name = "7447/7457",
Kumar Gala10b35d92005-09-23 14:08:58 -0500705 .cpu_features = CPU_FTRS_7447,
Paul Mackerrasfab5db92006-06-07 16:14:40 +1000706 .cpu_user_features = COMMON_USER | PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_PPC_LE,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700707 .icache_bsize = 32,
708 .dcache_bsize = 32,
709 .num_pmcs = 6,
Andy Fleming555d97a2005-12-15 20:02:04 -0600710 .cpu_setup = __setup_cpu_745x,
Andy Fleming555d97a2005-12-15 20:02:04 -0600711 .oprofile_cpu_type = "ppc/7450",
Andy Whitcroft7a45fb12006-01-13 12:35:49 +0000712 .oprofile_type = PPC_OPROFILE_G4,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100713 .platform = "ppc7450",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700714 },
715 { /* 7447A */
716 .pvr_mask = 0xffff0000,
717 .pvr_value = 0x80030000,
718 .cpu_name = "7447A",
Kumar Gala10b35d92005-09-23 14:08:58 -0500719 .cpu_features = CPU_FTRS_7447A,
Paul Mackerrasfab5db92006-06-07 16:14:40 +1000720 .cpu_user_features = COMMON_USER |
721 PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_PPC_LE,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700722 .icache_bsize = 32,
723 .dcache_bsize = 32,
724 .num_pmcs = 6,
Andy Fleming555d97a2005-12-15 20:02:04 -0600725 .cpu_setup = __setup_cpu_745x,
Andy Fleming555d97a2005-12-15 20:02:04 -0600726 .oprofile_cpu_type = "ppc/7450",
Andy Whitcroft7a45fb12006-01-13 12:35:49 +0000727 .oprofile_type = PPC_OPROFILE_G4,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100728 .platform = "ppc7450",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700729 },
Kumar Galabbde6302005-09-03 15:55:55 -0700730 { /* 7448 */
731 .pvr_mask = 0xffff0000,
732 .pvr_value = 0x80040000,
733 .cpu_name = "7448",
Kumar Gala10b35d92005-09-23 14:08:58 -0500734 .cpu_features = CPU_FTRS_7447A,
Paul Mackerrasfab5db92006-06-07 16:14:40 +1000735 .cpu_user_features = COMMON_USER |
736 PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_PPC_LE,
Kumar Galabbde6302005-09-03 15:55:55 -0700737 .icache_bsize = 32,
738 .dcache_bsize = 32,
739 .num_pmcs = 6,
Andy Fleming555d97a2005-12-15 20:02:04 -0600740 .cpu_setup = __setup_cpu_745x,
Andy Fleming555d97a2005-12-15 20:02:04 -0600741 .oprofile_cpu_type = "ppc/7450",
Andy Whitcroft7a45fb12006-01-13 12:35:49 +0000742 .oprofile_type = PPC_OPROFILE_G4,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100743 .platform = "ppc7450",
Kumar Galabbde6302005-09-03 15:55:55 -0700744 },
Linus Torvalds1da177e2005-04-16 15:20:36 -0700745 { /* 82xx (8240, 8245, 8260 are all 603e cores) */
746 .pvr_mask = 0x7fff0000,
747 .pvr_value = 0x00810000,
748 .cpu_name = "82xx",
Kumar Gala10b35d92005-09-23 14:08:58 -0500749 .cpu_features = CPU_FTRS_82XX,
Stephen Rothwell49209602005-10-12 15:55:09 +1000750 .cpu_user_features = COMMON_USER,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700751 .icache_bsize = 32,
752 .dcache_bsize = 32,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100753 .cpu_setup = __setup_cpu_603,
754 .platform = "ppc603",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700755 },
756 { /* All G2_LE (603e core, plus some) have the same pvr */
757 .pvr_mask = 0x7fff0000,
758 .pvr_value = 0x00820000,
759 .cpu_name = "G2_LE",
Kumar Gala10b35d92005-09-23 14:08:58 -0500760 .cpu_features = CPU_FTRS_G2_LE,
Stephen Rothwell49209602005-10-12 15:55:09 +1000761 .cpu_user_features = COMMON_USER,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700762 .icache_bsize = 32,
763 .dcache_bsize = 32,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100764 .cpu_setup = __setup_cpu_603,
765 .platform = "ppc603",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700766 },
Kim Phillips6c4a2502006-10-02 20:10:24 -0500767 { /* e300c1 (a 603e core, plus some) on 83xx */
Linus Torvalds1da177e2005-04-16 15:20:36 -0700768 .pvr_mask = 0x7fff0000,
769 .pvr_value = 0x00830000,
Kim Phillips6c4a2502006-10-02 20:10:24 -0500770 .cpu_name = "e300c1",
Kumar Gala10b35d92005-09-23 14:08:58 -0500771 .cpu_features = CPU_FTRS_E300,
Stephen Rothwell49209602005-10-12 15:55:09 +1000772 .cpu_user_features = COMMON_USER,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700773 .icache_bsize = 32,
774 .dcache_bsize = 32,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100775 .cpu_setup = __setup_cpu_603,
776 .platform = "ppc603",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700777 },
Kim Phillips6c4a2502006-10-02 20:10:24 -0500778 { /* e300c2 (an e300c1 core, plus some, minus FPU) on 83xx */
779 .pvr_mask = 0x7fff0000,
780 .pvr_value = 0x00840000,
781 .cpu_name = "e300c2",
782 .cpu_features = CPU_FTRS_E300,
783 .cpu_user_features = PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU,
784 .icache_bsize = 32,
785 .dcache_bsize = 32,
786 .cpu_setup = __setup_cpu_603,
787 .platform = "ppc603",
788 },
Linus Torvalds1da177e2005-04-16 15:20:36 -0700789 { /* default match, we assume split I/D cache & TB (non-601)... */
790 .pvr_mask = 0x00000000,
791 .pvr_value = 0x00000000,
792 .cpu_name = "(generic PPC)",
Kumar Gala10b35d92005-09-23 14:08:58 -0500793 .cpu_features = CPU_FTRS_CLASSIC32,
Stephen Rothwell49209602005-10-12 15:55:09 +1000794 .cpu_user_features = COMMON_USER,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700795 .icache_bsize = 32,
796 .dcache_bsize = 32,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100797 .platform = "ppc603",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700798 },
799#endif /* CLASSIC_PPC */
Linus Torvalds1da177e2005-04-16 15:20:36 -0700800#ifdef CONFIG_8xx
801 { /* 8xx */
802 .pvr_mask = 0xffff0000,
803 .pvr_value = 0x00500000,
804 .cpu_name = "8xx",
805 /* CPU_FTR_MAYBE_CAN_DOZE is possible,
806 * if the 8xx code is there.... */
Kumar Gala10b35d92005-09-23 14:08:58 -0500807 .cpu_features = CPU_FTRS_8XX,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700808 .cpu_user_features = PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU,
809 .icache_bsize = 16,
810 .dcache_bsize = 16,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100811 .platform = "ppc823",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700812 },
813#endif /* CONFIG_8xx */
814#ifdef CONFIG_40x
815 { /* 403GC */
816 .pvr_mask = 0xffffff00,
817 .pvr_value = 0x00200200,
818 .cpu_name = "403GC",
Kumar Gala10b35d92005-09-23 14:08:58 -0500819 .cpu_features = CPU_FTRS_40X,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700820 .cpu_user_features = PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU,
821 .icache_bsize = 16,
822 .dcache_bsize = 16,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100823 .platform = "ppc403",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700824 },
825 { /* 403GCX */
826 .pvr_mask = 0xffffff00,
827 .pvr_value = 0x00201400,
828 .cpu_name = "403GCX",
Kumar Gala10b35d92005-09-23 14:08:58 -0500829 .cpu_features = CPU_FTRS_40X,
Paul Mackerras98599012005-10-22 16:51:34 +1000830 .cpu_user_features = PPC_FEATURE_32 |
831 PPC_FEATURE_HAS_MMU | PPC_FEATURE_NO_TB,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700832 .icache_bsize = 16,
833 .dcache_bsize = 16,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100834 .platform = "ppc403",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700835 },
836 { /* 403G ?? */
837 .pvr_mask = 0xffff0000,
838 .pvr_value = 0x00200000,
839 .cpu_name = "403G ??",
Kumar Gala10b35d92005-09-23 14:08:58 -0500840 .cpu_features = CPU_FTRS_40X,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700841 .cpu_user_features = PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU,
842 .icache_bsize = 16,
843 .dcache_bsize = 16,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100844 .platform = "ppc403",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700845 },
846 { /* 405GP */
847 .pvr_mask = 0xffff0000,
848 .pvr_value = 0x40110000,
849 .cpu_name = "405GP",
Kumar Gala10b35d92005-09-23 14:08:58 -0500850 .cpu_features = CPU_FTRS_40X,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700851 .cpu_user_features = PPC_FEATURE_32 |
852 PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC,
853 .icache_bsize = 32,
854 .dcache_bsize = 32,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100855 .platform = "ppc405",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700856 },
857 { /* STB 03xxx */
858 .pvr_mask = 0xffff0000,
859 .pvr_value = 0x40130000,
860 .cpu_name = "STB03xxx",
Kumar Gala10b35d92005-09-23 14:08:58 -0500861 .cpu_features = CPU_FTRS_40X,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700862 .cpu_user_features = PPC_FEATURE_32 |
863 PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC,
864 .icache_bsize = 32,
865 .dcache_bsize = 32,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100866 .platform = "ppc405",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700867 },
868 { /* STB 04xxx */
869 .pvr_mask = 0xffff0000,
870 .pvr_value = 0x41810000,
871 .cpu_name = "STB04xxx",
Kumar Gala10b35d92005-09-23 14:08:58 -0500872 .cpu_features = CPU_FTRS_40X,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700873 .cpu_user_features = PPC_FEATURE_32 |
874 PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC,
875 .icache_bsize = 32,
876 .dcache_bsize = 32,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100877 .platform = "ppc405",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700878 },
879 { /* NP405L */
880 .pvr_mask = 0xffff0000,
881 .pvr_value = 0x41610000,
882 .cpu_name = "NP405L",
Kumar Gala10b35d92005-09-23 14:08:58 -0500883 .cpu_features = CPU_FTRS_40X,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700884 .cpu_user_features = PPC_FEATURE_32 |
885 PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC,
886 .icache_bsize = 32,
887 .dcache_bsize = 32,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100888 .platform = "ppc405",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700889 },
890 { /* NP4GS3 */
891 .pvr_mask = 0xffff0000,
892 .pvr_value = 0x40B10000,
893 .cpu_name = "NP4GS3",
Kumar Gala10b35d92005-09-23 14:08:58 -0500894 .cpu_features = CPU_FTRS_40X,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700895 .cpu_user_features = PPC_FEATURE_32 |
896 PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC,
897 .icache_bsize = 32,
898 .dcache_bsize = 32,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100899 .platform = "ppc405",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700900 },
901 { /* NP405H */
902 .pvr_mask = 0xffff0000,
903 .pvr_value = 0x41410000,
904 .cpu_name = "NP405H",
Kumar Gala10b35d92005-09-23 14:08:58 -0500905 .cpu_features = CPU_FTRS_40X,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700906 .cpu_user_features = PPC_FEATURE_32 |
907 PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC,
908 .icache_bsize = 32,
909 .dcache_bsize = 32,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100910 .platform = "ppc405",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700911 },
912 { /* 405GPr */
913 .pvr_mask = 0xffff0000,
914 .pvr_value = 0x50910000,
915 .cpu_name = "405GPr",
Kumar Gala10b35d92005-09-23 14:08:58 -0500916 .cpu_features = CPU_FTRS_40X,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700917 .cpu_user_features = PPC_FEATURE_32 |
918 PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC,
919 .icache_bsize = 32,
920 .dcache_bsize = 32,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100921 .platform = "ppc405",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700922 },
923 { /* STBx25xx */
924 .pvr_mask = 0xffff0000,
925 .pvr_value = 0x51510000,
926 .cpu_name = "STBx25xx",
Kumar Gala10b35d92005-09-23 14:08:58 -0500927 .cpu_features = CPU_FTRS_40X,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700928 .cpu_user_features = PPC_FEATURE_32 |
929 PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC,
930 .icache_bsize = 32,
931 .dcache_bsize = 32,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100932 .platform = "ppc405",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700933 },
934 { /* 405LP */
935 .pvr_mask = 0xffff0000,
936 .pvr_value = 0x41F10000,
937 .cpu_name = "405LP",
Kumar Gala10b35d92005-09-23 14:08:58 -0500938 .cpu_features = CPU_FTRS_40X,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700939 .cpu_user_features = PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU,
940 .icache_bsize = 32,
941 .dcache_bsize = 32,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100942 .platform = "ppc405",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700943 },
944 { /* Xilinx Virtex-II Pro */
Grant C. Likely72646c72006-01-19 01:13:20 -0700945 .pvr_mask = 0xfffff000,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700946 .pvr_value = 0x20010000,
947 .cpu_name = "Virtex-II Pro",
Kumar Gala10b35d92005-09-23 14:08:58 -0500948 .cpu_features = CPU_FTRS_40X,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700949 .cpu_user_features = PPC_FEATURE_32 |
950 PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC,
951 .icache_bsize = 32,
952 .dcache_bsize = 32,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100953 .platform = "ppc405",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700954 },
Grant C. Likely72646c72006-01-19 01:13:20 -0700955 { /* Xilinx Virtex-4 FX */
956 .pvr_mask = 0xfffff000,
957 .pvr_value = 0x20011000,
958 .cpu_name = "Virtex-4 FX",
959 .cpu_features = CPU_FTRS_40X,
960 .cpu_user_features = PPC_FEATURE_32 |
961 PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC,
962 .icache_bsize = 32,
963 .dcache_bsize = 32,
Peter Bergner838fdb42006-09-14 14:18:38 -0500964 .platform = "ppc405",
Grant C. Likely72646c72006-01-19 01:13:20 -0700965 },
Eugene Suroveginad95d602005-06-07 13:22:09 -0700966 { /* 405EP */
967 .pvr_mask = 0xffff0000,
968 .pvr_value = 0x51210000,
969 .cpu_name = "405EP",
Kumar Gala10b35d92005-09-23 14:08:58 -0500970 .cpu_features = CPU_FTRS_40X,
Eugene Suroveginad95d602005-06-07 13:22:09 -0700971 .cpu_user_features = PPC_FEATURE_32 |
972 PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC,
973 .icache_bsize = 32,
974 .dcache_bsize = 32,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100975 .platform = "ppc405",
Eugene Suroveginad95d602005-06-07 13:22:09 -0700976 },
Linus Torvalds1da177e2005-04-16 15:20:36 -0700977
978#endif /* CONFIG_40x */
979#ifdef CONFIG_44x
Matt Porterc9cf73a2005-07-31 22:34:52 -0700980 {
981 .pvr_mask = 0xf0000fff,
982 .pvr_value = 0x40000850,
983 .cpu_name = "440EP Rev. A",
Kumar Gala10b35d92005-09-23 14:08:58 -0500984 .cpu_features = CPU_FTRS_44X,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100985 .cpu_user_features = COMMON_USER_BOOKE | PPC_FEATURE_HAS_FPU,
Matt Porterc9cf73a2005-07-31 22:34:52 -0700986 .icache_bsize = 32,
987 .dcache_bsize = 32,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100988 .platform = "ppc440",
Matt Porterc9cf73a2005-07-31 22:34:52 -0700989 },
990 {
991 .pvr_mask = 0xf0000fff,
992 .pvr_value = 0x400008d3,
993 .cpu_name = "440EP Rev. B",
Kumar Gala10b35d92005-09-23 14:08:58 -0500994 .cpu_features = CPU_FTRS_44X,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100995 .cpu_user_features = COMMON_USER_BOOKE | PPC_FEATURE_HAS_FPU,
Matt Porterc9cf73a2005-07-31 22:34:52 -0700996 .icache_bsize = 32,
997 .dcache_bsize = 32,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100998 .platform = "ppc440",
Matt Porterc9cf73a2005-07-31 22:34:52 -0700999 },
Stephen Rothwell49209602005-10-12 15:55:09 +10001000 { /* 440GP Rev. B */
Linus Torvalds1da177e2005-04-16 15:20:36 -07001001 .pvr_mask = 0xf0000fff,
1002 .pvr_value = 0x40000440,
1003 .cpu_name = "440GP Rev. B",
Kumar Gala10b35d92005-09-23 14:08:58 -05001004 .cpu_features = CPU_FTRS_44X,
Paul Mackerras80f15dc2006-01-14 10:11:39 +11001005 .cpu_user_features = COMMON_USER_BOOKE,
Linus Torvalds1da177e2005-04-16 15:20:36 -07001006 .icache_bsize = 32,
1007 .dcache_bsize = 32,
Paul Mackerras80f15dc2006-01-14 10:11:39 +11001008 .platform = "ppc440gp",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001009 },
Stephen Rothwell49209602005-10-12 15:55:09 +10001010 { /* 440GP Rev. C */
Linus Torvalds1da177e2005-04-16 15:20:36 -07001011 .pvr_mask = 0xf0000fff,
1012 .pvr_value = 0x40000481,
1013 .cpu_name = "440GP Rev. C",
Kumar Gala10b35d92005-09-23 14:08:58 -05001014 .cpu_features = CPU_FTRS_44X,
Paul Mackerras80f15dc2006-01-14 10:11:39 +11001015 .cpu_user_features = COMMON_USER_BOOKE,
Linus Torvalds1da177e2005-04-16 15:20:36 -07001016 .icache_bsize = 32,
1017 .dcache_bsize = 32,
Paul Mackerras80f15dc2006-01-14 10:11:39 +11001018 .platform = "ppc440gp",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001019 },
1020 { /* 440GX Rev. A */
1021 .pvr_mask = 0xf0000fff,
1022 .pvr_value = 0x50000850,
1023 .cpu_name = "440GX Rev. A",
Kumar Gala10b35d92005-09-23 14:08:58 -05001024 .cpu_features = CPU_FTRS_44X,
Paul Mackerras80f15dc2006-01-14 10:11:39 +11001025 .cpu_user_features = COMMON_USER_BOOKE,
Linus Torvalds1da177e2005-04-16 15:20:36 -07001026 .icache_bsize = 32,
1027 .dcache_bsize = 32,
Paul Mackerras80f15dc2006-01-14 10:11:39 +11001028 .platform = "ppc440",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001029 },
1030 { /* 440GX Rev. B */
1031 .pvr_mask = 0xf0000fff,
1032 .pvr_value = 0x50000851,
1033 .cpu_name = "440GX Rev. B",
Kumar Gala10b35d92005-09-23 14:08:58 -05001034 .cpu_features = CPU_FTRS_44X,
Paul Mackerras80f15dc2006-01-14 10:11:39 +11001035 .cpu_user_features = COMMON_USER_BOOKE,
Linus Torvalds1da177e2005-04-16 15:20:36 -07001036 .icache_bsize = 32,
1037 .dcache_bsize = 32,
Paul Mackerras80f15dc2006-01-14 10:11:39 +11001038 .platform = "ppc440",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001039 },
1040 { /* 440GX Rev. C */
1041 .pvr_mask = 0xf0000fff,
1042 .pvr_value = 0x50000892,
1043 .cpu_name = "440GX Rev. C",
Kumar Gala10b35d92005-09-23 14:08:58 -05001044 .cpu_features = CPU_FTRS_44X,
Paul Mackerras80f15dc2006-01-14 10:11:39 +11001045 .cpu_user_features = COMMON_USER_BOOKE,
Linus Torvalds1da177e2005-04-16 15:20:36 -07001046 .icache_bsize = 32,
1047 .dcache_bsize = 32,
Paul Mackerras80f15dc2006-01-14 10:11:39 +11001048 .platform = "ppc440",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001049 },
Eugene Surovegin9149fb32005-09-03 15:55:40 -07001050 { /* 440GX Rev. F */
1051 .pvr_mask = 0xf0000fff,
1052 .pvr_value = 0x50000894,
1053 .cpu_name = "440GX Rev. F",
Kumar Gala10b35d92005-09-23 14:08:58 -05001054 .cpu_features = CPU_FTRS_44X,
Paul Mackerras80f15dc2006-01-14 10:11:39 +11001055 .cpu_user_features = COMMON_USER_BOOKE,
Eugene Surovegin9149fb32005-09-03 15:55:40 -07001056 .icache_bsize = 32,
1057 .dcache_bsize = 32,
Paul Mackerras80f15dc2006-01-14 10:11:39 +11001058 .platform = "ppc440",
Eugene Surovegin9149fb32005-09-03 15:55:40 -07001059 },
Matt Porter656de7e2005-09-03 15:55:42 -07001060 { /* 440SP Rev. A */
1061 .pvr_mask = 0xff000fff,
1062 .pvr_value = 0x53000891,
1063 .cpu_name = "440SP Rev. A",
Kumar Gala10b35d92005-09-23 14:08:58 -05001064 .cpu_features = CPU_FTRS_44X,
Paul Mackerras80f15dc2006-01-14 10:11:39 +11001065 .cpu_user_features = COMMON_USER_BOOKE,
Matt Porter656de7e2005-09-03 15:55:42 -07001066 .icache_bsize = 32,
1067 .dcache_bsize = 32,
Paul Mackerras80f15dc2006-01-14 10:11:39 +11001068 .platform = "ppc440",
Matt Porter656de7e2005-09-03 15:55:42 -07001069 },
Roland Dreierb0f7b8b2005-11-07 00:58:13 -08001070 { /* 440SPe Rev. A */
1071 .pvr_mask = 0xff000fff,
1072 .pvr_value = 0x53000890,
1073 .cpu_name = "440SPe Rev. A",
1074 .cpu_features = CPU_FTR_SPLIT_ID_CACHE |
1075 CPU_FTR_USE_TB,
Paul Mackerras80f15dc2006-01-14 10:11:39 +11001076 .cpu_user_features = COMMON_USER_BOOKE,
Roland Dreierb0f7b8b2005-11-07 00:58:13 -08001077 .icache_bsize = 32,
1078 .dcache_bsize = 32,
Paul Mackerras80f15dc2006-01-14 10:11:39 +11001079 .platform = "ppc440",
Roland Dreierb0f7b8b2005-11-07 00:58:13 -08001080 },
Linus Torvalds1da177e2005-04-16 15:20:36 -07001081#endif /* CONFIG_44x */
Kumar Gala33d9e9b2005-06-25 14:54:37 -07001082#ifdef CONFIG_FSL_BOOKE
Stephen Rothwell49209602005-10-12 15:55:09 +10001083 { /* e200z5 */
Kumar Gala33d9e9b2005-06-25 14:54:37 -07001084 .pvr_mask = 0xfff00000,
1085 .pvr_value = 0x81000000,
1086 .cpu_name = "e200z5",
1087 /* xxx - galak: add CPU_FTR_MAYBE_CAN_DOZE */
Kumar Gala10b35d92005-09-23 14:08:58 -05001088 .cpu_features = CPU_FTRS_E200,
Paul Mackerras80f15dc2006-01-14 10:11:39 +11001089 .cpu_user_features = COMMON_USER_BOOKE |
1090 PPC_FEATURE_HAS_EFP_SINGLE |
Kumar Gala33d9e9b2005-06-25 14:54:37 -07001091 PPC_FEATURE_UNIFIED_CACHE,
1092 .dcache_bsize = 32,
Paul Mackerras80f15dc2006-01-14 10:11:39 +11001093 .platform = "ppc5554",
Kumar Gala33d9e9b2005-06-25 14:54:37 -07001094 },
Stephen Rothwell49209602005-10-12 15:55:09 +10001095 { /* e200z6 */
Kumar Gala33d9e9b2005-06-25 14:54:37 -07001096 .pvr_mask = 0xfff00000,
1097 .pvr_value = 0x81100000,
1098 .cpu_name = "e200z6",
1099 /* xxx - galak: add CPU_FTR_MAYBE_CAN_DOZE */
Kumar Gala10b35d92005-09-23 14:08:58 -05001100 .cpu_features = CPU_FTRS_E200,
Paul Mackerras80f15dc2006-01-14 10:11:39 +11001101 .cpu_user_features = COMMON_USER_BOOKE |
1102 PPC_FEATURE_SPE_COMP |
Kumar Gala33d9e9b2005-06-25 14:54:37 -07001103 PPC_FEATURE_HAS_EFP_SINGLE |
1104 PPC_FEATURE_UNIFIED_CACHE,
1105 .dcache_bsize = 32,
Paul Mackerras80f15dc2006-01-14 10:11:39 +11001106 .platform = "ppc5554",
Kumar Gala33d9e9b2005-06-25 14:54:37 -07001107 },
Stephen Rothwell49209602005-10-12 15:55:09 +10001108 { /* e500 */
Linus Torvalds1da177e2005-04-16 15:20:36 -07001109 .pvr_mask = 0xffff0000,
1110 .pvr_value = 0x80200000,
1111 .cpu_name = "e500",
1112 /* xxx - galak: add CPU_FTR_MAYBE_CAN_DOZE */
Kumar Gala10b35d92005-09-23 14:08:58 -05001113 .cpu_features = CPU_FTRS_E500,
Paul Mackerras80f15dc2006-01-14 10:11:39 +11001114 .cpu_user_features = COMMON_USER_BOOKE |
1115 PPC_FEATURE_SPE_COMP |
Linus Torvalds1da177e2005-04-16 15:20:36 -07001116 PPC_FEATURE_HAS_EFP_SINGLE,
1117 .icache_bsize = 32,
1118 .dcache_bsize = 32,
1119 .num_pmcs = 4,
Andy Fleming555d97a2005-12-15 20:02:04 -06001120 .oprofile_cpu_type = "ppc/e500",
Andy Whitcroft7a45fb12006-01-13 12:35:49 +00001121 .oprofile_type = PPC_OPROFILE_BOOKE,
Paul Mackerras80f15dc2006-01-14 10:11:39 +11001122 .platform = "ppc8540",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001123 },
Stephen Rothwell49209602005-10-12 15:55:09 +10001124 { /* e500v2 */
Kumar Gala5b37b702005-06-21 17:15:18 -07001125 .pvr_mask = 0xffff0000,
1126 .pvr_value = 0x80210000,
1127 .cpu_name = "e500v2",
1128 /* xxx - galak: add CPU_FTR_MAYBE_CAN_DOZE */
Kumar Gala10b35d92005-09-23 14:08:58 -05001129 .cpu_features = CPU_FTRS_E500_2,
Paul Mackerras80f15dc2006-01-14 10:11:39 +11001130 .cpu_user_features = COMMON_USER_BOOKE |
1131 PPC_FEATURE_SPE_COMP |
1132 PPC_FEATURE_HAS_EFP_SINGLE |
1133 PPC_FEATURE_HAS_EFP_DOUBLE,
Kumar Gala5b37b702005-06-21 17:15:18 -07001134 .icache_bsize = 32,
1135 .dcache_bsize = 32,
1136 .num_pmcs = 4,
Andy Fleming555d97a2005-12-15 20:02:04 -06001137 .oprofile_cpu_type = "ppc/e500",
Andy Whitcroft7a45fb12006-01-13 12:35:49 +00001138 .oprofile_type = PPC_OPROFILE_BOOKE,
Paul Mackerras80f15dc2006-01-14 10:11:39 +11001139 .platform = "ppc8548",
Kumar Gala5b37b702005-06-21 17:15:18 -07001140 },
Linus Torvalds1da177e2005-04-16 15:20:36 -07001141#endif
1142#if !CLASSIC_PPC
1143 { /* default match */
1144 .pvr_mask = 0x00000000,
1145 .pvr_value = 0x00000000,
1146 .cpu_name = "(generic PPC)",
Kumar Gala10b35d92005-09-23 14:08:58 -05001147 .cpu_features = CPU_FTRS_GENERIC_32,
Linus Torvalds1da177e2005-04-16 15:20:36 -07001148 .cpu_user_features = PPC_FEATURE_32,
1149 .icache_bsize = 32,
1150 .dcache_bsize = 32,
Paul Mackerras80f15dc2006-01-14 10:11:39 +11001151 .platform = "powerpc",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001152 }
1153#endif /* !CLASSIC_PPC */
Stephen Rothwell49209602005-10-12 15:55:09 +10001154#endif /* CONFIG_PPC32 */
Linus Torvalds1da177e2005-04-16 15:20:36 -07001155};