diff options
Diffstat (limited to 'arch/powerpc/kernel/cputable.c')
-rw-r--r-- | arch/powerpc/kernel/cputable.c | 23 |
1 files changed, 20 insertions, 3 deletions
diff --git a/arch/powerpc/kernel/cputable.c b/arch/powerpc/kernel/cputable.c index 19599ef352bc..c60bbec25c1f 100644 --- a/arch/powerpc/kernel/cputable.c +++ b/arch/powerpc/kernel/cputable.c | |||
@@ -74,7 +74,9 @@ extern void __restore_cpu_a2(void); | |||
74 | #endif /* CONFIG_PPC64 */ | 74 | #endif /* CONFIG_PPC64 */ |
75 | #if defined(CONFIG_E500) | 75 | #if defined(CONFIG_E500) |
76 | extern void __setup_cpu_e5500(unsigned long offset, struct cpu_spec* spec); | 76 | extern void __setup_cpu_e5500(unsigned long offset, struct cpu_spec* spec); |
77 | extern void __setup_cpu_e6500(unsigned long offset, struct cpu_spec* spec); | ||
77 | extern void __restore_cpu_e5500(void); | 78 | extern void __restore_cpu_e5500(void); |
79 | extern void __restore_cpu_e6500(void); | ||
78 | #endif /* CONFIG_E500 */ | 80 | #endif /* CONFIG_E500 */ |
79 | 81 | ||
80 | /* This table only contains "desktop" CPUs, it need to be filled with embedded | 82 | /* This table only contains "desktop" CPUs, it need to be filled with embedded |
@@ -96,10 +98,14 @@ extern void __restore_cpu_e5500(void); | |||
96 | PPC_FEATURE_SMT | PPC_FEATURE_ICACHE_SNOOP | \ | 98 | PPC_FEATURE_SMT | PPC_FEATURE_ICACHE_SNOOP | \ |
97 | PPC_FEATURE_TRUE_LE | \ | 99 | PPC_FEATURE_TRUE_LE | \ |
98 | PPC_FEATURE_PSERIES_PERFMON_COMPAT) | 100 | PPC_FEATURE_PSERIES_PERFMON_COMPAT) |
101 | #define COMMON_USER2_POWER7 (PPC_FEATURE2_DSCR) | ||
99 | #define COMMON_USER_POWER8 (COMMON_USER_PPC64 | PPC_FEATURE_ARCH_2_06 |\ | 102 | #define COMMON_USER_POWER8 (COMMON_USER_PPC64 | PPC_FEATURE_ARCH_2_06 |\ |
100 | PPC_FEATURE_SMT | PPC_FEATURE_ICACHE_SNOOP | \ | 103 | PPC_FEATURE_SMT | PPC_FEATURE_ICACHE_SNOOP | \ |
101 | PPC_FEATURE_TRUE_LE | \ | 104 | PPC_FEATURE_TRUE_LE | \ |
102 | PPC_FEATURE_PSERIES_PERFMON_COMPAT) | 105 | PPC_FEATURE_PSERIES_PERFMON_COMPAT) |
106 | #define COMMON_USER2_POWER8 (PPC_FEATURE2_ARCH_2_07 | \ | ||
107 | PPC_FEATURE2_HTM_COMP | PPC_FEATURE2_DSCR | \ | ||
108 | PPC_FEATURE2_ISEL | PPC_FEATURE2_TAR) | ||
103 | #define COMMON_USER_PA6T (COMMON_USER_PPC64 | PPC_FEATURE_PA6T |\ | 109 | #define COMMON_USER_PA6T (COMMON_USER_PPC64 | PPC_FEATURE_PA6T |\ |
104 | PPC_FEATURE_TRUE_LE | \ | 110 | PPC_FEATURE_TRUE_LE | \ |
105 | PPC_FEATURE_HAS_ALTIVEC_COMP) | 111 | PPC_FEATURE_HAS_ALTIVEC_COMP) |
@@ -426,6 +432,7 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
426 | .cpu_name = "POWER7 (architected)", | 432 | .cpu_name = "POWER7 (architected)", |
427 | .cpu_features = CPU_FTRS_POWER7, | 433 | .cpu_features = CPU_FTRS_POWER7, |
428 | .cpu_user_features = COMMON_USER_POWER7, | 434 | .cpu_user_features = COMMON_USER_POWER7, |
435 | .cpu_user_features2 = COMMON_USER2_POWER7, | ||
429 | .mmu_features = MMU_FTRS_POWER7, | 436 | .mmu_features = MMU_FTRS_POWER7, |
430 | .icache_bsize = 128, | 437 | .icache_bsize = 128, |
431 | .dcache_bsize = 128, | 438 | .dcache_bsize = 128, |
@@ -441,6 +448,7 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
441 | .cpu_name = "POWER8 (architected)", | 448 | .cpu_name = "POWER8 (architected)", |
442 | .cpu_features = CPU_FTRS_POWER8, | 449 | .cpu_features = CPU_FTRS_POWER8, |
443 | .cpu_user_features = COMMON_USER_POWER8, | 450 | .cpu_user_features = COMMON_USER_POWER8, |
451 | .cpu_user_features2 = COMMON_USER2_POWER8, | ||
444 | .mmu_features = MMU_FTRS_POWER8, | 452 | .mmu_features = MMU_FTRS_POWER8, |
445 | .icache_bsize = 128, | 453 | .icache_bsize = 128, |
446 | .dcache_bsize = 128, | 454 | .dcache_bsize = 128, |
@@ -456,6 +464,7 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
456 | .cpu_name = "POWER7 (raw)", | 464 | .cpu_name = "POWER7 (raw)", |
457 | .cpu_features = CPU_FTRS_POWER7, | 465 | .cpu_features = CPU_FTRS_POWER7, |
458 | .cpu_user_features = COMMON_USER_POWER7, | 466 | .cpu_user_features = COMMON_USER_POWER7, |
467 | .cpu_user_features2 = COMMON_USER2_POWER7, | ||
459 | .mmu_features = MMU_FTRS_POWER7, | 468 | .mmu_features = MMU_FTRS_POWER7, |
460 | .icache_bsize = 128, | 469 | .icache_bsize = 128, |
461 | .dcache_bsize = 128, | 470 | .dcache_bsize = 128, |
@@ -473,6 +482,7 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
473 | .cpu_name = "POWER7+ (raw)", | 482 | .cpu_name = "POWER7+ (raw)", |
474 | .cpu_features = CPU_FTRS_POWER7, | 483 | .cpu_features = CPU_FTRS_POWER7, |
475 | .cpu_user_features = COMMON_USER_POWER7, | 484 | .cpu_user_features = COMMON_USER_POWER7, |
485 | .cpu_user_features = COMMON_USER2_POWER7, | ||
476 | .mmu_features = MMU_FTRS_POWER7, | 486 | .mmu_features = MMU_FTRS_POWER7, |
477 | .icache_bsize = 128, | 487 | .icache_bsize = 128, |
478 | .dcache_bsize = 128, | 488 | .dcache_bsize = 128, |
@@ -490,6 +500,7 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
490 | .cpu_name = "POWER8 (raw)", | 500 | .cpu_name = "POWER8 (raw)", |
491 | .cpu_features = CPU_FTRS_POWER8, | 501 | .cpu_features = CPU_FTRS_POWER8, |
492 | .cpu_user_features = COMMON_USER_POWER8, | 502 | .cpu_user_features = COMMON_USER_POWER8, |
503 | .cpu_user_features2 = COMMON_USER2_POWER8, | ||
493 | .mmu_features = MMU_FTRS_POWER8, | 504 | .mmu_features = MMU_FTRS_POWER8, |
494 | .icache_bsize = 128, | 505 | .icache_bsize = 128, |
495 | .dcache_bsize = 128, | 506 | .dcache_bsize = 128, |
@@ -1993,6 +2004,7 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
1993 | .cpu_user_features = COMMON_USER_BOOKE | | 2004 | .cpu_user_features = COMMON_USER_BOOKE | |
1994 | PPC_FEATURE_HAS_SPE_COMP | | 2005 | PPC_FEATURE_HAS_SPE_COMP | |
1995 | PPC_FEATURE_HAS_EFP_SINGLE_COMP, | 2006 | PPC_FEATURE_HAS_EFP_SINGLE_COMP, |
2007 | .cpu_user_features2 = PPC_FEATURE2_ISEL, | ||
1996 | .mmu_features = MMU_FTR_TYPE_FSL_E, | 2008 | .mmu_features = MMU_FTR_TYPE_FSL_E, |
1997 | .icache_bsize = 32, | 2009 | .icache_bsize = 32, |
1998 | .dcache_bsize = 32, | 2010 | .dcache_bsize = 32, |
@@ -2012,6 +2024,7 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
2012 | PPC_FEATURE_HAS_SPE_COMP | | 2024 | PPC_FEATURE_HAS_SPE_COMP | |
2013 | PPC_FEATURE_HAS_EFP_SINGLE_COMP | | 2025 | PPC_FEATURE_HAS_EFP_SINGLE_COMP | |
2014 | PPC_FEATURE_HAS_EFP_DOUBLE_COMP, | 2026 | PPC_FEATURE_HAS_EFP_DOUBLE_COMP, |
2027 | .cpu_user_features2 = PPC_FEATURE2_ISEL, | ||
2015 | .mmu_features = MMU_FTR_TYPE_FSL_E | MMU_FTR_BIG_PHYS, | 2028 | .mmu_features = MMU_FTR_TYPE_FSL_E | MMU_FTR_BIG_PHYS, |
2016 | .icache_bsize = 32, | 2029 | .icache_bsize = 32, |
2017 | .dcache_bsize = 32, | 2030 | .dcache_bsize = 32, |
@@ -2028,6 +2041,7 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
2028 | .cpu_name = "e500mc", | 2041 | .cpu_name = "e500mc", |
2029 | .cpu_features = CPU_FTRS_E500MC, | 2042 | .cpu_features = CPU_FTRS_E500MC, |
2030 | .cpu_user_features = COMMON_USER_BOOKE | PPC_FEATURE_HAS_FPU, | 2043 | .cpu_user_features = COMMON_USER_BOOKE | PPC_FEATURE_HAS_FPU, |
2044 | .cpu_user_features2 = PPC_FEATURE2_ISEL, | ||
2031 | .mmu_features = MMU_FTR_TYPE_FSL_E | MMU_FTR_BIG_PHYS | | 2045 | .mmu_features = MMU_FTR_TYPE_FSL_E | MMU_FTR_BIG_PHYS | |
2032 | MMU_FTR_USE_TLBILX, | 2046 | MMU_FTR_USE_TLBILX, |
2033 | .icache_bsize = 64, | 2047 | .icache_bsize = 64, |
@@ -2046,6 +2060,7 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
2046 | .cpu_name = "e5500", | 2060 | .cpu_name = "e5500", |
2047 | .cpu_features = CPU_FTRS_E5500, | 2061 | .cpu_features = CPU_FTRS_E5500, |
2048 | .cpu_user_features = COMMON_USER_BOOKE | PPC_FEATURE_HAS_FPU, | 2062 | .cpu_user_features = COMMON_USER_BOOKE | PPC_FEATURE_HAS_FPU, |
2063 | .cpu_user_features2 = PPC_FEATURE2_ISEL, | ||
2049 | .mmu_features = MMU_FTR_TYPE_FSL_E | MMU_FTR_BIG_PHYS | | 2064 | .mmu_features = MMU_FTR_TYPE_FSL_E | MMU_FTR_BIG_PHYS | |
2050 | MMU_FTR_USE_TLBILX, | 2065 | MMU_FTR_USE_TLBILX, |
2051 | .icache_bsize = 64, | 2066 | .icache_bsize = 64, |
@@ -2065,7 +2080,9 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
2065 | .pvr_value = 0x80400000, | 2080 | .pvr_value = 0x80400000, |
2066 | .cpu_name = "e6500", | 2081 | .cpu_name = "e6500", |
2067 | .cpu_features = CPU_FTRS_E6500, | 2082 | .cpu_features = CPU_FTRS_E6500, |
2068 | .cpu_user_features = COMMON_USER_BOOKE | PPC_FEATURE_HAS_FPU, | 2083 | .cpu_user_features = COMMON_USER_BOOKE | PPC_FEATURE_HAS_FPU | |
2084 | PPC_FEATURE_HAS_ALTIVEC_COMP, | ||
2085 | .cpu_user_features2 = PPC_FEATURE2_ISEL, | ||
2069 | .mmu_features = MMU_FTR_TYPE_FSL_E | MMU_FTR_BIG_PHYS | | 2086 | .mmu_features = MMU_FTR_TYPE_FSL_E | MMU_FTR_BIG_PHYS | |
2070 | MMU_FTR_USE_TLBILX, | 2087 | MMU_FTR_USE_TLBILX, |
2071 | .icache_bsize = 64, | 2088 | .icache_bsize = 64, |
@@ -2073,9 +2090,9 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
2073 | .num_pmcs = 4, | 2090 | .num_pmcs = 4, |
2074 | .oprofile_cpu_type = "ppc/e6500", | 2091 | .oprofile_cpu_type = "ppc/e6500", |
2075 | .oprofile_type = PPC_OPROFILE_FSL_EMB, | 2092 | .oprofile_type = PPC_OPROFILE_FSL_EMB, |
2076 | .cpu_setup = __setup_cpu_e5500, | 2093 | .cpu_setup = __setup_cpu_e6500, |
2077 | #ifndef CONFIG_PPC32 | 2094 | #ifndef CONFIG_PPC32 |
2078 | .cpu_restore = __restore_cpu_e5500, | 2095 | .cpu_restore = __restore_cpu_e6500, |
2079 | #endif | 2096 | #endif |
2080 | .machine_check = machine_check_e500mc, | 2097 | .machine_check = machine_check_e500mc, |
2081 | .platform = "ppce6500", | 2098 | .platform = "ppce6500", |