aboutsummaryrefslogtreecommitdiffstats
path: root/arch/powerpc/kernel/cputable.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/powerpc/kernel/cputable.c')
-rw-r--r--arch/powerpc/kernel/cputable.c137
1 files changed, 75 insertions, 62 deletions
diff --git a/arch/powerpc/kernel/cputable.c b/arch/powerpc/kernel/cputable.c
index 3f7182db9ed5..1c114880dc05 100644
--- a/arch/powerpc/kernel/cputable.c
+++ b/arch/powerpc/kernel/cputable.c
@@ -30,11 +30,7 @@ EXPORT_SYMBOL(cur_cpu_spec);
30 * part of the cputable though. That has to be fixed for both ppc32 30 * part of the cputable though. That has to be fixed for both ppc32
31 * and ppc64 31 * and ppc64
32 */ 32 */
33#ifdef CONFIG_PPC64 33#ifdef CONFIG_PPC32
34extern void __setup_cpu_power3(unsigned long offset, struct cpu_spec* spec);
35extern void __setup_cpu_power4(unsigned long offset, struct cpu_spec* spec);
36extern void __setup_cpu_be(unsigned long offset, struct cpu_spec* spec);
37#else
38extern void __setup_cpu_603(unsigned long offset, struct cpu_spec* spec); 34extern void __setup_cpu_603(unsigned long offset, struct cpu_spec* spec);
39extern void __setup_cpu_604(unsigned long offset, struct cpu_spec* spec); 35extern void __setup_cpu_604(unsigned long offset, struct cpu_spec* spec);
40extern void __setup_cpu_750(unsigned long offset, struct cpu_spec* spec); 36extern void __setup_cpu_750(unsigned long offset, struct cpu_spec* spec);
@@ -58,7 +54,8 @@ extern void __setup_cpu_ppc970(unsigned long offset, struct cpu_spec* spec);
58#define COMMON_USER_POWER5_PLUS (COMMON_USER_PPC64 | PPC_FEATURE_POWER5_PLUS|\ 54#define COMMON_USER_POWER5_PLUS (COMMON_USER_PPC64 | PPC_FEATURE_POWER5_PLUS|\
59 PPC_FEATURE_SMT | PPC_FEATURE_ICACHE_SNOOP) 55 PPC_FEATURE_SMT | PPC_FEATURE_ICACHE_SNOOP)
60#define COMMON_USER_POWER6 (COMMON_USER_PPC64 | PPC_FEATURE_ARCH_2_05 |\ 56#define COMMON_USER_POWER6 (COMMON_USER_PPC64 | PPC_FEATURE_ARCH_2_05 |\
61 PPC_FEATURE_SMT | PPC_FEATURE_ICACHE_SNOOP) 57 PPC_FEATURE_SMT | PPC_FEATURE_ICACHE_SNOOP | \
58 PPC_FEATURE_TRUE_LE)
62#define COMMON_USER_BOOKE (PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU | \ 59#define COMMON_USER_BOOKE (PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU | \
63 PPC_FEATURE_BOOKE) 60 PPC_FEATURE_BOOKE)
64 61
@@ -78,11 +75,10 @@ struct cpu_spec cpu_specs[] = {
78 .pvr_value = 0x00400000, 75 .pvr_value = 0x00400000,
79 .cpu_name = "POWER3 (630)", 76 .cpu_name = "POWER3 (630)",
80 .cpu_features = CPU_FTRS_POWER3, 77 .cpu_features = CPU_FTRS_POWER3,
81 .cpu_user_features = COMMON_USER_PPC64, 78 .cpu_user_features = COMMON_USER_PPC64|PPC_FEATURE_PPC_LE,
82 .icache_bsize = 128, 79 .icache_bsize = 128,
83 .dcache_bsize = 128, 80 .dcache_bsize = 128,
84 .num_pmcs = 8, 81 .num_pmcs = 8,
85 .cpu_setup = __setup_cpu_power3,
86 .oprofile_cpu_type = "ppc64/power3", 82 .oprofile_cpu_type = "ppc64/power3",
87 .oprofile_type = PPC_OPROFILE_RS64, 83 .oprofile_type = PPC_OPROFILE_RS64,
88 .platform = "power3", 84 .platform = "power3",
@@ -92,11 +88,10 @@ struct cpu_spec cpu_specs[] = {
92 .pvr_value = 0x00410000, 88 .pvr_value = 0x00410000,
93 .cpu_name = "POWER3 (630+)", 89 .cpu_name = "POWER3 (630+)",
94 .cpu_features = CPU_FTRS_POWER3, 90 .cpu_features = CPU_FTRS_POWER3,
95 .cpu_user_features = COMMON_USER_PPC64, 91 .cpu_user_features = COMMON_USER_PPC64|PPC_FEATURE_PPC_LE,
96 .icache_bsize = 128, 92 .icache_bsize = 128,
97 .dcache_bsize = 128, 93 .dcache_bsize = 128,
98 .num_pmcs = 8, 94 .num_pmcs = 8,
99 .cpu_setup = __setup_cpu_power3,
100 .oprofile_cpu_type = "ppc64/power3", 95 .oprofile_cpu_type = "ppc64/power3",
101 .oprofile_type = PPC_OPROFILE_RS64, 96 .oprofile_type = PPC_OPROFILE_RS64,
102 .platform = "power3", 97 .platform = "power3",
@@ -110,7 +105,6 @@ struct cpu_spec cpu_specs[] = {
110 .icache_bsize = 128, 105 .icache_bsize = 128,
111 .dcache_bsize = 128, 106 .dcache_bsize = 128,
112 .num_pmcs = 8, 107 .num_pmcs = 8,
113 .cpu_setup = __setup_cpu_power3,
114 .oprofile_cpu_type = "ppc64/rs64", 108 .oprofile_cpu_type = "ppc64/rs64",
115 .oprofile_type = PPC_OPROFILE_RS64, 109 .oprofile_type = PPC_OPROFILE_RS64,
116 .platform = "rs64", 110 .platform = "rs64",
@@ -124,7 +118,6 @@ struct cpu_spec cpu_specs[] = {
124 .icache_bsize = 128, 118 .icache_bsize = 128,
125 .dcache_bsize = 128, 119 .dcache_bsize = 128,
126 .num_pmcs = 8, 120 .num_pmcs = 8,
127 .cpu_setup = __setup_cpu_power3,
128 .oprofile_cpu_type = "ppc64/rs64", 121 .oprofile_cpu_type = "ppc64/rs64",
129 .oprofile_type = PPC_OPROFILE_RS64, 122 .oprofile_type = PPC_OPROFILE_RS64,
130 .platform = "rs64", 123 .platform = "rs64",
@@ -138,7 +131,6 @@ struct cpu_spec cpu_specs[] = {
138 .icache_bsize = 128, 131 .icache_bsize = 128,
139 .dcache_bsize = 128, 132 .dcache_bsize = 128,
140 .num_pmcs = 8, 133 .num_pmcs = 8,
141 .cpu_setup = __setup_cpu_power3,
142 .oprofile_cpu_type = "ppc64/rs64", 134 .oprofile_cpu_type = "ppc64/rs64",
143 .oprofile_type = PPC_OPROFILE_RS64, 135 .oprofile_type = PPC_OPROFILE_RS64,
144 .platform = "rs64", 136 .platform = "rs64",
@@ -152,7 +144,6 @@ struct cpu_spec cpu_specs[] = {
152 .icache_bsize = 128, 144 .icache_bsize = 128,
153 .dcache_bsize = 128, 145 .dcache_bsize = 128,
154 .num_pmcs = 8, 146 .num_pmcs = 8,
155 .cpu_setup = __setup_cpu_power3,
156 .oprofile_cpu_type = "ppc64/rs64", 147 .oprofile_cpu_type = "ppc64/rs64",
157 .oprofile_type = PPC_OPROFILE_RS64, 148 .oprofile_type = PPC_OPROFILE_RS64,
158 .platform = "rs64", 149 .platform = "rs64",
@@ -166,7 +157,6 @@ struct cpu_spec cpu_specs[] = {
166 .icache_bsize = 128, 157 .icache_bsize = 128,
167 .dcache_bsize = 128, 158 .dcache_bsize = 128,
168 .num_pmcs = 8, 159 .num_pmcs = 8,
169 .cpu_setup = __setup_cpu_power4,
170 .oprofile_cpu_type = "ppc64/power4", 160 .oprofile_cpu_type = "ppc64/power4",
171 .oprofile_type = PPC_OPROFILE_POWER4, 161 .oprofile_type = PPC_OPROFILE_POWER4,
172 .platform = "power4", 162 .platform = "power4",
@@ -180,7 +170,6 @@ struct cpu_spec cpu_specs[] = {
180 .icache_bsize = 128, 170 .icache_bsize = 128,
181 .dcache_bsize = 128, 171 .dcache_bsize = 128,
182 .num_pmcs = 8, 172 .num_pmcs = 8,
183 .cpu_setup = __setup_cpu_power4,
184 .oprofile_cpu_type = "ppc64/power4", 173 .oprofile_cpu_type = "ppc64/power4",
185 .oprofile_type = PPC_OPROFILE_POWER4, 174 .oprofile_type = PPC_OPROFILE_POWER4,
186 .platform = "power4", 175 .platform = "power4",
@@ -200,17 +189,11 @@ struct cpu_spec cpu_specs[] = {
200 .oprofile_type = PPC_OPROFILE_POWER4, 189 .oprofile_type = PPC_OPROFILE_POWER4,
201 .platform = "ppc970", 190 .platform = "ppc970",
202 }, 191 },
203#endif /* CONFIG_PPC64 */
204#if defined(CONFIG_PPC64) || defined(CONFIG_POWER4)
205 { /* PPC970FX */ 192 { /* PPC970FX */
206 .pvr_mask = 0xffff0000, 193 .pvr_mask = 0xffff0000,
207 .pvr_value = 0x003c0000, 194 .pvr_value = 0x003c0000,
208 .cpu_name = "PPC970FX", 195 .cpu_name = "PPC970FX",
209#ifdef CONFIG_PPC32
210 .cpu_features = CPU_FTRS_970_32,
211#else
212 .cpu_features = CPU_FTRS_PPC970, 196 .cpu_features = CPU_FTRS_PPC970,
213#endif
214 .cpu_user_features = COMMON_USER_POWER4 | 197 .cpu_user_features = COMMON_USER_POWER4 |
215 PPC_FEATURE_HAS_ALTIVEC_COMP, 198 PPC_FEATURE_HAS_ALTIVEC_COMP,
216 .icache_bsize = 128, 199 .icache_bsize = 128,
@@ -221,8 +204,6 @@ struct cpu_spec cpu_specs[] = {
221 .oprofile_type = PPC_OPROFILE_POWER4, 204 .oprofile_type = PPC_OPROFILE_POWER4,
222 .platform = "ppc970", 205 .platform = "ppc970",
223 }, 206 },
224#endif /* defined(CONFIG_PPC64) || defined(CONFIG_POWER4) */
225#ifdef CONFIG_PPC64
226 { /* PPC970MP */ 207 { /* PPC970MP */
227 .pvr_mask = 0xffff0000, 208 .pvr_mask = 0xffff0000,
228 .pvr_value = 0x00440000, 209 .pvr_value = 0x00440000,
@@ -232,6 +213,7 @@ struct cpu_spec cpu_specs[] = {
232 PPC_FEATURE_HAS_ALTIVEC_COMP, 213 PPC_FEATURE_HAS_ALTIVEC_COMP,
233 .icache_bsize = 128, 214 .icache_bsize = 128,
234 .dcache_bsize = 128, 215 .dcache_bsize = 128,
216 .num_pmcs = 8,
235 .cpu_setup = __setup_cpu_ppc970, 217 .cpu_setup = __setup_cpu_ppc970,
236 .oprofile_cpu_type = "ppc64/970", 218 .oprofile_cpu_type = "ppc64/970",
237 .oprofile_type = PPC_OPROFILE_POWER4, 219 .oprofile_type = PPC_OPROFILE_POWER4,
@@ -246,9 +228,13 @@ struct cpu_spec cpu_specs[] = {
246 .icache_bsize = 128, 228 .icache_bsize = 128,
247 .dcache_bsize = 128, 229 .dcache_bsize = 128,
248 .num_pmcs = 6, 230 .num_pmcs = 6,
249 .cpu_setup = __setup_cpu_power4,
250 .oprofile_cpu_type = "ppc64/power5", 231 .oprofile_cpu_type = "ppc64/power5",
251 .oprofile_type = PPC_OPROFILE_POWER4, 232 .oprofile_type = PPC_OPROFILE_POWER4,
233 /* SIHV / SIPR bits are implemented on POWER4+ (GQ)
234 * and above but only works on POWER5 and above
235 */
236 .oprofile_mmcra_sihv = MMCRA_SIHV,
237 .oprofile_mmcra_sipr = MMCRA_SIPR,
252 .platform = "power5", 238 .platform = "power5",
253 }, 239 },
254 { /* Power5 GS */ 240 { /* Power5 GS */
@@ -260,9 +246,10 @@ struct cpu_spec cpu_specs[] = {
260 .icache_bsize = 128, 246 .icache_bsize = 128,
261 .dcache_bsize = 128, 247 .dcache_bsize = 128,
262 .num_pmcs = 6, 248 .num_pmcs = 6,
263 .cpu_setup = __setup_cpu_power4,
264 .oprofile_cpu_type = "ppc64/power5+", 249 .oprofile_cpu_type = "ppc64/power5+",
265 .oprofile_type = PPC_OPROFILE_POWER4, 250 .oprofile_type = PPC_OPROFILE_POWER4,
251 .oprofile_mmcra_sihv = MMCRA_SIHV,
252 .oprofile_mmcra_sipr = MMCRA_SIPR,
266 .platform = "power5+", 253 .platform = "power5+",
267 }, 254 },
268 { /* Power6 */ 255 { /* Power6 */
@@ -273,10 +260,13 @@ struct cpu_spec cpu_specs[] = {
273 .cpu_user_features = COMMON_USER_POWER6, 260 .cpu_user_features = COMMON_USER_POWER6,
274 .icache_bsize = 128, 261 .icache_bsize = 128,
275 .dcache_bsize = 128, 262 .dcache_bsize = 128,
276 .num_pmcs = 6, 263 .num_pmcs = 8,
277 .cpu_setup = __setup_cpu_power4,
278 .oprofile_cpu_type = "ppc64/power6", 264 .oprofile_cpu_type = "ppc64/power6",
279 .oprofile_type = PPC_OPROFILE_POWER4, 265 .oprofile_type = PPC_OPROFILE_POWER4,
266 .oprofile_mmcra_sihv = POWER6_MMCRA_SIHV,
267 .oprofile_mmcra_sipr = POWER6_MMCRA_SIPR,
268 .oprofile_mmcra_clear = POWER6_MMCRA_THRM |
269 POWER6_MMCRA_OTHER,
280 .platform = "power6", 270 .platform = "power6",
281 }, 271 },
282 { /* Cell Broadband Engine */ 272 { /* Cell Broadband Engine */
@@ -289,7 +279,6 @@ struct cpu_spec cpu_specs[] = {
289 PPC_FEATURE_SMT, 279 PPC_FEATURE_SMT,
290 .icache_bsize = 128, 280 .icache_bsize = 128,
291 .dcache_bsize = 128, 281 .dcache_bsize = 128,
292 .cpu_setup = __setup_cpu_be,
293 .platform = "ppc-cell-be", 282 .platform = "ppc-cell-be",
294 }, 283 },
295 { /* default match */ 284 { /* default match */
@@ -301,7 +290,6 @@ struct cpu_spec cpu_specs[] = {
301 .icache_bsize = 128, 290 .icache_bsize = 128,
302 .dcache_bsize = 128, 291 .dcache_bsize = 128,
303 .num_pmcs = 6, 292 .num_pmcs = 6,
304 .cpu_setup = __setup_cpu_power4,
305 .platform = "power4", 293 .platform = "power4",
306 } 294 }
307#endif /* CONFIG_PPC64 */ 295#endif /* CONFIG_PPC64 */
@@ -323,7 +311,7 @@ struct cpu_spec cpu_specs[] = {
323 .pvr_value = 0x00030000, 311 .pvr_value = 0x00030000,
324 .cpu_name = "603", 312 .cpu_name = "603",
325 .cpu_features = CPU_FTRS_603, 313 .cpu_features = CPU_FTRS_603,
326 .cpu_user_features = COMMON_USER, 314 .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE,
327 .icache_bsize = 32, 315 .icache_bsize = 32,
328 .dcache_bsize = 32, 316 .dcache_bsize = 32,
329 .cpu_setup = __setup_cpu_603, 317 .cpu_setup = __setup_cpu_603,
@@ -334,7 +322,7 @@ struct cpu_spec cpu_specs[] = {
334 .pvr_value = 0x00060000, 322 .pvr_value = 0x00060000,
335 .cpu_name = "603e", 323 .cpu_name = "603e",
336 .cpu_features = CPU_FTRS_603, 324 .cpu_features = CPU_FTRS_603,
337 .cpu_user_features = COMMON_USER, 325 .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE,
338 .icache_bsize = 32, 326 .icache_bsize = 32,
339 .dcache_bsize = 32, 327 .dcache_bsize = 32,
340 .cpu_setup = __setup_cpu_603, 328 .cpu_setup = __setup_cpu_603,
@@ -345,7 +333,7 @@ struct cpu_spec cpu_specs[] = {
345 .pvr_value = 0x00070000, 333 .pvr_value = 0x00070000,
346 .cpu_name = "603ev", 334 .cpu_name = "603ev",
347 .cpu_features = CPU_FTRS_603, 335 .cpu_features = CPU_FTRS_603,
348 .cpu_user_features = COMMON_USER, 336 .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE,
349 .icache_bsize = 32, 337 .icache_bsize = 32,
350 .dcache_bsize = 32, 338 .dcache_bsize = 32,
351 .cpu_setup = __setup_cpu_603, 339 .cpu_setup = __setup_cpu_603,
@@ -356,7 +344,7 @@ struct cpu_spec cpu_specs[] = {
356 .pvr_value = 0x00040000, 344 .pvr_value = 0x00040000,
357 .cpu_name = "604", 345 .cpu_name = "604",
358 .cpu_features = CPU_FTRS_604, 346 .cpu_features = CPU_FTRS_604,
359 .cpu_user_features = COMMON_USER, 347 .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE,
360 .icache_bsize = 32, 348 .icache_bsize = 32,
361 .dcache_bsize = 32, 349 .dcache_bsize = 32,
362 .num_pmcs = 2, 350 .num_pmcs = 2,
@@ -368,7 +356,7 @@ struct cpu_spec cpu_specs[] = {
368 .pvr_value = 0x00090000, 356 .pvr_value = 0x00090000,
369 .cpu_name = "604e", 357 .cpu_name = "604e",
370 .cpu_features = CPU_FTRS_604, 358 .cpu_features = CPU_FTRS_604,
371 .cpu_user_features = COMMON_USER, 359 .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE,
372 .icache_bsize = 32, 360 .icache_bsize = 32,
373 .dcache_bsize = 32, 361 .dcache_bsize = 32,
374 .num_pmcs = 4, 362 .num_pmcs = 4,
@@ -380,7 +368,7 @@ struct cpu_spec cpu_specs[] = {
380 .pvr_value = 0x00090000, 368 .pvr_value = 0x00090000,
381 .cpu_name = "604r", 369 .cpu_name = "604r",
382 .cpu_features = CPU_FTRS_604, 370 .cpu_features = CPU_FTRS_604,
383 .cpu_user_features = COMMON_USER, 371 .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE,
384 .icache_bsize = 32, 372 .icache_bsize = 32,
385 .dcache_bsize = 32, 373 .dcache_bsize = 32,
386 .num_pmcs = 4, 374 .num_pmcs = 4,
@@ -392,7 +380,7 @@ struct cpu_spec cpu_specs[] = {
392 .pvr_value = 0x000a0000, 380 .pvr_value = 0x000a0000,
393 .cpu_name = "604ev", 381 .cpu_name = "604ev",
394 .cpu_features = CPU_FTRS_604, 382 .cpu_features = CPU_FTRS_604,
395 .cpu_user_features = COMMON_USER, 383 .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE,
396 .icache_bsize = 32, 384 .icache_bsize = 32,
397 .dcache_bsize = 32, 385 .dcache_bsize = 32,
398 .num_pmcs = 4, 386 .num_pmcs = 4,
@@ -404,7 +392,7 @@ struct cpu_spec cpu_specs[] = {
404 .pvr_value = 0x00084202, 392 .pvr_value = 0x00084202,
405 .cpu_name = "740/750", 393 .cpu_name = "740/750",
406 .cpu_features = CPU_FTRS_740_NOTAU, 394 .cpu_features = CPU_FTRS_740_NOTAU,
407 .cpu_user_features = COMMON_USER, 395 .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE,
408 .icache_bsize = 32, 396 .icache_bsize = 32,
409 .dcache_bsize = 32, 397 .dcache_bsize = 32,
410 .num_pmcs = 4, 398 .num_pmcs = 4,
@@ -416,7 +404,7 @@ struct cpu_spec cpu_specs[] = {
416 .pvr_value = 0x00080100, 404 .pvr_value = 0x00080100,
417 .cpu_name = "750CX", 405 .cpu_name = "750CX",
418 .cpu_features = CPU_FTRS_750, 406 .cpu_features = CPU_FTRS_750,
419 .cpu_user_features = COMMON_USER, 407 .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE,
420 .icache_bsize = 32, 408 .icache_bsize = 32,
421 .dcache_bsize = 32, 409 .dcache_bsize = 32,
422 .num_pmcs = 4, 410 .num_pmcs = 4,
@@ -428,7 +416,7 @@ struct cpu_spec cpu_specs[] = {
428 .pvr_value = 0x00082200, 416 .pvr_value = 0x00082200,
429 .cpu_name = "750CX", 417 .cpu_name = "750CX",
430 .cpu_features = CPU_FTRS_750, 418 .cpu_features = CPU_FTRS_750,
431 .cpu_user_features = COMMON_USER, 419 .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE,
432 .icache_bsize = 32, 420 .icache_bsize = 32,
433 .dcache_bsize = 32, 421 .dcache_bsize = 32,
434 .num_pmcs = 4, 422 .num_pmcs = 4,
@@ -440,7 +428,7 @@ struct cpu_spec cpu_specs[] = {
440 .pvr_value = 0x00082210, 428 .pvr_value = 0x00082210,
441 .cpu_name = "750CXe", 429 .cpu_name = "750CXe",
442 .cpu_features = CPU_FTRS_750, 430 .cpu_features = CPU_FTRS_750,
443 .cpu_user_features = COMMON_USER, 431 .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE,
444 .icache_bsize = 32, 432 .icache_bsize = 32,
445 .dcache_bsize = 32, 433 .dcache_bsize = 32,
446 .num_pmcs = 4, 434 .num_pmcs = 4,
@@ -452,7 +440,7 @@ struct cpu_spec cpu_specs[] = {
452 .pvr_value = 0x00083214, 440 .pvr_value = 0x00083214,
453 .cpu_name = "750CXe", 441 .cpu_name = "750CXe",
454 .cpu_features = CPU_FTRS_750, 442 .cpu_features = CPU_FTRS_750,
455 .cpu_user_features = COMMON_USER, 443 .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE,
456 .icache_bsize = 32, 444 .icache_bsize = 32,
457 .dcache_bsize = 32, 445 .dcache_bsize = 32,
458 .num_pmcs = 4, 446 .num_pmcs = 4,
@@ -464,7 +452,7 @@ struct cpu_spec cpu_specs[] = {
464 .pvr_value = 0x00083000, 452 .pvr_value = 0x00083000,
465 .cpu_name = "745/755", 453 .cpu_name = "745/755",
466 .cpu_features = CPU_FTRS_750, 454 .cpu_features = CPU_FTRS_750,
467 .cpu_user_features = COMMON_USER, 455 .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE,
468 .icache_bsize = 32, 456 .icache_bsize = 32,
469 .dcache_bsize = 32, 457 .dcache_bsize = 32,
470 .num_pmcs = 4, 458 .num_pmcs = 4,
@@ -476,7 +464,7 @@ struct cpu_spec cpu_specs[] = {
476 .pvr_value = 0x70000100, 464 .pvr_value = 0x70000100,
477 .cpu_name = "750FX", 465 .cpu_name = "750FX",
478 .cpu_features = CPU_FTRS_750FX1, 466 .cpu_features = CPU_FTRS_750FX1,
479 .cpu_user_features = COMMON_USER, 467 .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE,
480 .icache_bsize = 32, 468 .icache_bsize = 32,
481 .dcache_bsize = 32, 469 .dcache_bsize = 32,
482 .num_pmcs = 4, 470 .num_pmcs = 4,
@@ -488,7 +476,7 @@ struct cpu_spec cpu_specs[] = {
488 .pvr_value = 0x70000200, 476 .pvr_value = 0x70000200,
489 .cpu_name = "750FX", 477 .cpu_name = "750FX",
490 .cpu_features = CPU_FTRS_750FX2, 478 .cpu_features = CPU_FTRS_750FX2,
491 .cpu_user_features = COMMON_USER, 479 .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE,
492 .icache_bsize = 32, 480 .icache_bsize = 32,
493 .dcache_bsize = 32, 481 .dcache_bsize = 32,
494 .num_pmcs = 4, 482 .num_pmcs = 4,
@@ -500,7 +488,7 @@ struct cpu_spec cpu_specs[] = {
500 .pvr_value = 0x70000000, 488 .pvr_value = 0x70000000,
501 .cpu_name = "750FX", 489 .cpu_name = "750FX",
502 .cpu_features = CPU_FTRS_750FX, 490 .cpu_features = CPU_FTRS_750FX,
503 .cpu_user_features = COMMON_USER, 491 .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE,
504 .icache_bsize = 32, 492 .icache_bsize = 32,
505 .dcache_bsize = 32, 493 .dcache_bsize = 32,
506 .num_pmcs = 4, 494 .num_pmcs = 4,
@@ -512,7 +500,7 @@ struct cpu_spec cpu_specs[] = {
512 .pvr_value = 0x70020000, 500 .pvr_value = 0x70020000,
513 .cpu_name = "750GX", 501 .cpu_name = "750GX",
514 .cpu_features = CPU_FTRS_750GX, 502 .cpu_features = CPU_FTRS_750GX,
515 .cpu_user_features = COMMON_USER, 503 .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE,
516 .icache_bsize = 32, 504 .icache_bsize = 32,
517 .dcache_bsize = 32, 505 .dcache_bsize = 32,
518 .num_pmcs = 4, 506 .num_pmcs = 4,
@@ -524,7 +512,7 @@ struct cpu_spec cpu_specs[] = {
524 .pvr_value = 0x00080000, 512 .pvr_value = 0x00080000,
525 .cpu_name = "740/750", 513 .cpu_name = "740/750",
526 .cpu_features = CPU_FTRS_740, 514 .cpu_features = CPU_FTRS_740,
527 .cpu_user_features = COMMON_USER, 515 .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE,
528 .icache_bsize = 32, 516 .icache_bsize = 32,
529 .dcache_bsize = 32, 517 .dcache_bsize = 32,
530 .num_pmcs = 4, 518 .num_pmcs = 4,
@@ -536,7 +524,8 @@ struct cpu_spec cpu_specs[] = {
536 .pvr_value = 0x000c1101, 524 .pvr_value = 0x000c1101,
537 .cpu_name = "7400 (1.1)", 525 .cpu_name = "7400 (1.1)",
538 .cpu_features = CPU_FTRS_7400_NOTAU, 526 .cpu_features = CPU_FTRS_7400_NOTAU,
539 .cpu_user_features = COMMON_USER | PPC_FEATURE_HAS_ALTIVEC_COMP, 527 .cpu_user_features = COMMON_USER |
528 PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_PPC_LE,
540 .icache_bsize = 32, 529 .icache_bsize = 32,
541 .dcache_bsize = 32, 530 .dcache_bsize = 32,
542 .num_pmcs = 4, 531 .num_pmcs = 4,
@@ -548,7 +537,8 @@ struct cpu_spec cpu_specs[] = {
548 .pvr_value = 0x000c0000, 537 .pvr_value = 0x000c0000,
549 .cpu_name = "7400", 538 .cpu_name = "7400",
550 .cpu_features = CPU_FTRS_7400, 539 .cpu_features = CPU_FTRS_7400,
551 .cpu_user_features = COMMON_USER | PPC_FEATURE_HAS_ALTIVEC_COMP, 540 .cpu_user_features = COMMON_USER |
541 PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_PPC_LE,
552 .icache_bsize = 32, 542 .icache_bsize = 32,
553 .dcache_bsize = 32, 543 .dcache_bsize = 32,
554 .num_pmcs = 4, 544 .num_pmcs = 4,
@@ -560,7 +550,8 @@ struct cpu_spec cpu_specs[] = {
560 .pvr_value = 0x800c0000, 550 .pvr_value = 0x800c0000,
561 .cpu_name = "7410", 551 .cpu_name = "7410",
562 .cpu_features = CPU_FTRS_7400, 552 .cpu_features = CPU_FTRS_7400,
563 .cpu_user_features = COMMON_USER | PPC_FEATURE_HAS_ALTIVEC_COMP, 553 .cpu_user_features = COMMON_USER |
554 PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_PPC_LE,
564 .icache_bsize = 32, 555 .icache_bsize = 32,
565 .dcache_bsize = 32, 556 .dcache_bsize = 32,
566 .num_pmcs = 4, 557 .num_pmcs = 4,
@@ -572,7 +563,8 @@ struct cpu_spec cpu_specs[] = {
572 .pvr_value = 0x80000200, 563 .pvr_value = 0x80000200,
573 .cpu_name = "7450", 564 .cpu_name = "7450",
574 .cpu_features = CPU_FTRS_7450_20, 565 .cpu_features = CPU_FTRS_7450_20,
575 .cpu_user_features = COMMON_USER | PPC_FEATURE_HAS_ALTIVEC_COMP, 566 .cpu_user_features = COMMON_USER |
567 PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_PPC_LE,
576 .icache_bsize = 32, 568 .icache_bsize = 32,
577 .dcache_bsize = 32, 569 .dcache_bsize = 32,
578 .num_pmcs = 6, 570 .num_pmcs = 6,
@@ -586,7 +578,8 @@ struct cpu_spec cpu_specs[] = {
586 .pvr_value = 0x80000201, 578 .pvr_value = 0x80000201,
587 .cpu_name = "7450", 579 .cpu_name = "7450",
588 .cpu_features = CPU_FTRS_7450_21, 580 .cpu_features = CPU_FTRS_7450_21,
589 .cpu_user_features = COMMON_USER | PPC_FEATURE_HAS_ALTIVEC_COMP, 581 .cpu_user_features = COMMON_USER |
582 PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_PPC_LE,
590 .icache_bsize = 32, 583 .icache_bsize = 32,
591 .dcache_bsize = 32, 584 .dcache_bsize = 32,
592 .num_pmcs = 6, 585 .num_pmcs = 6,
@@ -600,7 +593,8 @@ struct cpu_spec cpu_specs[] = {
600 .pvr_value = 0x80000000, 593 .pvr_value = 0x80000000,
601 .cpu_name = "7450", 594 .cpu_name = "7450",
602 .cpu_features = CPU_FTRS_7450_23, 595 .cpu_features = CPU_FTRS_7450_23,
603 .cpu_user_features = COMMON_USER | PPC_FEATURE_HAS_ALTIVEC_COMP, 596 .cpu_user_features = COMMON_USER |
597 PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_PPC_LE,
604 .icache_bsize = 32, 598 .icache_bsize = 32,
605 .dcache_bsize = 32, 599 .dcache_bsize = 32,
606 .num_pmcs = 6, 600 .num_pmcs = 6,
@@ -614,7 +608,8 @@ struct cpu_spec cpu_specs[] = {
614 .pvr_value = 0x80010100, 608 .pvr_value = 0x80010100,
615 .cpu_name = "7455", 609 .cpu_name = "7455",
616 .cpu_features = CPU_FTRS_7455_1, 610 .cpu_features = CPU_FTRS_7455_1,
617 .cpu_user_features = COMMON_USER | PPC_FEATURE_HAS_ALTIVEC_COMP, 611 .cpu_user_features = COMMON_USER |
612 PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_PPC_LE,
618 .icache_bsize = 32, 613 .icache_bsize = 32,
619 .dcache_bsize = 32, 614 .dcache_bsize = 32,
620 .num_pmcs = 6, 615 .num_pmcs = 6,
@@ -628,7 +623,8 @@ struct cpu_spec cpu_specs[] = {
628 .pvr_value = 0x80010200, 623 .pvr_value = 0x80010200,
629 .cpu_name = "7455", 624 .cpu_name = "7455",
630 .cpu_features = CPU_FTRS_7455_20, 625 .cpu_features = CPU_FTRS_7455_20,
631 .cpu_user_features = COMMON_USER | PPC_FEATURE_HAS_ALTIVEC_COMP, 626 .cpu_user_features = COMMON_USER |
627 PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_PPC_LE,
632 .icache_bsize = 32, 628 .icache_bsize = 32,
633 .dcache_bsize = 32, 629 .dcache_bsize = 32,
634 .num_pmcs = 6, 630 .num_pmcs = 6,
@@ -642,7 +638,8 @@ struct cpu_spec cpu_specs[] = {
642 .pvr_value = 0x80010000, 638 .pvr_value = 0x80010000,
643 .cpu_name = "7455", 639 .cpu_name = "7455",
644 .cpu_features = CPU_FTRS_7455, 640 .cpu_features = CPU_FTRS_7455,
645 .cpu_user_features = COMMON_USER | PPC_FEATURE_HAS_ALTIVEC_COMP, 641 .cpu_user_features = COMMON_USER |
642 PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_PPC_LE,
646 .icache_bsize = 32, 643 .icache_bsize = 32,
647 .dcache_bsize = 32, 644 .dcache_bsize = 32,
648 .num_pmcs = 6, 645 .num_pmcs = 6,
@@ -656,7 +653,8 @@ struct cpu_spec cpu_specs[] = {
656 .pvr_value = 0x80020100, 653 .pvr_value = 0x80020100,
657 .cpu_name = "7447/7457", 654 .cpu_name = "7447/7457",
658 .cpu_features = CPU_FTRS_7447_10, 655 .cpu_features = CPU_FTRS_7447_10,
659 .cpu_user_features = COMMON_USER | PPC_FEATURE_HAS_ALTIVEC_COMP, 656 .cpu_user_features = COMMON_USER |
657 PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_PPC_LE,
660 .icache_bsize = 32, 658 .icache_bsize = 32,
661 .dcache_bsize = 32, 659 .dcache_bsize = 32,
662 .num_pmcs = 6, 660 .num_pmcs = 6,
@@ -670,7 +668,8 @@ struct cpu_spec cpu_specs[] = {
670 .pvr_value = 0x80020101, 668 .pvr_value = 0x80020101,
671 .cpu_name = "7447/7457", 669 .cpu_name = "7447/7457",
672 .cpu_features = CPU_FTRS_7447_10, 670 .cpu_features = CPU_FTRS_7447_10,
673 .cpu_user_features = COMMON_USER | PPC_FEATURE_HAS_ALTIVEC_COMP, 671 .cpu_user_features = COMMON_USER |
672 PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_PPC_LE,
674 .icache_bsize = 32, 673 .icache_bsize = 32,
675 .dcache_bsize = 32, 674 .dcache_bsize = 32,
676 .num_pmcs = 6, 675 .num_pmcs = 6,
@@ -684,7 +683,7 @@ struct cpu_spec cpu_specs[] = {
684 .pvr_value = 0x80020000, 683 .pvr_value = 0x80020000,
685 .cpu_name = "7447/7457", 684 .cpu_name = "7447/7457",
686 .cpu_features = CPU_FTRS_7447, 685 .cpu_features = CPU_FTRS_7447,
687 .cpu_user_features = COMMON_USER | PPC_FEATURE_HAS_ALTIVEC_COMP, 686 .cpu_user_features = COMMON_USER | PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_PPC_LE,
688 .icache_bsize = 32, 687 .icache_bsize = 32,
689 .dcache_bsize = 32, 688 .dcache_bsize = 32,
690 .num_pmcs = 6, 689 .num_pmcs = 6,
@@ -698,7 +697,8 @@ struct cpu_spec cpu_specs[] = {
698 .pvr_value = 0x80030000, 697 .pvr_value = 0x80030000,
699 .cpu_name = "7447A", 698 .cpu_name = "7447A",
700 .cpu_features = CPU_FTRS_7447A, 699 .cpu_features = CPU_FTRS_7447A,
701 .cpu_user_features = COMMON_USER | PPC_FEATURE_HAS_ALTIVEC_COMP, 700 .cpu_user_features = COMMON_USER |
701 PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_PPC_LE,
702 .icache_bsize = 32, 702 .icache_bsize = 32,
703 .dcache_bsize = 32, 703 .dcache_bsize = 32,
704 .num_pmcs = 6, 704 .num_pmcs = 6,
@@ -712,7 +712,8 @@ struct cpu_spec cpu_specs[] = {
712 .pvr_value = 0x80040000, 712 .pvr_value = 0x80040000,
713 .cpu_name = "7448", 713 .cpu_name = "7448",
714 .cpu_features = CPU_FTRS_7447A, 714 .cpu_features = CPU_FTRS_7447A,
715 .cpu_user_features = COMMON_USER | PPC_FEATURE_HAS_ALTIVEC_COMP, 715 .cpu_user_features = COMMON_USER |
716 PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_PPC_LE,
716 .icache_bsize = 32, 717 .icache_bsize = 32,
717 .dcache_bsize = 32, 718 .dcache_bsize = 32,
718 .num_pmcs = 6, 719 .num_pmcs = 6,
@@ -721,6 +722,18 @@ struct cpu_spec cpu_specs[] = {
721 .oprofile_type = PPC_OPROFILE_G4, 722 .oprofile_type = PPC_OPROFILE_G4,
722 .platform = "ppc7450", 723 .platform = "ppc7450",
723 }, 724 },
725 { /* 8641 */
726 .pvr_mask = 0xffffffff,
727 .pvr_value = 0x80040010,
728 .cpu_name = "8641",
729 .cpu_features = CPU_FTRS_7447A,
730 .cpu_user_features = COMMON_USER | PPC_FEATURE_HAS_ALTIVEC_COMP,
731 .icache_bsize = 32,
732 .dcache_bsize = 32,
733 .num_pmcs = 6,
734 .cpu_setup = __setup_cpu_745x
735 },
736
724 { /* 82xx (8240, 8245, 8260 are all 603e cores) */ 737 { /* 82xx (8240, 8245, 8260 are all 603e cores) */
725 .pvr_mask = 0x7fff0000, 738 .pvr_mask = 0x7fff0000,
726 .pvr_value = 0x00810000, 739 .pvr_value = 0x00810000,