diff options
Diffstat (limited to 'arch/powerpc/kernel/cputable.c')
-rw-r--r-- | arch/powerpc/kernel/cputable.c | 149 |
1 files changed, 146 insertions, 3 deletions
diff --git a/arch/powerpc/kernel/cputable.c b/arch/powerpc/kernel/cputable.c index 9ed351f3c966..a4c2771b5e62 100644 --- a/arch/powerpc/kernel/cputable.c +++ b/arch/powerpc/kernel/cputable.c | |||
@@ -33,7 +33,9 @@ EXPORT_SYMBOL(cur_cpu_spec); | |||
33 | #ifdef CONFIG_PPC32 | 33 | #ifdef CONFIG_PPC32 |
34 | extern void __setup_cpu_440ep(unsigned long offset, struct cpu_spec* spec); | 34 | extern void __setup_cpu_440ep(unsigned long offset, struct cpu_spec* spec); |
35 | extern void __setup_cpu_440epx(unsigned long offset, struct cpu_spec* spec); | 35 | extern void __setup_cpu_440epx(unsigned long offset, struct cpu_spec* spec); |
36 | extern void __setup_cpu_440gx(unsigned long offset, struct cpu_spec* spec); | ||
36 | extern void __setup_cpu_440grx(unsigned long offset, struct cpu_spec* spec); | 37 | extern void __setup_cpu_440grx(unsigned long offset, struct cpu_spec* spec); |
38 | extern void __setup_cpu_440spe(unsigned long offset, struct cpu_spec* spec); | ||
37 | extern void __setup_cpu_603(unsigned long offset, struct cpu_spec* spec); | 39 | extern void __setup_cpu_603(unsigned long offset, struct cpu_spec* spec); |
38 | extern void __setup_cpu_604(unsigned long offset, struct cpu_spec* spec); | 40 | extern void __setup_cpu_604(unsigned long offset, struct cpu_spec* spec); |
39 | extern void __setup_cpu_750(unsigned long offset, struct cpu_spec* spec); | 41 | extern void __setup_cpu_750(unsigned long offset, struct cpu_spec* spec); |
@@ -85,6 +87,7 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
85 | .pmc_type = PPC_PMC_IBM, | 87 | .pmc_type = PPC_PMC_IBM, |
86 | .oprofile_cpu_type = "ppc64/power3", | 88 | .oprofile_cpu_type = "ppc64/power3", |
87 | .oprofile_type = PPC_OPROFILE_RS64, | 89 | .oprofile_type = PPC_OPROFILE_RS64, |
90 | .machine_check = machine_check_generic, | ||
88 | .platform = "power3", | 91 | .platform = "power3", |
89 | }, | 92 | }, |
90 | { /* Power3+ */ | 93 | { /* Power3+ */ |
@@ -99,6 +102,7 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
99 | .pmc_type = PPC_PMC_IBM, | 102 | .pmc_type = PPC_PMC_IBM, |
100 | .oprofile_cpu_type = "ppc64/power3", | 103 | .oprofile_cpu_type = "ppc64/power3", |
101 | .oprofile_type = PPC_OPROFILE_RS64, | 104 | .oprofile_type = PPC_OPROFILE_RS64, |
105 | .machine_check = machine_check_generic, | ||
102 | .platform = "power3", | 106 | .platform = "power3", |
103 | }, | 107 | }, |
104 | { /* Northstar */ | 108 | { /* Northstar */ |
@@ -113,6 +117,7 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
113 | .pmc_type = PPC_PMC_IBM, | 117 | .pmc_type = PPC_PMC_IBM, |
114 | .oprofile_cpu_type = "ppc64/rs64", | 118 | .oprofile_cpu_type = "ppc64/rs64", |
115 | .oprofile_type = PPC_OPROFILE_RS64, | 119 | .oprofile_type = PPC_OPROFILE_RS64, |
120 | .machine_check = machine_check_generic, | ||
116 | .platform = "rs64", | 121 | .platform = "rs64", |
117 | }, | 122 | }, |
118 | { /* Pulsar */ | 123 | { /* Pulsar */ |
@@ -127,6 +132,7 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
127 | .pmc_type = PPC_PMC_IBM, | 132 | .pmc_type = PPC_PMC_IBM, |
128 | .oprofile_cpu_type = "ppc64/rs64", | 133 | .oprofile_cpu_type = "ppc64/rs64", |
129 | .oprofile_type = PPC_OPROFILE_RS64, | 134 | .oprofile_type = PPC_OPROFILE_RS64, |
135 | .machine_check = machine_check_generic, | ||
130 | .platform = "rs64", | 136 | .platform = "rs64", |
131 | }, | 137 | }, |
132 | { /* I-star */ | 138 | { /* I-star */ |
@@ -141,6 +147,7 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
141 | .pmc_type = PPC_PMC_IBM, | 147 | .pmc_type = PPC_PMC_IBM, |
142 | .oprofile_cpu_type = "ppc64/rs64", | 148 | .oprofile_cpu_type = "ppc64/rs64", |
143 | .oprofile_type = PPC_OPROFILE_RS64, | 149 | .oprofile_type = PPC_OPROFILE_RS64, |
150 | .machine_check = machine_check_generic, | ||
144 | .platform = "rs64", | 151 | .platform = "rs64", |
145 | }, | 152 | }, |
146 | { /* S-star */ | 153 | { /* S-star */ |
@@ -155,6 +162,7 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
155 | .pmc_type = PPC_PMC_IBM, | 162 | .pmc_type = PPC_PMC_IBM, |
156 | .oprofile_cpu_type = "ppc64/rs64", | 163 | .oprofile_cpu_type = "ppc64/rs64", |
157 | .oprofile_type = PPC_OPROFILE_RS64, | 164 | .oprofile_type = PPC_OPROFILE_RS64, |
165 | .machine_check = machine_check_generic, | ||
158 | .platform = "rs64", | 166 | .platform = "rs64", |
159 | }, | 167 | }, |
160 | { /* Power4 */ | 168 | { /* Power4 */ |
@@ -169,6 +177,7 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
169 | .pmc_type = PPC_PMC_IBM, | 177 | .pmc_type = PPC_PMC_IBM, |
170 | .oprofile_cpu_type = "ppc64/power4", | 178 | .oprofile_cpu_type = "ppc64/power4", |
171 | .oprofile_type = PPC_OPROFILE_POWER4, | 179 | .oprofile_type = PPC_OPROFILE_POWER4, |
180 | .machine_check = machine_check_generic, | ||
172 | .platform = "power4", | 181 | .platform = "power4", |
173 | }, | 182 | }, |
174 | { /* Power4+ */ | 183 | { /* Power4+ */ |
@@ -183,6 +192,7 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
183 | .pmc_type = PPC_PMC_IBM, | 192 | .pmc_type = PPC_PMC_IBM, |
184 | .oprofile_cpu_type = "ppc64/power4", | 193 | .oprofile_cpu_type = "ppc64/power4", |
185 | .oprofile_type = PPC_OPROFILE_POWER4, | 194 | .oprofile_type = PPC_OPROFILE_POWER4, |
195 | .machine_check = machine_check_generic, | ||
186 | .platform = "power4", | 196 | .platform = "power4", |
187 | }, | 197 | }, |
188 | { /* PPC970 */ | 198 | { /* PPC970 */ |
@@ -200,6 +210,7 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
200 | .cpu_restore = __restore_cpu_ppc970, | 210 | .cpu_restore = __restore_cpu_ppc970, |
201 | .oprofile_cpu_type = "ppc64/970", | 211 | .oprofile_cpu_type = "ppc64/970", |
202 | .oprofile_type = PPC_OPROFILE_POWER4, | 212 | .oprofile_type = PPC_OPROFILE_POWER4, |
213 | .machine_check = machine_check_generic, | ||
203 | .platform = "ppc970", | 214 | .platform = "ppc970", |
204 | }, | 215 | }, |
205 | { /* PPC970FX */ | 216 | { /* PPC970FX */ |
@@ -217,6 +228,7 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
217 | .cpu_restore = __restore_cpu_ppc970, | 228 | .cpu_restore = __restore_cpu_ppc970, |
218 | .oprofile_cpu_type = "ppc64/970", | 229 | .oprofile_cpu_type = "ppc64/970", |
219 | .oprofile_type = PPC_OPROFILE_POWER4, | 230 | .oprofile_type = PPC_OPROFILE_POWER4, |
231 | .machine_check = machine_check_generic, | ||
220 | .platform = "ppc970", | 232 | .platform = "ppc970", |
221 | }, | 233 | }, |
222 | { /* PPC970MP DD1.0 - no DEEPNAP, use regular 970 init */ | 234 | { /* PPC970MP DD1.0 - no DEEPNAP, use regular 970 init */ |
@@ -234,6 +246,7 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
234 | .cpu_restore = __restore_cpu_ppc970, | 246 | .cpu_restore = __restore_cpu_ppc970, |
235 | .oprofile_cpu_type = "ppc64/970MP", | 247 | .oprofile_cpu_type = "ppc64/970MP", |
236 | .oprofile_type = PPC_OPROFILE_POWER4, | 248 | .oprofile_type = PPC_OPROFILE_POWER4, |
249 | .machine_check = machine_check_generic, | ||
237 | .platform = "ppc970", | 250 | .platform = "ppc970", |
238 | }, | 251 | }, |
239 | { /* PPC970MP */ | 252 | { /* PPC970MP */ |
@@ -251,6 +264,7 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
251 | .cpu_restore = __restore_cpu_ppc970, | 264 | .cpu_restore = __restore_cpu_ppc970, |
252 | .oprofile_cpu_type = "ppc64/970MP", | 265 | .oprofile_cpu_type = "ppc64/970MP", |
253 | .oprofile_type = PPC_OPROFILE_POWER4, | 266 | .oprofile_type = PPC_OPROFILE_POWER4, |
267 | .machine_check = machine_check_generic, | ||
254 | .platform = "ppc970", | 268 | .platform = "ppc970", |
255 | }, | 269 | }, |
256 | { /* PPC970GX */ | 270 | { /* PPC970GX */ |
@@ -267,6 +281,7 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
267 | .cpu_setup = __setup_cpu_ppc970, | 281 | .cpu_setup = __setup_cpu_ppc970, |
268 | .oprofile_cpu_type = "ppc64/970", | 282 | .oprofile_cpu_type = "ppc64/970", |
269 | .oprofile_type = PPC_OPROFILE_POWER4, | 283 | .oprofile_type = PPC_OPROFILE_POWER4, |
284 | .machine_check = machine_check_generic, | ||
270 | .platform = "ppc970", | 285 | .platform = "ppc970", |
271 | }, | 286 | }, |
272 | { /* Power5 GR */ | 287 | { /* Power5 GR */ |
@@ -286,6 +301,7 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
286 | */ | 301 | */ |
287 | .oprofile_mmcra_sihv = MMCRA_SIHV, | 302 | .oprofile_mmcra_sihv = MMCRA_SIHV, |
288 | .oprofile_mmcra_sipr = MMCRA_SIPR, | 303 | .oprofile_mmcra_sipr = MMCRA_SIPR, |
304 | .machine_check = machine_check_generic, | ||
289 | .platform = "power5", | 305 | .platform = "power5", |
290 | }, | 306 | }, |
291 | { /* Power5++ */ | 307 | { /* Power5++ */ |
@@ -301,6 +317,7 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
301 | .oprofile_type = PPC_OPROFILE_POWER4, | 317 | .oprofile_type = PPC_OPROFILE_POWER4, |
302 | .oprofile_mmcra_sihv = MMCRA_SIHV, | 318 | .oprofile_mmcra_sihv = MMCRA_SIHV, |
303 | .oprofile_mmcra_sipr = MMCRA_SIPR, | 319 | .oprofile_mmcra_sipr = MMCRA_SIPR, |
320 | .machine_check = machine_check_generic, | ||
304 | .platform = "power5+", | 321 | .platform = "power5+", |
305 | }, | 322 | }, |
306 | { /* Power5 GS */ | 323 | { /* Power5 GS */ |
@@ -317,6 +334,7 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
317 | .oprofile_type = PPC_OPROFILE_POWER4, | 334 | .oprofile_type = PPC_OPROFILE_POWER4, |
318 | .oprofile_mmcra_sihv = MMCRA_SIHV, | 335 | .oprofile_mmcra_sihv = MMCRA_SIHV, |
319 | .oprofile_mmcra_sipr = MMCRA_SIPR, | 336 | .oprofile_mmcra_sipr = MMCRA_SIPR, |
337 | .machine_check = machine_check_generic, | ||
320 | .platform = "power5+", | 338 | .platform = "power5+", |
321 | }, | 339 | }, |
322 | { /* POWER6 in P5+ mode; 2.04-compliant processor */ | 340 | { /* POWER6 in P5+ mode; 2.04-compliant processor */ |
@@ -327,6 +345,7 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
327 | .cpu_user_features = COMMON_USER_POWER5_PLUS, | 345 | .cpu_user_features = COMMON_USER_POWER5_PLUS, |
328 | .icache_bsize = 128, | 346 | .icache_bsize = 128, |
329 | .dcache_bsize = 128, | 347 | .dcache_bsize = 128, |
348 | .machine_check = machine_check_generic, | ||
330 | .platform = "power5+", | 349 | .platform = "power5+", |
331 | }, | 350 | }, |
332 | { /* Power6 */ | 351 | { /* Power6 */ |
@@ -346,6 +365,7 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
346 | .oprofile_mmcra_sipr = POWER6_MMCRA_SIPR, | 365 | .oprofile_mmcra_sipr = POWER6_MMCRA_SIPR, |
347 | .oprofile_mmcra_clear = POWER6_MMCRA_THRM | | 366 | .oprofile_mmcra_clear = POWER6_MMCRA_THRM | |
348 | POWER6_MMCRA_OTHER, | 367 | POWER6_MMCRA_OTHER, |
368 | .machine_check = machine_check_generic, | ||
349 | .platform = "power6x", | 369 | .platform = "power6x", |
350 | }, | 370 | }, |
351 | { /* 2.05-compliant processor, i.e. Power6 "architected" mode */ | 371 | { /* 2.05-compliant processor, i.e. Power6 "architected" mode */ |
@@ -356,6 +376,7 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
356 | .cpu_user_features = COMMON_USER_POWER6, | 376 | .cpu_user_features = COMMON_USER_POWER6, |
357 | .icache_bsize = 128, | 377 | .icache_bsize = 128, |
358 | .dcache_bsize = 128, | 378 | .dcache_bsize = 128, |
379 | .machine_check = machine_check_generic, | ||
359 | .platform = "power6", | 380 | .platform = "power6", |
360 | }, | 381 | }, |
361 | { /* Cell Broadband Engine */ | 382 | { /* Cell Broadband Engine */ |
@@ -372,6 +393,7 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
372 | .pmc_type = PPC_PMC_IBM, | 393 | .pmc_type = PPC_PMC_IBM, |
373 | .oprofile_cpu_type = "ppc64/cell-be", | 394 | .oprofile_cpu_type = "ppc64/cell-be", |
374 | .oprofile_type = PPC_OPROFILE_CELL, | 395 | .oprofile_type = PPC_OPROFILE_CELL, |
396 | .machine_check = machine_check_generic, | ||
375 | .platform = "ppc-cell-be", | 397 | .platform = "ppc-cell-be", |
376 | }, | 398 | }, |
377 | { /* PA Semi PA6T */ | 399 | { /* PA Semi PA6T */ |
@@ -388,6 +410,7 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
388 | .cpu_restore = __restore_cpu_pa6t, | 410 | .cpu_restore = __restore_cpu_pa6t, |
389 | .oprofile_cpu_type = "ppc64/pa6t", | 411 | .oprofile_cpu_type = "ppc64/pa6t", |
390 | .oprofile_type = PPC_OPROFILE_PA6T, | 412 | .oprofile_type = PPC_OPROFILE_PA6T, |
413 | .machine_check = machine_check_generic, | ||
391 | .platform = "pa6t", | 414 | .platform = "pa6t", |
392 | }, | 415 | }, |
393 | { /* default match */ | 416 | { /* default match */ |
@@ -400,6 +423,7 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
400 | .dcache_bsize = 128, | 423 | .dcache_bsize = 128, |
401 | .num_pmcs = 6, | 424 | .num_pmcs = 6, |
402 | .pmc_type = PPC_PMC_IBM, | 425 | .pmc_type = PPC_PMC_IBM, |
426 | .machine_check = machine_check_generic, | ||
403 | .platform = "power4", | 427 | .platform = "power4", |
404 | } | 428 | } |
405 | #endif /* CONFIG_PPC64 */ | 429 | #endif /* CONFIG_PPC64 */ |
@@ -414,6 +438,7 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
414 | PPC_FEATURE_UNIFIED_CACHE | PPC_FEATURE_NO_TB, | 438 | PPC_FEATURE_UNIFIED_CACHE | PPC_FEATURE_NO_TB, |
415 | .icache_bsize = 32, | 439 | .icache_bsize = 32, |
416 | .dcache_bsize = 32, | 440 | .dcache_bsize = 32, |
441 | .machine_check = machine_check_generic, | ||
417 | .platform = "ppc601", | 442 | .platform = "ppc601", |
418 | }, | 443 | }, |
419 | { /* 603 */ | 444 | { /* 603 */ |
@@ -425,6 +450,7 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
425 | .icache_bsize = 32, | 450 | .icache_bsize = 32, |
426 | .dcache_bsize = 32, | 451 | .dcache_bsize = 32, |
427 | .cpu_setup = __setup_cpu_603, | 452 | .cpu_setup = __setup_cpu_603, |
453 | .machine_check = machine_check_generic, | ||
428 | .platform = "ppc603", | 454 | .platform = "ppc603", |
429 | }, | 455 | }, |
430 | { /* 603e */ | 456 | { /* 603e */ |
@@ -436,6 +462,7 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
436 | .icache_bsize = 32, | 462 | .icache_bsize = 32, |
437 | .dcache_bsize = 32, | 463 | .dcache_bsize = 32, |
438 | .cpu_setup = __setup_cpu_603, | 464 | .cpu_setup = __setup_cpu_603, |
465 | .machine_check = machine_check_generic, | ||
439 | .platform = "ppc603", | 466 | .platform = "ppc603", |
440 | }, | 467 | }, |
441 | { /* 603ev */ | 468 | { /* 603ev */ |
@@ -447,6 +474,7 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
447 | .icache_bsize = 32, | 474 | .icache_bsize = 32, |
448 | .dcache_bsize = 32, | 475 | .dcache_bsize = 32, |
449 | .cpu_setup = __setup_cpu_603, | 476 | .cpu_setup = __setup_cpu_603, |
477 | .machine_check = machine_check_generic, | ||
450 | .platform = "ppc603", | 478 | .platform = "ppc603", |
451 | }, | 479 | }, |
452 | { /* 604 */ | 480 | { /* 604 */ |
@@ -459,6 +487,7 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
459 | .dcache_bsize = 32, | 487 | .dcache_bsize = 32, |
460 | .num_pmcs = 2, | 488 | .num_pmcs = 2, |
461 | .cpu_setup = __setup_cpu_604, | 489 | .cpu_setup = __setup_cpu_604, |
490 | .machine_check = machine_check_generic, | ||
462 | .platform = "ppc604", | 491 | .platform = "ppc604", |
463 | }, | 492 | }, |
464 | { /* 604e */ | 493 | { /* 604e */ |
@@ -471,6 +500,7 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
471 | .dcache_bsize = 32, | 500 | .dcache_bsize = 32, |
472 | .num_pmcs = 4, | 501 | .num_pmcs = 4, |
473 | .cpu_setup = __setup_cpu_604, | 502 | .cpu_setup = __setup_cpu_604, |
503 | .machine_check = machine_check_generic, | ||
474 | .platform = "ppc604", | 504 | .platform = "ppc604", |
475 | }, | 505 | }, |
476 | { /* 604r */ | 506 | { /* 604r */ |
@@ -483,6 +513,7 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
483 | .dcache_bsize = 32, | 513 | .dcache_bsize = 32, |
484 | .num_pmcs = 4, | 514 | .num_pmcs = 4, |
485 | .cpu_setup = __setup_cpu_604, | 515 | .cpu_setup = __setup_cpu_604, |
516 | .machine_check = machine_check_generic, | ||
486 | .platform = "ppc604", | 517 | .platform = "ppc604", |
487 | }, | 518 | }, |
488 | { /* 604ev */ | 519 | { /* 604ev */ |
@@ -495,6 +526,7 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
495 | .dcache_bsize = 32, | 526 | .dcache_bsize = 32, |
496 | .num_pmcs = 4, | 527 | .num_pmcs = 4, |
497 | .cpu_setup = __setup_cpu_604, | 528 | .cpu_setup = __setup_cpu_604, |
529 | .machine_check = machine_check_generic, | ||
498 | .platform = "ppc604", | 530 | .platform = "ppc604", |
499 | }, | 531 | }, |
500 | { /* 740/750 (0x4202, don't support TAU ?) */ | 532 | { /* 740/750 (0x4202, don't support TAU ?) */ |
@@ -507,6 +539,7 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
507 | .dcache_bsize = 32, | 539 | .dcache_bsize = 32, |
508 | .num_pmcs = 4, | 540 | .num_pmcs = 4, |
509 | .cpu_setup = __setup_cpu_750, | 541 | .cpu_setup = __setup_cpu_750, |
542 | .machine_check = machine_check_generic, | ||
510 | .platform = "ppc750", | 543 | .platform = "ppc750", |
511 | }, | 544 | }, |
512 | { /* 750CX (80100 and 8010x?) */ | 545 | { /* 750CX (80100 and 8010x?) */ |
@@ -519,6 +552,7 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
519 | .dcache_bsize = 32, | 552 | .dcache_bsize = 32, |
520 | .num_pmcs = 4, | 553 | .num_pmcs = 4, |
521 | .cpu_setup = __setup_cpu_750cx, | 554 | .cpu_setup = __setup_cpu_750cx, |
555 | .machine_check = machine_check_generic, | ||
522 | .platform = "ppc750", | 556 | .platform = "ppc750", |
523 | }, | 557 | }, |
524 | { /* 750CX (82201 and 82202) */ | 558 | { /* 750CX (82201 and 82202) */ |
@@ -531,6 +565,7 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
531 | .dcache_bsize = 32, | 565 | .dcache_bsize = 32, |
532 | .num_pmcs = 4, | 566 | .num_pmcs = 4, |
533 | .cpu_setup = __setup_cpu_750cx, | 567 | .cpu_setup = __setup_cpu_750cx, |
568 | .machine_check = machine_check_generic, | ||
534 | .platform = "ppc750", | 569 | .platform = "ppc750", |
535 | }, | 570 | }, |
536 | { /* 750CXe (82214) */ | 571 | { /* 750CXe (82214) */ |
@@ -543,6 +578,7 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
543 | .dcache_bsize = 32, | 578 | .dcache_bsize = 32, |
544 | .num_pmcs = 4, | 579 | .num_pmcs = 4, |
545 | .cpu_setup = __setup_cpu_750cx, | 580 | .cpu_setup = __setup_cpu_750cx, |
581 | .machine_check = machine_check_generic, | ||
546 | .platform = "ppc750", | 582 | .platform = "ppc750", |
547 | }, | 583 | }, |
548 | { /* 750CXe "Gekko" (83214) */ | 584 | { /* 750CXe "Gekko" (83214) */ |
@@ -555,6 +591,7 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
555 | .dcache_bsize = 32, | 591 | .dcache_bsize = 32, |
556 | .num_pmcs = 4, | 592 | .num_pmcs = 4, |
557 | .cpu_setup = __setup_cpu_750cx, | 593 | .cpu_setup = __setup_cpu_750cx, |
594 | .machine_check = machine_check_generic, | ||
558 | .platform = "ppc750", | 595 | .platform = "ppc750", |
559 | }, | 596 | }, |
560 | { /* 750CL */ | 597 | { /* 750CL */ |
@@ -567,6 +604,7 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
567 | .dcache_bsize = 32, | 604 | .dcache_bsize = 32, |
568 | .num_pmcs = 4, | 605 | .num_pmcs = 4, |
569 | .cpu_setup = __setup_cpu_750, | 606 | .cpu_setup = __setup_cpu_750, |
607 | .machine_check = machine_check_generic, | ||
570 | .platform = "ppc750", | 608 | .platform = "ppc750", |
571 | }, | 609 | }, |
572 | { /* 745/755 */ | 610 | { /* 745/755 */ |
@@ -579,6 +617,7 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
579 | .dcache_bsize = 32, | 617 | .dcache_bsize = 32, |
580 | .num_pmcs = 4, | 618 | .num_pmcs = 4, |
581 | .cpu_setup = __setup_cpu_750, | 619 | .cpu_setup = __setup_cpu_750, |
620 | .machine_check = machine_check_generic, | ||
582 | .platform = "ppc750", | 621 | .platform = "ppc750", |
583 | }, | 622 | }, |
584 | { /* 750FX rev 1.x */ | 623 | { /* 750FX rev 1.x */ |
@@ -591,6 +630,7 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
591 | .dcache_bsize = 32, | 630 | .dcache_bsize = 32, |
592 | .num_pmcs = 4, | 631 | .num_pmcs = 4, |
593 | .cpu_setup = __setup_cpu_750, | 632 | .cpu_setup = __setup_cpu_750, |
633 | .machine_check = machine_check_generic, | ||
594 | .platform = "ppc750", | 634 | .platform = "ppc750", |
595 | }, | 635 | }, |
596 | { /* 750FX rev 2.0 must disable HID0[DPM] */ | 636 | { /* 750FX rev 2.0 must disable HID0[DPM] */ |
@@ -603,6 +643,7 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
603 | .dcache_bsize = 32, | 643 | .dcache_bsize = 32, |
604 | .num_pmcs = 4, | 644 | .num_pmcs = 4, |
605 | .cpu_setup = __setup_cpu_750, | 645 | .cpu_setup = __setup_cpu_750, |
646 | .machine_check = machine_check_generic, | ||
606 | .platform = "ppc750", | 647 | .platform = "ppc750", |
607 | }, | 648 | }, |
608 | { /* 750FX (All revs except 2.0) */ | 649 | { /* 750FX (All revs except 2.0) */ |
@@ -615,6 +656,7 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
615 | .dcache_bsize = 32, | 656 | .dcache_bsize = 32, |
616 | .num_pmcs = 4, | 657 | .num_pmcs = 4, |
617 | .cpu_setup = __setup_cpu_750fx, | 658 | .cpu_setup = __setup_cpu_750fx, |
659 | .machine_check = machine_check_generic, | ||
618 | .platform = "ppc750", | 660 | .platform = "ppc750", |
619 | }, | 661 | }, |
620 | { /* 750GX */ | 662 | { /* 750GX */ |
@@ -627,6 +669,7 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
627 | .dcache_bsize = 32, | 669 | .dcache_bsize = 32, |
628 | .num_pmcs = 4, | 670 | .num_pmcs = 4, |
629 | .cpu_setup = __setup_cpu_750fx, | 671 | .cpu_setup = __setup_cpu_750fx, |
672 | .machine_check = machine_check_generic, | ||
630 | .platform = "ppc750", | 673 | .platform = "ppc750", |
631 | }, | 674 | }, |
632 | { /* 740/750 (L2CR bit need fixup for 740) */ | 675 | { /* 740/750 (L2CR bit need fixup for 740) */ |
@@ -639,6 +682,7 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
639 | .dcache_bsize = 32, | 682 | .dcache_bsize = 32, |
640 | .num_pmcs = 4, | 683 | .num_pmcs = 4, |
641 | .cpu_setup = __setup_cpu_750, | 684 | .cpu_setup = __setup_cpu_750, |
685 | .machine_check = machine_check_generic, | ||
642 | .platform = "ppc750", | 686 | .platform = "ppc750", |
643 | }, | 687 | }, |
644 | { /* 7400 rev 1.1 ? (no TAU) */ | 688 | { /* 7400 rev 1.1 ? (no TAU) */ |
@@ -652,6 +696,7 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
652 | .dcache_bsize = 32, | 696 | .dcache_bsize = 32, |
653 | .num_pmcs = 4, | 697 | .num_pmcs = 4, |
654 | .cpu_setup = __setup_cpu_7400, | 698 | .cpu_setup = __setup_cpu_7400, |
699 | .machine_check = machine_check_generic, | ||
655 | .platform = "ppc7400", | 700 | .platform = "ppc7400", |
656 | }, | 701 | }, |
657 | { /* 7400 */ | 702 | { /* 7400 */ |
@@ -665,6 +710,7 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
665 | .dcache_bsize = 32, | 710 | .dcache_bsize = 32, |
666 | .num_pmcs = 4, | 711 | .num_pmcs = 4, |
667 | .cpu_setup = __setup_cpu_7400, | 712 | .cpu_setup = __setup_cpu_7400, |
713 | .machine_check = machine_check_generic, | ||
668 | .platform = "ppc7400", | 714 | .platform = "ppc7400", |
669 | }, | 715 | }, |
670 | { /* 7410 */ | 716 | { /* 7410 */ |
@@ -678,6 +724,7 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
678 | .dcache_bsize = 32, | 724 | .dcache_bsize = 32, |
679 | .num_pmcs = 4, | 725 | .num_pmcs = 4, |
680 | .cpu_setup = __setup_cpu_7410, | 726 | .cpu_setup = __setup_cpu_7410, |
727 | .machine_check = machine_check_generic, | ||
681 | .platform = "ppc7400", | 728 | .platform = "ppc7400", |
682 | }, | 729 | }, |
683 | { /* 7450 2.0 - no doze/nap */ | 730 | { /* 7450 2.0 - no doze/nap */ |
@@ -693,6 +740,7 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
693 | .cpu_setup = __setup_cpu_745x, | 740 | .cpu_setup = __setup_cpu_745x, |
694 | .oprofile_cpu_type = "ppc/7450", | 741 | .oprofile_cpu_type = "ppc/7450", |
695 | .oprofile_type = PPC_OPROFILE_G4, | 742 | .oprofile_type = PPC_OPROFILE_G4, |
743 | .machine_check = machine_check_generic, | ||
696 | .platform = "ppc7450", | 744 | .platform = "ppc7450", |
697 | }, | 745 | }, |
698 | { /* 7450 2.1 */ | 746 | { /* 7450 2.1 */ |
@@ -708,6 +756,7 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
708 | .cpu_setup = __setup_cpu_745x, | 756 | .cpu_setup = __setup_cpu_745x, |
709 | .oprofile_cpu_type = "ppc/7450", | 757 | .oprofile_cpu_type = "ppc/7450", |
710 | .oprofile_type = PPC_OPROFILE_G4, | 758 | .oprofile_type = PPC_OPROFILE_G4, |
759 | .machine_check = machine_check_generic, | ||
711 | .platform = "ppc7450", | 760 | .platform = "ppc7450", |
712 | }, | 761 | }, |
713 | { /* 7450 2.3 and newer */ | 762 | { /* 7450 2.3 and newer */ |
@@ -723,6 +772,7 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
723 | .cpu_setup = __setup_cpu_745x, | 772 | .cpu_setup = __setup_cpu_745x, |
724 | .oprofile_cpu_type = "ppc/7450", | 773 | .oprofile_cpu_type = "ppc/7450", |
725 | .oprofile_type = PPC_OPROFILE_G4, | 774 | .oprofile_type = PPC_OPROFILE_G4, |
775 | .machine_check = machine_check_generic, | ||
726 | .platform = "ppc7450", | 776 | .platform = "ppc7450", |
727 | }, | 777 | }, |
728 | { /* 7455 rev 1.x */ | 778 | { /* 7455 rev 1.x */ |
@@ -738,6 +788,7 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
738 | .cpu_setup = __setup_cpu_745x, | 788 | .cpu_setup = __setup_cpu_745x, |
739 | .oprofile_cpu_type = "ppc/7450", | 789 | .oprofile_cpu_type = "ppc/7450", |
740 | .oprofile_type = PPC_OPROFILE_G4, | 790 | .oprofile_type = PPC_OPROFILE_G4, |
791 | .machine_check = machine_check_generic, | ||
741 | .platform = "ppc7450", | 792 | .platform = "ppc7450", |
742 | }, | 793 | }, |
743 | { /* 7455 rev 2.0 */ | 794 | { /* 7455 rev 2.0 */ |
@@ -753,6 +804,7 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
753 | .cpu_setup = __setup_cpu_745x, | 804 | .cpu_setup = __setup_cpu_745x, |
754 | .oprofile_cpu_type = "ppc/7450", | 805 | .oprofile_cpu_type = "ppc/7450", |
755 | .oprofile_type = PPC_OPROFILE_G4, | 806 | .oprofile_type = PPC_OPROFILE_G4, |
807 | .machine_check = machine_check_generic, | ||
756 | .platform = "ppc7450", | 808 | .platform = "ppc7450", |
757 | }, | 809 | }, |
758 | { /* 7455 others */ | 810 | { /* 7455 others */ |
@@ -768,6 +820,7 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
768 | .cpu_setup = __setup_cpu_745x, | 820 | .cpu_setup = __setup_cpu_745x, |
769 | .oprofile_cpu_type = "ppc/7450", | 821 | .oprofile_cpu_type = "ppc/7450", |
770 | .oprofile_type = PPC_OPROFILE_G4, | 822 | .oprofile_type = PPC_OPROFILE_G4, |
823 | .machine_check = machine_check_generic, | ||
771 | .platform = "ppc7450", | 824 | .platform = "ppc7450", |
772 | }, | 825 | }, |
773 | { /* 7447/7457 Rev 1.0 */ | 826 | { /* 7447/7457 Rev 1.0 */ |
@@ -783,6 +836,7 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
783 | .cpu_setup = __setup_cpu_745x, | 836 | .cpu_setup = __setup_cpu_745x, |
784 | .oprofile_cpu_type = "ppc/7450", | 837 | .oprofile_cpu_type = "ppc/7450", |
785 | .oprofile_type = PPC_OPROFILE_G4, | 838 | .oprofile_type = PPC_OPROFILE_G4, |
839 | .machine_check = machine_check_generic, | ||
786 | .platform = "ppc7450", | 840 | .platform = "ppc7450", |
787 | }, | 841 | }, |
788 | { /* 7447/7457 Rev 1.1 */ | 842 | { /* 7447/7457 Rev 1.1 */ |
@@ -798,6 +852,7 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
798 | .cpu_setup = __setup_cpu_745x, | 852 | .cpu_setup = __setup_cpu_745x, |
799 | .oprofile_cpu_type = "ppc/7450", | 853 | .oprofile_cpu_type = "ppc/7450", |
800 | .oprofile_type = PPC_OPROFILE_G4, | 854 | .oprofile_type = PPC_OPROFILE_G4, |
855 | .machine_check = machine_check_generic, | ||
801 | .platform = "ppc7450", | 856 | .platform = "ppc7450", |
802 | }, | 857 | }, |
803 | { /* 7447/7457 Rev 1.2 and later */ | 858 | { /* 7447/7457 Rev 1.2 and later */ |
@@ -812,6 +867,7 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
812 | .cpu_setup = __setup_cpu_745x, | 867 | .cpu_setup = __setup_cpu_745x, |
813 | .oprofile_cpu_type = "ppc/7450", | 868 | .oprofile_cpu_type = "ppc/7450", |
814 | .oprofile_type = PPC_OPROFILE_G4, | 869 | .oprofile_type = PPC_OPROFILE_G4, |
870 | .machine_check = machine_check_generic, | ||
815 | .platform = "ppc7450", | 871 | .platform = "ppc7450", |
816 | }, | 872 | }, |
817 | { /* 7447A */ | 873 | { /* 7447A */ |
@@ -827,6 +883,7 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
827 | .cpu_setup = __setup_cpu_745x, | 883 | .cpu_setup = __setup_cpu_745x, |
828 | .oprofile_cpu_type = "ppc/7450", | 884 | .oprofile_cpu_type = "ppc/7450", |
829 | .oprofile_type = PPC_OPROFILE_G4, | 885 | .oprofile_type = PPC_OPROFILE_G4, |
886 | .machine_check = machine_check_generic, | ||
830 | .platform = "ppc7450", | 887 | .platform = "ppc7450", |
831 | }, | 888 | }, |
832 | { /* 7448 */ | 889 | { /* 7448 */ |
@@ -842,6 +899,7 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
842 | .cpu_setup = __setup_cpu_745x, | 899 | .cpu_setup = __setup_cpu_745x, |
843 | .oprofile_cpu_type = "ppc/7450", | 900 | .oprofile_cpu_type = "ppc/7450", |
844 | .oprofile_type = PPC_OPROFILE_G4, | 901 | .oprofile_type = PPC_OPROFILE_G4, |
902 | .machine_check = machine_check_generic, | ||
845 | .platform = "ppc7450", | 903 | .platform = "ppc7450", |
846 | }, | 904 | }, |
847 | { /* 82xx (8240, 8245, 8260 are all 603e cores) */ | 905 | { /* 82xx (8240, 8245, 8260 are all 603e cores) */ |
@@ -853,6 +911,7 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
853 | .icache_bsize = 32, | 911 | .icache_bsize = 32, |
854 | .dcache_bsize = 32, | 912 | .dcache_bsize = 32, |
855 | .cpu_setup = __setup_cpu_603, | 913 | .cpu_setup = __setup_cpu_603, |
914 | .machine_check = machine_check_generic, | ||
856 | .platform = "ppc603", | 915 | .platform = "ppc603", |
857 | }, | 916 | }, |
858 | { /* All G2_LE (603e core, plus some) have the same pvr */ | 917 | { /* All G2_LE (603e core, plus some) have the same pvr */ |
@@ -864,6 +923,7 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
864 | .icache_bsize = 32, | 923 | .icache_bsize = 32, |
865 | .dcache_bsize = 32, | 924 | .dcache_bsize = 32, |
866 | .cpu_setup = __setup_cpu_603, | 925 | .cpu_setup = __setup_cpu_603, |
926 | .machine_check = machine_check_generic, | ||
867 | .platform = "ppc603", | 927 | .platform = "ppc603", |
868 | }, | 928 | }, |
869 | { /* e300c1 (a 603e core, plus some) on 83xx */ | 929 | { /* e300c1 (a 603e core, plus some) on 83xx */ |
@@ -875,6 +935,7 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
875 | .icache_bsize = 32, | 935 | .icache_bsize = 32, |
876 | .dcache_bsize = 32, | 936 | .dcache_bsize = 32, |
877 | .cpu_setup = __setup_cpu_603, | 937 | .cpu_setup = __setup_cpu_603, |
938 | .machine_check = machine_check_generic, | ||
878 | .platform = "ppc603", | 939 | .platform = "ppc603", |
879 | }, | 940 | }, |
880 | { /* e300c2 (an e300c1 core, plus some, minus FPU) on 83xx */ | 941 | { /* e300c2 (an e300c1 core, plus some, minus FPU) on 83xx */ |
@@ -886,9 +947,10 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
886 | .icache_bsize = 32, | 947 | .icache_bsize = 32, |
887 | .dcache_bsize = 32, | 948 | .dcache_bsize = 32, |
888 | .cpu_setup = __setup_cpu_603, | 949 | .cpu_setup = __setup_cpu_603, |
950 | .machine_check = machine_check_generic, | ||
889 | .platform = "ppc603", | 951 | .platform = "ppc603", |
890 | }, | 952 | }, |
891 | { /* e300c3 on 83xx */ | 953 | { /* e300c3 (e300c1, plus one IU, half cache size) on 83xx */ |
892 | .pvr_mask = 0x7fff0000, | 954 | .pvr_mask = 0x7fff0000, |
893 | .pvr_value = 0x00850000, | 955 | .pvr_value = 0x00850000, |
894 | .cpu_name = "e300c3", | 956 | .cpu_name = "e300c3", |
@@ -899,6 +961,18 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
899 | .cpu_setup = __setup_cpu_603, | 961 | .cpu_setup = __setup_cpu_603, |
900 | .platform = "ppc603", | 962 | .platform = "ppc603", |
901 | }, | 963 | }, |
964 | { /* e300c4 (e300c1, plus one IU) */ | ||
965 | .pvr_mask = 0x7fff0000, | ||
966 | .pvr_value = 0x00860000, | ||
967 | .cpu_name = "e300c4", | ||
968 | .cpu_features = CPU_FTRS_E300, | ||
969 | .cpu_user_features = COMMON_USER, | ||
970 | .icache_bsize = 32, | ||
971 | .dcache_bsize = 32, | ||
972 | .cpu_setup = __setup_cpu_603, | ||
973 | .machine_check = machine_check_generic, | ||
974 | .platform = "ppc603", | ||
975 | }, | ||
902 | { /* default match, we assume split I/D cache & TB (non-601)... */ | 976 | { /* default match, we assume split I/D cache & TB (non-601)... */ |
903 | .pvr_mask = 0x00000000, | 977 | .pvr_mask = 0x00000000, |
904 | .pvr_value = 0x00000000, | 978 | .pvr_value = 0x00000000, |
@@ -907,6 +981,7 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
907 | .cpu_user_features = COMMON_USER, | 981 | .cpu_user_features = COMMON_USER, |
908 | .icache_bsize = 32, | 982 | .icache_bsize = 32, |
909 | .dcache_bsize = 32, | 983 | .dcache_bsize = 32, |
984 | .machine_check = machine_check_generic, | ||
910 | .platform = "ppc603", | 985 | .platform = "ppc603", |
911 | }, | 986 | }, |
912 | #endif /* CLASSIC_PPC */ | 987 | #endif /* CLASSIC_PPC */ |
@@ -933,6 +1008,7 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
933 | .cpu_user_features = PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU, | 1008 | .cpu_user_features = PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU, |
934 | .icache_bsize = 16, | 1009 | .icache_bsize = 16, |
935 | .dcache_bsize = 16, | 1010 | .dcache_bsize = 16, |
1011 | .machine_check = machine_check_4xx, | ||
936 | .platform = "ppc403", | 1012 | .platform = "ppc403", |
937 | }, | 1013 | }, |
938 | { /* 403GCX */ | 1014 | { /* 403GCX */ |
@@ -944,6 +1020,7 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
944 | PPC_FEATURE_HAS_MMU | PPC_FEATURE_NO_TB, | 1020 | PPC_FEATURE_HAS_MMU | PPC_FEATURE_NO_TB, |
945 | .icache_bsize = 16, | 1021 | .icache_bsize = 16, |
946 | .dcache_bsize = 16, | 1022 | .dcache_bsize = 16, |
1023 | .machine_check = machine_check_4xx, | ||
947 | .platform = "ppc403", | 1024 | .platform = "ppc403", |
948 | }, | 1025 | }, |
949 | { /* 403G ?? */ | 1026 | { /* 403G ?? */ |
@@ -954,6 +1031,7 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
954 | .cpu_user_features = PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU, | 1031 | .cpu_user_features = PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU, |
955 | .icache_bsize = 16, | 1032 | .icache_bsize = 16, |
956 | .dcache_bsize = 16, | 1033 | .dcache_bsize = 16, |
1034 | .machine_check = machine_check_4xx, | ||
957 | .platform = "ppc403", | 1035 | .platform = "ppc403", |
958 | }, | 1036 | }, |
959 | { /* 405GP */ | 1037 | { /* 405GP */ |
@@ -965,6 +1043,7 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
965 | PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC, | 1043 | PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC, |
966 | .icache_bsize = 32, | 1044 | .icache_bsize = 32, |
967 | .dcache_bsize = 32, | 1045 | .dcache_bsize = 32, |
1046 | .machine_check = machine_check_4xx, | ||
968 | .platform = "ppc405", | 1047 | .platform = "ppc405", |
969 | }, | 1048 | }, |
970 | { /* STB 03xxx */ | 1049 | { /* STB 03xxx */ |
@@ -976,6 +1055,7 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
976 | PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC, | 1055 | PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC, |
977 | .icache_bsize = 32, | 1056 | .icache_bsize = 32, |
978 | .dcache_bsize = 32, | 1057 | .dcache_bsize = 32, |
1058 | .machine_check = machine_check_4xx, | ||
979 | .platform = "ppc405", | 1059 | .platform = "ppc405", |
980 | }, | 1060 | }, |
981 | { /* STB 04xxx */ | 1061 | { /* STB 04xxx */ |
@@ -987,6 +1067,7 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
987 | PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC, | 1067 | PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC, |
988 | .icache_bsize = 32, | 1068 | .icache_bsize = 32, |
989 | .dcache_bsize = 32, | 1069 | .dcache_bsize = 32, |
1070 | .machine_check = machine_check_4xx, | ||
990 | .platform = "ppc405", | 1071 | .platform = "ppc405", |
991 | }, | 1072 | }, |
992 | { /* NP405L */ | 1073 | { /* NP405L */ |
@@ -998,6 +1079,7 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
998 | PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC, | 1079 | PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC, |
999 | .icache_bsize = 32, | 1080 | .icache_bsize = 32, |
1000 | .dcache_bsize = 32, | 1081 | .dcache_bsize = 32, |
1082 | .machine_check = machine_check_4xx, | ||
1001 | .platform = "ppc405", | 1083 | .platform = "ppc405", |
1002 | }, | 1084 | }, |
1003 | { /* NP4GS3 */ | 1085 | { /* NP4GS3 */ |
@@ -1009,6 +1091,7 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
1009 | PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC, | 1091 | PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC, |
1010 | .icache_bsize = 32, | 1092 | .icache_bsize = 32, |
1011 | .dcache_bsize = 32, | 1093 | .dcache_bsize = 32, |
1094 | .machine_check = machine_check_4xx, | ||
1012 | .platform = "ppc405", | 1095 | .platform = "ppc405", |
1013 | }, | 1096 | }, |
1014 | { /* NP405H */ | 1097 | { /* NP405H */ |
@@ -1020,6 +1103,7 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
1020 | PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC, | 1103 | PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC, |
1021 | .icache_bsize = 32, | 1104 | .icache_bsize = 32, |
1022 | .dcache_bsize = 32, | 1105 | .dcache_bsize = 32, |
1106 | .machine_check = machine_check_4xx, | ||
1023 | .platform = "ppc405", | 1107 | .platform = "ppc405", |
1024 | }, | 1108 | }, |
1025 | { /* 405GPr */ | 1109 | { /* 405GPr */ |
@@ -1031,6 +1115,7 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
1031 | PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC, | 1115 | PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC, |
1032 | .icache_bsize = 32, | 1116 | .icache_bsize = 32, |
1033 | .dcache_bsize = 32, | 1117 | .dcache_bsize = 32, |
1118 | .machine_check = machine_check_4xx, | ||
1034 | .platform = "ppc405", | 1119 | .platform = "ppc405", |
1035 | }, | 1120 | }, |
1036 | { /* STBx25xx */ | 1121 | { /* STBx25xx */ |
@@ -1042,6 +1127,7 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
1042 | PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC, | 1127 | PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC, |
1043 | .icache_bsize = 32, | 1128 | .icache_bsize = 32, |
1044 | .dcache_bsize = 32, | 1129 | .dcache_bsize = 32, |
1130 | .machine_check = machine_check_4xx, | ||
1045 | .platform = "ppc405", | 1131 | .platform = "ppc405", |
1046 | }, | 1132 | }, |
1047 | { /* 405LP */ | 1133 | { /* 405LP */ |
@@ -1052,6 +1138,7 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
1052 | .cpu_user_features = PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU, | 1138 | .cpu_user_features = PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU, |
1053 | .icache_bsize = 32, | 1139 | .icache_bsize = 32, |
1054 | .dcache_bsize = 32, | 1140 | .dcache_bsize = 32, |
1141 | .machine_check = machine_check_4xx, | ||
1055 | .platform = "ppc405", | 1142 | .platform = "ppc405", |
1056 | }, | 1143 | }, |
1057 | { /* Xilinx Virtex-II Pro */ | 1144 | { /* Xilinx Virtex-II Pro */ |
@@ -1063,6 +1150,7 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
1063 | PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC, | 1150 | PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC, |
1064 | .icache_bsize = 32, | 1151 | .icache_bsize = 32, |
1065 | .dcache_bsize = 32, | 1152 | .dcache_bsize = 32, |
1153 | .machine_check = machine_check_4xx, | ||
1066 | .platform = "ppc405", | 1154 | .platform = "ppc405", |
1067 | }, | 1155 | }, |
1068 | { /* Xilinx Virtex-4 FX */ | 1156 | { /* Xilinx Virtex-4 FX */ |
@@ -1074,6 +1162,7 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
1074 | PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC, | 1162 | PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC, |
1075 | .icache_bsize = 32, | 1163 | .icache_bsize = 32, |
1076 | .dcache_bsize = 32, | 1164 | .dcache_bsize = 32, |
1165 | .machine_check = machine_check_4xx, | ||
1077 | .platform = "ppc405", | 1166 | .platform = "ppc405", |
1078 | }, | 1167 | }, |
1079 | { /* 405EP */ | 1168 | { /* 405EP */ |
@@ -1085,17 +1174,31 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
1085 | PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC, | 1174 | PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC, |
1086 | .icache_bsize = 32, | 1175 | .icache_bsize = 32, |
1087 | .dcache_bsize = 32, | 1176 | .dcache_bsize = 32, |
1177 | .machine_check = machine_check_4xx, | ||
1088 | .platform = "ppc405", | 1178 | .platform = "ppc405", |
1089 | }, | 1179 | }, |
1090 | { /* 405EX */ | 1180 | { /* 405EX */ |
1091 | .pvr_mask = 0xffff0000, | 1181 | .pvr_mask = 0xffff0004, |
1092 | .pvr_value = 0x12910000, | 1182 | .pvr_value = 0x12910004, |
1093 | .cpu_name = "405EX", | 1183 | .cpu_name = "405EX", |
1094 | .cpu_features = CPU_FTRS_40X, | 1184 | .cpu_features = CPU_FTRS_40X, |
1095 | .cpu_user_features = PPC_FEATURE_32 | | 1185 | .cpu_user_features = PPC_FEATURE_32 | |
1096 | PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC, | 1186 | PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC, |
1097 | .icache_bsize = 32, | 1187 | .icache_bsize = 32, |
1098 | .dcache_bsize = 32, | 1188 | .dcache_bsize = 32, |
1189 | .machine_check = machine_check_4xx, | ||
1190 | .platform = "ppc405", | ||
1191 | }, | ||
1192 | { /* 405EXr */ | ||
1193 | .pvr_mask = 0xffff0004, | ||
1194 | .pvr_value = 0x12910000, | ||
1195 | .cpu_name = "405EXr", | ||
1196 | .cpu_features = CPU_FTRS_40X, | ||
1197 | .cpu_user_features = PPC_FEATURE_32 | | ||
1198 | PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC, | ||
1199 | .icache_bsize = 32, | ||
1200 | .dcache_bsize = 32, | ||
1201 | .machine_check = machine_check_4xx, | ||
1099 | .platform = "ppc405", | 1202 | .platform = "ppc405", |
1100 | }, | 1203 | }, |
1101 | 1204 | ||
@@ -1109,6 +1212,7 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
1109 | .cpu_user_features = COMMON_USER_BOOKE, | 1212 | .cpu_user_features = COMMON_USER_BOOKE, |
1110 | .icache_bsize = 32, | 1213 | .icache_bsize = 32, |
1111 | .dcache_bsize = 32, | 1214 | .dcache_bsize = 32, |
1215 | .machine_check = machine_check_4xx, | ||
1112 | .platform = "ppc440", | 1216 | .platform = "ppc440", |
1113 | }, | 1217 | }, |
1114 | { /* Use logical PVR for 440EP (logical pvr = pvr | 0x8) */ | 1218 | { /* Use logical PVR for 440EP (logical pvr = pvr | 0x8) */ |
@@ -1120,6 +1224,7 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
1120 | .icache_bsize = 32, | 1224 | .icache_bsize = 32, |
1121 | .dcache_bsize = 32, | 1225 | .dcache_bsize = 32, |
1122 | .cpu_setup = __setup_cpu_440ep, | 1226 | .cpu_setup = __setup_cpu_440ep, |
1227 | .machine_check = machine_check_4xx, | ||
1123 | .platform = "ppc440", | 1228 | .platform = "ppc440", |
1124 | }, | 1229 | }, |
1125 | { | 1230 | { |
@@ -1130,6 +1235,19 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
1130 | .cpu_user_features = COMMON_USER_BOOKE | PPC_FEATURE_HAS_FPU, | 1235 | .cpu_user_features = COMMON_USER_BOOKE | PPC_FEATURE_HAS_FPU, |
1131 | .icache_bsize = 32, | 1236 | .icache_bsize = 32, |
1132 | .dcache_bsize = 32, | 1237 | .dcache_bsize = 32, |
1238 | .machine_check = machine_check_4xx, | ||
1239 | .platform = "ppc440", | ||
1240 | }, | ||
1241 | { /* Matches both physical and logical PVR for 440EP (logical pvr = pvr | 0x8) */ | ||
1242 | .pvr_mask = 0xf0000ff7, | ||
1243 | .pvr_value = 0x400008d4, | ||
1244 | .cpu_name = "440EP Rev. C", | ||
1245 | .cpu_features = CPU_FTRS_44X, | ||
1246 | .cpu_user_features = COMMON_USER_BOOKE | PPC_FEATURE_HAS_FPU, | ||
1247 | .icache_bsize = 32, | ||
1248 | .dcache_bsize = 32, | ||
1249 | .cpu_setup = __setup_cpu_440ep, | ||
1250 | .machine_check = machine_check_4xx, | ||
1133 | .platform = "ppc440", | 1251 | .platform = "ppc440", |
1134 | }, | 1252 | }, |
1135 | { /* Use logical PVR for 440EP (logical pvr = pvr | 0x8) */ | 1253 | { /* Use logical PVR for 440EP (logical pvr = pvr | 0x8) */ |
@@ -1141,6 +1259,7 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
1141 | .icache_bsize = 32, | 1259 | .icache_bsize = 32, |
1142 | .dcache_bsize = 32, | 1260 | .dcache_bsize = 32, |
1143 | .cpu_setup = __setup_cpu_440ep, | 1261 | .cpu_setup = __setup_cpu_440ep, |
1262 | .machine_check = machine_check_4xx, | ||
1144 | .platform = "ppc440", | 1263 | .platform = "ppc440", |
1145 | }, | 1264 | }, |
1146 | { /* 440GRX */ | 1265 | { /* 440GRX */ |
@@ -1152,6 +1271,7 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
1152 | .icache_bsize = 32, | 1271 | .icache_bsize = 32, |
1153 | .dcache_bsize = 32, | 1272 | .dcache_bsize = 32, |
1154 | .cpu_setup = __setup_cpu_440grx, | 1273 | .cpu_setup = __setup_cpu_440grx, |
1274 | .machine_check = machine_check_440A, | ||
1155 | .platform = "ppc440", | 1275 | .platform = "ppc440", |
1156 | }, | 1276 | }, |
1157 | { /* Use logical PVR for 440EPx (logical pvr = pvr | 0x8) */ | 1277 | { /* Use logical PVR for 440EPx (logical pvr = pvr | 0x8) */ |
@@ -1163,6 +1283,7 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
1163 | .icache_bsize = 32, | 1283 | .icache_bsize = 32, |
1164 | .dcache_bsize = 32, | 1284 | .dcache_bsize = 32, |
1165 | .cpu_setup = __setup_cpu_440epx, | 1285 | .cpu_setup = __setup_cpu_440epx, |
1286 | .machine_check = machine_check_440A, | ||
1166 | .platform = "ppc440", | 1287 | .platform = "ppc440", |
1167 | }, | 1288 | }, |
1168 | { /* 440GP Rev. B */ | 1289 | { /* 440GP Rev. B */ |
@@ -1173,6 +1294,7 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
1173 | .cpu_user_features = COMMON_USER_BOOKE, | 1294 | .cpu_user_features = COMMON_USER_BOOKE, |
1174 | .icache_bsize = 32, | 1295 | .icache_bsize = 32, |
1175 | .dcache_bsize = 32, | 1296 | .dcache_bsize = 32, |
1297 | .machine_check = machine_check_4xx, | ||
1176 | .platform = "ppc440gp", | 1298 | .platform = "ppc440gp", |
1177 | }, | 1299 | }, |
1178 | { /* 440GP Rev. C */ | 1300 | { /* 440GP Rev. C */ |
@@ -1183,6 +1305,7 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
1183 | .cpu_user_features = COMMON_USER_BOOKE, | 1305 | .cpu_user_features = COMMON_USER_BOOKE, |
1184 | .icache_bsize = 32, | 1306 | .icache_bsize = 32, |
1185 | .dcache_bsize = 32, | 1307 | .dcache_bsize = 32, |
1308 | .machine_check = machine_check_4xx, | ||
1186 | .platform = "ppc440gp", | 1309 | .platform = "ppc440gp", |
1187 | }, | 1310 | }, |
1188 | { /* 440GX Rev. A */ | 1311 | { /* 440GX Rev. A */ |
@@ -1193,6 +1316,8 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
1193 | .cpu_user_features = COMMON_USER_BOOKE, | 1316 | .cpu_user_features = COMMON_USER_BOOKE, |
1194 | .icache_bsize = 32, | 1317 | .icache_bsize = 32, |
1195 | .dcache_bsize = 32, | 1318 | .dcache_bsize = 32, |
1319 | .cpu_setup = __setup_cpu_440gx, | ||
1320 | .machine_check = machine_check_440A, | ||
1196 | .platform = "ppc440", | 1321 | .platform = "ppc440", |
1197 | }, | 1322 | }, |
1198 | { /* 440GX Rev. B */ | 1323 | { /* 440GX Rev. B */ |
@@ -1203,6 +1328,8 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
1203 | .cpu_user_features = COMMON_USER_BOOKE, | 1328 | .cpu_user_features = COMMON_USER_BOOKE, |
1204 | .icache_bsize = 32, | 1329 | .icache_bsize = 32, |
1205 | .dcache_bsize = 32, | 1330 | .dcache_bsize = 32, |
1331 | .cpu_setup = __setup_cpu_440gx, | ||
1332 | .machine_check = machine_check_440A, | ||
1206 | .platform = "ppc440", | 1333 | .platform = "ppc440", |
1207 | }, | 1334 | }, |
1208 | { /* 440GX Rev. C */ | 1335 | { /* 440GX Rev. C */ |
@@ -1213,6 +1340,8 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
1213 | .cpu_user_features = COMMON_USER_BOOKE, | 1340 | .cpu_user_features = COMMON_USER_BOOKE, |
1214 | .icache_bsize = 32, | 1341 | .icache_bsize = 32, |
1215 | .dcache_bsize = 32, | 1342 | .dcache_bsize = 32, |
1343 | .cpu_setup = __setup_cpu_440gx, | ||
1344 | .machine_check = machine_check_440A, | ||
1216 | .platform = "ppc440", | 1345 | .platform = "ppc440", |
1217 | }, | 1346 | }, |
1218 | { /* 440GX Rev. F */ | 1347 | { /* 440GX Rev. F */ |
@@ -1223,6 +1352,8 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
1223 | .cpu_user_features = COMMON_USER_BOOKE, | 1352 | .cpu_user_features = COMMON_USER_BOOKE, |
1224 | .icache_bsize = 32, | 1353 | .icache_bsize = 32, |
1225 | .dcache_bsize = 32, | 1354 | .dcache_bsize = 32, |
1355 | .cpu_setup = __setup_cpu_440gx, | ||
1356 | .machine_check = machine_check_440A, | ||
1226 | .platform = "ppc440", | 1357 | .platform = "ppc440", |
1227 | }, | 1358 | }, |
1228 | { /* 440SP Rev. A */ | 1359 | { /* 440SP Rev. A */ |
@@ -1233,6 +1364,7 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
1233 | .cpu_user_features = COMMON_USER_BOOKE, | 1364 | .cpu_user_features = COMMON_USER_BOOKE, |
1234 | .icache_bsize = 32, | 1365 | .icache_bsize = 32, |
1235 | .dcache_bsize = 32, | 1366 | .dcache_bsize = 32, |
1367 | .machine_check = machine_check_4xx, | ||
1236 | .platform = "ppc440", | 1368 | .platform = "ppc440", |
1237 | }, | 1369 | }, |
1238 | { /* 440SPe Rev. A */ | 1370 | { /* 440SPe Rev. A */ |
@@ -1243,6 +1375,8 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
1243 | .cpu_user_features = COMMON_USER_BOOKE, | 1375 | .cpu_user_features = COMMON_USER_BOOKE, |
1244 | .icache_bsize = 32, | 1376 | .icache_bsize = 32, |
1245 | .dcache_bsize = 32, | 1377 | .dcache_bsize = 32, |
1378 | .cpu_setup = __setup_cpu_440spe, | ||
1379 | .machine_check = machine_check_440A, | ||
1246 | .platform = "ppc440", | 1380 | .platform = "ppc440", |
1247 | }, | 1381 | }, |
1248 | { /* 440SPe Rev. B */ | 1382 | { /* 440SPe Rev. B */ |
@@ -1253,10 +1387,13 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
1253 | .cpu_user_features = COMMON_USER_BOOKE, | 1387 | .cpu_user_features = COMMON_USER_BOOKE, |
1254 | .icache_bsize = 32, | 1388 | .icache_bsize = 32, |
1255 | .dcache_bsize = 32, | 1389 | .dcache_bsize = 32, |
1390 | .cpu_setup = __setup_cpu_440spe, | ||
1391 | .machine_check = machine_check_440A, | ||
1256 | .platform = "ppc440", | 1392 | .platform = "ppc440", |
1257 | }, | 1393 | }, |
1258 | #endif /* CONFIG_44x */ | 1394 | #endif /* CONFIG_44x */ |
1259 | #ifdef CONFIG_FSL_BOOKE | 1395 | #ifdef CONFIG_FSL_BOOKE |
1396 | #ifdef CONFIG_E200 | ||
1260 | { /* e200z5 */ | 1397 | { /* e200z5 */ |
1261 | .pvr_mask = 0xfff00000, | 1398 | .pvr_mask = 0xfff00000, |
1262 | .pvr_value = 0x81000000, | 1399 | .pvr_value = 0x81000000, |
@@ -1267,6 +1404,7 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
1267 | PPC_FEATURE_HAS_EFP_SINGLE | | 1404 | PPC_FEATURE_HAS_EFP_SINGLE | |
1268 | PPC_FEATURE_UNIFIED_CACHE, | 1405 | PPC_FEATURE_UNIFIED_CACHE, |
1269 | .dcache_bsize = 32, | 1406 | .dcache_bsize = 32, |
1407 | .machine_check = machine_check_e200, | ||
1270 | .platform = "ppc5554", | 1408 | .platform = "ppc5554", |
1271 | }, | 1409 | }, |
1272 | { /* e200z6 */ | 1410 | { /* e200z6 */ |
@@ -1280,8 +1418,10 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
1280 | PPC_FEATURE_HAS_EFP_SINGLE_COMP | | 1418 | PPC_FEATURE_HAS_EFP_SINGLE_COMP | |
1281 | PPC_FEATURE_UNIFIED_CACHE, | 1419 | PPC_FEATURE_UNIFIED_CACHE, |
1282 | .dcache_bsize = 32, | 1420 | .dcache_bsize = 32, |
1421 | .machine_check = machine_check_e200, | ||
1283 | .platform = "ppc5554", | 1422 | .platform = "ppc5554", |
1284 | }, | 1423 | }, |
1424 | #elif defined(CONFIG_E500) | ||
1285 | { /* e500 */ | 1425 | { /* e500 */ |
1286 | .pvr_mask = 0xffff0000, | 1426 | .pvr_mask = 0xffff0000, |
1287 | .pvr_value = 0x80200000, | 1427 | .pvr_value = 0x80200000, |
@@ -1296,6 +1436,7 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
1296 | .num_pmcs = 4, | 1436 | .num_pmcs = 4, |
1297 | .oprofile_cpu_type = "ppc/e500", | 1437 | .oprofile_cpu_type = "ppc/e500", |
1298 | .oprofile_type = PPC_OPROFILE_BOOKE, | 1438 | .oprofile_type = PPC_OPROFILE_BOOKE, |
1439 | .machine_check = machine_check_e500, | ||
1299 | .platform = "ppc8540", | 1440 | .platform = "ppc8540", |
1300 | }, | 1441 | }, |
1301 | { /* e500v2 */ | 1442 | { /* e500v2 */ |
@@ -1313,9 +1454,11 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
1313 | .num_pmcs = 4, | 1454 | .num_pmcs = 4, |
1314 | .oprofile_cpu_type = "ppc/e500", | 1455 | .oprofile_cpu_type = "ppc/e500", |
1315 | .oprofile_type = PPC_OPROFILE_BOOKE, | 1456 | .oprofile_type = PPC_OPROFILE_BOOKE, |
1457 | .machine_check = machine_check_e500, | ||
1316 | .platform = "ppc8548", | 1458 | .platform = "ppc8548", |
1317 | }, | 1459 | }, |
1318 | #endif | 1460 | #endif |
1461 | #endif | ||
1319 | #if !CLASSIC_PPC | 1462 | #if !CLASSIC_PPC |
1320 | { /* default match */ | 1463 | { /* default match */ |
1321 | .pvr_mask = 0x00000000, | 1464 | .pvr_mask = 0x00000000, |