aboutsummaryrefslogtreecommitdiffstats
path: root/arch/powerpc/kernel/cputable.c
diff options
context:
space:
mode:
authorBenjamin Herrenschmidt <benh@kernel.crashing.org>2011-04-14 18:32:01 -0400
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>2011-04-26 23:02:02 -0400
commit76b4eda866c4936af8d696f040abea56bf688e16 (patch)
tree8b4b6279353fa3d726e5fa95822f0e05b27456c7 /arch/powerpc/kernel/cputable.c
parent411e689d929d5fc2e9066e30de55e8bcdbd573ad (diff)
powerpc: Add A2 cpu support
Add the cputable entry, regs and setup & restore entries for the PowerPC A2 core. Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org> Signed-off-by: Michael Ellerman <michael@ellerman.id.au> Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Diffstat (limited to 'arch/powerpc/kernel/cputable.c')
-rw-r--r--arch/powerpc/kernel/cputable.c25
1 files changed, 23 insertions, 2 deletions
diff --git a/arch/powerpc/kernel/cputable.c b/arch/powerpc/kernel/cputable.c
index b65b4908d3c7..3d7b65ad4962 100644
--- a/arch/powerpc/kernel/cputable.c
+++ b/arch/powerpc/kernel/cputable.c
@@ -62,10 +62,12 @@ extern void __setup_cpu_745x(unsigned long offset, struct cpu_spec* spec);
62extern void __setup_cpu_ppc970(unsigned long offset, struct cpu_spec* spec); 62extern void __setup_cpu_ppc970(unsigned long offset, struct cpu_spec* spec);
63extern void __setup_cpu_ppc970MP(unsigned long offset, struct cpu_spec* spec); 63extern void __setup_cpu_ppc970MP(unsigned long offset, struct cpu_spec* spec);
64extern void __setup_cpu_pa6t(unsigned long offset, struct cpu_spec* spec); 64extern void __setup_cpu_pa6t(unsigned long offset, struct cpu_spec* spec);
65extern void __setup_cpu_a2(unsigned long offset, struct cpu_spec* spec);
65extern void __restore_cpu_pa6t(void); 66extern void __restore_cpu_pa6t(void);
66extern void __restore_cpu_ppc970(void); 67extern void __restore_cpu_ppc970(void);
67extern void __setup_cpu_power7(unsigned long offset, struct cpu_spec* spec); 68extern void __setup_cpu_power7(unsigned long offset, struct cpu_spec* spec);
68extern void __restore_cpu_power7(void); 69extern void __restore_cpu_power7(void);
70extern void __restore_cpu_a2(void);
69#endif /* CONFIG_PPC64 */ 71#endif /* CONFIG_PPC64 */
70#if defined(CONFIG_E500) 72#if defined(CONFIG_E500)
71extern void __setup_cpu_e5500(unsigned long offset, struct cpu_spec* spec); 73extern void __setup_cpu_e5500(unsigned long offset, struct cpu_spec* spec);
@@ -2011,7 +2013,26 @@ static struct cpu_spec __initdata cpu_specs[] = {
2011#endif /* CONFIG_PPC32 */ 2013#endif /* CONFIG_PPC32 */
2012#endif /* CONFIG_E500 */ 2014#endif /* CONFIG_E500 */
2013 2015
2014#ifdef CONFIG_PPC_BOOK3E_64 2016#ifdef CONFIG_PPC_A2
2017 { /* Standard A2 (>= DD2) + FPU core */
2018 .pvr_mask = 0xffff0000,
2019 .pvr_value = 0x00480000,
2020 .cpu_name = "A2 (>= DD2)",
2021 .cpu_features = CPU_FTRS_A2,
2022 .cpu_user_features = COMMON_USER_PPC64,
2023 .mmu_features = MMU_FTR_TYPE_3E | MMU_FTR_USE_TLBILX |
2024 MMU_FTR_USE_TLBIVAX_BCAST |
2025 MMU_FTR_LOCK_BCAST_INVAL |
2026 MMU_FTR_USE_TLBRSRV |
2027 MMU_FTR_USE_PAIRED_MAS,
2028 .icache_bsize = 64,
2029 .dcache_bsize = 64,
2030 .num_pmcs = 0,
2031 .cpu_setup = __setup_cpu_a2,
2032 .cpu_restore = __restore_cpu_a2,
2033 .machine_check = machine_check_generic,
2034 .platform = "ppca2",
2035 },
2015 { /* This is a default entry to get going, to be replaced by 2036 { /* This is a default entry to get going, to be replaced by
2016 * a real one at some stage 2037 * a real one at some stage
2017 */ 2038 */
@@ -2032,7 +2053,7 @@ static struct cpu_spec __initdata cpu_specs[] = {
2032 .machine_check = machine_check_generic, 2053 .machine_check = machine_check_generic,
2033 .platform = "power6", 2054 .platform = "power6",
2034 }, 2055 },
2035#endif 2056#endif /* CONFIG_PPC_A2 */
2036}; 2057};
2037 2058
2038static struct cpu_spec the_cpu_spec; 2059static struct cpu_spec the_cpu_spec;