c2ed087ed3
Add CPU table entries for raw and architected mode. Most fields are copied from the Power10 table entries. CPU, MMU and user (ELF_HWCAP) features are unchanged vs P10. However userspace can detect P11 because the AT_PLATFORM value changes to "power11". The logical PVR value of 0x0F000007, passed to firmware via the ibm_arch_vec, indicates the kernel can support a P11 compatible CPU, which means at least ISA v3.1 compliant. Signed-off-by: Madhavan Srinivasan <maddy@linux.ibm.com> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Link: https://msgid.link/20240221044623.1598642-1-mpe@ellerman.id.au
531 lines
17 KiB
C
531 lines
17 KiB
C
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
|
/*
|
|
* Copyright (C) 2001 Ben. Herrenschmidt (benh@kernel.crashing.org)
|
|
*
|
|
* Modifications for ppc64:
|
|
* Copyright (C) 2003 Dave Engebretsen <engebret@us.ibm.com>
|
|
*/
|
|
|
|
/* NOTE:
|
|
* Unlike ppc32, ppc64 will only call cpu_setup() for the boot CPU, it's
|
|
* the responsibility of the appropriate CPU save/restore functions to
|
|
* eventually copy these settings over. Those save/restore aren't yet
|
|
* part of the cputable though. That has to be fixed for both ppc32
|
|
* and ppc64
|
|
*/
|
|
#define COMMON_USER_PPC64 (PPC_FEATURE_32 | PPC_FEATURE_HAS_FPU | \
|
|
PPC_FEATURE_HAS_MMU | PPC_FEATURE_64)
|
|
#define COMMON_USER_POWER4 (COMMON_USER_PPC64 | PPC_FEATURE_POWER4)
|
|
#define COMMON_USER_POWER5 (COMMON_USER_PPC64 | PPC_FEATURE_POWER5 |\
|
|
PPC_FEATURE_SMT | PPC_FEATURE_ICACHE_SNOOP)
|
|
#define COMMON_USER_POWER5_PLUS (COMMON_USER_PPC64 | PPC_FEATURE_POWER5_PLUS|\
|
|
PPC_FEATURE_SMT | PPC_FEATURE_ICACHE_SNOOP)
|
|
#define COMMON_USER_POWER6 (COMMON_USER_PPC64 | PPC_FEATURE_ARCH_2_05 |\
|
|
PPC_FEATURE_SMT | PPC_FEATURE_ICACHE_SNOOP | \
|
|
PPC_FEATURE_TRUE_LE | \
|
|
PPC_FEATURE_PSERIES_PERFMON_COMPAT)
|
|
#define COMMON_USER_POWER7 (COMMON_USER_PPC64 | PPC_FEATURE_ARCH_2_06 |\
|
|
PPC_FEATURE_SMT | PPC_FEATURE_ICACHE_SNOOP | \
|
|
PPC_FEATURE_TRUE_LE | \
|
|
PPC_FEATURE_PSERIES_PERFMON_COMPAT)
|
|
#define COMMON_USER2_POWER7 (PPC_FEATURE2_DSCR)
|
|
#define COMMON_USER_POWER8 (COMMON_USER_PPC64 | PPC_FEATURE_ARCH_2_06 |\
|
|
PPC_FEATURE_SMT | PPC_FEATURE_ICACHE_SNOOP | \
|
|
PPC_FEATURE_TRUE_LE | \
|
|
PPC_FEATURE_PSERIES_PERFMON_COMPAT)
|
|
#define COMMON_USER2_POWER8 (PPC_FEATURE2_ARCH_2_07 | \
|
|
PPC_FEATURE2_HTM_COMP | \
|
|
PPC_FEATURE2_HTM_NOSC_COMP | \
|
|
PPC_FEATURE2_DSCR | \
|
|
PPC_FEATURE2_ISEL | PPC_FEATURE2_TAR | \
|
|
PPC_FEATURE2_VEC_CRYPTO)
|
|
#define COMMON_USER_PA6T (COMMON_USER_PPC64 | PPC_FEATURE_PA6T |\
|
|
PPC_FEATURE_TRUE_LE | \
|
|
PPC_FEATURE_HAS_ALTIVEC_COMP)
|
|
#define COMMON_USER_POWER9 COMMON_USER_POWER8
|
|
#define COMMON_USER2_POWER9 (COMMON_USER2_POWER8 | \
|
|
PPC_FEATURE2_ARCH_3_00 | \
|
|
PPC_FEATURE2_HAS_IEEE128 | \
|
|
PPC_FEATURE2_DARN | \
|
|
PPC_FEATURE2_SCV)
|
|
#define COMMON_USER_POWER10 COMMON_USER_POWER9
|
|
#define COMMON_USER2_POWER10 (PPC_FEATURE2_ARCH_3_1 | \
|
|
PPC_FEATURE2_MMA | \
|
|
PPC_FEATURE2_ARCH_3_00 | \
|
|
PPC_FEATURE2_HAS_IEEE128 | \
|
|
PPC_FEATURE2_DARN | \
|
|
PPC_FEATURE2_SCV | \
|
|
PPC_FEATURE2_ARCH_2_07 | \
|
|
PPC_FEATURE2_DSCR | \
|
|
PPC_FEATURE2_ISEL | PPC_FEATURE2_TAR | \
|
|
PPC_FEATURE2_VEC_CRYPTO)
|
|
|
|
#define COMMON_USER_POWER11 COMMON_USER_POWER10
|
|
#define COMMON_USER2_POWER11 COMMON_USER2_POWER10
|
|
|
|
static struct cpu_spec cpu_specs[] __initdata = {
|
|
{ /* PPC970 */
|
|
.pvr_mask = 0xffff0000,
|
|
.pvr_value = 0x00390000,
|
|
.cpu_name = "PPC970",
|
|
.cpu_features = CPU_FTRS_PPC970,
|
|
.cpu_user_features = COMMON_USER_POWER4 | PPC_FEATURE_HAS_ALTIVEC_COMP,
|
|
.mmu_features = MMU_FTRS_PPC970,
|
|
.icache_bsize = 128,
|
|
.dcache_bsize = 128,
|
|
.num_pmcs = 8,
|
|
.pmc_type = PPC_PMC_IBM,
|
|
.cpu_setup = __setup_cpu_ppc970,
|
|
.cpu_restore = __restore_cpu_ppc970,
|
|
.platform = "ppc970",
|
|
},
|
|
{ /* PPC970FX */
|
|
.pvr_mask = 0xffff0000,
|
|
.pvr_value = 0x003c0000,
|
|
.cpu_name = "PPC970FX",
|
|
.cpu_features = CPU_FTRS_PPC970,
|
|
.cpu_user_features = COMMON_USER_POWER4 | PPC_FEATURE_HAS_ALTIVEC_COMP,
|
|
.mmu_features = MMU_FTRS_PPC970,
|
|
.icache_bsize = 128,
|
|
.dcache_bsize = 128,
|
|
.num_pmcs = 8,
|
|
.pmc_type = PPC_PMC_IBM,
|
|
.cpu_setup = __setup_cpu_ppc970,
|
|
.cpu_restore = __restore_cpu_ppc970,
|
|
.platform = "ppc970",
|
|
},
|
|
{ /* PPC970MP DD1.0 - no DEEPNAP, use regular 970 init */
|
|
.pvr_mask = 0xffffffff,
|
|
.pvr_value = 0x00440100,
|
|
.cpu_name = "PPC970MP",
|
|
.cpu_features = CPU_FTRS_PPC970,
|
|
.cpu_user_features = COMMON_USER_POWER4 | PPC_FEATURE_HAS_ALTIVEC_COMP,
|
|
.mmu_features = MMU_FTRS_PPC970,
|
|
.icache_bsize = 128,
|
|
.dcache_bsize = 128,
|
|
.num_pmcs = 8,
|
|
.pmc_type = PPC_PMC_IBM,
|
|
.cpu_setup = __setup_cpu_ppc970,
|
|
.cpu_restore = __restore_cpu_ppc970,
|
|
.platform = "ppc970",
|
|
},
|
|
{ /* PPC970MP */
|
|
.pvr_mask = 0xffff0000,
|
|
.pvr_value = 0x00440000,
|
|
.cpu_name = "PPC970MP",
|
|
.cpu_features = CPU_FTRS_PPC970,
|
|
.cpu_user_features = COMMON_USER_POWER4 | PPC_FEATURE_HAS_ALTIVEC_COMP,
|
|
.mmu_features = MMU_FTRS_PPC970,
|
|
.icache_bsize = 128,
|
|
.dcache_bsize = 128,
|
|
.num_pmcs = 8,
|
|
.pmc_type = PPC_PMC_IBM,
|
|
.cpu_setup = __setup_cpu_ppc970MP,
|
|
.cpu_restore = __restore_cpu_ppc970,
|
|
.platform = "ppc970",
|
|
},
|
|
{ /* PPC970GX */
|
|
.pvr_mask = 0xffff0000,
|
|
.pvr_value = 0x00450000,
|
|
.cpu_name = "PPC970GX",
|
|
.cpu_features = CPU_FTRS_PPC970,
|
|
.cpu_user_features = COMMON_USER_POWER4 | PPC_FEATURE_HAS_ALTIVEC_COMP,
|
|
.mmu_features = MMU_FTRS_PPC970,
|
|
.icache_bsize = 128,
|
|
.dcache_bsize = 128,
|
|
.num_pmcs = 8,
|
|
.pmc_type = PPC_PMC_IBM,
|
|
.cpu_setup = __setup_cpu_ppc970,
|
|
.platform = "ppc970",
|
|
},
|
|
{ /* Power5 GR */
|
|
.pvr_mask = 0xffff0000,
|
|
.pvr_value = 0x003a0000,
|
|
.cpu_name = "POWER5 (gr)",
|
|
.cpu_features = CPU_FTRS_POWER5,
|
|
.cpu_user_features = COMMON_USER_POWER5,
|
|
.mmu_features = MMU_FTRS_POWER5,
|
|
.icache_bsize = 128,
|
|
.dcache_bsize = 128,
|
|
.num_pmcs = 6,
|
|
.pmc_type = PPC_PMC_IBM,
|
|
.platform = "power5",
|
|
},
|
|
{ /* Power5++ */
|
|
.pvr_mask = 0xffffff00,
|
|
.pvr_value = 0x003b0300,
|
|
.cpu_name = "POWER5+ (gs)",
|
|
.cpu_features = CPU_FTRS_POWER5,
|
|
.cpu_user_features = COMMON_USER_POWER5_PLUS,
|
|
.mmu_features = MMU_FTRS_POWER5,
|
|
.icache_bsize = 128,
|
|
.dcache_bsize = 128,
|
|
.num_pmcs = 6,
|
|
.platform = "power5+",
|
|
},
|
|
{ /* Power5 GS */
|
|
.pvr_mask = 0xffff0000,
|
|
.pvr_value = 0x003b0000,
|
|
.cpu_name = "POWER5+ (gs)",
|
|
.cpu_features = CPU_FTRS_POWER5,
|
|
.cpu_user_features = COMMON_USER_POWER5_PLUS,
|
|
.mmu_features = MMU_FTRS_POWER5,
|
|
.icache_bsize = 128,
|
|
.dcache_bsize = 128,
|
|
.num_pmcs = 6,
|
|
.pmc_type = PPC_PMC_IBM,
|
|
.platform = "power5+",
|
|
},
|
|
{ /* POWER6 in P5+ mode; 2.04-compliant processor */
|
|
.pvr_mask = 0xffffffff,
|
|
.pvr_value = 0x0f000001,
|
|
.cpu_name = "POWER5+",
|
|
.cpu_features = CPU_FTRS_POWER5,
|
|
.cpu_user_features = COMMON_USER_POWER5_PLUS,
|
|
.mmu_features = MMU_FTRS_POWER5,
|
|
.icache_bsize = 128,
|
|
.dcache_bsize = 128,
|
|
.platform = "power5+",
|
|
},
|
|
{ /* Power6 */
|
|
.pvr_mask = 0xffff0000,
|
|
.pvr_value = 0x003e0000,
|
|
.cpu_name = "POWER6 (raw)",
|
|
.cpu_features = CPU_FTRS_POWER6,
|
|
.cpu_user_features = COMMON_USER_POWER6 | PPC_FEATURE_POWER6_EXT,
|
|
.mmu_features = MMU_FTRS_POWER6,
|
|
.icache_bsize = 128,
|
|
.dcache_bsize = 128,
|
|
.num_pmcs = 6,
|
|
.pmc_type = PPC_PMC_IBM,
|
|
.platform = "power6x",
|
|
},
|
|
{ /* 2.05-compliant processor, i.e. Power6 "architected" mode */
|
|
.pvr_mask = 0xffffffff,
|
|
.pvr_value = 0x0f000002,
|
|
.cpu_name = "POWER6 (architected)",
|
|
.cpu_features = CPU_FTRS_POWER6,
|
|
.cpu_user_features = COMMON_USER_POWER6,
|
|
.mmu_features = MMU_FTRS_POWER6,
|
|
.icache_bsize = 128,
|
|
.dcache_bsize = 128,
|
|
.platform = "power6",
|
|
},
|
|
{ /* 2.06-compliant processor, i.e. Power7 "architected" mode */
|
|
.pvr_mask = 0xffffffff,
|
|
.pvr_value = 0x0f000003,
|
|
.cpu_name = "POWER7 (architected)",
|
|
.cpu_features = CPU_FTRS_POWER7,
|
|
.cpu_user_features = COMMON_USER_POWER7,
|
|
.cpu_user_features2 = COMMON_USER2_POWER7,
|
|
.mmu_features = MMU_FTRS_POWER7,
|
|
.icache_bsize = 128,
|
|
.dcache_bsize = 128,
|
|
.cpu_setup = __setup_cpu_power7,
|
|
.cpu_restore = __restore_cpu_power7,
|
|
.machine_check_early = __machine_check_early_realmode_p7,
|
|
.platform = "power7",
|
|
},
|
|
{ /* 2.07-compliant processor, i.e. Power8 "architected" mode */
|
|
.pvr_mask = 0xffffffff,
|
|
.pvr_value = 0x0f000004,
|
|
.cpu_name = "POWER8 (architected)",
|
|
.cpu_features = CPU_FTRS_POWER8,
|
|
.cpu_user_features = COMMON_USER_POWER8,
|
|
.cpu_user_features2 = COMMON_USER2_POWER8,
|
|
.mmu_features = MMU_FTRS_POWER8,
|
|
.icache_bsize = 128,
|
|
.dcache_bsize = 128,
|
|
.cpu_setup = __setup_cpu_power8,
|
|
.cpu_restore = __restore_cpu_power8,
|
|
.machine_check_early = __machine_check_early_realmode_p8,
|
|
.platform = "power8",
|
|
},
|
|
{ /* 2.07-compliant processor, HeXin C2000 processor */
|
|
.pvr_mask = 0xffff0000,
|
|
.pvr_value = 0x00660000,
|
|
.cpu_name = "HX-C2000",
|
|
.cpu_features = CPU_FTRS_POWER8,
|
|
.cpu_user_features = COMMON_USER_POWER8,
|
|
.cpu_user_features2 = COMMON_USER2_POWER8,
|
|
.mmu_features = MMU_FTRS_POWER8,
|
|
.icache_bsize = 128,
|
|
.dcache_bsize = 128,
|
|
.cpu_setup = __setup_cpu_power8,
|
|
.cpu_restore = __restore_cpu_power8,
|
|
.machine_check_early = __machine_check_early_realmode_p8,
|
|
.platform = "power8",
|
|
},
|
|
{ /* 3.00-compliant processor, i.e. Power9 "architected" mode */
|
|
.pvr_mask = 0xffffffff,
|
|
.pvr_value = 0x0f000005,
|
|
.cpu_name = "POWER9 (architected)",
|
|
.cpu_features = CPU_FTRS_POWER9,
|
|
.cpu_user_features = COMMON_USER_POWER9,
|
|
.cpu_user_features2 = COMMON_USER2_POWER9,
|
|
.mmu_features = MMU_FTRS_POWER9,
|
|
.icache_bsize = 128,
|
|
.dcache_bsize = 128,
|
|
.cpu_setup = __setup_cpu_power9,
|
|
.cpu_restore = __restore_cpu_power9,
|
|
.platform = "power9",
|
|
},
|
|
{ /* 3.1-compliant processor, i.e. Power10 "architected" mode */
|
|
.pvr_mask = 0xffffffff,
|
|
.pvr_value = 0x0f000006,
|
|
.cpu_name = "POWER10 (architected)",
|
|
.cpu_features = CPU_FTRS_POWER10,
|
|
.cpu_user_features = COMMON_USER_POWER10,
|
|
.cpu_user_features2 = COMMON_USER2_POWER10,
|
|
.mmu_features = MMU_FTRS_POWER10,
|
|
.icache_bsize = 128,
|
|
.dcache_bsize = 128,
|
|
.cpu_setup = __setup_cpu_power10,
|
|
.cpu_restore = __restore_cpu_power10,
|
|
.platform = "power10",
|
|
},
|
|
{ /* 3.1-compliant processor, i.e. Power11 "architected" mode */
|
|
.pvr_mask = 0xffffffff,
|
|
.pvr_value = 0x0f000007,
|
|
.cpu_name = "Power11 (architected)",
|
|
.cpu_features = CPU_FTRS_POWER11,
|
|
.cpu_user_features = COMMON_USER_POWER11,
|
|
.cpu_user_features2 = COMMON_USER2_POWER11,
|
|
.mmu_features = MMU_FTRS_POWER11,
|
|
.icache_bsize = 128,
|
|
.dcache_bsize = 128,
|
|
.cpu_setup = __setup_cpu_power10,
|
|
.cpu_restore = __restore_cpu_power10,
|
|
.platform = "power11",
|
|
},
|
|
{ /* Power7 */
|
|
.pvr_mask = 0xffff0000,
|
|
.pvr_value = 0x003f0000,
|
|
.cpu_name = "POWER7 (raw)",
|
|
.cpu_features = CPU_FTRS_POWER7,
|
|
.cpu_user_features = COMMON_USER_POWER7,
|
|
.cpu_user_features2 = COMMON_USER2_POWER7,
|
|
.mmu_features = MMU_FTRS_POWER7,
|
|
.icache_bsize = 128,
|
|
.dcache_bsize = 128,
|
|
.num_pmcs = 6,
|
|
.pmc_type = PPC_PMC_IBM,
|
|
.cpu_setup = __setup_cpu_power7,
|
|
.cpu_restore = __restore_cpu_power7,
|
|
.machine_check_early = __machine_check_early_realmode_p7,
|
|
.platform = "power7",
|
|
},
|
|
{ /* Power7+ */
|
|
.pvr_mask = 0xffff0000,
|
|
.pvr_value = 0x004A0000,
|
|
.cpu_name = "POWER7+ (raw)",
|
|
.cpu_features = CPU_FTRS_POWER7,
|
|
.cpu_user_features = COMMON_USER_POWER7,
|
|
.cpu_user_features2 = COMMON_USER2_POWER7,
|
|
.mmu_features = MMU_FTRS_POWER7,
|
|
.icache_bsize = 128,
|
|
.dcache_bsize = 128,
|
|
.num_pmcs = 6,
|
|
.pmc_type = PPC_PMC_IBM,
|
|
.cpu_setup = __setup_cpu_power7,
|
|
.cpu_restore = __restore_cpu_power7,
|
|
.machine_check_early = __machine_check_early_realmode_p7,
|
|
.platform = "power7+",
|
|
},
|
|
{ /* Power8E */
|
|
.pvr_mask = 0xffff0000,
|
|
.pvr_value = 0x004b0000,
|
|
.cpu_name = "POWER8E (raw)",
|
|
.cpu_features = CPU_FTRS_POWER8E,
|
|
.cpu_user_features = COMMON_USER_POWER8,
|
|
.cpu_user_features2 = COMMON_USER2_POWER8,
|
|
.mmu_features = MMU_FTRS_POWER8,
|
|
.icache_bsize = 128,
|
|
.dcache_bsize = 128,
|
|
.num_pmcs = 6,
|
|
.pmc_type = PPC_PMC_IBM,
|
|
.cpu_setup = __setup_cpu_power8,
|
|
.cpu_restore = __restore_cpu_power8,
|
|
.machine_check_early = __machine_check_early_realmode_p8,
|
|
.platform = "power8",
|
|
},
|
|
{ /* Power8NVL */
|
|
.pvr_mask = 0xffff0000,
|
|
.pvr_value = 0x004c0000,
|
|
.cpu_name = "POWER8NVL (raw)",
|
|
.cpu_features = CPU_FTRS_POWER8,
|
|
.cpu_user_features = COMMON_USER_POWER8,
|
|
.cpu_user_features2 = COMMON_USER2_POWER8,
|
|
.mmu_features = MMU_FTRS_POWER8,
|
|
.icache_bsize = 128,
|
|
.dcache_bsize = 128,
|
|
.num_pmcs = 6,
|
|
.pmc_type = PPC_PMC_IBM,
|
|
.cpu_setup = __setup_cpu_power8,
|
|
.cpu_restore = __restore_cpu_power8,
|
|
.machine_check_early = __machine_check_early_realmode_p8,
|
|
.platform = "power8",
|
|
},
|
|
{ /* Power8 */
|
|
.pvr_mask = 0xffff0000,
|
|
.pvr_value = 0x004d0000,
|
|
.cpu_name = "POWER8 (raw)",
|
|
.cpu_features = CPU_FTRS_POWER8,
|
|
.cpu_user_features = COMMON_USER_POWER8,
|
|
.cpu_user_features2 = COMMON_USER2_POWER8,
|
|
.mmu_features = MMU_FTRS_POWER8,
|
|
.icache_bsize = 128,
|
|
.dcache_bsize = 128,
|
|
.num_pmcs = 6,
|
|
.pmc_type = PPC_PMC_IBM,
|
|
.cpu_setup = __setup_cpu_power8,
|
|
.cpu_restore = __restore_cpu_power8,
|
|
.machine_check_early = __machine_check_early_realmode_p8,
|
|
.platform = "power8",
|
|
},
|
|
{ /* Power9 DD2.0 */
|
|
.pvr_mask = 0xffffefff,
|
|
.pvr_value = 0x004e0200,
|
|
.cpu_name = "POWER9 (raw)",
|
|
.cpu_features = CPU_FTRS_POWER9_DD2_0,
|
|
.cpu_user_features = COMMON_USER_POWER9,
|
|
.cpu_user_features2 = COMMON_USER2_POWER9,
|
|
.mmu_features = MMU_FTRS_POWER9,
|
|
.icache_bsize = 128,
|
|
.dcache_bsize = 128,
|
|
.num_pmcs = 6,
|
|
.pmc_type = PPC_PMC_IBM,
|
|
.cpu_setup = __setup_cpu_power9,
|
|
.cpu_restore = __restore_cpu_power9,
|
|
.machine_check_early = __machine_check_early_realmode_p9,
|
|
.platform = "power9",
|
|
},
|
|
{ /* Power9 DD 2.1 */
|
|
.pvr_mask = 0xffffefff,
|
|
.pvr_value = 0x004e0201,
|
|
.cpu_name = "POWER9 (raw)",
|
|
.cpu_features = CPU_FTRS_POWER9_DD2_1,
|
|
.cpu_user_features = COMMON_USER_POWER9,
|
|
.cpu_user_features2 = COMMON_USER2_POWER9,
|
|
.mmu_features = MMU_FTRS_POWER9,
|
|
.icache_bsize = 128,
|
|
.dcache_bsize = 128,
|
|
.num_pmcs = 6,
|
|
.pmc_type = PPC_PMC_IBM,
|
|
.cpu_setup = __setup_cpu_power9,
|
|
.cpu_restore = __restore_cpu_power9,
|
|
.machine_check_early = __machine_check_early_realmode_p9,
|
|
.platform = "power9",
|
|
},
|
|
{ /* Power9 DD2.2 */
|
|
.pvr_mask = 0xffffefff,
|
|
.pvr_value = 0x004e0202,
|
|
.cpu_name = "POWER9 (raw)",
|
|
.cpu_features = CPU_FTRS_POWER9_DD2_2,
|
|
.cpu_user_features = COMMON_USER_POWER9,
|
|
.cpu_user_features2 = COMMON_USER2_POWER9,
|
|
.mmu_features = MMU_FTRS_POWER9,
|
|
.icache_bsize = 128,
|
|
.dcache_bsize = 128,
|
|
.num_pmcs = 6,
|
|
.pmc_type = PPC_PMC_IBM,
|
|
.cpu_setup = __setup_cpu_power9,
|
|
.cpu_restore = __restore_cpu_power9,
|
|
.machine_check_early = __machine_check_early_realmode_p9,
|
|
.platform = "power9",
|
|
},
|
|
{ /* Power9 DD2.3 or later */
|
|
.pvr_mask = 0xffff0000,
|
|
.pvr_value = 0x004e0000,
|
|
.cpu_name = "POWER9 (raw)",
|
|
.cpu_features = CPU_FTRS_POWER9_DD2_3,
|
|
.cpu_user_features = COMMON_USER_POWER9,
|
|
.cpu_user_features2 = COMMON_USER2_POWER9,
|
|
.mmu_features = MMU_FTRS_POWER9,
|
|
.icache_bsize = 128,
|
|
.dcache_bsize = 128,
|
|
.num_pmcs = 6,
|
|
.pmc_type = PPC_PMC_IBM,
|
|
.cpu_setup = __setup_cpu_power9,
|
|
.cpu_restore = __restore_cpu_power9,
|
|
.machine_check_early = __machine_check_early_realmode_p9,
|
|
.platform = "power9",
|
|
},
|
|
{ /* Power10 */
|
|
.pvr_mask = 0xffff0000,
|
|
.pvr_value = 0x00800000,
|
|
.cpu_name = "POWER10 (raw)",
|
|
.cpu_features = CPU_FTRS_POWER10,
|
|
.cpu_user_features = COMMON_USER_POWER10,
|
|
.cpu_user_features2 = COMMON_USER2_POWER10,
|
|
.mmu_features = MMU_FTRS_POWER10,
|
|
.icache_bsize = 128,
|
|
.dcache_bsize = 128,
|
|
.num_pmcs = 6,
|
|
.pmc_type = PPC_PMC_IBM,
|
|
.cpu_setup = __setup_cpu_power10,
|
|
.cpu_restore = __restore_cpu_power10,
|
|
.machine_check_early = __machine_check_early_realmode_p10,
|
|
.platform = "power10",
|
|
},
|
|
{ /* Power11 */
|
|
.pvr_mask = 0xffff0000,
|
|
.pvr_value = 0x00820000,
|
|
.cpu_name = "Power11 (raw)",
|
|
.cpu_features = CPU_FTRS_POWER11,
|
|
.cpu_user_features = COMMON_USER_POWER11,
|
|
.cpu_user_features2 = COMMON_USER2_POWER11,
|
|
.mmu_features = MMU_FTRS_POWER11,
|
|
.icache_bsize = 128,
|
|
.dcache_bsize = 128,
|
|
.num_pmcs = 6,
|
|
.pmc_type = PPC_PMC_IBM,
|
|
.cpu_setup = __setup_cpu_power10,
|
|
.cpu_restore = __restore_cpu_power10,
|
|
.machine_check_early = __machine_check_early_realmode_p10,
|
|
.platform = "power11",
|
|
},
|
|
{ /* Cell Broadband Engine */
|
|
.pvr_mask = 0xffff0000,
|
|
.pvr_value = 0x00700000,
|
|
.cpu_name = "Cell Broadband Engine",
|
|
.cpu_features = CPU_FTRS_CELL,
|
|
.cpu_user_features = COMMON_USER_PPC64 | PPC_FEATURE_CELL |
|
|
PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_SMT,
|
|
.mmu_features = MMU_FTRS_CELL,
|
|
.icache_bsize = 128,
|
|
.dcache_bsize = 128,
|
|
.num_pmcs = 4,
|
|
.pmc_type = PPC_PMC_IBM,
|
|
.platform = "ppc-cell-be",
|
|
},
|
|
{ /* PA Semi PA6T */
|
|
.pvr_mask = 0x7fff0000,
|
|
.pvr_value = 0x00900000,
|
|
.cpu_name = "PA6T",
|
|
.cpu_features = CPU_FTRS_PA6T,
|
|
.cpu_user_features = COMMON_USER_PA6T,
|
|
.mmu_features = MMU_FTRS_PA6T,
|
|
.icache_bsize = 64,
|
|
.dcache_bsize = 64,
|
|
.num_pmcs = 6,
|
|
.pmc_type = PPC_PMC_PA6T,
|
|
.cpu_setup = __setup_cpu_pa6t,
|
|
.cpu_restore = __restore_cpu_pa6t,
|
|
.platform = "pa6t",
|
|
},
|
|
{ /* default match */
|
|
.pvr_mask = 0x00000000,
|
|
.pvr_value = 0x00000000,
|
|
.cpu_name = "POWER5 (compatible)",
|
|
.cpu_features = CPU_FTRS_COMPATIBLE,
|
|
.cpu_user_features = COMMON_USER_PPC64,
|
|
.mmu_features = MMU_FTRS_POWER,
|
|
.icache_bsize = 128,
|
|
.dcache_bsize = 128,
|
|
.num_pmcs = 6,
|
|
.pmc_type = PPC_PMC_IBM,
|
|
.platform = "power5",
|
|
}
|
|
};
|