blob: 306da4cd37a0fc21c008353f9073540f90321186 [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 Johanssonf39b7a52006-08-11 00:07:08 -050044extern void __restore_cpu_ppc970(void);
45#endif /* CONFIG_PPC64 */
Linus Torvalds1da177e2005-04-16 15:20:36 -070046
Linus Torvalds1da177e2005-04-16 15:20:36 -070047/* This table only contains "desktop" CPUs, it need to be filled with embedded
48 * ones as well...
49 */
Stephen Rothwell49209602005-10-12 15:55:09 +100050#define COMMON_USER (PPC_FEATURE_32 | PPC_FEATURE_HAS_FPU | \
51 PPC_FEATURE_HAS_MMU)
52#define COMMON_USER_PPC64 (COMMON_USER | PPC_FEATURE_64)
Paul Mackerrasa7ddc5e2005-11-10 14:29:18 +110053#define COMMON_USER_POWER4 (COMMON_USER_PPC64 | PPC_FEATURE_POWER4)
Benjamin Herrenschmidtaa5cb022006-03-01 15:07:07 +110054#define COMMON_USER_POWER5 (COMMON_USER_PPC64 | PPC_FEATURE_POWER5 |\
55 PPC_FEATURE_SMT | PPC_FEATURE_ICACHE_SNOOP)
56#define COMMON_USER_POWER5_PLUS (COMMON_USER_PPC64 | PPC_FEATURE_POWER5_PLUS|\
57 PPC_FEATURE_SMT | PPC_FEATURE_ICACHE_SNOOP)
Anton Blanchard03054d52006-04-29 09:51:06 +100058#define COMMON_USER_POWER6 (COMMON_USER_PPC64 | PPC_FEATURE_ARCH_2_05 |\
Paul Mackerrasfab5db92006-06-07 16:14:40 +100059 PPC_FEATURE_SMT | PPC_FEATURE_ICACHE_SNOOP | \
60 PPC_FEATURE_TRUE_LE)
Paul Mackerras80f15dc2006-01-14 10:11:39 +110061#define COMMON_USER_BOOKE (PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU | \
62 PPC_FEATURE_BOOKE)
Linus Torvalds1da177e2005-04-16 15:20:36 -070063
Linus Torvalds1da177e2005-04-16 15:20:36 -070064/* We only set the spe features if the kernel was compiled with
65 * spe support
66 */
67#ifdef CONFIG_SPE
Stephen Rothwell49209602005-10-12 15:55:09 +100068#define PPC_FEATURE_SPE_COMP PPC_FEATURE_HAS_SPE
Linus Torvalds1da177e2005-04-16 15:20:36 -070069#else
Stephen Rothwell49209602005-10-12 15:55:09 +100070#define PPC_FEATURE_SPE_COMP 0
Linus Torvalds1da177e2005-04-16 15:20:36 -070071#endif
72
Linus Torvalds1da177e2005-04-16 15:20:36 -070073struct cpu_spec cpu_specs[] = {
Stephen Rothwell49209602005-10-12 15:55:09 +100074#ifdef CONFIG_PPC64
75 { /* Power3 */
76 .pvr_mask = 0xffff0000,
77 .pvr_value = 0x00400000,
78 .cpu_name = "POWER3 (630)",
79 .cpu_features = CPU_FTRS_POWER3,
Paul Mackerrasfab5db92006-06-07 16:14:40 +100080 .cpu_user_features = COMMON_USER_PPC64|PPC_FEATURE_PPC_LE,
Stephen Rothwell49209602005-10-12 15:55:09 +100081 .icache_bsize = 128,
82 .dcache_bsize = 128,
83 .num_pmcs = 8,
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,
Paul Mackerrasfab5db92006-06-07 16:14:40 +100093 .cpu_user_features = COMMON_USER_PPC64|PPC_FEATURE_PPC_LE,
Stephen Rothwell49209602005-10-12 15:55:09 +100094 .icache_bsize = 128,
95 .dcache_bsize = 128,
96 .num_pmcs = 8,
Stephen Rothwell49209602005-10-12 15:55:09 +100097 .oprofile_cpu_type = "ppc64/power3",
Andy Whitcroft7a45fb12006-01-13 12:35:49 +000098 .oprofile_type = PPC_OPROFILE_RS64,
Paul Mackerras80f15dc2006-01-14 10:11:39 +110099 .platform = "power3",
Stephen Rothwell49209602005-10-12 15:55:09 +1000100 },
101 { /* Northstar */
102 .pvr_mask = 0xffff0000,
103 .pvr_value = 0x00330000,
104 .cpu_name = "RS64-II (northstar)",
105 .cpu_features = CPU_FTRS_RS64,
106 .cpu_user_features = COMMON_USER_PPC64,
107 .icache_bsize = 128,
108 .dcache_bsize = 128,
109 .num_pmcs = 8,
Stephen Rothwell49209602005-10-12 15:55:09 +1000110 .oprofile_cpu_type = "ppc64/rs64",
Andy Whitcroft7a45fb12006-01-13 12:35:49 +0000111 .oprofile_type = PPC_OPROFILE_RS64,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100112 .platform = "rs64",
Stephen Rothwell49209602005-10-12 15:55:09 +1000113 },
114 { /* Pulsar */
115 .pvr_mask = 0xffff0000,
116 .pvr_value = 0x00340000,
117 .cpu_name = "RS64-III (pulsar)",
118 .cpu_features = CPU_FTRS_RS64,
119 .cpu_user_features = COMMON_USER_PPC64,
120 .icache_bsize = 128,
121 .dcache_bsize = 128,
122 .num_pmcs = 8,
Stephen Rothwell49209602005-10-12 15:55:09 +1000123 .oprofile_cpu_type = "ppc64/rs64",
Andy Whitcroft7a45fb12006-01-13 12:35:49 +0000124 .oprofile_type = PPC_OPROFILE_RS64,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100125 .platform = "rs64",
Stephen Rothwell49209602005-10-12 15:55:09 +1000126 },
127 { /* I-star */
128 .pvr_mask = 0xffff0000,
129 .pvr_value = 0x00360000,
130 .cpu_name = "RS64-III (icestar)",
131 .cpu_features = CPU_FTRS_RS64,
132 .cpu_user_features = COMMON_USER_PPC64,
133 .icache_bsize = 128,
134 .dcache_bsize = 128,
135 .num_pmcs = 8,
Stephen Rothwell49209602005-10-12 15:55:09 +1000136 .oprofile_cpu_type = "ppc64/rs64",
Andy Whitcroft7a45fb12006-01-13 12:35:49 +0000137 .oprofile_type = PPC_OPROFILE_RS64,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100138 .platform = "rs64",
Stephen Rothwell49209602005-10-12 15:55:09 +1000139 },
140 { /* S-star */
141 .pvr_mask = 0xffff0000,
142 .pvr_value = 0x00370000,
143 .cpu_name = "RS64-IV (sstar)",
144 .cpu_features = CPU_FTRS_RS64,
145 .cpu_user_features = COMMON_USER_PPC64,
146 .icache_bsize = 128,
147 .dcache_bsize = 128,
148 .num_pmcs = 8,
Stephen Rothwell49209602005-10-12 15:55:09 +1000149 .oprofile_cpu_type = "ppc64/rs64",
Andy Whitcroft7a45fb12006-01-13 12:35:49 +0000150 .oprofile_type = PPC_OPROFILE_RS64,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100151 .platform = "rs64",
Stephen Rothwell49209602005-10-12 15:55:09 +1000152 },
153 { /* Power4 */
154 .pvr_mask = 0xffff0000,
155 .pvr_value = 0x00350000,
156 .cpu_name = "POWER4 (gp)",
157 .cpu_features = CPU_FTRS_POWER4,
Paul Mackerrasa7ddc5e2005-11-10 14:29:18 +1100158 .cpu_user_features = COMMON_USER_POWER4,
Stephen Rothwell49209602005-10-12 15:55:09 +1000159 .icache_bsize = 128,
160 .dcache_bsize = 128,
161 .num_pmcs = 8,
Stephen Rothwell49209602005-10-12 15:55:09 +1000162 .oprofile_cpu_type = "ppc64/power4",
Andy Whitcroft7a45fb12006-01-13 12:35:49 +0000163 .oprofile_type = PPC_OPROFILE_POWER4,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100164 .platform = "power4",
Stephen Rothwell49209602005-10-12 15:55:09 +1000165 },
166 { /* Power4+ */
167 .pvr_mask = 0xffff0000,
168 .pvr_value = 0x00380000,
169 .cpu_name = "POWER4+ (gq)",
170 .cpu_features = CPU_FTRS_POWER4,
Paul Mackerrasa7ddc5e2005-11-10 14:29:18 +1100171 .cpu_user_features = COMMON_USER_POWER4,
Stephen Rothwell49209602005-10-12 15:55:09 +1000172 .icache_bsize = 128,
173 .dcache_bsize = 128,
174 .num_pmcs = 8,
Stephen Rothwell49209602005-10-12 15:55:09 +1000175 .oprofile_cpu_type = "ppc64/power4",
Andy Whitcroft7a45fb12006-01-13 12:35:49 +0000176 .oprofile_type = PPC_OPROFILE_POWER4,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100177 .platform = "power4",
Stephen Rothwell49209602005-10-12 15:55:09 +1000178 },
179 { /* PPC970 */
180 .pvr_mask = 0xffff0000,
181 .pvr_value = 0x00390000,
182 .cpu_name = "PPC970",
183 .cpu_features = CPU_FTRS_PPC970,
Paul Mackerrasa7ddc5e2005-11-10 14:29:18 +1100184 .cpu_user_features = COMMON_USER_POWER4 |
Stephen Rothwell49209602005-10-12 15:55:09 +1000185 PPC_FEATURE_HAS_ALTIVEC_COMP,
186 .icache_bsize = 128,
187 .dcache_bsize = 128,
188 .num_pmcs = 8,
189 .cpu_setup = __setup_cpu_ppc970,
Olof Johanssonf39b7a52006-08-11 00:07:08 -0500190 .cpu_restore = __restore_cpu_ppc970,
Stephen Rothwell49209602005-10-12 15:55:09 +1000191 .oprofile_cpu_type = "ppc64/970",
Andy Whitcroft7a45fb12006-01-13 12:35:49 +0000192 .oprofile_type = PPC_OPROFILE_POWER4,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100193 .platform = "ppc970",
Stephen Rothwell49209602005-10-12 15:55:09 +1000194 },
Stephen Rothwell49209602005-10-12 15:55:09 +1000195 { /* PPC970FX */
196 .pvr_mask = 0xffff0000,
197 .pvr_value = 0x003c0000,
198 .cpu_name = "PPC970FX",
Stephen Rothwell49209602005-10-12 15:55:09 +1000199 .cpu_features = CPU_FTRS_PPC970,
Paul Mackerrasa7ddc5e2005-11-10 14:29:18 +1100200 .cpu_user_features = COMMON_USER_POWER4 |
Stephen Rothwell49209602005-10-12 15:55:09 +1000201 PPC_FEATURE_HAS_ALTIVEC_COMP,
202 .icache_bsize = 128,
203 .dcache_bsize = 128,
204 .num_pmcs = 8,
205 .cpu_setup = __setup_cpu_ppc970,
Olof Johanssonf39b7a52006-08-11 00:07:08 -0500206 .cpu_restore = __restore_cpu_ppc970,
Stephen Rothwell49209602005-10-12 15:55:09 +1000207 .oprofile_cpu_type = "ppc64/970",
Andy Whitcroft7a45fb12006-01-13 12:35:49 +0000208 .oprofile_type = PPC_OPROFILE_POWER4,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100209 .platform = "ppc970",
Stephen Rothwell49209602005-10-12 15:55:09 +1000210 },
Stephen Rothwell49209602005-10-12 15:55:09 +1000211 { /* PPC970MP */
212 .pvr_mask = 0xffff0000,
213 .pvr_value = 0x00440000,
214 .cpu_name = "PPC970MP",
215 .cpu_features = CPU_FTRS_PPC970,
Paul Mackerrasa7ddc5e2005-11-10 14:29:18 +1100216 .cpu_user_features = COMMON_USER_POWER4 |
Stephen Rothwell49209602005-10-12 15:55:09 +1000217 PPC_FEATURE_HAS_ALTIVEC_COMP,
218 .icache_bsize = 128,
219 .dcache_bsize = 128,
Anton Blanchard87af41b2006-05-05 05:44:26 +1000220 .num_pmcs = 8,
Stephen Rothwell49209602005-10-12 15:55:09 +1000221 .cpu_setup = __setup_cpu_ppc970,
Olof Johanssonf39b7a52006-08-11 00:07:08 -0500222 .cpu_restore = __restore_cpu_ppc970,
Stephen Rothwell49209602005-10-12 15:55:09 +1000223 .oprofile_cpu_type = "ppc64/970",
Andy Whitcroft7a45fb12006-01-13 12:35:49 +0000224 .oprofile_type = PPC_OPROFILE_POWER4,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100225 .platform = "ppc970",
Stephen Rothwell49209602005-10-12 15:55:09 +1000226 },
Benjamin Herrenschmidt3c726f82005-11-07 11:06:55 +1100227 { /* Power5 GR */
Stephen Rothwell49209602005-10-12 15:55:09 +1000228 .pvr_mask = 0xffff0000,
229 .pvr_value = 0x003a0000,
230 .cpu_name = "POWER5 (gr)",
231 .cpu_features = CPU_FTRS_POWER5,
Paul Mackerrasa7ddc5e2005-11-10 14:29:18 +1100232 .cpu_user_features = COMMON_USER_POWER5,
Stephen Rothwell49209602005-10-12 15:55:09 +1000233 .icache_bsize = 128,
234 .dcache_bsize = 128,
235 .num_pmcs = 6,
Stephen Rothwell49209602005-10-12 15:55:09 +1000236 .oprofile_cpu_type = "ppc64/power5",
Andy Whitcroft7a45fb12006-01-13 12:35:49 +0000237 .oprofile_type = PPC_OPROFILE_POWER4,
Michael Neulinge78dbc82006-06-08 14:42:34 +1000238 /* SIHV / SIPR bits are implemented on POWER4+ (GQ)
239 * and above but only works on POWER5 and above
240 */
241 .oprofile_mmcra_sihv = MMCRA_SIHV,
242 .oprofile_mmcra_sipr = MMCRA_SIPR,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100243 .platform = "power5",
Stephen Rothwell49209602005-10-12 15:55:09 +1000244 },
Benjamin Herrenschmidt3c726f82005-11-07 11:06:55 +1100245 { /* Power5 GS */
Stephen Rothwell49209602005-10-12 15:55:09 +1000246 .pvr_mask = 0xffff0000,
247 .pvr_value = 0x003b0000,
Anton Blanchard834608f2006-01-09 15:42:30 +1100248 .cpu_name = "POWER5+ (gs)",
Stephen Rothwell49209602005-10-12 15:55:09 +1000249 .cpu_features = CPU_FTRS_POWER5,
Paul Mackerrasa7ddc5e2005-11-10 14:29:18 +1100250 .cpu_user_features = COMMON_USER_POWER5_PLUS,
Stephen Rothwell49209602005-10-12 15:55:09 +1000251 .icache_bsize = 128,
252 .dcache_bsize = 128,
253 .num_pmcs = 6,
Anton Blanchard834608f2006-01-09 15:42:30 +1100254 .oprofile_cpu_type = "ppc64/power5+",
Andy Whitcroft7a45fb12006-01-13 12:35:49 +0000255 .oprofile_type = PPC_OPROFILE_POWER4,
Michael Neulinge78dbc82006-06-08 14:42:34 +1000256 .oprofile_mmcra_sihv = MMCRA_SIHV,
257 .oprofile_mmcra_sipr = MMCRA_SIPR,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100258 .platform = "power5+",
Stephen Rothwell49209602005-10-12 15:55:09 +1000259 },
Anton Blanchard03054d52006-04-29 09:51:06 +1000260 { /* Power6 */
261 .pvr_mask = 0xffff0000,
262 .pvr_value = 0x003e0000,
263 .cpu_name = "POWER6",
264 .cpu_features = CPU_FTRS_POWER6,
265 .cpu_user_features = COMMON_USER_POWER6,
266 .icache_bsize = 128,
267 .dcache_bsize = 128,
Michael Neulinge78dbc82006-06-08 14:42:34 +1000268 .num_pmcs = 8,
Anton Blanchard03054d52006-04-29 09:51:06 +1000269 .oprofile_cpu_type = "ppc64/power6",
270 .oprofile_type = PPC_OPROFILE_POWER4,
Michael Neulinge78dbc82006-06-08 14:42:34 +1000271 .oprofile_mmcra_sihv = POWER6_MMCRA_SIHV,
272 .oprofile_mmcra_sipr = POWER6_MMCRA_SIPR,
273 .oprofile_mmcra_clear = POWER6_MMCRA_THRM |
274 POWER6_MMCRA_OTHER,
Anton Blanchard03054d52006-04-29 09:51:06 +1000275 .platform = "power6",
276 },
Arnd Bergmannc902be72006-01-04 19:55:53 +0000277 { /* Cell Broadband Engine */
Stephen Rothwell49209602005-10-12 15:55:09 +1000278 .pvr_mask = 0xffff0000,
279 .pvr_value = 0x00700000,
280 .cpu_name = "Cell Broadband Engine",
281 .cpu_features = CPU_FTRS_CELL,
282 .cpu_user_features = COMMON_USER_PPC64 |
Benjamin Herrenschmidtaa5cb022006-03-01 15:07:07 +1100283 PPC_FEATURE_CELL | PPC_FEATURE_HAS_ALTIVEC_COMP |
284 PPC_FEATURE_SMT,
Stephen Rothwell49209602005-10-12 15:55:09 +1000285 .icache_bsize = 128,
286 .dcache_bsize = 128,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100287 .platform = "ppc-cell-be",
Stephen Rothwell49209602005-10-12 15:55:09 +1000288 },
289 { /* default match */
290 .pvr_mask = 0x00000000,
291 .pvr_value = 0x00000000,
292 .cpu_name = "POWER4 (compatible)",
293 .cpu_features = CPU_FTRS_COMPATIBLE,
294 .cpu_user_features = COMMON_USER_PPC64,
295 .icache_bsize = 128,
296 .dcache_bsize = 128,
297 .num_pmcs = 6,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100298 .platform = "power4",
Stephen Rothwell49209602005-10-12 15:55:09 +1000299 }
300#endif /* CONFIG_PPC64 */
301#ifdef CONFIG_PPC32
Linus Torvalds1da177e2005-04-16 15:20:36 -0700302#if CLASSIC_PPC
Stephen Rothwell49209602005-10-12 15:55:09 +1000303 { /* 601 */
Linus Torvalds1da177e2005-04-16 15:20:36 -0700304 .pvr_mask = 0xffff0000,
305 .pvr_value = 0x00010000,
306 .cpu_name = "601",
Kumar Gala10b35d92005-09-23 14:08:58 -0500307 .cpu_features = CPU_FTRS_PPC601,
Stephen Rothwell49209602005-10-12 15:55:09 +1000308 .cpu_user_features = COMMON_USER | PPC_FEATURE_601_INSTR |
Paul Mackerras98599012005-10-22 16:51:34 +1000309 PPC_FEATURE_UNIFIED_CACHE | PPC_FEATURE_NO_TB,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700310 .icache_bsize = 32,
311 .dcache_bsize = 32,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100312 .platform = "ppc601",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700313 },
314 { /* 603 */
315 .pvr_mask = 0xffff0000,
316 .pvr_value = 0x00030000,
317 .cpu_name = "603",
Kumar Gala10b35d92005-09-23 14:08:58 -0500318 .cpu_features = CPU_FTRS_603,
Paul Mackerrasfab5db92006-06-07 16:14:40 +1000319 .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700320 .icache_bsize = 32,
321 .dcache_bsize = 32,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100322 .cpu_setup = __setup_cpu_603,
323 .platform = "ppc603",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700324 },
325 { /* 603e */
326 .pvr_mask = 0xffff0000,
327 .pvr_value = 0x00060000,
328 .cpu_name = "603e",
Kumar Gala10b35d92005-09-23 14:08:58 -0500329 .cpu_features = CPU_FTRS_603,
Paul Mackerrasfab5db92006-06-07 16:14:40 +1000330 .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700331 .icache_bsize = 32,
332 .dcache_bsize = 32,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100333 .cpu_setup = __setup_cpu_603,
334 .platform = "ppc603",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700335 },
336 { /* 603ev */
337 .pvr_mask = 0xffff0000,
338 .pvr_value = 0x00070000,
339 .cpu_name = "603ev",
Kumar Gala10b35d92005-09-23 14:08:58 -0500340 .cpu_features = CPU_FTRS_603,
Paul Mackerrasfab5db92006-06-07 16:14:40 +1000341 .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700342 .icache_bsize = 32,
343 .dcache_bsize = 32,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100344 .cpu_setup = __setup_cpu_603,
345 .platform = "ppc603",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700346 },
347 { /* 604 */
348 .pvr_mask = 0xffff0000,
349 .pvr_value = 0x00040000,
350 .cpu_name = "604",
Kumar Gala10b35d92005-09-23 14:08:58 -0500351 .cpu_features = CPU_FTRS_604,
Paul Mackerrasfab5db92006-06-07 16:14:40 +1000352 .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700353 .icache_bsize = 32,
354 .dcache_bsize = 32,
355 .num_pmcs = 2,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100356 .cpu_setup = __setup_cpu_604,
357 .platform = "ppc604",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700358 },
359 { /* 604e */
360 .pvr_mask = 0xfffff000,
361 .pvr_value = 0x00090000,
362 .cpu_name = "604e",
Kumar Gala10b35d92005-09-23 14:08:58 -0500363 .cpu_features = CPU_FTRS_604,
Paul Mackerrasfab5db92006-06-07 16:14:40 +1000364 .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700365 .icache_bsize = 32,
366 .dcache_bsize = 32,
367 .num_pmcs = 4,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100368 .cpu_setup = __setup_cpu_604,
369 .platform = "ppc604",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700370 },
371 { /* 604r */
372 .pvr_mask = 0xffff0000,
373 .pvr_value = 0x00090000,
374 .cpu_name = "604r",
Kumar Gala10b35d92005-09-23 14:08:58 -0500375 .cpu_features = CPU_FTRS_604,
Paul Mackerrasfab5db92006-06-07 16:14:40 +1000376 .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700377 .icache_bsize = 32,
378 .dcache_bsize = 32,
379 .num_pmcs = 4,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100380 .cpu_setup = __setup_cpu_604,
381 .platform = "ppc604",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700382 },
383 { /* 604ev */
384 .pvr_mask = 0xffff0000,
385 .pvr_value = 0x000a0000,
386 .cpu_name = "604ev",
Kumar Gala10b35d92005-09-23 14:08:58 -0500387 .cpu_features = CPU_FTRS_604,
Paul Mackerrasfab5db92006-06-07 16:14:40 +1000388 .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700389 .icache_bsize = 32,
390 .dcache_bsize = 32,
391 .num_pmcs = 4,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100392 .cpu_setup = __setup_cpu_604,
393 .platform = "ppc604",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700394 },
395 { /* 740/750 (0x4202, don't support TAU ?) */
396 .pvr_mask = 0xffffffff,
397 .pvr_value = 0x00084202,
398 .cpu_name = "740/750",
Kumar Gala10b35d92005-09-23 14:08:58 -0500399 .cpu_features = CPU_FTRS_740_NOTAU,
Paul Mackerrasfab5db92006-06-07 16:14:40 +1000400 .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700401 .icache_bsize = 32,
402 .dcache_bsize = 32,
403 .num_pmcs = 4,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100404 .cpu_setup = __setup_cpu_750,
405 .platform = "ppc750",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700406 },
Linus Torvalds1da177e2005-04-16 15:20:36 -0700407 { /* 750CX (80100 and 8010x?) */
408 .pvr_mask = 0xfffffff0,
409 .pvr_value = 0x00080100,
410 .cpu_name = "750CX",
Kumar Gala10b35d92005-09-23 14:08:58 -0500411 .cpu_features = CPU_FTRS_750,
Paul Mackerrasfab5db92006-06-07 16:14:40 +1000412 .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700413 .icache_bsize = 32,
414 .dcache_bsize = 32,
415 .num_pmcs = 4,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100416 .cpu_setup = __setup_cpu_750cx,
417 .platform = "ppc750",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700418 },
419 { /* 750CX (82201 and 82202) */
420 .pvr_mask = 0xfffffff0,
421 .pvr_value = 0x00082200,
422 .cpu_name = "750CX",
Kumar Gala10b35d92005-09-23 14:08:58 -0500423 .cpu_features = CPU_FTRS_750,
Paul Mackerrasfab5db92006-06-07 16:14:40 +1000424 .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700425 .icache_bsize = 32,
426 .dcache_bsize = 32,
427 .num_pmcs = 4,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100428 .cpu_setup = __setup_cpu_750cx,
429 .platform = "ppc750",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700430 },
431 { /* 750CXe (82214) */
432 .pvr_mask = 0xfffffff0,
433 .pvr_value = 0x00082210,
434 .cpu_name = "750CXe",
Kumar Gala10b35d92005-09-23 14:08:58 -0500435 .cpu_features = CPU_FTRS_750,
Paul Mackerrasfab5db92006-06-07 16:14:40 +1000436 .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700437 .icache_bsize = 32,
438 .dcache_bsize = 32,
439 .num_pmcs = 4,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100440 .cpu_setup = __setup_cpu_750cx,
441 .platform = "ppc750",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700442 },
Arthur Othieno7c316252005-09-03 15:55:52 -0700443 { /* 750CXe "Gekko" (83214) */
444 .pvr_mask = 0xffffffff,
445 .pvr_value = 0x00083214,
446 .cpu_name = "750CXe",
Kumar Gala10b35d92005-09-23 14:08:58 -0500447 .cpu_features = CPU_FTRS_750,
Paul Mackerrasfab5db92006-06-07 16:14:40 +1000448 .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE,
Arthur Othieno7c316252005-09-03 15:55:52 -0700449 .icache_bsize = 32,
450 .dcache_bsize = 32,
451 .num_pmcs = 4,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100452 .cpu_setup = __setup_cpu_750cx,
453 .platform = "ppc750",
Arthur Othieno7c316252005-09-03 15:55:52 -0700454 },
Arthur Othienoac1ff042005-09-03 15:55:51 -0700455 { /* 745/755 */
456 .pvr_mask = 0xfffff000,
457 .pvr_value = 0x00083000,
458 .cpu_name = "745/755",
Kumar Gala10b35d92005-09-23 14:08:58 -0500459 .cpu_features = CPU_FTRS_750,
Paul Mackerrasfab5db92006-06-07 16:14:40 +1000460 .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE,
Arthur Othienoac1ff042005-09-03 15:55:51 -0700461 .icache_bsize = 32,
462 .dcache_bsize = 32,
463 .num_pmcs = 4,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100464 .cpu_setup = __setup_cpu_750,
465 .platform = "ppc750",
Arthur Othienoac1ff042005-09-03 15:55:51 -0700466 },
Linus Torvalds1da177e2005-04-16 15:20:36 -0700467 { /* 750FX rev 1.x */
468 .pvr_mask = 0xffffff00,
469 .pvr_value = 0x70000100,
470 .cpu_name = "750FX",
Kumar Gala10b35d92005-09-23 14:08:58 -0500471 .cpu_features = CPU_FTRS_750FX1,
Paul Mackerrasfab5db92006-06-07 16:14:40 +1000472 .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700473 .icache_bsize = 32,
474 .dcache_bsize = 32,
475 .num_pmcs = 4,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100476 .cpu_setup = __setup_cpu_750,
477 .platform = "ppc750",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700478 },
479 { /* 750FX rev 2.0 must disable HID0[DPM] */
480 .pvr_mask = 0xffffffff,
481 .pvr_value = 0x70000200,
482 .cpu_name = "750FX",
Kumar Gala10b35d92005-09-23 14:08:58 -0500483 .cpu_features = CPU_FTRS_750FX2,
Paul Mackerrasfab5db92006-06-07 16:14:40 +1000484 .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700485 .icache_bsize = 32,
486 .dcache_bsize = 32,
487 .num_pmcs = 4,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100488 .cpu_setup = __setup_cpu_750,
489 .platform = "ppc750",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700490 },
491 { /* 750FX (All revs except 2.0) */
492 .pvr_mask = 0xffff0000,
493 .pvr_value = 0x70000000,
494 .cpu_name = "750FX",
Kumar Gala10b35d92005-09-23 14:08:58 -0500495 .cpu_features = CPU_FTRS_750FX,
Paul Mackerrasfab5db92006-06-07 16:14:40 +1000496 .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700497 .icache_bsize = 32,
498 .dcache_bsize = 32,
499 .num_pmcs = 4,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100500 .cpu_setup = __setup_cpu_750fx,
501 .platform = "ppc750",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700502 },
503 { /* 750GX */
504 .pvr_mask = 0xffff0000,
505 .pvr_value = 0x70020000,
506 .cpu_name = "750GX",
Kumar Gala10b35d92005-09-23 14:08:58 -0500507 .cpu_features = CPU_FTRS_750GX,
Paul Mackerrasfab5db92006-06-07 16:14:40 +1000508 .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700509 .icache_bsize = 32,
510 .dcache_bsize = 32,
511 .num_pmcs = 4,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100512 .cpu_setup = __setup_cpu_750fx,
513 .platform = "ppc750",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700514 },
515 { /* 740/750 (L2CR bit need fixup for 740) */
516 .pvr_mask = 0xffff0000,
517 .pvr_value = 0x00080000,
518 .cpu_name = "740/750",
Kumar Gala10b35d92005-09-23 14:08:58 -0500519 .cpu_features = CPU_FTRS_740,
Paul Mackerrasfab5db92006-06-07 16:14:40 +1000520 .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700521 .icache_bsize = 32,
522 .dcache_bsize = 32,
523 .num_pmcs = 4,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100524 .cpu_setup = __setup_cpu_750,
525 .platform = "ppc750",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700526 },
527 { /* 7400 rev 1.1 ? (no TAU) */
528 .pvr_mask = 0xffffffff,
529 .pvr_value = 0x000c1101,
530 .cpu_name = "7400 (1.1)",
Kumar Gala10b35d92005-09-23 14:08:58 -0500531 .cpu_features = CPU_FTRS_7400_NOTAU,
Paul Mackerrasfab5db92006-06-07 16:14:40 +1000532 .cpu_user_features = COMMON_USER |
533 PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_PPC_LE,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700534 .icache_bsize = 32,
535 .dcache_bsize = 32,
536 .num_pmcs = 4,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100537 .cpu_setup = __setup_cpu_7400,
538 .platform = "ppc7400",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700539 },
540 { /* 7400 */
541 .pvr_mask = 0xffff0000,
542 .pvr_value = 0x000c0000,
543 .cpu_name = "7400",
Kumar Gala10b35d92005-09-23 14:08:58 -0500544 .cpu_features = CPU_FTRS_7400,
Paul Mackerrasfab5db92006-06-07 16:14:40 +1000545 .cpu_user_features = COMMON_USER |
546 PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_PPC_LE,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700547 .icache_bsize = 32,
548 .dcache_bsize = 32,
549 .num_pmcs = 4,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100550 .cpu_setup = __setup_cpu_7400,
551 .platform = "ppc7400",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700552 },
553 { /* 7410 */
554 .pvr_mask = 0xffff0000,
555 .pvr_value = 0x800c0000,
556 .cpu_name = "7410",
Kumar Gala10b35d92005-09-23 14:08:58 -0500557 .cpu_features = CPU_FTRS_7400,
Paul Mackerrasfab5db92006-06-07 16:14:40 +1000558 .cpu_user_features = COMMON_USER |
559 PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_PPC_LE,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700560 .icache_bsize = 32,
561 .dcache_bsize = 32,
562 .num_pmcs = 4,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100563 .cpu_setup = __setup_cpu_7410,
564 .platform = "ppc7400",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700565 },
566 { /* 7450 2.0 - no doze/nap */
567 .pvr_mask = 0xffffffff,
568 .pvr_value = 0x80000200,
569 .cpu_name = "7450",
Kumar Gala10b35d92005-09-23 14:08:58 -0500570 .cpu_features = CPU_FTRS_7450_20,
Paul Mackerrasfab5db92006-06-07 16:14:40 +1000571 .cpu_user_features = COMMON_USER |
572 PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_PPC_LE,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700573 .icache_bsize = 32,
574 .dcache_bsize = 32,
575 .num_pmcs = 6,
Andy Fleming555d97a2005-12-15 20:02:04 -0600576 .cpu_setup = __setup_cpu_745x,
Andy Fleming555d97a2005-12-15 20:02:04 -0600577 .oprofile_cpu_type = "ppc/7450",
Andy Whitcroft7a45fb12006-01-13 12:35:49 +0000578 .oprofile_type = PPC_OPROFILE_G4,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100579 .platform = "ppc7450",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700580 },
581 { /* 7450 2.1 */
582 .pvr_mask = 0xffffffff,
583 .pvr_value = 0x80000201,
584 .cpu_name = "7450",
Kumar Gala10b35d92005-09-23 14:08:58 -0500585 .cpu_features = CPU_FTRS_7450_21,
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.3 and newer */
597 .pvr_mask = 0xffff0000,
598 .pvr_value = 0x80000000,
599 .cpu_name = "7450",
Kumar Gala10b35d92005-09-23 14:08:58 -0500600 .cpu_features = CPU_FTRS_7450_23,
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 { /* 7455 rev 1.x */
612 .pvr_mask = 0xffffff00,
613 .pvr_value = 0x80010100,
614 .cpu_name = "7455",
Kumar Gala10b35d92005-09-23 14:08:58 -0500615 .cpu_features = CPU_FTRS_7455_1,
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 2.0 */
627 .pvr_mask = 0xffffffff,
628 .pvr_value = 0x80010200,
629 .cpu_name = "7455",
Kumar Gala10b35d92005-09-23 14:08:58 -0500630 .cpu_features = CPU_FTRS_7455_20,
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 others */
642 .pvr_mask = 0xffff0000,
643 .pvr_value = 0x80010000,
644 .cpu_name = "7455",
Kumar Gala10b35d92005-09-23 14:08:58 -0500645 .cpu_features = CPU_FTRS_7455,
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 { /* 7447/7457 Rev 1.0 */
657 .pvr_mask = 0xffffffff,
658 .pvr_value = 0x80020100,
659 .cpu_name = "7447/7457",
Kumar Gala10b35d92005-09-23 14:08:58 -0500660 .cpu_features = CPU_FTRS_7447_10,
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.1 */
672 .pvr_mask = 0xffffffff,
673 .pvr_value = 0x80020101,
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.2 and later */
687 .pvr_mask = 0xffff0000,
688 .pvr_value = 0x80020000,
689 .cpu_name = "7447/7457",
Kumar Gala10b35d92005-09-23 14:08:58 -0500690 .cpu_features = CPU_FTRS_7447,
Paul Mackerrasfab5db92006-06-07 16:14:40 +1000691 .cpu_user_features = COMMON_USER | PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_PPC_LE,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700692 .icache_bsize = 32,
693 .dcache_bsize = 32,
694 .num_pmcs = 6,
Andy Fleming555d97a2005-12-15 20:02:04 -0600695 .cpu_setup = __setup_cpu_745x,
Andy Fleming555d97a2005-12-15 20:02:04 -0600696 .oprofile_cpu_type = "ppc/7450",
Andy Whitcroft7a45fb12006-01-13 12:35:49 +0000697 .oprofile_type = PPC_OPROFILE_G4,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100698 .platform = "ppc7450",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700699 },
700 { /* 7447A */
701 .pvr_mask = 0xffff0000,
702 .pvr_value = 0x80030000,
703 .cpu_name = "7447A",
Kumar Gala10b35d92005-09-23 14:08:58 -0500704 .cpu_features = CPU_FTRS_7447A,
Paul Mackerrasfab5db92006-06-07 16:14:40 +1000705 .cpu_user_features = COMMON_USER |
706 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 },
Kumar Galabbde6302005-09-03 15:55:55 -0700715 { /* 7448 */
716 .pvr_mask = 0xffff0000,
717 .pvr_value = 0x80040000,
718 .cpu_name = "7448",
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,
Kumar Galabbde6302005-09-03 15:55:55 -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",
Kumar Galabbde6302005-09-03 15:55:55 -0700729 },
Linus Torvalds1da177e2005-04-16 15:20:36 -0700730 { /* 82xx (8240, 8245, 8260 are all 603e cores) */
731 .pvr_mask = 0x7fff0000,
732 .pvr_value = 0x00810000,
733 .cpu_name = "82xx",
Kumar Gala10b35d92005-09-23 14:08:58 -0500734 .cpu_features = CPU_FTRS_82XX,
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 { /* All G2_LE (603e core, plus some) have the same pvr */
742 .pvr_mask = 0x7fff0000,
743 .pvr_value = 0x00820000,
744 .cpu_name = "G2_LE",
Kumar Gala10b35d92005-09-23 14:08:58 -0500745 .cpu_features = CPU_FTRS_G2_LE,
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 .cpu_setup = __setup_cpu_603,
750 .platform = "ppc603",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700751 },
752 { /* e300 (a 603e core, plus some) on 83xx */
753 .pvr_mask = 0x7fff0000,
754 .pvr_value = 0x00830000,
755 .cpu_name = "e300",
Kumar Gala10b35d92005-09-23 14:08:58 -0500756 .cpu_features = CPU_FTRS_E300,
Stephen Rothwell49209602005-10-12 15:55:09 +1000757 .cpu_user_features = COMMON_USER,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700758 .icache_bsize = 32,
759 .dcache_bsize = 32,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100760 .cpu_setup = __setup_cpu_603,
761 .platform = "ppc603",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700762 },
763 { /* default match, we assume split I/D cache & TB (non-601)... */
764 .pvr_mask = 0x00000000,
765 .pvr_value = 0x00000000,
766 .cpu_name = "(generic PPC)",
Kumar Gala10b35d92005-09-23 14:08:58 -0500767 .cpu_features = CPU_FTRS_CLASSIC32,
Stephen Rothwell49209602005-10-12 15:55:09 +1000768 .cpu_user_features = COMMON_USER,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700769 .icache_bsize = 32,
770 .dcache_bsize = 32,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100771 .platform = "ppc603",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700772 },
773#endif /* CLASSIC_PPC */
Linus Torvalds1da177e2005-04-16 15:20:36 -0700774#ifdef CONFIG_8xx
775 { /* 8xx */
776 .pvr_mask = 0xffff0000,
777 .pvr_value = 0x00500000,
778 .cpu_name = "8xx",
779 /* CPU_FTR_MAYBE_CAN_DOZE is possible,
780 * if the 8xx code is there.... */
Kumar Gala10b35d92005-09-23 14:08:58 -0500781 .cpu_features = CPU_FTRS_8XX,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700782 .cpu_user_features = PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU,
783 .icache_bsize = 16,
784 .dcache_bsize = 16,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100785 .platform = "ppc823",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700786 },
787#endif /* CONFIG_8xx */
788#ifdef CONFIG_40x
789 { /* 403GC */
790 .pvr_mask = 0xffffff00,
791 .pvr_value = 0x00200200,
792 .cpu_name = "403GC",
Kumar Gala10b35d92005-09-23 14:08:58 -0500793 .cpu_features = CPU_FTRS_40X,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700794 .cpu_user_features = PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU,
795 .icache_bsize = 16,
796 .dcache_bsize = 16,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100797 .platform = "ppc403",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700798 },
799 { /* 403GCX */
800 .pvr_mask = 0xffffff00,
801 .pvr_value = 0x00201400,
802 .cpu_name = "403GCX",
Kumar Gala10b35d92005-09-23 14:08:58 -0500803 .cpu_features = CPU_FTRS_40X,
Paul Mackerras98599012005-10-22 16:51:34 +1000804 .cpu_user_features = PPC_FEATURE_32 |
805 PPC_FEATURE_HAS_MMU | PPC_FEATURE_NO_TB,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700806 .icache_bsize = 16,
807 .dcache_bsize = 16,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100808 .platform = "ppc403",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700809 },
810 { /* 403G ?? */
811 .pvr_mask = 0xffff0000,
812 .pvr_value = 0x00200000,
813 .cpu_name = "403G ??",
Kumar Gala10b35d92005-09-23 14:08:58 -0500814 .cpu_features = CPU_FTRS_40X,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700815 .cpu_user_features = PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU,
816 .icache_bsize = 16,
817 .dcache_bsize = 16,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100818 .platform = "ppc403",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700819 },
820 { /* 405GP */
821 .pvr_mask = 0xffff0000,
822 .pvr_value = 0x40110000,
823 .cpu_name = "405GP",
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 { /* STB 03xxx */
832 .pvr_mask = 0xffff0000,
833 .pvr_value = 0x40130000,
834 .cpu_name = "STB03xxx",
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 { /* STB 04xxx */
843 .pvr_mask = 0xffff0000,
844 .pvr_value = 0x41810000,
845 .cpu_name = "STB04xxx",
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 { /* NP405L */
854 .pvr_mask = 0xffff0000,
855 .pvr_value = 0x41610000,
856 .cpu_name = "NP405L",
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 { /* NP4GS3 */
865 .pvr_mask = 0xffff0000,
866 .pvr_value = 0x40B10000,
867 .cpu_name = "NP4GS3",
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 { /* NP405H */
876 .pvr_mask = 0xffff0000,
877 .pvr_value = 0x41410000,
878 .cpu_name = "NP405H",
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 { /* 405GPr */
887 .pvr_mask = 0xffff0000,
888 .pvr_value = 0x50910000,
889 .cpu_name = "405GPr",
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 |
892 PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC,
893 .icache_bsize = 32,
894 .dcache_bsize = 32,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100895 .platform = "ppc405",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700896 },
897 { /* STBx25xx */
898 .pvr_mask = 0xffff0000,
899 .pvr_value = 0x51510000,
900 .cpu_name = "STBx25xx",
Kumar Gala10b35d92005-09-23 14:08:58 -0500901 .cpu_features = CPU_FTRS_40X,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700902 .cpu_user_features = PPC_FEATURE_32 |
903 PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC,
904 .icache_bsize = 32,
905 .dcache_bsize = 32,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100906 .platform = "ppc405",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700907 },
908 { /* 405LP */
909 .pvr_mask = 0xffff0000,
910 .pvr_value = 0x41F10000,
911 .cpu_name = "405LP",
Kumar Gala10b35d92005-09-23 14:08:58 -0500912 .cpu_features = CPU_FTRS_40X,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700913 .cpu_user_features = PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU,
914 .icache_bsize = 32,
915 .dcache_bsize = 32,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100916 .platform = "ppc405",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700917 },
918 { /* Xilinx Virtex-II Pro */
Grant C. Likely72646c72006-01-19 01:13:20 -0700919 .pvr_mask = 0xfffff000,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700920 .pvr_value = 0x20010000,
921 .cpu_name = "Virtex-II Pro",
Kumar Gala10b35d92005-09-23 14:08:58 -0500922 .cpu_features = CPU_FTRS_40X,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700923 .cpu_user_features = PPC_FEATURE_32 |
924 PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC,
925 .icache_bsize = 32,
926 .dcache_bsize = 32,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100927 .platform = "ppc405",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700928 },
Grant C. Likely72646c72006-01-19 01:13:20 -0700929 { /* Xilinx Virtex-4 FX */
930 .pvr_mask = 0xfffff000,
931 .pvr_value = 0x20011000,
932 .cpu_name = "Virtex-4 FX",
933 .cpu_features = CPU_FTRS_40X,
934 .cpu_user_features = PPC_FEATURE_32 |
935 PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC,
936 .icache_bsize = 32,
937 .dcache_bsize = 32,
938 },
Eugene Suroveginad95d602005-06-07 13:22:09 -0700939 { /* 405EP */
940 .pvr_mask = 0xffff0000,
941 .pvr_value = 0x51210000,
942 .cpu_name = "405EP",
Kumar Gala10b35d92005-09-23 14:08:58 -0500943 .cpu_features = CPU_FTRS_40X,
Eugene Suroveginad95d602005-06-07 13:22:09 -0700944 .cpu_user_features = PPC_FEATURE_32 |
945 PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC,
946 .icache_bsize = 32,
947 .dcache_bsize = 32,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100948 .platform = "ppc405",
Eugene Suroveginad95d602005-06-07 13:22:09 -0700949 },
Linus Torvalds1da177e2005-04-16 15:20:36 -0700950
951#endif /* CONFIG_40x */
952#ifdef CONFIG_44x
Matt Porterc9cf73a2005-07-31 22:34:52 -0700953 {
954 .pvr_mask = 0xf0000fff,
955 .pvr_value = 0x40000850,
956 .cpu_name = "440EP Rev. A",
Kumar Gala10b35d92005-09-23 14:08:58 -0500957 .cpu_features = CPU_FTRS_44X,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100958 .cpu_user_features = COMMON_USER_BOOKE | PPC_FEATURE_HAS_FPU,
Matt Porterc9cf73a2005-07-31 22:34:52 -0700959 .icache_bsize = 32,
960 .dcache_bsize = 32,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100961 .platform = "ppc440",
Matt Porterc9cf73a2005-07-31 22:34:52 -0700962 },
963 {
964 .pvr_mask = 0xf0000fff,
965 .pvr_value = 0x400008d3,
966 .cpu_name = "440EP Rev. B",
Kumar Gala10b35d92005-09-23 14:08:58 -0500967 .cpu_features = CPU_FTRS_44X,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100968 .cpu_user_features = COMMON_USER_BOOKE | PPC_FEATURE_HAS_FPU,
Matt Porterc9cf73a2005-07-31 22:34:52 -0700969 .icache_bsize = 32,
970 .dcache_bsize = 32,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100971 .platform = "ppc440",
Matt Porterc9cf73a2005-07-31 22:34:52 -0700972 },
Stephen Rothwell49209602005-10-12 15:55:09 +1000973 { /* 440GP Rev. B */
Linus Torvalds1da177e2005-04-16 15:20:36 -0700974 .pvr_mask = 0xf0000fff,
975 .pvr_value = 0x40000440,
976 .cpu_name = "440GP Rev. B",
Kumar Gala10b35d92005-09-23 14:08:58 -0500977 .cpu_features = CPU_FTRS_44X,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100978 .cpu_user_features = COMMON_USER_BOOKE,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700979 .icache_bsize = 32,
980 .dcache_bsize = 32,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100981 .platform = "ppc440gp",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700982 },
Stephen Rothwell49209602005-10-12 15:55:09 +1000983 { /* 440GP Rev. C */
Linus Torvalds1da177e2005-04-16 15:20:36 -0700984 .pvr_mask = 0xf0000fff,
985 .pvr_value = 0x40000481,
986 .cpu_name = "440GP Rev. C",
Kumar Gala10b35d92005-09-23 14:08:58 -0500987 .cpu_features = CPU_FTRS_44X,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100988 .cpu_user_features = COMMON_USER_BOOKE,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700989 .icache_bsize = 32,
990 .dcache_bsize = 32,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100991 .platform = "ppc440gp",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700992 },
993 { /* 440GX Rev. A */
994 .pvr_mask = 0xf0000fff,
995 .pvr_value = 0x50000850,
996 .cpu_name = "440GX Rev. A",
Kumar Gala10b35d92005-09-23 14:08:58 -0500997 .cpu_features = CPU_FTRS_44X,
Paul Mackerras80f15dc2006-01-14 10:11:39 +1100998 .cpu_user_features = COMMON_USER_BOOKE,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700999 .icache_bsize = 32,
1000 .dcache_bsize = 32,
Paul Mackerras80f15dc2006-01-14 10:11:39 +11001001 .platform = "ppc440",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001002 },
1003 { /* 440GX Rev. B */
1004 .pvr_mask = 0xf0000fff,
1005 .pvr_value = 0x50000851,
1006 .cpu_name = "440GX Rev. B",
Kumar Gala10b35d92005-09-23 14:08:58 -05001007 .cpu_features = CPU_FTRS_44X,
Paul Mackerras80f15dc2006-01-14 10:11:39 +11001008 .cpu_user_features = COMMON_USER_BOOKE,
Linus Torvalds1da177e2005-04-16 15:20:36 -07001009 .icache_bsize = 32,
1010 .dcache_bsize = 32,
Paul Mackerras80f15dc2006-01-14 10:11:39 +11001011 .platform = "ppc440",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001012 },
1013 { /* 440GX Rev. C */
1014 .pvr_mask = 0xf0000fff,
1015 .pvr_value = 0x50000892,
1016 .cpu_name = "440GX Rev. C",
Kumar Gala10b35d92005-09-23 14:08:58 -05001017 .cpu_features = CPU_FTRS_44X,
Paul Mackerras80f15dc2006-01-14 10:11:39 +11001018 .cpu_user_features = COMMON_USER_BOOKE,
Linus Torvalds1da177e2005-04-16 15:20:36 -07001019 .icache_bsize = 32,
1020 .dcache_bsize = 32,
Paul Mackerras80f15dc2006-01-14 10:11:39 +11001021 .platform = "ppc440",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001022 },
Eugene Surovegin9149fb32005-09-03 15:55:40 -07001023 { /* 440GX Rev. F */
1024 .pvr_mask = 0xf0000fff,
1025 .pvr_value = 0x50000894,
1026 .cpu_name = "440GX Rev. F",
Kumar Gala10b35d92005-09-23 14:08:58 -05001027 .cpu_features = CPU_FTRS_44X,
Paul Mackerras80f15dc2006-01-14 10:11:39 +11001028 .cpu_user_features = COMMON_USER_BOOKE,
Eugene Surovegin9149fb32005-09-03 15:55:40 -07001029 .icache_bsize = 32,
1030 .dcache_bsize = 32,
Paul Mackerras80f15dc2006-01-14 10:11:39 +11001031 .platform = "ppc440",
Eugene Surovegin9149fb32005-09-03 15:55:40 -07001032 },
Matt Porter656de7e2005-09-03 15:55:42 -07001033 { /* 440SP Rev. A */
1034 .pvr_mask = 0xff000fff,
1035 .pvr_value = 0x53000891,
1036 .cpu_name = "440SP Rev. A",
Kumar Gala10b35d92005-09-23 14:08:58 -05001037 .cpu_features = CPU_FTRS_44X,
Paul Mackerras80f15dc2006-01-14 10:11:39 +11001038 .cpu_user_features = COMMON_USER_BOOKE,
Matt Porter656de7e2005-09-03 15:55:42 -07001039 .icache_bsize = 32,
1040 .dcache_bsize = 32,
Paul Mackerras80f15dc2006-01-14 10:11:39 +11001041 .platform = "ppc440",
Matt Porter656de7e2005-09-03 15:55:42 -07001042 },
Roland Dreierb0f7b8b2005-11-07 00:58:13 -08001043 { /* 440SPe Rev. A */
1044 .pvr_mask = 0xff000fff,
1045 .pvr_value = 0x53000890,
1046 .cpu_name = "440SPe Rev. A",
1047 .cpu_features = CPU_FTR_SPLIT_ID_CACHE |
1048 CPU_FTR_USE_TB,
Paul Mackerras80f15dc2006-01-14 10:11:39 +11001049 .cpu_user_features = COMMON_USER_BOOKE,
Roland Dreierb0f7b8b2005-11-07 00:58:13 -08001050 .icache_bsize = 32,
1051 .dcache_bsize = 32,
Paul Mackerras80f15dc2006-01-14 10:11:39 +11001052 .platform = "ppc440",
Roland Dreierb0f7b8b2005-11-07 00:58:13 -08001053 },
Linus Torvalds1da177e2005-04-16 15:20:36 -07001054#endif /* CONFIG_44x */
Kumar Gala33d9e9b2005-06-25 14:54:37 -07001055#ifdef CONFIG_FSL_BOOKE
Stephen Rothwell49209602005-10-12 15:55:09 +10001056 { /* e200z5 */
Kumar Gala33d9e9b2005-06-25 14:54:37 -07001057 .pvr_mask = 0xfff00000,
1058 .pvr_value = 0x81000000,
1059 .cpu_name = "e200z5",
1060 /* xxx - galak: add CPU_FTR_MAYBE_CAN_DOZE */
Kumar Gala10b35d92005-09-23 14:08:58 -05001061 .cpu_features = CPU_FTRS_E200,
Paul Mackerras80f15dc2006-01-14 10:11:39 +11001062 .cpu_user_features = COMMON_USER_BOOKE |
1063 PPC_FEATURE_HAS_EFP_SINGLE |
Kumar Gala33d9e9b2005-06-25 14:54:37 -07001064 PPC_FEATURE_UNIFIED_CACHE,
1065 .dcache_bsize = 32,
Paul Mackerras80f15dc2006-01-14 10:11:39 +11001066 .platform = "ppc5554",
Kumar Gala33d9e9b2005-06-25 14:54:37 -07001067 },
Stephen Rothwell49209602005-10-12 15:55:09 +10001068 { /* e200z6 */
Kumar Gala33d9e9b2005-06-25 14:54:37 -07001069 .pvr_mask = 0xfff00000,
1070 .pvr_value = 0x81100000,
1071 .cpu_name = "e200z6",
1072 /* xxx - galak: add CPU_FTR_MAYBE_CAN_DOZE */
Kumar Gala10b35d92005-09-23 14:08:58 -05001073 .cpu_features = CPU_FTRS_E200,
Paul Mackerras80f15dc2006-01-14 10:11:39 +11001074 .cpu_user_features = COMMON_USER_BOOKE |
1075 PPC_FEATURE_SPE_COMP |
Kumar Gala33d9e9b2005-06-25 14:54:37 -07001076 PPC_FEATURE_HAS_EFP_SINGLE |
1077 PPC_FEATURE_UNIFIED_CACHE,
1078 .dcache_bsize = 32,
Paul Mackerras80f15dc2006-01-14 10:11:39 +11001079 .platform = "ppc5554",
Kumar Gala33d9e9b2005-06-25 14:54:37 -07001080 },
Stephen Rothwell49209602005-10-12 15:55:09 +10001081 { /* e500 */
Linus Torvalds1da177e2005-04-16 15:20:36 -07001082 .pvr_mask = 0xffff0000,
1083 .pvr_value = 0x80200000,
1084 .cpu_name = "e500",
1085 /* xxx - galak: add CPU_FTR_MAYBE_CAN_DOZE */
Kumar Gala10b35d92005-09-23 14:08:58 -05001086 .cpu_features = CPU_FTRS_E500,
Paul Mackerras80f15dc2006-01-14 10:11:39 +11001087 .cpu_user_features = COMMON_USER_BOOKE |
1088 PPC_FEATURE_SPE_COMP |
Linus Torvalds1da177e2005-04-16 15:20:36 -07001089 PPC_FEATURE_HAS_EFP_SINGLE,
1090 .icache_bsize = 32,
1091 .dcache_bsize = 32,
1092 .num_pmcs = 4,
Andy Fleming555d97a2005-12-15 20:02:04 -06001093 .oprofile_cpu_type = "ppc/e500",
Andy Whitcroft7a45fb12006-01-13 12:35:49 +00001094 .oprofile_type = PPC_OPROFILE_BOOKE,
Paul Mackerras80f15dc2006-01-14 10:11:39 +11001095 .platform = "ppc8540",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001096 },
Stephen Rothwell49209602005-10-12 15:55:09 +10001097 { /* e500v2 */
Kumar Gala5b37b702005-06-21 17:15:18 -07001098 .pvr_mask = 0xffff0000,
1099 .pvr_value = 0x80210000,
1100 .cpu_name = "e500v2",
1101 /* xxx - galak: add CPU_FTR_MAYBE_CAN_DOZE */
Kumar Gala10b35d92005-09-23 14:08:58 -05001102 .cpu_features = CPU_FTRS_E500_2,
Paul Mackerras80f15dc2006-01-14 10:11:39 +11001103 .cpu_user_features = COMMON_USER_BOOKE |
1104 PPC_FEATURE_SPE_COMP |
1105 PPC_FEATURE_HAS_EFP_SINGLE |
1106 PPC_FEATURE_HAS_EFP_DOUBLE,
Kumar Gala5b37b702005-06-21 17:15:18 -07001107 .icache_bsize = 32,
1108 .dcache_bsize = 32,
1109 .num_pmcs = 4,
Andy Fleming555d97a2005-12-15 20:02:04 -06001110 .oprofile_cpu_type = "ppc/e500",
Andy Whitcroft7a45fb12006-01-13 12:35:49 +00001111 .oprofile_type = PPC_OPROFILE_BOOKE,
Paul Mackerras80f15dc2006-01-14 10:11:39 +11001112 .platform = "ppc8548",
Kumar Gala5b37b702005-06-21 17:15:18 -07001113 },
Linus Torvalds1da177e2005-04-16 15:20:36 -07001114#endif
1115#if !CLASSIC_PPC
1116 { /* default match */
1117 .pvr_mask = 0x00000000,
1118 .pvr_value = 0x00000000,
1119 .cpu_name = "(generic PPC)",
Kumar Gala10b35d92005-09-23 14:08:58 -05001120 .cpu_features = CPU_FTRS_GENERIC_32,
Linus Torvalds1da177e2005-04-16 15:20:36 -07001121 .cpu_user_features = PPC_FEATURE_32,
1122 .icache_bsize = 32,
1123 .dcache_bsize = 32,
Paul Mackerras80f15dc2006-01-14 10:11:39 +11001124 .platform = "powerpc",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001125 }
1126#endif /* !CLASSIC_PPC */
Stephen Rothwell49209602005-10-12 15:55:09 +10001127#endif /* CONFIG_PPC32 */
Linus Torvalds1da177e2005-04-16 15:20:36 -07001128};