]>
Commit | Line | Data |
---|---|---|
1da177e4 | 1 | /* |
1da177e4 LT |
2 | * Copyright (C) 2001 Ben. Herrenschmidt (benh@kernel.crashing.org) |
3 | * | |
4920960f SR |
4 | * Modifications for ppc64: |
5 | * Copyright (C) 2003 Dave Engebretsen <engebret@us.ibm.com> | |
6 | * | |
1da177e4 LT |
7 | * 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> | |
400d2212 KG |
18 | #include <linux/module.h> |
19 | ||
20 | #include <asm/oprofile_impl.h> | |
1da177e4 LT |
21 | #include <asm/cputable.h> |
22 | ||
400d2212 | 23 | struct cpu_spec* cur_cpu_spec = NULL; |
4920960f | 24 | EXPORT_SYMBOL(cur_cpu_spec); |
1da177e4 | 25 | |
4920960f SR |
26 | /* 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 | |
34 | extern void __setup_cpu_power3(unsigned long offset, struct cpu_spec* spec); | |
35 | extern void __setup_cpu_power4(unsigned long offset, struct cpu_spec* spec); | |
36 | extern void __setup_cpu_be(unsigned long offset, struct cpu_spec* spec); | |
37 | #else | |
400d2212 KG |
38 | extern void __setup_cpu_603(unsigned long offset, struct cpu_spec* spec); |
39 | extern void __setup_cpu_604(unsigned long offset, struct cpu_spec* spec); | |
40 | extern void __setup_cpu_750(unsigned long offset, struct cpu_spec* spec); | |
41 | extern void __setup_cpu_750cx(unsigned long offset, struct cpu_spec* spec); | |
42 | extern void __setup_cpu_750fx(unsigned long offset, struct cpu_spec* spec); | |
43 | extern void __setup_cpu_7400(unsigned long offset, struct cpu_spec* spec); | |
44 | extern void __setup_cpu_7410(unsigned long offset, struct cpu_spec* spec); | |
45 | extern void __setup_cpu_745x(unsigned long offset, struct cpu_spec* spec); | |
4920960f | 46 | #endif /* CONFIG_PPC32 */ |
400d2212 | 47 | extern void __setup_cpu_ppc970(unsigned long offset, struct cpu_spec* spec); |
1da177e4 | 48 | |
1da177e4 LT |
49 | /* This table only contains "desktop" CPUs, it need to be filled with embedded |
50 | * ones as well... | |
51 | */ | |
4920960f SR |
52 | #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) | |
a7ddc5e8 PM |
55 | #define COMMON_USER_POWER4 (COMMON_USER_PPC64 | PPC_FEATURE_POWER4) |
56 | #define COMMON_USER_POWER5 (COMMON_USER_PPC64 | PPC_FEATURE_POWER5) | |
57 | #define COMMON_USER_POWER5_PLUS (COMMON_USER_PPC64 | PPC_FEATURE_POWER5_PLUS) | |
4920960f | 58 | |
1da177e4 | 59 | |
1da177e4 LT |
60 | /* We only set the spe features if the kernel was compiled with |
61 | * spe support | |
62 | */ | |
63 | #ifdef CONFIG_SPE | |
4920960f | 64 | #define PPC_FEATURE_SPE_COMP PPC_FEATURE_HAS_SPE |
1da177e4 | 65 | #else |
4920960f | 66 | #define PPC_FEATURE_SPE_COMP 0 |
1da177e4 LT |
67 | #endif |
68 | ||
1da177e4 | 69 | struct cpu_spec cpu_specs[] = { |
4920960f SR |
70 | #ifdef CONFIG_PPC64 |
71 | { /* Power3 */ | |
72 | .pvr_mask = 0xffff0000, | |
73 | .pvr_value = 0x00400000, | |
74 | .cpu_name = "POWER3 (630)", | |
75 | .cpu_features = CPU_FTRS_POWER3, | |
76 | .cpu_user_features = COMMON_USER_PPC64, | |
77 | .icache_bsize = 128, | |
78 | .dcache_bsize = 128, | |
79 | .num_pmcs = 8, | |
80 | .cpu_setup = __setup_cpu_power3, | |
4920960f | 81 | .oprofile_cpu_type = "ppc64/power3", |
32a33994 | 82 | .oprofile_type = RS64, |
4920960f SR |
83 | }, |
84 | { /* Power3+ */ | |
85 | .pvr_mask = 0xffff0000, | |
86 | .pvr_value = 0x00410000, | |
87 | .cpu_name = "POWER3 (630+)", | |
88 | .cpu_features = CPU_FTRS_POWER3, | |
89 | .cpu_user_features = COMMON_USER_PPC64, | |
90 | .icache_bsize = 128, | |
91 | .dcache_bsize = 128, | |
92 | .num_pmcs = 8, | |
93 | .cpu_setup = __setup_cpu_power3, | |
4920960f | 94 | .oprofile_cpu_type = "ppc64/power3", |
32a33994 | 95 | .oprofile_type = RS64, |
4920960f SR |
96 | }, |
97 | { /* Northstar */ | |
98 | .pvr_mask = 0xffff0000, | |
99 | .pvr_value = 0x00330000, | |
100 | .cpu_name = "RS64-II (northstar)", | |
101 | .cpu_features = CPU_FTRS_RS64, | |
102 | .cpu_user_features = COMMON_USER_PPC64, | |
103 | .icache_bsize = 128, | |
104 | .dcache_bsize = 128, | |
105 | .num_pmcs = 8, | |
106 | .cpu_setup = __setup_cpu_power3, | |
4920960f | 107 | .oprofile_cpu_type = "ppc64/rs64", |
32a33994 | 108 | .oprofile_type = RS64, |
4920960f SR |
109 | }, |
110 | { /* Pulsar */ | |
111 | .pvr_mask = 0xffff0000, | |
112 | .pvr_value = 0x00340000, | |
113 | .cpu_name = "RS64-III (pulsar)", | |
114 | .cpu_features = CPU_FTRS_RS64, | |
115 | .cpu_user_features = COMMON_USER_PPC64, | |
116 | .icache_bsize = 128, | |
117 | .dcache_bsize = 128, | |
118 | .num_pmcs = 8, | |
119 | .cpu_setup = __setup_cpu_power3, | |
4920960f | 120 | .oprofile_cpu_type = "ppc64/rs64", |
32a33994 | 121 | .oprofile_type = RS64, |
4920960f SR |
122 | }, |
123 | { /* I-star */ | |
124 | .pvr_mask = 0xffff0000, | |
125 | .pvr_value = 0x00360000, | |
126 | .cpu_name = "RS64-III (icestar)", | |
127 | .cpu_features = CPU_FTRS_RS64, | |
128 | .cpu_user_features = COMMON_USER_PPC64, | |
129 | .icache_bsize = 128, | |
130 | .dcache_bsize = 128, | |
131 | .num_pmcs = 8, | |
132 | .cpu_setup = __setup_cpu_power3, | |
4920960f | 133 | .oprofile_cpu_type = "ppc64/rs64", |
32a33994 | 134 | .oprofile_type = RS64, |
4920960f SR |
135 | }, |
136 | { /* S-star */ | |
137 | .pvr_mask = 0xffff0000, | |
138 | .pvr_value = 0x00370000, | |
139 | .cpu_name = "RS64-IV (sstar)", | |
140 | .cpu_features = CPU_FTRS_RS64, | |
141 | .cpu_user_features = COMMON_USER_PPC64, | |
142 | .icache_bsize = 128, | |
143 | .dcache_bsize = 128, | |
144 | .num_pmcs = 8, | |
145 | .cpu_setup = __setup_cpu_power3, | |
4920960f | 146 | .oprofile_cpu_type = "ppc64/rs64", |
32a33994 | 147 | .oprofile_type = RS64, |
4920960f SR |
148 | }, |
149 | { /* Power4 */ | |
150 | .pvr_mask = 0xffff0000, | |
151 | .pvr_value = 0x00350000, | |
152 | .cpu_name = "POWER4 (gp)", | |
153 | .cpu_features = CPU_FTRS_POWER4, | |
a7ddc5e8 | 154 | .cpu_user_features = COMMON_USER_POWER4, |
4920960f SR |
155 | .icache_bsize = 128, |
156 | .dcache_bsize = 128, | |
157 | .num_pmcs = 8, | |
158 | .cpu_setup = __setup_cpu_power4, | |
4920960f | 159 | .oprofile_cpu_type = "ppc64/power4", |
32a33994 | 160 | .oprofile_type = POWER4, |
4920960f SR |
161 | }, |
162 | { /* Power4+ */ | |
163 | .pvr_mask = 0xffff0000, | |
164 | .pvr_value = 0x00380000, | |
165 | .cpu_name = "POWER4+ (gq)", | |
166 | .cpu_features = CPU_FTRS_POWER4, | |
a7ddc5e8 | 167 | .cpu_user_features = COMMON_USER_POWER4, |
4920960f SR |
168 | .icache_bsize = 128, |
169 | .dcache_bsize = 128, | |
170 | .num_pmcs = 8, | |
171 | .cpu_setup = __setup_cpu_power4, | |
4920960f | 172 | .oprofile_cpu_type = "ppc64/power4", |
32a33994 | 173 | .oprofile_type = POWER4, |
4920960f SR |
174 | }, |
175 | { /* PPC970 */ | |
176 | .pvr_mask = 0xffff0000, | |
177 | .pvr_value = 0x00390000, | |
178 | .cpu_name = "PPC970", | |
179 | .cpu_features = CPU_FTRS_PPC970, | |
a7ddc5e8 | 180 | .cpu_user_features = COMMON_USER_POWER4 | |
4920960f SR |
181 | PPC_FEATURE_HAS_ALTIVEC_COMP, |
182 | .icache_bsize = 128, | |
183 | .dcache_bsize = 128, | |
184 | .num_pmcs = 8, | |
185 | .cpu_setup = __setup_cpu_ppc970, | |
4920960f | 186 | .oprofile_cpu_type = "ppc64/970", |
32a33994 | 187 | .oprofile_type = POWER4, |
4920960f SR |
188 | }, |
189 | #endif /* CONFIG_PPC64 */ | |
190 | #if defined(CONFIG_PPC64) || defined(CONFIG_POWER4) | |
191 | { /* PPC970FX */ | |
192 | .pvr_mask = 0xffff0000, | |
193 | .pvr_value = 0x003c0000, | |
194 | .cpu_name = "PPC970FX", | |
195 | #ifdef CONFIG_PPC32 | |
196 | .cpu_features = CPU_FTRS_970_32, | |
197 | #else | |
198 | .cpu_features = CPU_FTRS_PPC970, | |
199 | #endif | |
a7ddc5e8 | 200 | .cpu_user_features = COMMON_USER_POWER4 | |
4920960f SR |
201 | PPC_FEATURE_HAS_ALTIVEC_COMP, |
202 | .icache_bsize = 128, | |
203 | .dcache_bsize = 128, | |
204 | .num_pmcs = 8, | |
205 | .cpu_setup = __setup_cpu_ppc970, | |
4920960f | 206 | .oprofile_cpu_type = "ppc64/970", |
32a33994 | 207 | .oprofile_type = POWER4, |
4920960f SR |
208 | }, |
209 | #endif /* defined(CONFIG_PPC64) || defined(CONFIG_POWER4) */ | |
210 | #ifdef CONFIG_PPC64 | |
211 | { /* PPC970MP */ | |
212 | .pvr_mask = 0xffff0000, | |
213 | .pvr_value = 0x00440000, | |
214 | .cpu_name = "PPC970MP", | |
215 | .cpu_features = CPU_FTRS_PPC970, | |
a7ddc5e8 | 216 | .cpu_user_features = COMMON_USER_POWER4 | |
4920960f SR |
217 | PPC_FEATURE_HAS_ALTIVEC_COMP, |
218 | .icache_bsize = 128, | |
219 | .dcache_bsize = 128, | |
220 | .cpu_setup = __setup_cpu_ppc970, | |
4920960f | 221 | .oprofile_cpu_type = "ppc64/970", |
32a33994 | 222 | .oprofile_type = POWER4, |
4920960f | 223 | }, |
3c726f8d | 224 | { /* Power5 GR */ |
4920960f SR |
225 | .pvr_mask = 0xffff0000, |
226 | .pvr_value = 0x003a0000, | |
227 | .cpu_name = "POWER5 (gr)", | |
228 | .cpu_features = CPU_FTRS_POWER5, | |
a7ddc5e8 | 229 | .cpu_user_features = COMMON_USER_POWER5, |
4920960f SR |
230 | .icache_bsize = 128, |
231 | .dcache_bsize = 128, | |
232 | .num_pmcs = 6, | |
233 | .cpu_setup = __setup_cpu_power4, | |
4920960f | 234 | .oprofile_cpu_type = "ppc64/power5", |
32a33994 | 235 | .oprofile_type = POWER4, |
4920960f | 236 | }, |
3c726f8d | 237 | { /* Power5 GS */ |
4920960f SR |
238 | .pvr_mask = 0xffff0000, |
239 | .pvr_value = 0x003b0000, | |
834608f7 | 240 | .cpu_name = "POWER5+ (gs)", |
4920960f | 241 | .cpu_features = CPU_FTRS_POWER5, |
a7ddc5e8 | 242 | .cpu_user_features = COMMON_USER_POWER5_PLUS, |
4920960f SR |
243 | .icache_bsize = 128, |
244 | .dcache_bsize = 128, | |
245 | .num_pmcs = 6, | |
246 | .cpu_setup = __setup_cpu_power4, | |
834608f7 | 247 | .oprofile_cpu_type = "ppc64/power5+", |
32a33994 | 248 | .oprofile_type = POWER4, |
4920960f | 249 | }, |
c902be71 | 250 | { /* Cell Broadband Engine */ |
4920960f SR |
251 | .pvr_mask = 0xffff0000, |
252 | .pvr_value = 0x00700000, | |
253 | .cpu_name = "Cell Broadband Engine", | |
254 | .cpu_features = CPU_FTRS_CELL, | |
255 | .cpu_user_features = COMMON_USER_PPC64 | | |
a7ddc5e8 | 256 | PPC_FEATURE_CELL | PPC_FEATURE_HAS_ALTIVEC_COMP, |
4920960f SR |
257 | .icache_bsize = 128, |
258 | .dcache_bsize = 128, | |
259 | .cpu_setup = __setup_cpu_be, | |
260 | }, | |
261 | { /* default match */ | |
262 | .pvr_mask = 0x00000000, | |
263 | .pvr_value = 0x00000000, | |
264 | .cpu_name = "POWER4 (compatible)", | |
265 | .cpu_features = CPU_FTRS_COMPATIBLE, | |
266 | .cpu_user_features = COMMON_USER_PPC64, | |
267 | .icache_bsize = 128, | |
268 | .dcache_bsize = 128, | |
269 | .num_pmcs = 6, | |
270 | .cpu_setup = __setup_cpu_power4, | |
271 | } | |
272 | #endif /* CONFIG_PPC64 */ | |
273 | #ifdef CONFIG_PPC32 | |
1da177e4 | 274 | #if CLASSIC_PPC |
4920960f | 275 | { /* 601 */ |
1da177e4 LT |
276 | .pvr_mask = 0xffff0000, |
277 | .pvr_value = 0x00010000, | |
278 | .cpu_name = "601", | |
10b35d99 | 279 | .cpu_features = CPU_FTRS_PPC601, |
4920960f | 280 | .cpu_user_features = COMMON_USER | PPC_FEATURE_601_INSTR | |
d8e998c5 | 281 | PPC_FEATURE_UNIFIED_CACHE | PPC_FEATURE_NO_TB, |
1da177e4 LT |
282 | .icache_bsize = 32, |
283 | .dcache_bsize = 32, | |
1da177e4 LT |
284 | }, |
285 | { /* 603 */ | |
286 | .pvr_mask = 0xffff0000, | |
287 | .pvr_value = 0x00030000, | |
288 | .cpu_name = "603", | |
10b35d99 | 289 | .cpu_features = CPU_FTRS_603, |
4920960f | 290 | .cpu_user_features = COMMON_USER, |
1da177e4 LT |
291 | .icache_bsize = 32, |
292 | .dcache_bsize = 32, | |
293 | .cpu_setup = __setup_cpu_603 | |
294 | }, | |
295 | { /* 603e */ | |
296 | .pvr_mask = 0xffff0000, | |
297 | .pvr_value = 0x00060000, | |
298 | .cpu_name = "603e", | |
10b35d99 | 299 | .cpu_features = CPU_FTRS_603, |
4920960f | 300 | .cpu_user_features = COMMON_USER, |
1da177e4 LT |
301 | .icache_bsize = 32, |
302 | .dcache_bsize = 32, | |
303 | .cpu_setup = __setup_cpu_603 | |
304 | }, | |
305 | { /* 603ev */ | |
306 | .pvr_mask = 0xffff0000, | |
307 | .pvr_value = 0x00070000, | |
308 | .cpu_name = "603ev", | |
10b35d99 | 309 | .cpu_features = CPU_FTRS_603, |
4920960f | 310 | .cpu_user_features = COMMON_USER, |
1da177e4 LT |
311 | .icache_bsize = 32, |
312 | .dcache_bsize = 32, | |
313 | .cpu_setup = __setup_cpu_603 | |
314 | }, | |
315 | { /* 604 */ | |
316 | .pvr_mask = 0xffff0000, | |
317 | .pvr_value = 0x00040000, | |
318 | .cpu_name = "604", | |
10b35d99 | 319 | .cpu_features = CPU_FTRS_604, |
4920960f | 320 | .cpu_user_features = COMMON_USER, |
1da177e4 LT |
321 | .icache_bsize = 32, |
322 | .dcache_bsize = 32, | |
323 | .num_pmcs = 2, | |
324 | .cpu_setup = __setup_cpu_604 | |
325 | }, | |
326 | { /* 604e */ | |
327 | .pvr_mask = 0xfffff000, | |
328 | .pvr_value = 0x00090000, | |
329 | .cpu_name = "604e", | |
10b35d99 | 330 | .cpu_features = CPU_FTRS_604, |
4920960f | 331 | .cpu_user_features = COMMON_USER, |
1da177e4 LT |
332 | .icache_bsize = 32, |
333 | .dcache_bsize = 32, | |
334 | .num_pmcs = 4, | |
335 | .cpu_setup = __setup_cpu_604 | |
336 | }, | |
337 | { /* 604r */ | |
338 | .pvr_mask = 0xffff0000, | |
339 | .pvr_value = 0x00090000, | |
340 | .cpu_name = "604r", | |
10b35d99 | 341 | .cpu_features = CPU_FTRS_604, |
4920960f | 342 | .cpu_user_features = COMMON_USER, |
1da177e4 LT |
343 | .icache_bsize = 32, |
344 | .dcache_bsize = 32, | |
345 | .num_pmcs = 4, | |
346 | .cpu_setup = __setup_cpu_604 | |
347 | }, | |
348 | { /* 604ev */ | |
349 | .pvr_mask = 0xffff0000, | |
350 | .pvr_value = 0x000a0000, | |
351 | .cpu_name = "604ev", | |
10b35d99 | 352 | .cpu_features = CPU_FTRS_604, |
4920960f | 353 | .cpu_user_features = COMMON_USER, |
1da177e4 LT |
354 | .icache_bsize = 32, |
355 | .dcache_bsize = 32, | |
356 | .num_pmcs = 4, | |
357 | .cpu_setup = __setup_cpu_604 | |
358 | }, | |
359 | { /* 740/750 (0x4202, don't support TAU ?) */ | |
360 | .pvr_mask = 0xffffffff, | |
361 | .pvr_value = 0x00084202, | |
362 | .cpu_name = "740/750", | |
10b35d99 | 363 | .cpu_features = CPU_FTRS_740_NOTAU, |
4920960f | 364 | .cpu_user_features = COMMON_USER, |
1da177e4 LT |
365 | .icache_bsize = 32, |
366 | .dcache_bsize = 32, | |
367 | .num_pmcs = 4, | |
368 | .cpu_setup = __setup_cpu_750 | |
369 | }, | |
1da177e4 LT |
370 | { /* 750CX (80100 and 8010x?) */ |
371 | .pvr_mask = 0xfffffff0, | |
372 | .pvr_value = 0x00080100, | |
373 | .cpu_name = "750CX", | |
10b35d99 | 374 | .cpu_features = CPU_FTRS_750, |
4920960f | 375 | .cpu_user_features = COMMON_USER, |
1da177e4 LT |
376 | .icache_bsize = 32, |
377 | .dcache_bsize = 32, | |
378 | .num_pmcs = 4, | |
379 | .cpu_setup = __setup_cpu_750cx | |
380 | }, | |
381 | { /* 750CX (82201 and 82202) */ | |
382 | .pvr_mask = 0xfffffff0, | |
383 | .pvr_value = 0x00082200, | |
384 | .cpu_name = "750CX", | |
10b35d99 | 385 | .cpu_features = CPU_FTRS_750, |
4920960f | 386 | .cpu_user_features = COMMON_USER, |
1da177e4 LT |
387 | .icache_bsize = 32, |
388 | .dcache_bsize = 32, | |
389 | .num_pmcs = 4, | |
390 | .cpu_setup = __setup_cpu_750cx | |
391 | }, | |
392 | { /* 750CXe (82214) */ | |
393 | .pvr_mask = 0xfffffff0, | |
394 | .pvr_value = 0x00082210, | |
395 | .cpu_name = "750CXe", | |
10b35d99 | 396 | .cpu_features = CPU_FTRS_750, |
4920960f | 397 | .cpu_user_features = COMMON_USER, |
1da177e4 LT |
398 | .icache_bsize = 32, |
399 | .dcache_bsize = 32, | |
400 | .num_pmcs = 4, | |
401 | .cpu_setup = __setup_cpu_750cx | |
402 | }, | |
7c31625a AO |
403 | { /* 750CXe "Gekko" (83214) */ |
404 | .pvr_mask = 0xffffffff, | |
405 | .pvr_value = 0x00083214, | |
406 | .cpu_name = "750CXe", | |
10b35d99 | 407 | .cpu_features = CPU_FTRS_750, |
4920960f | 408 | .cpu_user_features = COMMON_USER, |
7c31625a AO |
409 | .icache_bsize = 32, |
410 | .dcache_bsize = 32, | |
411 | .num_pmcs = 4, | |
412 | .cpu_setup = __setup_cpu_750cx | |
413 | }, | |
ac1ff047 AO |
414 | { /* 745/755 */ |
415 | .pvr_mask = 0xfffff000, | |
416 | .pvr_value = 0x00083000, | |
417 | .cpu_name = "745/755", | |
10b35d99 | 418 | .cpu_features = CPU_FTRS_750, |
4920960f | 419 | .cpu_user_features = COMMON_USER, |
ac1ff047 AO |
420 | .icache_bsize = 32, |
421 | .dcache_bsize = 32, | |
422 | .num_pmcs = 4, | |
423 | .cpu_setup = __setup_cpu_750 | |
424 | }, | |
1da177e4 LT |
425 | { /* 750FX rev 1.x */ |
426 | .pvr_mask = 0xffffff00, | |
427 | .pvr_value = 0x70000100, | |
428 | .cpu_name = "750FX", | |
10b35d99 | 429 | .cpu_features = CPU_FTRS_750FX1, |
4920960f | 430 | .cpu_user_features = COMMON_USER, |
1da177e4 LT |
431 | .icache_bsize = 32, |
432 | .dcache_bsize = 32, | |
433 | .num_pmcs = 4, | |
434 | .cpu_setup = __setup_cpu_750 | |
435 | }, | |
436 | { /* 750FX rev 2.0 must disable HID0[DPM] */ | |
437 | .pvr_mask = 0xffffffff, | |
438 | .pvr_value = 0x70000200, | |
439 | .cpu_name = "750FX", | |
10b35d99 | 440 | .cpu_features = CPU_FTRS_750FX2, |
4920960f | 441 | .cpu_user_features = COMMON_USER, |
1da177e4 LT |
442 | .icache_bsize = 32, |
443 | .dcache_bsize = 32, | |
444 | .num_pmcs = 4, | |
445 | .cpu_setup = __setup_cpu_750 | |
446 | }, | |
447 | { /* 750FX (All revs except 2.0) */ | |
448 | .pvr_mask = 0xffff0000, | |
449 | .pvr_value = 0x70000000, | |
450 | .cpu_name = "750FX", | |
10b35d99 | 451 | .cpu_features = CPU_FTRS_750FX, |
4920960f | 452 | .cpu_user_features = COMMON_USER, |
1da177e4 LT |
453 | .icache_bsize = 32, |
454 | .dcache_bsize = 32, | |
455 | .num_pmcs = 4, | |
456 | .cpu_setup = __setup_cpu_750fx | |
457 | }, | |
458 | { /* 750GX */ | |
459 | .pvr_mask = 0xffff0000, | |
460 | .pvr_value = 0x70020000, | |
461 | .cpu_name = "750GX", | |
10b35d99 | 462 | .cpu_features = CPU_FTRS_750GX, |
4920960f | 463 | .cpu_user_features = COMMON_USER, |
1da177e4 LT |
464 | .icache_bsize = 32, |
465 | .dcache_bsize = 32, | |
466 | .num_pmcs = 4, | |
467 | .cpu_setup = __setup_cpu_750fx | |
468 | }, | |
469 | { /* 740/750 (L2CR bit need fixup for 740) */ | |
470 | .pvr_mask = 0xffff0000, | |
471 | .pvr_value = 0x00080000, | |
472 | .cpu_name = "740/750", | |
10b35d99 | 473 | .cpu_features = CPU_FTRS_740, |
4920960f | 474 | .cpu_user_features = COMMON_USER, |
1da177e4 LT |
475 | .icache_bsize = 32, |
476 | .dcache_bsize = 32, | |
477 | .num_pmcs = 4, | |
478 | .cpu_setup = __setup_cpu_750 | |
479 | }, | |
480 | { /* 7400 rev 1.1 ? (no TAU) */ | |
481 | .pvr_mask = 0xffffffff, | |
482 | .pvr_value = 0x000c1101, | |
483 | .cpu_name = "7400 (1.1)", | |
10b35d99 | 484 | .cpu_features = CPU_FTRS_7400_NOTAU, |
4920960f | 485 | .cpu_user_features = COMMON_USER | PPC_FEATURE_HAS_ALTIVEC_COMP, |
1da177e4 LT |
486 | .icache_bsize = 32, |
487 | .dcache_bsize = 32, | |
488 | .num_pmcs = 4, | |
489 | .cpu_setup = __setup_cpu_7400 | |
490 | }, | |
491 | { /* 7400 */ | |
492 | .pvr_mask = 0xffff0000, | |
493 | .pvr_value = 0x000c0000, | |
494 | .cpu_name = "7400", | |
10b35d99 | 495 | .cpu_features = CPU_FTRS_7400, |
4920960f | 496 | .cpu_user_features = COMMON_USER | PPC_FEATURE_HAS_ALTIVEC_COMP, |
1da177e4 LT |
497 | .icache_bsize = 32, |
498 | .dcache_bsize = 32, | |
499 | .num_pmcs = 4, | |
500 | .cpu_setup = __setup_cpu_7400 | |
501 | }, | |
502 | { /* 7410 */ | |
503 | .pvr_mask = 0xffff0000, | |
504 | .pvr_value = 0x800c0000, | |
505 | .cpu_name = "7410", | |
10b35d99 | 506 | .cpu_features = CPU_FTRS_7400, |
4920960f | 507 | .cpu_user_features = COMMON_USER | PPC_FEATURE_HAS_ALTIVEC_COMP, |
1da177e4 LT |
508 | .icache_bsize = 32, |
509 | .dcache_bsize = 32, | |
510 | .num_pmcs = 4, | |
511 | .cpu_setup = __setup_cpu_7410 | |
512 | }, | |
513 | { /* 7450 2.0 - no doze/nap */ | |
514 | .pvr_mask = 0xffffffff, | |
515 | .pvr_value = 0x80000200, | |
516 | .cpu_name = "7450", | |
10b35d99 | 517 | .cpu_features = CPU_FTRS_7450_20, |
4920960f | 518 | .cpu_user_features = COMMON_USER | PPC_FEATURE_HAS_ALTIVEC_COMP, |
1da177e4 LT |
519 | .icache_bsize = 32, |
520 | .dcache_bsize = 32, | |
521 | .num_pmcs = 6, | |
555d97ac | 522 | .cpu_setup = __setup_cpu_745x, |
555d97ac | 523 | .oprofile_cpu_type = "ppc/7450", |
32a33994 | 524 | .oprofile_type = G4, |
1da177e4 LT |
525 | }, |
526 | { /* 7450 2.1 */ | |
527 | .pvr_mask = 0xffffffff, | |
528 | .pvr_value = 0x80000201, | |
529 | .cpu_name = "7450", | |
10b35d99 | 530 | .cpu_features = CPU_FTRS_7450_21, |
4920960f | 531 | .cpu_user_features = COMMON_USER | PPC_FEATURE_HAS_ALTIVEC_COMP, |
1da177e4 LT |
532 | .icache_bsize = 32, |
533 | .dcache_bsize = 32, | |
534 | .num_pmcs = 6, | |
555d97ac | 535 | .cpu_setup = __setup_cpu_745x, |
555d97ac | 536 | .oprofile_cpu_type = "ppc/7450", |
32a33994 | 537 | .oprofile_type = G4, |
1da177e4 LT |
538 | }, |
539 | { /* 7450 2.3 and newer */ | |
540 | .pvr_mask = 0xffff0000, | |
541 | .pvr_value = 0x80000000, | |
542 | .cpu_name = "7450", | |
10b35d99 | 543 | .cpu_features = CPU_FTRS_7450_23, |
4920960f | 544 | .cpu_user_features = COMMON_USER | PPC_FEATURE_HAS_ALTIVEC_COMP, |
1da177e4 LT |
545 | .icache_bsize = 32, |
546 | .dcache_bsize = 32, | |
547 | .num_pmcs = 6, | |
555d97ac | 548 | .cpu_setup = __setup_cpu_745x, |
555d97ac | 549 | .oprofile_cpu_type = "ppc/7450", |
32a33994 | 550 | .oprofile_type = G4, |
1da177e4 LT |
551 | }, |
552 | { /* 7455 rev 1.x */ | |
553 | .pvr_mask = 0xffffff00, | |
554 | .pvr_value = 0x80010100, | |
555 | .cpu_name = "7455", | |
10b35d99 | 556 | .cpu_features = CPU_FTRS_7455_1, |
4920960f | 557 | .cpu_user_features = COMMON_USER | PPC_FEATURE_HAS_ALTIVEC_COMP, |
1da177e4 LT |
558 | .icache_bsize = 32, |
559 | .dcache_bsize = 32, | |
560 | .num_pmcs = 6, | |
555d97ac | 561 | .cpu_setup = __setup_cpu_745x, |
555d97ac | 562 | .oprofile_cpu_type = "ppc/7450", |
32a33994 | 563 | .oprofile_type = G4, |
1da177e4 LT |
564 | }, |
565 | { /* 7455 rev 2.0 */ | |
566 | .pvr_mask = 0xffffffff, | |
567 | .pvr_value = 0x80010200, | |
568 | .cpu_name = "7455", | |
10b35d99 | 569 | .cpu_features = CPU_FTRS_7455_20, |
4920960f | 570 | .cpu_user_features = COMMON_USER | PPC_FEATURE_HAS_ALTIVEC_COMP, |
1da177e4 LT |
571 | .icache_bsize = 32, |
572 | .dcache_bsize = 32, | |
573 | .num_pmcs = 6, | |
555d97ac | 574 | .cpu_setup = __setup_cpu_745x, |
555d97ac | 575 | .oprofile_cpu_type = "ppc/7450", |
32a33994 | 576 | .oprofile_type = G4, |
1da177e4 LT |
577 | }, |
578 | { /* 7455 others */ | |
579 | .pvr_mask = 0xffff0000, | |
580 | .pvr_value = 0x80010000, | |
581 | .cpu_name = "7455", | |
10b35d99 | 582 | .cpu_features = CPU_FTRS_7455, |
4920960f | 583 | .cpu_user_features = COMMON_USER | PPC_FEATURE_HAS_ALTIVEC_COMP, |
1da177e4 LT |
584 | .icache_bsize = 32, |
585 | .dcache_bsize = 32, | |
586 | .num_pmcs = 6, | |
555d97ac | 587 | .cpu_setup = __setup_cpu_745x, |
555d97ac | 588 | .oprofile_cpu_type = "ppc/7450", |
32a33994 | 589 | .oprofile_type = G4, |
1da177e4 LT |
590 | }, |
591 | { /* 7447/7457 Rev 1.0 */ | |
592 | .pvr_mask = 0xffffffff, | |
593 | .pvr_value = 0x80020100, | |
594 | .cpu_name = "7447/7457", | |
10b35d99 | 595 | .cpu_features = CPU_FTRS_7447_10, |
4920960f | 596 | .cpu_user_features = COMMON_USER | PPC_FEATURE_HAS_ALTIVEC_COMP, |
1da177e4 LT |
597 | .icache_bsize = 32, |
598 | .dcache_bsize = 32, | |
599 | .num_pmcs = 6, | |
555d97ac | 600 | .cpu_setup = __setup_cpu_745x, |
555d97ac | 601 | .oprofile_cpu_type = "ppc/7450", |
32a33994 | 602 | .oprofile_type = G4, |
1da177e4 LT |
603 | }, |
604 | { /* 7447/7457 Rev 1.1 */ | |
605 | .pvr_mask = 0xffffffff, | |
606 | .pvr_value = 0x80020101, | |
607 | .cpu_name = "7447/7457", | |
10b35d99 | 608 | .cpu_features = CPU_FTRS_7447_10, |
4920960f | 609 | .cpu_user_features = COMMON_USER | PPC_FEATURE_HAS_ALTIVEC_COMP, |
1da177e4 LT |
610 | .icache_bsize = 32, |
611 | .dcache_bsize = 32, | |
612 | .num_pmcs = 6, | |
555d97ac | 613 | .cpu_setup = __setup_cpu_745x, |
555d97ac | 614 | .oprofile_cpu_type = "ppc/7450", |
32a33994 | 615 | .oprofile_type = G4, |
1da177e4 LT |
616 | }, |
617 | { /* 7447/7457 Rev 1.2 and later */ | |
618 | .pvr_mask = 0xffff0000, | |
619 | .pvr_value = 0x80020000, | |
620 | .cpu_name = "7447/7457", | |
10b35d99 | 621 | .cpu_features = CPU_FTRS_7447, |
4920960f | 622 | .cpu_user_features = COMMON_USER | PPC_FEATURE_HAS_ALTIVEC_COMP, |
1da177e4 LT |
623 | .icache_bsize = 32, |
624 | .dcache_bsize = 32, | |
625 | .num_pmcs = 6, | |
555d97ac | 626 | .cpu_setup = __setup_cpu_745x, |
555d97ac | 627 | .oprofile_cpu_type = "ppc/7450", |
32a33994 | 628 | .oprofile_type = G4, |
1da177e4 LT |
629 | }, |
630 | { /* 7447A */ | |
631 | .pvr_mask = 0xffff0000, | |
632 | .pvr_value = 0x80030000, | |
633 | .cpu_name = "7447A", | |
10b35d99 | 634 | .cpu_features = CPU_FTRS_7447A, |
4920960f | 635 | .cpu_user_features = COMMON_USER | PPC_FEATURE_HAS_ALTIVEC_COMP, |
bbde630b KG |
636 | .icache_bsize = 32, |
637 | .dcache_bsize = 32, | |
638 | .num_pmcs = 6, | |
555d97ac | 639 | .cpu_setup = __setup_cpu_745x, |
555d97ac | 640 | .oprofile_cpu_type = "ppc/7450", |
32a33994 | 641 | .oprofile_type = G4, |
bbde630b KG |
642 | }, |
643 | { /* 7448 */ | |
644 | .pvr_mask = 0xffff0000, | |
645 | .pvr_value = 0x80040000, | |
646 | .cpu_name = "7448", | |
10b35d99 | 647 | .cpu_features = CPU_FTRS_7447A, |
4920960f | 648 | .cpu_user_features = COMMON_USER | PPC_FEATURE_HAS_ALTIVEC_COMP, |
1da177e4 LT |
649 | .icache_bsize = 32, |
650 | .dcache_bsize = 32, | |
651 | .num_pmcs = 6, | |
555d97ac | 652 | .cpu_setup = __setup_cpu_745x, |
555d97ac | 653 | .oprofile_cpu_type = "ppc/7450", |
32a33994 | 654 | .oprofile_type = G4, |
1da177e4 LT |
655 | }, |
656 | { /* 82xx (8240, 8245, 8260 are all 603e cores) */ | |
657 | .pvr_mask = 0x7fff0000, | |
658 | .pvr_value = 0x00810000, | |
659 | .cpu_name = "82xx", | |
10b35d99 | 660 | .cpu_features = CPU_FTRS_82XX, |
4920960f | 661 | .cpu_user_features = COMMON_USER, |
1da177e4 LT |
662 | .icache_bsize = 32, |
663 | .dcache_bsize = 32, | |
664 | .cpu_setup = __setup_cpu_603 | |
665 | }, | |
666 | { /* All G2_LE (603e core, plus some) have the same pvr */ | |
667 | .pvr_mask = 0x7fff0000, | |
668 | .pvr_value = 0x00820000, | |
669 | .cpu_name = "G2_LE", | |
10b35d99 | 670 | .cpu_features = CPU_FTRS_G2_LE, |
4920960f | 671 | .cpu_user_features = COMMON_USER, |
1da177e4 LT |
672 | .icache_bsize = 32, |
673 | .dcache_bsize = 32, | |
674 | .cpu_setup = __setup_cpu_603 | |
675 | }, | |
676 | { /* e300 (a 603e core, plus some) on 83xx */ | |
677 | .pvr_mask = 0x7fff0000, | |
678 | .pvr_value = 0x00830000, | |
679 | .cpu_name = "e300", | |
10b35d99 | 680 | .cpu_features = CPU_FTRS_E300, |
4920960f | 681 | .cpu_user_features = COMMON_USER, |
1da177e4 LT |
682 | .icache_bsize = 32, |
683 | .dcache_bsize = 32, | |
684 | .cpu_setup = __setup_cpu_603 | |
685 | }, | |
686 | { /* default match, we assume split I/D cache & TB (non-601)... */ | |
687 | .pvr_mask = 0x00000000, | |
688 | .pvr_value = 0x00000000, | |
689 | .cpu_name = "(generic PPC)", | |
10b35d99 | 690 | .cpu_features = CPU_FTRS_CLASSIC32, |
4920960f | 691 | .cpu_user_features = COMMON_USER, |
1da177e4 LT |
692 | .icache_bsize = 32, |
693 | .dcache_bsize = 32, | |
1da177e4 LT |
694 | }, |
695 | #endif /* CLASSIC_PPC */ | |
1da177e4 LT |
696 | #ifdef CONFIG_8xx |
697 | { /* 8xx */ | |
698 | .pvr_mask = 0xffff0000, | |
699 | .pvr_value = 0x00500000, | |
700 | .cpu_name = "8xx", | |
701 | /* CPU_FTR_MAYBE_CAN_DOZE is possible, | |
702 | * if the 8xx code is there.... */ | |
10b35d99 | 703 | .cpu_features = CPU_FTRS_8XX, |
1da177e4 LT |
704 | .cpu_user_features = PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU, |
705 | .icache_bsize = 16, | |
706 | .dcache_bsize = 16, | |
707 | }, | |
708 | #endif /* CONFIG_8xx */ | |
709 | #ifdef CONFIG_40x | |
710 | { /* 403GC */ | |
711 | .pvr_mask = 0xffffff00, | |
712 | .pvr_value = 0x00200200, | |
713 | .cpu_name = "403GC", | |
10b35d99 | 714 | .cpu_features = CPU_FTRS_40X, |
1da177e4 LT |
715 | .cpu_user_features = PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU, |
716 | .icache_bsize = 16, | |
717 | .dcache_bsize = 16, | |
718 | }, | |
719 | { /* 403GCX */ | |
720 | .pvr_mask = 0xffffff00, | |
721 | .pvr_value = 0x00201400, | |
722 | .cpu_name = "403GCX", | |
10b35d99 | 723 | .cpu_features = CPU_FTRS_40X, |
d8e998c5 BH |
724 | .cpu_user_features = PPC_FEATURE_32 | |
725 | PPC_FEATURE_HAS_MMU | PPC_FEATURE_NO_TB, | |
1da177e4 LT |
726 | .icache_bsize = 16, |
727 | .dcache_bsize = 16, | |
728 | }, | |
729 | { /* 403G ?? */ | |
730 | .pvr_mask = 0xffff0000, | |
731 | .pvr_value = 0x00200000, | |
732 | .cpu_name = "403G ??", | |
10b35d99 | 733 | .cpu_features = CPU_FTRS_40X, |
1da177e4 LT |
734 | .cpu_user_features = PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU, |
735 | .icache_bsize = 16, | |
736 | .dcache_bsize = 16, | |
737 | }, | |
738 | { /* 405GP */ | |
739 | .pvr_mask = 0xffff0000, | |
740 | .pvr_value = 0x40110000, | |
741 | .cpu_name = "405GP", | |
10b35d99 | 742 | .cpu_features = CPU_FTRS_40X, |
1da177e4 LT |
743 | .cpu_user_features = PPC_FEATURE_32 | |
744 | PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC, | |
745 | .icache_bsize = 32, | |
746 | .dcache_bsize = 32, | |
747 | }, | |
748 | { /* STB 03xxx */ | |
749 | .pvr_mask = 0xffff0000, | |
750 | .pvr_value = 0x40130000, | |
751 | .cpu_name = "STB03xxx", | |
10b35d99 | 752 | .cpu_features = CPU_FTRS_40X, |
1da177e4 LT |
753 | .cpu_user_features = PPC_FEATURE_32 | |
754 | PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC, | |
755 | .icache_bsize = 32, | |
756 | .dcache_bsize = 32, | |
757 | }, | |
758 | { /* STB 04xxx */ | |
759 | .pvr_mask = 0xffff0000, | |
760 | .pvr_value = 0x41810000, | |
761 | .cpu_name = "STB04xxx", | |
10b35d99 | 762 | .cpu_features = CPU_FTRS_40X, |
1da177e4 LT |
763 | .cpu_user_features = PPC_FEATURE_32 | |
764 | PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC, | |
765 | .icache_bsize = 32, | |
766 | .dcache_bsize = 32, | |
767 | }, | |
768 | { /* NP405L */ | |
769 | .pvr_mask = 0xffff0000, | |
770 | .pvr_value = 0x41610000, | |
771 | .cpu_name = "NP405L", | |
10b35d99 | 772 | .cpu_features = CPU_FTRS_40X, |
1da177e4 LT |
773 | .cpu_user_features = PPC_FEATURE_32 | |
774 | PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC, | |
775 | .icache_bsize = 32, | |
776 | .dcache_bsize = 32, | |
777 | }, | |
778 | { /* NP4GS3 */ | |
779 | .pvr_mask = 0xffff0000, | |
780 | .pvr_value = 0x40B10000, | |
781 | .cpu_name = "NP4GS3", | |
10b35d99 | 782 | .cpu_features = CPU_FTRS_40X, |
1da177e4 LT |
783 | .cpu_user_features = PPC_FEATURE_32 | |
784 | PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC, | |
785 | .icache_bsize = 32, | |
786 | .dcache_bsize = 32, | |
787 | }, | |
788 | { /* NP405H */ | |
789 | .pvr_mask = 0xffff0000, | |
790 | .pvr_value = 0x41410000, | |
791 | .cpu_name = "NP405H", | |
10b35d99 | 792 | .cpu_features = CPU_FTRS_40X, |
1da177e4 LT |
793 | .cpu_user_features = PPC_FEATURE_32 | |
794 | PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC, | |
795 | .icache_bsize = 32, | |
796 | .dcache_bsize = 32, | |
797 | }, | |
798 | { /* 405GPr */ | |
799 | .pvr_mask = 0xffff0000, | |
800 | .pvr_value = 0x50910000, | |
801 | .cpu_name = "405GPr", | |
10b35d99 | 802 | .cpu_features = CPU_FTRS_40X, |
1da177e4 LT |
803 | .cpu_user_features = PPC_FEATURE_32 | |
804 | PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC, | |
805 | .icache_bsize = 32, | |
806 | .dcache_bsize = 32, | |
807 | }, | |
808 | { /* STBx25xx */ | |
809 | .pvr_mask = 0xffff0000, | |
810 | .pvr_value = 0x51510000, | |
811 | .cpu_name = "STBx25xx", | |
10b35d99 | 812 | .cpu_features = CPU_FTRS_40X, |
1da177e4 LT |
813 | .cpu_user_features = PPC_FEATURE_32 | |
814 | PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC, | |
815 | .icache_bsize = 32, | |
816 | .dcache_bsize = 32, | |
817 | }, | |
818 | { /* 405LP */ | |
819 | .pvr_mask = 0xffff0000, | |
820 | .pvr_value = 0x41F10000, | |
821 | .cpu_name = "405LP", | |
10b35d99 | 822 | .cpu_features = CPU_FTRS_40X, |
1da177e4 LT |
823 | .cpu_user_features = PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU, |
824 | .icache_bsize = 32, | |
825 | .dcache_bsize = 32, | |
826 | }, | |
827 | { /* Xilinx Virtex-II Pro */ | |
828 | .pvr_mask = 0xffff0000, | |
829 | .pvr_value = 0x20010000, | |
830 | .cpu_name = "Virtex-II Pro", | |
10b35d99 | 831 | .cpu_features = CPU_FTRS_40X, |
1da177e4 LT |
832 | .cpu_user_features = PPC_FEATURE_32 | |
833 | PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC, | |
834 | .icache_bsize = 32, | |
835 | .dcache_bsize = 32, | |
836 | }, | |
ad95d609 ES |
837 | { /* 405EP */ |
838 | .pvr_mask = 0xffff0000, | |
839 | .pvr_value = 0x51210000, | |
840 | .cpu_name = "405EP", | |
10b35d99 | 841 | .cpu_features = CPU_FTRS_40X, |
ad95d609 ES |
842 | .cpu_user_features = PPC_FEATURE_32 | |
843 | PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC, | |
844 | .icache_bsize = 32, | |
845 | .dcache_bsize = 32, | |
846 | }, | |
1da177e4 LT |
847 | |
848 | #endif /* CONFIG_40x */ | |
849 | #ifdef CONFIG_44x | |
c9cf73ae MP |
850 | { |
851 | .pvr_mask = 0xf0000fff, | |
852 | .pvr_value = 0x40000850, | |
853 | .cpu_name = "440EP Rev. A", | |
10b35d99 | 854 | .cpu_features = CPU_FTRS_44X, |
4920960f | 855 | .cpu_user_features = COMMON_USER, /* 440EP has an FPU */ |
c9cf73ae MP |
856 | .icache_bsize = 32, |
857 | .dcache_bsize = 32, | |
858 | }, | |
859 | { | |
860 | .pvr_mask = 0xf0000fff, | |
861 | .pvr_value = 0x400008d3, | |
862 | .cpu_name = "440EP Rev. B", | |
10b35d99 | 863 | .cpu_features = CPU_FTRS_44X, |
4920960f | 864 | .cpu_user_features = COMMON_USER, /* 440EP has an FPU */ |
c9cf73ae MP |
865 | .icache_bsize = 32, |
866 | .dcache_bsize = 32, | |
867 | }, | |
4920960f | 868 | { /* 440GP Rev. B */ |
1da177e4 LT |
869 | .pvr_mask = 0xf0000fff, |
870 | .pvr_value = 0x40000440, | |
871 | .cpu_name = "440GP Rev. B", | |
10b35d99 | 872 | .cpu_features = CPU_FTRS_44X, |
1da177e4 LT |
873 | .cpu_user_features = PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU, |
874 | .icache_bsize = 32, | |
875 | .dcache_bsize = 32, | |
876 | }, | |
4920960f | 877 | { /* 440GP Rev. C */ |
1da177e4 LT |
878 | .pvr_mask = 0xf0000fff, |
879 | .pvr_value = 0x40000481, | |
880 | .cpu_name = "440GP Rev. C", | |
10b35d99 | 881 | .cpu_features = CPU_FTRS_44X, |
1da177e4 LT |
882 | .cpu_user_features = PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU, |
883 | .icache_bsize = 32, | |
884 | .dcache_bsize = 32, | |
885 | }, | |
886 | { /* 440GX Rev. A */ | |
887 | .pvr_mask = 0xf0000fff, | |
888 | .pvr_value = 0x50000850, | |
889 | .cpu_name = "440GX Rev. A", | |
10b35d99 | 890 | .cpu_features = CPU_FTRS_44X, |
1da177e4 LT |
891 | .cpu_user_features = PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU, |
892 | .icache_bsize = 32, | |
893 | .dcache_bsize = 32, | |
894 | }, | |
895 | { /* 440GX Rev. B */ | |
896 | .pvr_mask = 0xf0000fff, | |
897 | .pvr_value = 0x50000851, | |
898 | .cpu_name = "440GX Rev. B", | |
10b35d99 | 899 | .cpu_features = CPU_FTRS_44X, |
1da177e4 LT |
900 | .cpu_user_features = PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU, |
901 | .icache_bsize = 32, | |
902 | .dcache_bsize = 32, | |
903 | }, | |
904 | { /* 440GX Rev. C */ | |
905 | .pvr_mask = 0xf0000fff, | |
906 | .pvr_value = 0x50000892, | |
907 | .cpu_name = "440GX Rev. C", | |
10b35d99 | 908 | .cpu_features = CPU_FTRS_44X, |
1da177e4 LT |
909 | .cpu_user_features = PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU, |
910 | .icache_bsize = 32, | |
911 | .dcache_bsize = 32, | |
912 | }, | |
9149fb3b ES |
913 | { /* 440GX Rev. F */ |
914 | .pvr_mask = 0xf0000fff, | |
915 | .pvr_value = 0x50000894, | |
916 | .cpu_name = "440GX Rev. F", | |
10b35d99 | 917 | .cpu_features = CPU_FTRS_44X, |
9149fb3b ES |
918 | .cpu_user_features = PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU, |
919 | .icache_bsize = 32, | |
920 | .dcache_bsize = 32, | |
921 | }, | |
656de7e4 MP |
922 | { /* 440SP Rev. A */ |
923 | .pvr_mask = 0xff000fff, | |
924 | .pvr_value = 0x53000891, | |
925 | .cpu_name = "440SP Rev. A", | |
10b35d99 | 926 | .cpu_features = CPU_FTRS_44X, |
656de7e4 MP |
927 | .cpu_user_features = PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU, |
928 | .icache_bsize = 32, | |
929 | .dcache_bsize = 32, | |
930 | }, | |
b0f7b8bc RD |
931 | { /* 440SPe Rev. A */ |
932 | .pvr_mask = 0xff000fff, | |
933 | .pvr_value = 0x53000890, | |
934 | .cpu_name = "440SPe Rev. A", | |
935 | .cpu_features = CPU_FTR_SPLIT_ID_CACHE | | |
936 | CPU_FTR_USE_TB, | |
937 | .cpu_user_features = PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU, | |
938 | .icache_bsize = 32, | |
939 | .dcache_bsize = 32, | |
940 | }, | |
1da177e4 | 941 | #endif /* CONFIG_44x */ |
33d9e9b5 | 942 | #ifdef CONFIG_FSL_BOOKE |
4920960f | 943 | { /* e200z5 */ |
33d9e9b5 KG |
944 | .pvr_mask = 0xfff00000, |
945 | .pvr_value = 0x81000000, | |
946 | .cpu_name = "e200z5", | |
947 | /* xxx - galak: add CPU_FTR_MAYBE_CAN_DOZE */ | |
10b35d99 | 948 | .cpu_features = CPU_FTRS_E200, |
33d9e9b5 KG |
949 | .cpu_user_features = PPC_FEATURE_32 | |
950 | PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_EFP_SINGLE | | |
951 | PPC_FEATURE_UNIFIED_CACHE, | |
952 | .dcache_bsize = 32, | |
953 | }, | |
4920960f | 954 | { /* e200z6 */ |
33d9e9b5 KG |
955 | .pvr_mask = 0xfff00000, |
956 | .pvr_value = 0x81100000, | |
957 | .cpu_name = "e200z6", | |
958 | /* xxx - galak: add CPU_FTR_MAYBE_CAN_DOZE */ | |
10b35d99 | 959 | .cpu_features = CPU_FTRS_E200, |
33d9e9b5 KG |
960 | .cpu_user_features = PPC_FEATURE_32 | |
961 | PPC_FEATURE_HAS_MMU | PPC_FEATURE_SPE_COMP | | |
962 | PPC_FEATURE_HAS_EFP_SINGLE | | |
963 | PPC_FEATURE_UNIFIED_CACHE, | |
964 | .dcache_bsize = 32, | |
965 | }, | |
4920960f | 966 | { /* e500 */ |
1da177e4 LT |
967 | .pvr_mask = 0xffff0000, |
968 | .pvr_value = 0x80200000, | |
969 | .cpu_name = "e500", | |
970 | /* xxx - galak: add CPU_FTR_MAYBE_CAN_DOZE */ | |
10b35d99 | 971 | .cpu_features = CPU_FTRS_E500, |
1da177e4 LT |
972 | .cpu_user_features = PPC_FEATURE_32 | |
973 | PPC_FEATURE_HAS_MMU | PPC_FEATURE_SPE_COMP | | |
974 | PPC_FEATURE_HAS_EFP_SINGLE, | |
975 | .icache_bsize = 32, | |
976 | .dcache_bsize = 32, | |
977 | .num_pmcs = 4, | |
555d97ac | 978 | .oprofile_cpu_type = "ppc/e500", |
32a33994 | 979 | .oprofile_type = BOOKE, |
1da177e4 | 980 | }, |
4920960f | 981 | { /* e500v2 */ |
5b37b700 KG |
982 | .pvr_mask = 0xffff0000, |
983 | .pvr_value = 0x80210000, | |
984 | .cpu_name = "e500v2", | |
985 | /* xxx - galak: add CPU_FTR_MAYBE_CAN_DOZE */ | |
10b35d99 | 986 | .cpu_features = CPU_FTRS_E500_2, |
5b37b700 KG |
987 | .cpu_user_features = PPC_FEATURE_32 | |
988 | PPC_FEATURE_HAS_MMU | PPC_FEATURE_SPE_COMP | | |
989 | PPC_FEATURE_HAS_EFP_SINGLE | PPC_FEATURE_HAS_EFP_DOUBLE, | |
990 | .icache_bsize = 32, | |
991 | .dcache_bsize = 32, | |
992 | .num_pmcs = 4, | |
555d97ac | 993 | .oprofile_cpu_type = "ppc/e500", |
32a33994 | 994 | .oprofile_type = BOOKE, |
5b37b700 | 995 | }, |
1da177e4 LT |
996 | #endif |
997 | #if !CLASSIC_PPC | |
998 | { /* default match */ | |
999 | .pvr_mask = 0x00000000, | |
1000 | .pvr_value = 0x00000000, | |
1001 | .cpu_name = "(generic PPC)", | |
10b35d99 | 1002 | .cpu_features = CPU_FTRS_GENERIC_32, |
1da177e4 LT |
1003 | .cpu_user_features = PPC_FEATURE_32, |
1004 | .icache_bsize = 32, | |
1005 | .dcache_bsize = 32, | |
1006 | } | |
1007 | #endif /* !CLASSIC_PPC */ | |
4920960f | 1008 | #endif /* CONFIG_PPC32 */ |
1da177e4 | 1009 | }; |