diff options
Diffstat (limited to 'arch/powerpc/kernel/cputable.c')
-rw-r--r-- | arch/powerpc/kernel/cputable.c | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/arch/powerpc/kernel/cputable.c b/arch/powerpc/kernel/cputable.c index 0514c21f138b..75a3d71b895d 100644 --- a/arch/powerpc/kernel/cputable.c +++ b/arch/powerpc/kernel/cputable.c | |||
@@ -68,6 +68,8 @@ extern void __restore_cpu_pa6t(void); | |||
68 | extern void __restore_cpu_ppc970(void); | 68 | extern void __restore_cpu_ppc970(void); |
69 | extern void __setup_cpu_power7(unsigned long offset, struct cpu_spec* spec); | 69 | extern void __setup_cpu_power7(unsigned long offset, struct cpu_spec* spec); |
70 | extern void __restore_cpu_power7(void); | 70 | extern void __restore_cpu_power7(void); |
71 | extern void __setup_cpu_power8(unsigned long offset, struct cpu_spec* spec); | ||
72 | extern void __restore_cpu_power8(void); | ||
71 | extern void __restore_cpu_a2(void); | 73 | extern void __restore_cpu_a2(void); |
72 | #endif /* CONFIG_PPC64 */ | 74 | #endif /* CONFIG_PPC64 */ |
73 | #if defined(CONFIG_E500) | 75 | #if defined(CONFIG_E500) |
@@ -94,6 +96,10 @@ extern void __restore_cpu_e5500(void); | |||
94 | PPC_FEATURE_SMT | PPC_FEATURE_ICACHE_SNOOP | \ | 96 | PPC_FEATURE_SMT | PPC_FEATURE_ICACHE_SNOOP | \ |
95 | PPC_FEATURE_TRUE_LE | \ | 97 | PPC_FEATURE_TRUE_LE | \ |
96 | PPC_FEATURE_PSERIES_PERFMON_COMPAT) | 98 | PPC_FEATURE_PSERIES_PERFMON_COMPAT) |
99 | #define COMMON_USER_POWER8 (COMMON_USER_PPC64 | PPC_FEATURE_ARCH_2_06 |\ | ||
100 | PPC_FEATURE_SMT | PPC_FEATURE_ICACHE_SNOOP | \ | ||
101 | PPC_FEATURE_TRUE_LE | \ | ||
102 | PPC_FEATURE_PSERIES_PERFMON_COMPAT) | ||
97 | #define COMMON_USER_PA6T (COMMON_USER_PPC64 | PPC_FEATURE_PA6T |\ | 103 | #define COMMON_USER_PA6T (COMMON_USER_PPC64 | PPC_FEATURE_PA6T |\ |
98 | PPC_FEATURE_TRUE_LE | \ | 104 | PPC_FEATURE_TRUE_LE | \ |
99 | PPC_FEATURE_HAS_ALTIVEC_COMP) | 105 | PPC_FEATURE_HAS_ALTIVEC_COMP) |
@@ -429,6 +435,21 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
429 | .cpu_restore = __restore_cpu_power7, | 435 | .cpu_restore = __restore_cpu_power7, |
430 | .platform = "power7", | 436 | .platform = "power7", |
431 | }, | 437 | }, |
438 | { /* 2.07-compliant processor, i.e. Power8 "architected" mode */ | ||
439 | .pvr_mask = 0xffffffff, | ||
440 | .pvr_value = 0x0f000004, | ||
441 | .cpu_name = "POWER8 (architected)", | ||
442 | .cpu_features = CPU_FTRS_POWER8, | ||
443 | .cpu_user_features = COMMON_USER_POWER8, | ||
444 | .mmu_features = MMU_FTRS_POWER8, | ||
445 | .icache_bsize = 128, | ||
446 | .dcache_bsize = 128, | ||
447 | .oprofile_type = PPC_OPROFILE_POWER4, | ||
448 | .oprofile_cpu_type = "ppc64/ibm-compat-v1", | ||
449 | .cpu_setup = __setup_cpu_power8, | ||
450 | .cpu_restore = __restore_cpu_power8, | ||
451 | .platform = "power8", | ||
452 | }, | ||
432 | { /* Power7 */ | 453 | { /* Power7 */ |
433 | .pvr_mask = 0xffff0000, | 454 | .pvr_mask = 0xffff0000, |
434 | .pvr_value = 0x003f0000, | 455 | .pvr_value = 0x003f0000, |
@@ -463,6 +484,23 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
463 | .cpu_restore = __restore_cpu_power7, | 484 | .cpu_restore = __restore_cpu_power7, |
464 | .platform = "power7+", | 485 | .platform = "power7+", |
465 | }, | 486 | }, |
487 | { /* Power8 */ | ||
488 | .pvr_mask = 0xffff0000, | ||
489 | .pvr_value = 0x004b0000, | ||
490 | .cpu_name = "POWER8 (raw)", | ||
491 | .cpu_features = CPU_FTRS_POWER8, | ||
492 | .cpu_user_features = COMMON_USER_POWER8, | ||
493 | .mmu_features = MMU_FTRS_POWER8, | ||
494 | .icache_bsize = 128, | ||
495 | .dcache_bsize = 128, | ||
496 | .num_pmcs = 6, | ||
497 | .pmc_type = PPC_PMC_IBM, | ||
498 | .oprofile_cpu_type = "ppc64/power8", | ||
499 | .oprofile_type = PPC_OPROFILE_POWER4, | ||
500 | .cpu_setup = __setup_cpu_power8, | ||
501 | .cpu_restore = __restore_cpu_power8, | ||
502 | .platform = "power8", | ||
503 | }, | ||
466 | { /* Cell Broadband Engine */ | 504 | { /* Cell Broadband Engine */ |
467 | .pvr_mask = 0xffff0000, | 505 | .pvr_mask = 0xffff0000, |
468 | .pvr_value = 0x00700000, | 506 | .pvr_value = 0x00700000, |