blob: e4e81374cb9a48011191a85cc75995430e64817f [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
13#include <linux/config.h>
14#include <linux/string.h>
15#include <linux/sched.h>
16#include <linux/threads.h>
17#include <linux/init.h>
Kumar Gala400d2212005-09-27 15:13:12 -050018#include <linux/module.h>
19
20#include <asm/oprofile_impl.h>
Linus Torvalds1da177e2005-04-16 15:20:36 -070021#include <asm/cputable.h>
22
Kumar Gala400d2212005-09-27 15:13:12 -050023struct cpu_spec* cur_cpu_spec = NULL;
Stephen Rothwell49209602005-10-12 15:55:09 +100024EXPORT_SYMBOL(cur_cpu_spec);
Linus Torvalds1da177e2005-04-16 15:20:36 -070025
Stephen Rothwell49209602005-10-12 15:55:09 +100026/* NOTE:
27 * Unlike ppc32, ppc64 will only call this once for the boot CPU, it's
28 * the responsibility of the appropriate CPU save/restore functions to
29 * eventually copy these settings over. Those save/restore aren't yet
30 * part of the cputable though. That has to be fixed for both ppc32
31 * and ppc64
32 */
33#ifdef CONFIG_PPC64
34extern void __setup_cpu_power3(unsigned long offset, struct cpu_spec* spec);
35extern void __setup_cpu_power4(unsigned long offset, struct cpu_spec* spec);
36extern void __setup_cpu_be(unsigned long offset, struct cpu_spec* spec);
37#else
Kumar Gala400d2212005-09-27 15:13:12 -050038extern void __setup_cpu_603(unsigned long offset, struct cpu_spec* spec);
39extern void __setup_cpu_604(unsigned long offset, struct cpu_spec* spec);
40extern void __setup_cpu_750(unsigned long offset, struct cpu_spec* spec);
41extern void __setup_cpu_750cx(unsigned long offset, struct cpu_spec* spec);
42extern void __setup_cpu_750fx(unsigned long offset, struct cpu_spec* spec);
43extern void __setup_cpu_7400(unsigned long offset, struct cpu_spec* spec);
44extern void __setup_cpu_7410(unsigned long offset, struct cpu_spec* spec);
45extern void __setup_cpu_745x(unsigned long offset, struct cpu_spec* spec);
Stephen Rothwell49209602005-10-12 15:55:09 +100046#endif /* CONFIG_PPC32 */
Kumar Gala400d2212005-09-27 15:13:12 -050047extern void __setup_cpu_ppc970(unsigned long offset, struct cpu_spec* spec);
Linus Torvalds1da177e2005-04-16 15:20:36 -070048
Linus Torvalds1da177e2005-04-16 15:20:36 -070049/* This table only contains "desktop" CPUs, it need to be filled with embedded
50 * ones as well...
51 */
Stephen Rothwell49209602005-10-12 15:55:09 +100052#define COMMON_USER (PPC_FEATURE_32 | PPC_FEATURE_HAS_FPU | \
53 PPC_FEATURE_HAS_MMU)
54#define COMMON_USER_PPC64 (COMMON_USER | PPC_FEATURE_64)
Paul Mackerrasa7ddc5e2005-11-10 14:29:18 +110055#define COMMON_USER_POWER4 (COMMON_USER_PPC64 | PPC_FEATURE_POWER4)
Benjamin Herrenschmidtaa5cb0212006-03-01 15:07:07 +110056#define COMMON_USER_POWER5 (COMMON_USER_PPC64 | PPC_FEATURE_POWER5 |\
57 PPC_FEATURE_SMT | PPC_FEATURE_ICACHE_SNOOP)
58#define COMMON_USER_POWER5_PLUS (COMMON_USER_PPC64 | PPC_FEATURE_POWER5_PLUS|\
59 PPC_FEATURE_SMT | PPC_FEATURE_ICACHE_SNOOP)
Paul Mackerras80f15dc2006-01-14 10:11:39 +110060#define COMMON_USER_BOOKE (PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU | \
61 PPC_FEATURE_BOOKE)
Linus Torvalds1da177e2005-04-16 15:20:36 -070062
Linus Torvalds1da177e2005-04-16 15:20:36 -070063/* We only set the spe features if the kernel was compiled with
64 * spe support
65 */
66#ifdef CONFIG_SPE
Stephen Rothwell49209602005-10-12 15:55:09 +100067#define PPC_FEATURE_SPE_COMP PPC_FEATURE_HAS_SPE
Linus Torvalds1da177e2005-04-16 15:20:36 -070068#else
Stephen Rothwell49209602005-10-12 15:55:09 +100069#define PPC_FEATURE_SPE_COMP 0
Linus Torvalds1da177e2005-04-16 15:20:36 -070070#endif
71
Linus Torvalds1da177e2005-04-16 15:20:36 -070072struct cpu_spec cpu_specs[] = {
Stephen Rothwell49209602005-10-12 15:55:09 +100073#ifdef CONFIG_PPC64
74 { /* Power3 */
75 .pvr_mask = 0xffff0000,
76 .pvr_value = 0x00400000,
77 .cpu_name = "POWER3 (630)",
78 .cpu_features = CPU_FTRS_POWER3,
79 .cpu_user_features = COMMON_USER_PPC64,
80 .icache_bsize = 128,
81 .dcache_bsize = 128,
82 .num_pmcs = 8,
83 .cpu_setup = __setup_cpu_power3,
Stephen Rothwell49209602005-10-12 15:55:09 +100084 .oprofile_cpu_type = "ppc64/power3",
Andy Whitcroft7a45fb12006-01-13 12:35:49 +000085 .oprofile_type = PPC_OPROFILE_RS64,
Paul Mackerras80f15dc2006-01-14 10:11:39 +110086 .platform = "power3",
Stephen Rothwell49209602005-10-12 15:55:09 +100087 },
88 { /* Power3+ */
89 .pvr_mask = 0xffff0000,
90 .pvr_value = 0x00410000,
91 .cpu_name = "POWER3 (630+)",
92 .cpu_features = CPU_FTRS_POWER3,
93 .cpu_user_features = COMMON_USER_PPC64,
94 .icache_bsize = 128,
95 .dcache_bsize = 128,
96 .num_pmcs = 8,
97 .cpu_setup = __setup_cpu_power3,
Stephen Rothwell49209602005-10-12 15:55:09 +100098 .oprofile_cpu_type = "ppc64/power3",
Andy Whitcroft7a45fb12006-01-13 12:35:49 +000099 .oprofile_type = PPC_OPROFILE_RS64,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100100 .platform = "power3",
Stephen Rothwell49209602005-10-12 15:55:09 +1000101 },
102 { /* Northstar */
103 .pvr_mask = 0xffff0000,
104 .pvr_value = 0x00330000,
105 .cpu_name = "RS64-II (northstar)",
106 .cpu_features = CPU_FTRS_RS64,
107 .cpu_user_features = COMMON_USER_PPC64,
108 .icache_bsize = 128,
109 .dcache_bsize = 128,
110 .num_pmcs = 8,
111 .cpu_setup = __setup_cpu_power3,
Stephen Rothwell49209602005-10-12 15:55:09 +1000112 .oprofile_cpu_type = "ppc64/rs64",
Andy Whitcroft7a45fb12006-01-13 12:35:49 +0000113 .oprofile_type = PPC_OPROFILE_RS64,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100114 .platform = "rs64",
Stephen Rothwell49209602005-10-12 15:55:09 +1000115 },
116 { /* Pulsar */
117 .pvr_mask = 0xffff0000,
118 .pvr_value = 0x00340000,
119 .cpu_name = "RS64-III (pulsar)",
120 .cpu_features = CPU_FTRS_RS64,
121 .cpu_user_features = COMMON_USER_PPC64,
122 .icache_bsize = 128,
123 .dcache_bsize = 128,
124 .num_pmcs = 8,
125 .cpu_setup = __setup_cpu_power3,
Stephen Rothwell49209602005-10-12 15:55:09 +1000126 .oprofile_cpu_type = "ppc64/rs64",
Andy Whitcroft7a45fb12006-01-13 12:35:49 +0000127 .oprofile_type = PPC_OPROFILE_RS64,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100128 .platform = "rs64",
Stephen Rothwell49209602005-10-12 15:55:09 +1000129 },
130 { /* I-star */
131 .pvr_mask = 0xffff0000,
132 .pvr_value = 0x00360000,
133 .cpu_name = "RS64-III (icestar)",
134 .cpu_features = CPU_FTRS_RS64,
135 .cpu_user_features = COMMON_USER_PPC64,
136 .icache_bsize = 128,
137 .dcache_bsize = 128,
138 .num_pmcs = 8,
139 .cpu_setup = __setup_cpu_power3,
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,
153 .cpu_setup = __setup_cpu_power3,
Stephen Rothwell49209602005-10-12 15:55:09 +1000154 .oprofile_cpu_type = "ppc64/rs64",
Andy Whitcroft7a45fb12006-01-13 12:35:49 +0000155 .oprofile_type = PPC_OPROFILE_RS64,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100156 .platform = "rs64",
Stephen Rothwell49209602005-10-12 15:55:09 +1000157 },
158 { /* Power4 */
159 .pvr_mask = 0xffff0000,
160 .pvr_value = 0x00350000,
161 .cpu_name = "POWER4 (gp)",
162 .cpu_features = CPU_FTRS_POWER4,
Paul Mackerrasa7ddc5e2005-11-10 14:29:18 +1100163 .cpu_user_features = COMMON_USER_POWER4,
Stephen Rothwell49209602005-10-12 15:55:09 +1000164 .icache_bsize = 128,
165 .dcache_bsize = 128,
166 .num_pmcs = 8,
167 .cpu_setup = __setup_cpu_power4,
Stephen Rothwell49209602005-10-12 15:55:09 +1000168 .oprofile_cpu_type = "ppc64/power4",
Andy Whitcroft7a45fb12006-01-13 12:35:49 +0000169 .oprofile_type = PPC_OPROFILE_POWER4,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100170 .platform = "power4",
Stephen Rothwell49209602005-10-12 15:55:09 +1000171 },
172 { /* Power4+ */
173 .pvr_mask = 0xffff0000,
174 .pvr_value = 0x00380000,
175 .cpu_name = "POWER4+ (gq)",
176 .cpu_features = CPU_FTRS_POWER4,
Paul Mackerrasa7ddc5e2005-11-10 14:29:18 +1100177 .cpu_user_features = COMMON_USER_POWER4,
Stephen Rothwell49209602005-10-12 15:55:09 +1000178 .icache_bsize = 128,
179 .dcache_bsize = 128,
180 .num_pmcs = 8,
181 .cpu_setup = __setup_cpu_power4,
Stephen Rothwell49209602005-10-12 15:55:09 +1000182 .oprofile_cpu_type = "ppc64/power4",
Andy Whitcroft7a45fb12006-01-13 12:35:49 +0000183 .oprofile_type = PPC_OPROFILE_POWER4,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100184 .platform = "power4",
Stephen Rothwell49209602005-10-12 15:55:09 +1000185 },
186 { /* PPC970 */
187 .pvr_mask = 0xffff0000,
188 .pvr_value = 0x00390000,
189 .cpu_name = "PPC970",
190 .cpu_features = CPU_FTRS_PPC970,
Paul Mackerrasa7ddc5e2005-11-10 14:29:18 +1100191 .cpu_user_features = COMMON_USER_POWER4 |
Stephen Rothwell49209602005-10-12 15:55:09 +1000192 PPC_FEATURE_HAS_ALTIVEC_COMP,
193 .icache_bsize = 128,
194 .dcache_bsize = 128,
195 .num_pmcs = 8,
196 .cpu_setup = __setup_cpu_ppc970,
Stephen Rothwell49209602005-10-12 15:55:09 +1000197 .oprofile_cpu_type = "ppc64/970",
Andy Whitcroft7a45fb12006-01-13 12:35:49 +0000198 .oprofile_type = PPC_OPROFILE_POWER4,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100199 .platform = "ppc970",
Stephen Rothwell49209602005-10-12 15:55:09 +1000200 },
201#endif /* CONFIG_PPC64 */
202#if defined(CONFIG_PPC64) || defined(CONFIG_POWER4)
203 { /* PPC970FX */
204 .pvr_mask = 0xffff0000,
205 .pvr_value = 0x003c0000,
206 .cpu_name = "PPC970FX",
207#ifdef CONFIG_PPC32
208 .cpu_features = CPU_FTRS_970_32,
209#else
210 .cpu_features = CPU_FTRS_PPC970,
211#endif
Paul Mackerrasa7ddc5e2005-11-10 14:29:18 +1100212 .cpu_user_features = COMMON_USER_POWER4 |
Stephen Rothwell49209602005-10-12 15:55:09 +1000213 PPC_FEATURE_HAS_ALTIVEC_COMP,
214 .icache_bsize = 128,
215 .dcache_bsize = 128,
216 .num_pmcs = 8,
217 .cpu_setup = __setup_cpu_ppc970,
Stephen Rothwell49209602005-10-12 15:55:09 +1000218 .oprofile_cpu_type = "ppc64/970",
Andy Whitcroft7a45fb12006-01-13 12:35:49 +0000219 .oprofile_type = PPC_OPROFILE_POWER4,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100220 .platform = "ppc970",
Stephen Rothwell49209602005-10-12 15:55:09 +1000221 },
222#endif /* defined(CONFIG_PPC64) || defined(CONFIG_POWER4) */
223#ifdef CONFIG_PPC64
224 { /* PPC970MP */
225 .pvr_mask = 0xffff0000,
226 .pvr_value = 0x00440000,
227 .cpu_name = "PPC970MP",
228 .cpu_features = CPU_FTRS_PPC970,
Paul Mackerrasa7ddc5e2005-11-10 14:29:18 +1100229 .cpu_user_features = COMMON_USER_POWER4 |
Stephen Rothwell49209602005-10-12 15:55:09 +1000230 PPC_FEATURE_HAS_ALTIVEC_COMP,
231 .icache_bsize = 128,
232 .dcache_bsize = 128,
233 .cpu_setup = __setup_cpu_ppc970,
Stephen Rothwell49209602005-10-12 15:55:09 +1000234 .oprofile_cpu_type = "ppc64/970",
Andy Whitcroft7a45fb12006-01-13 12:35:49 +0000235 .oprofile_type = PPC_OPROFILE_POWER4,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100236 .platform = "ppc970",
Stephen Rothwell49209602005-10-12 15:55:09 +1000237 },
Benjamin Herrenschmidt3c726f82005-11-07 11:06:55 +1100238 { /* Power5 GR */
Stephen Rothwell49209602005-10-12 15:55:09 +1000239 .pvr_mask = 0xffff0000,
240 .pvr_value = 0x003a0000,
241 .cpu_name = "POWER5 (gr)",
242 .cpu_features = CPU_FTRS_POWER5,
Paul Mackerrasa7ddc5e2005-11-10 14:29:18 +1100243 .cpu_user_features = COMMON_USER_POWER5,
Stephen Rothwell49209602005-10-12 15:55:09 +1000244 .icache_bsize = 128,
245 .dcache_bsize = 128,
246 .num_pmcs = 6,
247 .cpu_setup = __setup_cpu_power4,
Stephen Rothwell49209602005-10-12 15:55:09 +1000248 .oprofile_cpu_type = "ppc64/power5",
Andy Whitcroft7a45fb12006-01-13 12:35:49 +0000249 .oprofile_type = PPC_OPROFILE_POWER4,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100250 .platform = "power5",
Stephen Rothwell49209602005-10-12 15:55:09 +1000251 },
Benjamin Herrenschmidt3c726f82005-11-07 11:06:55 +1100252 { /* Power5 GS */
Stephen Rothwell49209602005-10-12 15:55:09 +1000253 .pvr_mask = 0xffff0000,
254 .pvr_value = 0x003b0000,
Anton Blanchard834608f2006-01-09 15:42:30 +1100255 .cpu_name = "POWER5+ (gs)",
Stephen Rothwell49209602005-10-12 15:55:09 +1000256 .cpu_features = CPU_FTRS_POWER5,
Paul Mackerrasa7ddc5e2005-11-10 14:29:18 +1100257 .cpu_user_features = COMMON_USER_POWER5_PLUS,
Stephen Rothwell49209602005-10-12 15:55:09 +1000258 .icache_bsize = 128,
259 .dcache_bsize = 128,
260 .num_pmcs = 6,
261 .cpu_setup = __setup_cpu_power4,
Anton Blanchard834608f2006-01-09 15:42:30 +1100262 .oprofile_cpu_type = "ppc64/power5+",
Andy Whitcroft7a45fb12006-01-13 12:35:49 +0000263 .oprofile_type = PPC_OPROFILE_POWER4,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100264 .platform = "power5+",
Stephen Rothwell49209602005-10-12 15:55:09 +1000265 },
Arnd Bergmannc902be72006-01-04 19:55:53 +0000266 { /* Cell Broadband Engine */
Stephen Rothwell49209602005-10-12 15:55:09 +1000267 .pvr_mask = 0xffff0000,
268 .pvr_value = 0x00700000,
269 .cpu_name = "Cell Broadband Engine",
270 .cpu_features = CPU_FTRS_CELL,
271 .cpu_user_features = COMMON_USER_PPC64 |
Benjamin Herrenschmidtaa5cb0212006-03-01 15:07:07 +1100272 PPC_FEATURE_CELL | PPC_FEATURE_HAS_ALTIVEC_COMP |
273 PPC_FEATURE_SMT,
Stephen Rothwell49209602005-10-12 15:55:09 +1000274 .icache_bsize = 128,
275 .dcache_bsize = 128,
276 .cpu_setup = __setup_cpu_be,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100277 .platform = "ppc-cell-be",
Stephen Rothwell49209602005-10-12 15:55:09 +1000278 },
279 { /* default match */
280 .pvr_mask = 0x00000000,
281 .pvr_value = 0x00000000,
282 .cpu_name = "POWER4 (compatible)",
283 .cpu_features = CPU_FTRS_COMPATIBLE,
284 .cpu_user_features = COMMON_USER_PPC64,
285 .icache_bsize = 128,
286 .dcache_bsize = 128,
287 .num_pmcs = 6,
288 .cpu_setup = __setup_cpu_power4,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100289 .platform = "power4",
Stephen Rothwell49209602005-10-12 15:55:09 +1000290 }
291#endif /* CONFIG_PPC64 */
292#ifdef CONFIG_PPC32
Linus Torvalds1da177e2005-04-16 15:20:36 -0700293#if CLASSIC_PPC
Stephen Rothwell49209602005-10-12 15:55:09 +1000294 { /* 601 */
Linus Torvalds1da177e2005-04-16 15:20:36 -0700295 .pvr_mask = 0xffff0000,
296 .pvr_value = 0x00010000,
297 .cpu_name = "601",
Kumar Gala10b35d92005-09-23 14:08:58 -0500298 .cpu_features = CPU_FTRS_PPC601,
Stephen Rothwell49209602005-10-12 15:55:09 +1000299 .cpu_user_features = COMMON_USER | PPC_FEATURE_601_INSTR |
Paul Mackerras98599012005-10-22 16:51:34 +1000300 PPC_FEATURE_UNIFIED_CACHE | PPC_FEATURE_NO_TB,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700301 .icache_bsize = 32,
302 .dcache_bsize = 32,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100303 .platform = "ppc601",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700304 },
305 { /* 603 */
306 .pvr_mask = 0xffff0000,
307 .pvr_value = 0x00030000,
308 .cpu_name = "603",
Kumar Gala10b35d92005-09-23 14:08:58 -0500309 .cpu_features = CPU_FTRS_603,
Stephen Rothwell49209602005-10-12 15:55:09 +1000310 .cpu_user_features = COMMON_USER,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700311 .icache_bsize = 32,
312 .dcache_bsize = 32,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100313 .cpu_setup = __setup_cpu_603,
314 .platform = "ppc603",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700315 },
316 { /* 603e */
317 .pvr_mask = 0xffff0000,
318 .pvr_value = 0x00060000,
319 .cpu_name = "603e",
Kumar Gala10b35d92005-09-23 14:08:58 -0500320 .cpu_features = CPU_FTRS_603,
Stephen Rothwell49209602005-10-12 15:55:09 +1000321 .cpu_user_features = COMMON_USER,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700322 .icache_bsize = 32,
323 .dcache_bsize = 32,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100324 .cpu_setup = __setup_cpu_603,
325 .platform = "ppc603",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700326 },
327 { /* 603ev */
328 .pvr_mask = 0xffff0000,
329 .pvr_value = 0x00070000,
330 .cpu_name = "603ev",
Kumar Gala10b35d92005-09-23 14:08:58 -0500331 .cpu_features = CPU_FTRS_603,
Stephen Rothwell49209602005-10-12 15:55:09 +1000332 .cpu_user_features = COMMON_USER,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700333 .icache_bsize = 32,
334 .dcache_bsize = 32,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100335 .cpu_setup = __setup_cpu_603,
336 .platform = "ppc603",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700337 },
338 { /* 604 */
339 .pvr_mask = 0xffff0000,
340 .pvr_value = 0x00040000,
341 .cpu_name = "604",
Kumar Gala10b35d92005-09-23 14:08:58 -0500342 .cpu_features = CPU_FTRS_604,
Stephen Rothwell49209602005-10-12 15:55:09 +1000343 .cpu_user_features = COMMON_USER,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700344 .icache_bsize = 32,
345 .dcache_bsize = 32,
346 .num_pmcs = 2,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100347 .cpu_setup = __setup_cpu_604,
348 .platform = "ppc604",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700349 },
350 { /* 604e */
351 .pvr_mask = 0xfffff000,
352 .pvr_value = 0x00090000,
353 .cpu_name = "604e",
Kumar Gala10b35d92005-09-23 14:08:58 -0500354 .cpu_features = CPU_FTRS_604,
Stephen Rothwell49209602005-10-12 15:55:09 +1000355 .cpu_user_features = COMMON_USER,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700356 .icache_bsize = 32,
357 .dcache_bsize = 32,
358 .num_pmcs = 4,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100359 .cpu_setup = __setup_cpu_604,
360 .platform = "ppc604",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700361 },
362 { /* 604r */
363 .pvr_mask = 0xffff0000,
364 .pvr_value = 0x00090000,
365 .cpu_name = "604r",
Kumar Gala10b35d92005-09-23 14:08:58 -0500366 .cpu_features = CPU_FTRS_604,
Stephen Rothwell49209602005-10-12 15:55:09 +1000367 .cpu_user_features = COMMON_USER,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700368 .icache_bsize = 32,
369 .dcache_bsize = 32,
370 .num_pmcs = 4,
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 { /* 604ev */
375 .pvr_mask = 0xffff0000,
376 .pvr_value = 0x000a0000,
377 .cpu_name = "604ev",
Kumar Gala10b35d92005-09-23 14:08:58 -0500378 .cpu_features = CPU_FTRS_604,
Stephen Rothwell49209602005-10-12 15:55:09 +1000379 .cpu_user_features = COMMON_USER,
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 { /* 740/750 (0x4202, don't support TAU ?) */
387 .pvr_mask = 0xffffffff,
388 .pvr_value = 0x00084202,
389 .cpu_name = "740/750",
Kumar Gala10b35d92005-09-23 14:08:58 -0500390 .cpu_features = CPU_FTRS_740_NOTAU,
Stephen Rothwell49209602005-10-12 15:55:09 +1000391 .cpu_user_features = COMMON_USER,
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_750,
396 .platform = "ppc750",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700397 },
Linus Torvalds1da177e2005-04-16 15:20:36 -0700398 { /* 750CX (80100 and 8010x?) */
399 .pvr_mask = 0xfffffff0,
400 .pvr_value = 0x00080100,
401 .cpu_name = "750CX",
Kumar Gala10b35d92005-09-23 14:08:58 -0500402 .cpu_features = CPU_FTRS_750,
Stephen Rothwell49209602005-10-12 15:55:09 +1000403 .cpu_user_features = COMMON_USER,
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_750cx,
408 .platform = "ppc750",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700409 },
410 { /* 750CX (82201 and 82202) */
411 .pvr_mask = 0xfffffff0,
412 .pvr_value = 0x00082200,
413 .cpu_name = "750CX",
Kumar Gala10b35d92005-09-23 14:08:58 -0500414 .cpu_features = CPU_FTRS_750,
Stephen Rothwell49209602005-10-12 15:55:09 +1000415 .cpu_user_features = COMMON_USER,
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_750cx,
420 .platform = "ppc750",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700421 },
422 { /* 750CXe (82214) */
423 .pvr_mask = 0xfffffff0,
424 .pvr_value = 0x00082210,
425 .cpu_name = "750CXe",
Kumar Gala10b35d92005-09-23 14:08:58 -0500426 .cpu_features = CPU_FTRS_750,
Stephen Rothwell49209602005-10-12 15:55:09 +1000427 .cpu_user_features = COMMON_USER,
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 },
Arthur Othieno7c316252005-09-03 15:55:52 -0700434 { /* 750CXe "Gekko" (83214) */
435 .pvr_mask = 0xffffffff,
436 .pvr_value = 0x00083214,
437 .cpu_name = "750CXe",
Kumar Gala10b35d92005-09-23 14:08:58 -0500438 .cpu_features = CPU_FTRS_750,
Stephen Rothwell49209602005-10-12 15:55:09 +1000439 .cpu_user_features = COMMON_USER,
Arthur Othieno7c316252005-09-03 15:55:52 -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",
Arthur Othieno7c316252005-09-03 15:55:52 -0700445 },
Arthur Othienoac1ff042005-09-03 15:55:51 -0700446 { /* 745/755 */
447 .pvr_mask = 0xfffff000,
448 .pvr_value = 0x00083000,
449 .cpu_name = "745/755",
Kumar Gala10b35d92005-09-23 14:08:58 -0500450 .cpu_features = CPU_FTRS_750,
Stephen Rothwell49209602005-10-12 15:55:09 +1000451 .cpu_user_features = COMMON_USER,
Arthur Othienoac1ff042005-09-03 15:55:51 -0700452 .icache_bsize = 32,
453 .dcache_bsize = 32,
454 .num_pmcs = 4,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100455 .cpu_setup = __setup_cpu_750,
456 .platform = "ppc750",
Arthur Othienoac1ff042005-09-03 15:55:51 -0700457 },
Linus Torvalds1da177e2005-04-16 15:20:36 -0700458 { /* 750FX rev 1.x */
459 .pvr_mask = 0xffffff00,
460 .pvr_value = 0x70000100,
461 .cpu_name = "750FX",
Kumar Gala10b35d92005-09-23 14:08:58 -0500462 .cpu_features = CPU_FTRS_750FX1,
Stephen Rothwell49209602005-10-12 15:55:09 +1000463 .cpu_user_features = COMMON_USER,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700464 .icache_bsize = 32,
465 .dcache_bsize = 32,
466 .num_pmcs = 4,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100467 .cpu_setup = __setup_cpu_750,
468 .platform = "ppc750",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700469 },
470 { /* 750FX rev 2.0 must disable HID0[DPM] */
471 .pvr_mask = 0xffffffff,
472 .pvr_value = 0x70000200,
473 .cpu_name = "750FX",
Kumar Gala10b35d92005-09-23 14:08:58 -0500474 .cpu_features = CPU_FTRS_750FX2,
Stephen Rothwell49209602005-10-12 15:55:09 +1000475 .cpu_user_features = COMMON_USER,
Linus Torvalds1da177e2005-04-16 15:20:36 -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",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700481 },
482 { /* 750FX (All revs except 2.0) */
483 .pvr_mask = 0xffff0000,
484 .pvr_value = 0x70000000,
485 .cpu_name = "750FX",
Kumar Gala10b35d92005-09-23 14:08:58 -0500486 .cpu_features = CPU_FTRS_750FX,
Stephen Rothwell49209602005-10-12 15:55:09 +1000487 .cpu_user_features = COMMON_USER,
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_750fx,
492 .platform = "ppc750",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700493 },
494 { /* 750GX */
495 .pvr_mask = 0xffff0000,
496 .pvr_value = 0x70020000,
497 .cpu_name = "750GX",
Kumar Gala10b35d92005-09-23 14:08:58 -0500498 .cpu_features = CPU_FTRS_750GX,
Stephen Rothwell49209602005-10-12 15:55:09 +1000499 .cpu_user_features = COMMON_USER,
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_750fx,
504 .platform = "ppc750",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700505 },
506 { /* 740/750 (L2CR bit need fixup for 740) */
507 .pvr_mask = 0xffff0000,
508 .pvr_value = 0x00080000,
509 .cpu_name = "740/750",
Kumar Gala10b35d92005-09-23 14:08:58 -0500510 .cpu_features = CPU_FTRS_740,
Stephen Rothwell49209602005-10-12 15:55:09 +1000511 .cpu_user_features = COMMON_USER,
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_750,
516 .platform = "ppc750",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700517 },
518 { /* 7400 rev 1.1 ? (no TAU) */
519 .pvr_mask = 0xffffffff,
520 .pvr_value = 0x000c1101,
521 .cpu_name = "7400 (1.1)",
Kumar Gala10b35d92005-09-23 14:08:58 -0500522 .cpu_features = CPU_FTRS_7400_NOTAU,
Stephen Rothwell49209602005-10-12 15:55:09 +1000523 .cpu_user_features = COMMON_USER | PPC_FEATURE_HAS_ALTIVEC_COMP,
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_7400,
528 .platform = "ppc7400",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700529 },
530 { /* 7400 */
531 .pvr_mask = 0xffff0000,
532 .pvr_value = 0x000c0000,
533 .cpu_name = "7400",
Kumar Gala10b35d92005-09-23 14:08:58 -0500534 .cpu_features = CPU_FTRS_7400,
Stephen Rothwell49209602005-10-12 15:55:09 +1000535 .cpu_user_features = COMMON_USER | PPC_FEATURE_HAS_ALTIVEC_COMP,
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_7400,
540 .platform = "ppc7400",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700541 },
542 { /* 7410 */
543 .pvr_mask = 0xffff0000,
544 .pvr_value = 0x800c0000,
545 .cpu_name = "7410",
Kumar Gala10b35d92005-09-23 14:08:58 -0500546 .cpu_features = CPU_FTRS_7400,
Stephen Rothwell49209602005-10-12 15:55:09 +1000547 .cpu_user_features = COMMON_USER | PPC_FEATURE_HAS_ALTIVEC_COMP,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700548 .icache_bsize = 32,
549 .dcache_bsize = 32,
550 .num_pmcs = 4,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100551 .cpu_setup = __setup_cpu_7410,
552 .platform = "ppc7400",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700553 },
554 { /* 7450 2.0 - no doze/nap */
555 .pvr_mask = 0xffffffff,
556 .pvr_value = 0x80000200,
557 .cpu_name = "7450",
Kumar Gala10b35d92005-09-23 14:08:58 -0500558 .cpu_features = CPU_FTRS_7450_20,
Stephen Rothwell49209602005-10-12 15:55:09 +1000559 .cpu_user_features = COMMON_USER | PPC_FEATURE_HAS_ALTIVEC_COMP,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700560 .icache_bsize = 32,
561 .dcache_bsize = 32,
562 .num_pmcs = 6,
Andy Fleming555d97a2005-12-15 20:02:04 -0600563 .cpu_setup = __setup_cpu_745x,
Andy Fleming555d97a2005-12-15 20:02:04 -0600564 .oprofile_cpu_type = "ppc/7450",
Andy Whitcroft7a45fb12006-01-13 12:35:49 +0000565 .oprofile_type = PPC_OPROFILE_G4,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100566 .platform = "ppc7450",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700567 },
568 { /* 7450 2.1 */
569 .pvr_mask = 0xffffffff,
570 .pvr_value = 0x80000201,
571 .cpu_name = "7450",
Kumar Gala10b35d92005-09-23 14:08:58 -0500572 .cpu_features = CPU_FTRS_7450_21,
Stephen Rothwell49209602005-10-12 15:55:09 +1000573 .cpu_user_features = COMMON_USER | PPC_FEATURE_HAS_ALTIVEC_COMP,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700574 .icache_bsize = 32,
575 .dcache_bsize = 32,
576 .num_pmcs = 6,
Andy Fleming555d97a2005-12-15 20:02:04 -0600577 .cpu_setup = __setup_cpu_745x,
Andy Fleming555d97a2005-12-15 20:02:04 -0600578 .oprofile_cpu_type = "ppc/7450",
Andy Whitcroft7a45fb12006-01-13 12:35:49 +0000579 .oprofile_type = PPC_OPROFILE_G4,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100580 .platform = "ppc7450",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700581 },
582 { /* 7450 2.3 and newer */
583 .pvr_mask = 0xffff0000,
584 .pvr_value = 0x80000000,
585 .cpu_name = "7450",
Kumar Gala10b35d92005-09-23 14:08:58 -0500586 .cpu_features = CPU_FTRS_7450_23,
Stephen Rothwell49209602005-10-12 15:55:09 +1000587 .cpu_user_features = COMMON_USER | PPC_FEATURE_HAS_ALTIVEC_COMP,
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 { /* 7455 rev 1.x */
597 .pvr_mask = 0xffffff00,
598 .pvr_value = 0x80010100,
599 .cpu_name = "7455",
Kumar Gala10b35d92005-09-23 14:08:58 -0500600 .cpu_features = CPU_FTRS_7455_1,
Stephen Rothwell49209602005-10-12 15:55:09 +1000601 .cpu_user_features = COMMON_USER | PPC_FEATURE_HAS_ALTIVEC_COMP,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700602 .icache_bsize = 32,
603 .dcache_bsize = 32,
604 .num_pmcs = 6,
Andy Fleming555d97a2005-12-15 20:02:04 -0600605 .cpu_setup = __setup_cpu_745x,
Andy Fleming555d97a2005-12-15 20:02:04 -0600606 .oprofile_cpu_type = "ppc/7450",
Andy Whitcroft7a45fb12006-01-13 12:35:49 +0000607 .oprofile_type = PPC_OPROFILE_G4,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100608 .platform = "ppc7450",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700609 },
610 { /* 7455 rev 2.0 */
611 .pvr_mask = 0xffffffff,
612 .pvr_value = 0x80010200,
613 .cpu_name = "7455",
Kumar Gala10b35d92005-09-23 14:08:58 -0500614 .cpu_features = CPU_FTRS_7455_20,
Stephen Rothwell49209602005-10-12 15:55:09 +1000615 .cpu_user_features = COMMON_USER | PPC_FEATURE_HAS_ALTIVEC_COMP,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700616 .icache_bsize = 32,
617 .dcache_bsize = 32,
618 .num_pmcs = 6,
Andy Fleming555d97a2005-12-15 20:02:04 -0600619 .cpu_setup = __setup_cpu_745x,
Andy Fleming555d97a2005-12-15 20:02:04 -0600620 .oprofile_cpu_type = "ppc/7450",
Andy Whitcroft7a45fb12006-01-13 12:35:49 +0000621 .oprofile_type = PPC_OPROFILE_G4,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100622 .platform = "ppc7450",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700623 },
624 { /* 7455 others */
625 .pvr_mask = 0xffff0000,
626 .pvr_value = 0x80010000,
627 .cpu_name = "7455",
Kumar Gala10b35d92005-09-23 14:08:58 -0500628 .cpu_features = CPU_FTRS_7455,
Stephen Rothwell49209602005-10-12 15:55:09 +1000629 .cpu_user_features = COMMON_USER | PPC_FEATURE_HAS_ALTIVEC_COMP,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700630 .icache_bsize = 32,
631 .dcache_bsize = 32,
632 .num_pmcs = 6,
Andy Fleming555d97a2005-12-15 20:02:04 -0600633 .cpu_setup = __setup_cpu_745x,
Andy Fleming555d97a2005-12-15 20:02:04 -0600634 .oprofile_cpu_type = "ppc/7450",
Andy Whitcroft7a45fb12006-01-13 12:35:49 +0000635 .oprofile_type = PPC_OPROFILE_G4,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100636 .platform = "ppc7450",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700637 },
638 { /* 7447/7457 Rev 1.0 */
639 .pvr_mask = 0xffffffff,
640 .pvr_value = 0x80020100,
641 .cpu_name = "7447/7457",
Kumar Gala10b35d92005-09-23 14:08:58 -0500642 .cpu_features = CPU_FTRS_7447_10,
Stephen Rothwell49209602005-10-12 15:55:09 +1000643 .cpu_user_features = COMMON_USER | PPC_FEATURE_HAS_ALTIVEC_COMP,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700644 .icache_bsize = 32,
645 .dcache_bsize = 32,
646 .num_pmcs = 6,
Andy Fleming555d97a2005-12-15 20:02:04 -0600647 .cpu_setup = __setup_cpu_745x,
Andy Fleming555d97a2005-12-15 20:02:04 -0600648 .oprofile_cpu_type = "ppc/7450",
Andy Whitcroft7a45fb12006-01-13 12:35:49 +0000649 .oprofile_type = PPC_OPROFILE_G4,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100650 .platform = "ppc7450",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700651 },
652 { /* 7447/7457 Rev 1.1 */
653 .pvr_mask = 0xffffffff,
654 .pvr_value = 0x80020101,
655 .cpu_name = "7447/7457",
Kumar Gala10b35d92005-09-23 14:08:58 -0500656 .cpu_features = CPU_FTRS_7447_10,
Stephen Rothwell49209602005-10-12 15:55:09 +1000657 .cpu_user_features = COMMON_USER | PPC_FEATURE_HAS_ALTIVEC_COMP,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700658 .icache_bsize = 32,
659 .dcache_bsize = 32,
660 .num_pmcs = 6,
Andy Fleming555d97a2005-12-15 20:02:04 -0600661 .cpu_setup = __setup_cpu_745x,
Andy Fleming555d97a2005-12-15 20:02:04 -0600662 .oprofile_cpu_type = "ppc/7450",
Andy Whitcroft7a45fb12006-01-13 12:35:49 +0000663 .oprofile_type = PPC_OPROFILE_G4,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100664 .platform = "ppc7450",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700665 },
666 { /* 7447/7457 Rev 1.2 and later */
667 .pvr_mask = 0xffff0000,
668 .pvr_value = 0x80020000,
669 .cpu_name = "7447/7457",
Kumar Gala10b35d92005-09-23 14:08:58 -0500670 .cpu_features = CPU_FTRS_7447,
Stephen Rothwell49209602005-10-12 15:55:09 +1000671 .cpu_user_features = COMMON_USER | PPC_FEATURE_HAS_ALTIVEC_COMP,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700672 .icache_bsize = 32,
673 .dcache_bsize = 32,
674 .num_pmcs = 6,
Andy Fleming555d97a2005-12-15 20:02:04 -0600675 .cpu_setup = __setup_cpu_745x,
Andy Fleming555d97a2005-12-15 20:02:04 -0600676 .oprofile_cpu_type = "ppc/7450",
Andy Whitcroft7a45fb12006-01-13 12:35:49 +0000677 .oprofile_type = PPC_OPROFILE_G4,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100678 .platform = "ppc7450",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700679 },
680 { /* 7447A */
681 .pvr_mask = 0xffff0000,
682 .pvr_value = 0x80030000,
683 .cpu_name = "7447A",
Kumar Gala10b35d92005-09-23 14:08:58 -0500684 .cpu_features = CPU_FTRS_7447A,
Stephen Rothwell49209602005-10-12 15:55:09 +1000685 .cpu_user_features = COMMON_USER | PPC_FEATURE_HAS_ALTIVEC_COMP,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700686 .icache_bsize = 32,
687 .dcache_bsize = 32,
688 .num_pmcs = 6,
Andy Fleming555d97a2005-12-15 20:02:04 -0600689 .cpu_setup = __setup_cpu_745x,
Andy Fleming555d97a2005-12-15 20:02:04 -0600690 .oprofile_cpu_type = "ppc/7450",
Andy Whitcroft7a45fb12006-01-13 12:35:49 +0000691 .oprofile_type = PPC_OPROFILE_G4,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100692 .platform = "ppc7450",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700693 },
Kumar Galabbde6302005-09-03 15:55:55 -0700694 { /* 7448 */
695 .pvr_mask = 0xffff0000,
696 .pvr_value = 0x80040000,
697 .cpu_name = "7448",
Kumar Gala10b35d92005-09-23 14:08:58 -0500698 .cpu_features = CPU_FTRS_7447A,
Stephen Rothwell49209602005-10-12 15:55:09 +1000699 .cpu_user_features = COMMON_USER | PPC_FEATURE_HAS_ALTIVEC_COMP,
Kumar Galabbde6302005-09-03 15:55:55 -0700700 .icache_bsize = 32,
701 .dcache_bsize = 32,
702 .num_pmcs = 6,
Andy Fleming555d97a2005-12-15 20:02:04 -0600703 .cpu_setup = __setup_cpu_745x,
Andy Fleming555d97a2005-12-15 20:02:04 -0600704 .oprofile_cpu_type = "ppc/7450",
Andy Whitcroft7a45fb12006-01-13 12:35:49 +0000705 .oprofile_type = PPC_OPROFILE_G4,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100706 .platform = "ppc7450",
Kumar Galabbde6302005-09-03 15:55:55 -0700707 },
Linus Torvalds1da177e2005-04-16 15:20:36 -0700708 { /* 82xx (8240, 8245, 8260 are all 603e cores) */
709 .pvr_mask = 0x7fff0000,
710 .pvr_value = 0x00810000,
711 .cpu_name = "82xx",
Kumar Gala10b35d92005-09-23 14:08:58 -0500712 .cpu_features = CPU_FTRS_82XX,
Stephen Rothwell49209602005-10-12 15:55:09 +1000713 .cpu_user_features = COMMON_USER,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700714 .icache_bsize = 32,
715 .dcache_bsize = 32,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100716 .cpu_setup = __setup_cpu_603,
717 .platform = "ppc603",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700718 },
719 { /* All G2_LE (603e core, plus some) have the same pvr */
720 .pvr_mask = 0x7fff0000,
721 .pvr_value = 0x00820000,
722 .cpu_name = "G2_LE",
Kumar Gala10b35d92005-09-23 14:08:58 -0500723 .cpu_features = CPU_FTRS_G2_LE,
Stephen Rothwell49209602005-10-12 15:55:09 +1000724 .cpu_user_features = COMMON_USER,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700725 .icache_bsize = 32,
726 .dcache_bsize = 32,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100727 .cpu_setup = __setup_cpu_603,
728 .platform = "ppc603",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700729 },
730 { /* e300 (a 603e core, plus some) on 83xx */
731 .pvr_mask = 0x7fff0000,
732 .pvr_value = 0x00830000,
733 .cpu_name = "e300",
Kumar Gala10b35d92005-09-23 14:08:58 -0500734 .cpu_features = CPU_FTRS_E300,
Stephen Rothwell49209602005-10-12 15:55:09 +1000735 .cpu_user_features = COMMON_USER,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700736 .icache_bsize = 32,
737 .dcache_bsize = 32,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100738 .cpu_setup = __setup_cpu_603,
739 .platform = "ppc603",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700740 },
741 { /* default match, we assume split I/D cache & TB (non-601)... */
742 .pvr_mask = 0x00000000,
743 .pvr_value = 0x00000000,
744 .cpu_name = "(generic PPC)",
Kumar Gala10b35d92005-09-23 14:08:58 -0500745 .cpu_features = CPU_FTRS_CLASSIC32,
Stephen Rothwell49209602005-10-12 15:55:09 +1000746 .cpu_user_features = COMMON_USER,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700747 .icache_bsize = 32,
748 .dcache_bsize = 32,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100749 .platform = "ppc603",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700750 },
751#endif /* CLASSIC_PPC */
Linus Torvalds1da177e2005-04-16 15:20:36 -0700752#ifdef CONFIG_8xx
753 { /* 8xx */
754 .pvr_mask = 0xffff0000,
755 .pvr_value = 0x00500000,
756 .cpu_name = "8xx",
757 /* CPU_FTR_MAYBE_CAN_DOZE is possible,
758 * if the 8xx code is there.... */
Kumar Gala10b35d92005-09-23 14:08:58 -0500759 .cpu_features = CPU_FTRS_8XX,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700760 .cpu_user_features = PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU,
761 .icache_bsize = 16,
762 .dcache_bsize = 16,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100763 .platform = "ppc823",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700764 },
765#endif /* CONFIG_8xx */
766#ifdef CONFIG_40x
767 { /* 403GC */
768 .pvr_mask = 0xffffff00,
769 .pvr_value = 0x00200200,
770 .cpu_name = "403GC",
Kumar Gala10b35d92005-09-23 14:08:58 -0500771 .cpu_features = CPU_FTRS_40X,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700772 .cpu_user_features = PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU,
773 .icache_bsize = 16,
774 .dcache_bsize = 16,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100775 .platform = "ppc403",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700776 },
777 { /* 403GCX */
778 .pvr_mask = 0xffffff00,
779 .pvr_value = 0x00201400,
780 .cpu_name = "403GCX",
Kumar Gala10b35d92005-09-23 14:08:58 -0500781 .cpu_features = CPU_FTRS_40X,
Paul Mackerras98599012005-10-22 16:51:34 +1000782 .cpu_user_features = PPC_FEATURE_32 |
783 PPC_FEATURE_HAS_MMU | PPC_FEATURE_NO_TB,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700784 .icache_bsize = 16,
785 .dcache_bsize = 16,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100786 .platform = "ppc403",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700787 },
788 { /* 403G ?? */
789 .pvr_mask = 0xffff0000,
790 .pvr_value = 0x00200000,
791 .cpu_name = "403G ??",
Kumar Gala10b35d92005-09-23 14:08:58 -0500792 .cpu_features = CPU_FTRS_40X,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700793 .cpu_user_features = PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU,
794 .icache_bsize = 16,
795 .dcache_bsize = 16,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100796 .platform = "ppc403",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700797 },
798 { /* 405GP */
799 .pvr_mask = 0xffff0000,
800 .pvr_value = 0x40110000,
801 .cpu_name = "405GP",
Kumar Gala10b35d92005-09-23 14:08:58 -0500802 .cpu_features = CPU_FTRS_40X,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700803 .cpu_user_features = PPC_FEATURE_32 |
804 PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC,
805 .icache_bsize = 32,
806 .dcache_bsize = 32,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100807 .platform = "ppc405",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700808 },
809 { /* STB 03xxx */
810 .pvr_mask = 0xffff0000,
811 .pvr_value = 0x40130000,
812 .cpu_name = "STB03xxx",
Kumar Gala10b35d92005-09-23 14:08:58 -0500813 .cpu_features = CPU_FTRS_40X,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700814 .cpu_user_features = PPC_FEATURE_32 |
815 PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC,
816 .icache_bsize = 32,
817 .dcache_bsize = 32,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100818 .platform = "ppc405",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700819 },
820 { /* STB 04xxx */
821 .pvr_mask = 0xffff0000,
822 .pvr_value = 0x41810000,
823 .cpu_name = "STB04xxx",
Kumar Gala10b35d92005-09-23 14:08:58 -0500824 .cpu_features = CPU_FTRS_40X,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700825 .cpu_user_features = PPC_FEATURE_32 |
826 PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC,
827 .icache_bsize = 32,
828 .dcache_bsize = 32,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100829 .platform = "ppc405",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700830 },
831 { /* NP405L */
832 .pvr_mask = 0xffff0000,
833 .pvr_value = 0x41610000,
834 .cpu_name = "NP405L",
Kumar Gala10b35d92005-09-23 14:08:58 -0500835 .cpu_features = CPU_FTRS_40X,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700836 .cpu_user_features = PPC_FEATURE_32 |
837 PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC,
838 .icache_bsize = 32,
839 .dcache_bsize = 32,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100840 .platform = "ppc405",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700841 },
842 { /* NP4GS3 */
843 .pvr_mask = 0xffff0000,
844 .pvr_value = 0x40B10000,
845 .cpu_name = "NP4GS3",
Kumar Gala10b35d92005-09-23 14:08:58 -0500846 .cpu_features = CPU_FTRS_40X,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700847 .cpu_user_features = PPC_FEATURE_32 |
848 PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC,
849 .icache_bsize = 32,
850 .dcache_bsize = 32,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100851 .platform = "ppc405",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700852 },
853 { /* NP405H */
854 .pvr_mask = 0xffff0000,
855 .pvr_value = 0x41410000,
856 .cpu_name = "NP405H",
Kumar Gala10b35d92005-09-23 14:08:58 -0500857 .cpu_features = CPU_FTRS_40X,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700858 .cpu_user_features = PPC_FEATURE_32 |
859 PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC,
860 .icache_bsize = 32,
861 .dcache_bsize = 32,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100862 .platform = "ppc405",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700863 },
864 { /* 405GPr */
865 .pvr_mask = 0xffff0000,
866 .pvr_value = 0x50910000,
867 .cpu_name = "405GPr",
Kumar Gala10b35d92005-09-23 14:08:58 -0500868 .cpu_features = CPU_FTRS_40X,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700869 .cpu_user_features = PPC_FEATURE_32 |
870 PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC,
871 .icache_bsize = 32,
872 .dcache_bsize = 32,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100873 .platform = "ppc405",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700874 },
875 { /* STBx25xx */
876 .pvr_mask = 0xffff0000,
877 .pvr_value = 0x51510000,
878 .cpu_name = "STBx25xx",
Kumar Gala10b35d92005-09-23 14:08:58 -0500879 .cpu_features = CPU_FTRS_40X,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700880 .cpu_user_features = PPC_FEATURE_32 |
881 PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC,
882 .icache_bsize = 32,
883 .dcache_bsize = 32,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100884 .platform = "ppc405",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700885 },
886 { /* 405LP */
887 .pvr_mask = 0xffff0000,
888 .pvr_value = 0x41F10000,
889 .cpu_name = "405LP",
Kumar Gala10b35d92005-09-23 14:08:58 -0500890 .cpu_features = CPU_FTRS_40X,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700891 .cpu_user_features = PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU,
892 .icache_bsize = 32,
893 .dcache_bsize = 32,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100894 .platform = "ppc405",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700895 },
896 { /* Xilinx Virtex-II Pro */
897 .pvr_mask = 0xffff0000,
898 .pvr_value = 0x20010000,
899 .cpu_name = "Virtex-II Pro",
Kumar Gala10b35d92005-09-23 14:08:58 -0500900 .cpu_features = CPU_FTRS_40X,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700901 .cpu_user_features = PPC_FEATURE_32 |
902 PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC,
903 .icache_bsize = 32,
904 .dcache_bsize = 32,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100905 .platform = "ppc405",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700906 },
Eugene Suroveginad95d602005-06-07 13:22:09 -0700907 { /* 405EP */
908 .pvr_mask = 0xffff0000,
909 .pvr_value = 0x51210000,
910 .cpu_name = "405EP",
Kumar Gala10b35d92005-09-23 14:08:58 -0500911 .cpu_features = CPU_FTRS_40X,
Eugene Suroveginad95d602005-06-07 13:22:09 -0700912 .cpu_user_features = PPC_FEATURE_32 |
913 PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC,
914 .icache_bsize = 32,
915 .dcache_bsize = 32,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100916 .platform = "ppc405",
Eugene Suroveginad95d602005-06-07 13:22:09 -0700917 },
Linus Torvalds1da177e2005-04-16 15:20:36 -0700918
919#endif /* CONFIG_40x */
920#ifdef CONFIG_44x
Matt Porterc9cf73a2005-07-31 22:34:52 -0700921 {
922 .pvr_mask = 0xf0000fff,
923 .pvr_value = 0x40000850,
924 .cpu_name = "440EP Rev. A",
Kumar Gala10b35d92005-09-23 14:08:58 -0500925 .cpu_features = CPU_FTRS_44X,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100926 .cpu_user_features = COMMON_USER_BOOKE | PPC_FEATURE_HAS_FPU,
Matt Porterc9cf73a2005-07-31 22:34:52 -0700927 .icache_bsize = 32,
928 .dcache_bsize = 32,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100929 .platform = "ppc440",
Matt Porterc9cf73a2005-07-31 22:34:52 -0700930 },
931 {
932 .pvr_mask = 0xf0000fff,
933 .pvr_value = 0x400008d3,
934 .cpu_name = "440EP Rev. B",
Kumar Gala10b35d92005-09-23 14:08:58 -0500935 .cpu_features = CPU_FTRS_44X,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100936 .cpu_user_features = COMMON_USER_BOOKE | PPC_FEATURE_HAS_FPU,
Matt Porterc9cf73a2005-07-31 22:34:52 -0700937 .icache_bsize = 32,
938 .dcache_bsize = 32,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100939 .platform = "ppc440",
Matt Porterc9cf73a2005-07-31 22:34:52 -0700940 },
Stephen Rothwell49209602005-10-12 15:55:09 +1000941 { /* 440GP Rev. B */
Linus Torvalds1da177e2005-04-16 15:20:36 -0700942 .pvr_mask = 0xf0000fff,
943 .pvr_value = 0x40000440,
944 .cpu_name = "440GP Rev. B",
Kumar Gala10b35d92005-09-23 14:08:58 -0500945 .cpu_features = CPU_FTRS_44X,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100946 .cpu_user_features = COMMON_USER_BOOKE,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700947 .icache_bsize = 32,
948 .dcache_bsize = 32,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100949 .platform = "ppc440gp",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700950 },
Stephen Rothwell49209602005-10-12 15:55:09 +1000951 { /* 440GP Rev. C */
Linus Torvalds1da177e2005-04-16 15:20:36 -0700952 .pvr_mask = 0xf0000fff,
953 .pvr_value = 0x40000481,
954 .cpu_name = "440GP Rev. C",
Kumar Gala10b35d92005-09-23 14:08:58 -0500955 .cpu_features = CPU_FTRS_44X,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100956 .cpu_user_features = COMMON_USER_BOOKE,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700957 .icache_bsize = 32,
958 .dcache_bsize = 32,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100959 .platform = "ppc440gp",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700960 },
961 { /* 440GX Rev. A */
962 .pvr_mask = 0xf0000fff,
963 .pvr_value = 0x50000850,
964 .cpu_name = "440GX Rev. A",
Kumar Gala10b35d92005-09-23 14:08:58 -0500965 .cpu_features = CPU_FTRS_44X,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100966 .cpu_user_features = COMMON_USER_BOOKE,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700967 .icache_bsize = 32,
968 .dcache_bsize = 32,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100969 .platform = "ppc440",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700970 },
971 { /* 440GX Rev. B */
972 .pvr_mask = 0xf0000fff,
973 .pvr_value = 0x50000851,
974 .cpu_name = "440GX Rev. B",
Kumar Gala10b35d92005-09-23 14:08:58 -0500975 .cpu_features = CPU_FTRS_44X,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100976 .cpu_user_features = COMMON_USER_BOOKE,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700977 .icache_bsize = 32,
978 .dcache_bsize = 32,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100979 .platform = "ppc440",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700980 },
981 { /* 440GX Rev. C */
982 .pvr_mask = 0xf0000fff,
983 .pvr_value = 0x50000892,
984 .cpu_name = "440GX Rev. C",
Kumar Gala10b35d92005-09-23 14:08:58 -0500985 .cpu_features = CPU_FTRS_44X,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100986 .cpu_user_features = COMMON_USER_BOOKE,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700987 .icache_bsize = 32,
988 .dcache_bsize = 32,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100989 .platform = "ppc440",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700990 },
Eugene Surovegin9149fb32005-09-03 15:55:40 -0700991 { /* 440GX Rev. F */
992 .pvr_mask = 0xf0000fff,
993 .pvr_value = 0x50000894,
994 .cpu_name = "440GX Rev. F",
Kumar Gala10b35d92005-09-23 14:08:58 -0500995 .cpu_features = CPU_FTRS_44X,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100996 .cpu_user_features = COMMON_USER_BOOKE,
Eugene Surovegin9149fb32005-09-03 15:55:40 -0700997 .icache_bsize = 32,
998 .dcache_bsize = 32,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100999 .platform = "ppc440",
Eugene Surovegin9149fb32005-09-03 15:55:40 -07001000 },
Matt Porter656de7e2005-09-03 15:55:42 -07001001 { /* 440SP Rev. A */
1002 .pvr_mask = 0xff000fff,
1003 .pvr_value = 0x53000891,
1004 .cpu_name = "440SP Rev. A",
Kumar Gala10b35d92005-09-23 14:08:58 -05001005 .cpu_features = CPU_FTRS_44X,
Paul Mackerras80f15dc2006-01-14 10:11:39 +11001006 .cpu_user_features = COMMON_USER_BOOKE,
Matt Porter656de7e2005-09-03 15:55:42 -07001007 .icache_bsize = 32,
1008 .dcache_bsize = 32,
Paul Mackerras80f15dc2006-01-14 10:11:39 +11001009 .platform = "ppc440",
Matt Porter656de7e2005-09-03 15:55:42 -07001010 },
Roland Dreierb0f7b8b2005-11-07 00:58:13 -08001011 { /* 440SPe Rev. A */
1012 .pvr_mask = 0xff000fff,
1013 .pvr_value = 0x53000890,
1014 .cpu_name = "440SPe Rev. A",
1015 .cpu_features = CPU_FTR_SPLIT_ID_CACHE |
1016 CPU_FTR_USE_TB,
Paul Mackerras80f15dc2006-01-14 10:11:39 +11001017 .cpu_user_features = COMMON_USER_BOOKE,
Roland Dreierb0f7b8b2005-11-07 00:58:13 -08001018 .icache_bsize = 32,
1019 .dcache_bsize = 32,
Paul Mackerras80f15dc2006-01-14 10:11:39 +11001020 .platform = "ppc440",
Roland Dreierb0f7b8b2005-11-07 00:58:13 -08001021 },
Linus Torvalds1da177e2005-04-16 15:20:36 -07001022#endif /* CONFIG_44x */
Kumar Gala33d9e9b2005-06-25 14:54:37 -07001023#ifdef CONFIG_FSL_BOOKE
Stephen Rothwell49209602005-10-12 15:55:09 +10001024 { /* e200z5 */
Kumar Gala33d9e9b2005-06-25 14:54:37 -07001025 .pvr_mask = 0xfff00000,
1026 .pvr_value = 0x81000000,
1027 .cpu_name = "e200z5",
1028 /* xxx - galak: add CPU_FTR_MAYBE_CAN_DOZE */
Kumar Gala10b35d92005-09-23 14:08:58 -05001029 .cpu_features = CPU_FTRS_E200,
Paul Mackerras80f15dc2006-01-14 10:11:39 +11001030 .cpu_user_features = COMMON_USER_BOOKE |
1031 PPC_FEATURE_HAS_EFP_SINGLE |
Kumar Gala33d9e9b2005-06-25 14:54:37 -07001032 PPC_FEATURE_UNIFIED_CACHE,
1033 .dcache_bsize = 32,
Paul Mackerras80f15dc2006-01-14 10:11:39 +11001034 .platform = "ppc5554",
Kumar Gala33d9e9b2005-06-25 14:54:37 -07001035 },
Stephen Rothwell49209602005-10-12 15:55:09 +10001036 { /* e200z6 */
Kumar Gala33d9e9b2005-06-25 14:54:37 -07001037 .pvr_mask = 0xfff00000,
1038 .pvr_value = 0x81100000,
1039 .cpu_name = "e200z6",
1040 /* xxx - galak: add CPU_FTR_MAYBE_CAN_DOZE */
Kumar Gala10b35d92005-09-23 14:08:58 -05001041 .cpu_features = CPU_FTRS_E200,
Paul Mackerras80f15dc2006-01-14 10:11:39 +11001042 .cpu_user_features = COMMON_USER_BOOKE |
1043 PPC_FEATURE_SPE_COMP |
Kumar Gala33d9e9b2005-06-25 14:54:37 -07001044 PPC_FEATURE_HAS_EFP_SINGLE |
1045 PPC_FEATURE_UNIFIED_CACHE,
1046 .dcache_bsize = 32,
Paul Mackerras80f15dc2006-01-14 10:11:39 +11001047 .platform = "ppc5554",
Kumar Gala33d9e9b2005-06-25 14:54:37 -07001048 },
Stephen Rothwell49209602005-10-12 15:55:09 +10001049 { /* e500 */
Linus Torvalds1da177e2005-04-16 15:20:36 -07001050 .pvr_mask = 0xffff0000,
1051 .pvr_value = 0x80200000,
1052 .cpu_name = "e500",
1053 /* xxx - galak: add CPU_FTR_MAYBE_CAN_DOZE */
Kumar Gala10b35d92005-09-23 14:08:58 -05001054 .cpu_features = CPU_FTRS_E500,
Paul Mackerras80f15dc2006-01-14 10:11:39 +11001055 .cpu_user_features = COMMON_USER_BOOKE |
1056 PPC_FEATURE_SPE_COMP |
Linus Torvalds1da177e2005-04-16 15:20:36 -07001057 PPC_FEATURE_HAS_EFP_SINGLE,
1058 .icache_bsize = 32,
1059 .dcache_bsize = 32,
1060 .num_pmcs = 4,
Andy Fleming555d97a2005-12-15 20:02:04 -06001061 .oprofile_cpu_type = "ppc/e500",
Andy Whitcroft7a45fb12006-01-13 12:35:49 +00001062 .oprofile_type = PPC_OPROFILE_BOOKE,
Paul Mackerras80f15dc2006-01-14 10:11:39 +11001063 .platform = "ppc8540",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001064 },
Stephen Rothwell49209602005-10-12 15:55:09 +10001065 { /* e500v2 */
Kumar Gala5b37b702005-06-21 17:15:18 -07001066 .pvr_mask = 0xffff0000,
1067 .pvr_value = 0x80210000,
1068 .cpu_name = "e500v2",
1069 /* xxx - galak: add CPU_FTR_MAYBE_CAN_DOZE */
Kumar Gala10b35d92005-09-23 14:08:58 -05001070 .cpu_features = CPU_FTRS_E500_2,
Paul Mackerras80f15dc2006-01-14 10:11:39 +11001071 .cpu_user_features = COMMON_USER_BOOKE |
1072 PPC_FEATURE_SPE_COMP |
1073 PPC_FEATURE_HAS_EFP_SINGLE |
1074 PPC_FEATURE_HAS_EFP_DOUBLE,
Kumar Gala5b37b702005-06-21 17:15:18 -07001075 .icache_bsize = 32,
1076 .dcache_bsize = 32,
1077 .num_pmcs = 4,
Andy Fleming555d97a2005-12-15 20:02:04 -06001078 .oprofile_cpu_type = "ppc/e500",
Andy Whitcroft7a45fb12006-01-13 12:35:49 +00001079 .oprofile_type = PPC_OPROFILE_BOOKE,
Paul Mackerras80f15dc2006-01-14 10:11:39 +11001080 .platform = "ppc8548",
Kumar Gala5b37b702005-06-21 17:15:18 -07001081 },
Linus Torvalds1da177e2005-04-16 15:20:36 -07001082#endif
1083#if !CLASSIC_PPC
1084 { /* default match */
1085 .pvr_mask = 0x00000000,
1086 .pvr_value = 0x00000000,
1087 .cpu_name = "(generic PPC)",
Kumar Gala10b35d92005-09-23 14:08:58 -05001088 .cpu_features = CPU_FTRS_GENERIC_32,
Linus Torvalds1da177e2005-04-16 15:20:36 -07001089 .cpu_user_features = PPC_FEATURE_32,
1090 .icache_bsize = 32,
1091 .dcache_bsize = 32,
Paul Mackerras80f15dc2006-01-14 10:11:39 +11001092 .platform = "powerpc",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001093 }
1094#endif /* !CLASSIC_PPC */
Stephen Rothwell49209602005-10-12 15:55:09 +10001095#endif /* CONFIG_PPC32 */
Linus Torvalds1da177e2005-04-16 15:20:36 -07001096};