Path: blob/master/arch/powerpc/kernel/cpu_specs_book3s_64.h
26424 views
/* SPDX-License-Identifier: GPL-2.0-or-later */1/*2* Copyright (C) 2001 Ben. Herrenschmidt ([email protected])3*4* Modifications for ppc64:5* Copyright (C) 2003 Dave Engebretsen <[email protected]>6*/78/* NOTE:9* Unlike ppc32, ppc64 will only call cpu_setup() for the boot CPU, it's10* the responsibility of the appropriate CPU save/restore functions to11* eventually copy these settings over. Those save/restore aren't yet12* part of the cputable though. That has to be fixed for both ppc3213* and ppc6414*/15#define COMMON_USER_PPC64 (PPC_FEATURE_32 | PPC_FEATURE_HAS_FPU | \16PPC_FEATURE_HAS_MMU | PPC_FEATURE_64)17#define COMMON_USER_POWER4 (COMMON_USER_PPC64 | PPC_FEATURE_POWER4)18#define COMMON_USER_POWER5 (COMMON_USER_PPC64 | PPC_FEATURE_POWER5 |\19PPC_FEATURE_SMT | PPC_FEATURE_ICACHE_SNOOP)20#define COMMON_USER_POWER5_PLUS (COMMON_USER_PPC64 | PPC_FEATURE_POWER5_PLUS|\21PPC_FEATURE_SMT | PPC_FEATURE_ICACHE_SNOOP)22#define COMMON_USER_POWER6 (COMMON_USER_PPC64 | PPC_FEATURE_ARCH_2_05 |\23PPC_FEATURE_SMT | PPC_FEATURE_ICACHE_SNOOP | \24PPC_FEATURE_TRUE_LE | \25PPC_FEATURE_PSERIES_PERFMON_COMPAT)26#define COMMON_USER_POWER7 (COMMON_USER_PPC64 | PPC_FEATURE_ARCH_2_06 |\27PPC_FEATURE_SMT | PPC_FEATURE_ICACHE_SNOOP | \28PPC_FEATURE_TRUE_LE | \29PPC_FEATURE_PSERIES_PERFMON_COMPAT)30#define COMMON_USER2_POWER7 (PPC_FEATURE2_DSCR)31#define COMMON_USER_POWER8 (COMMON_USER_PPC64 | PPC_FEATURE_ARCH_2_06 |\32PPC_FEATURE_SMT | PPC_FEATURE_ICACHE_SNOOP | \33PPC_FEATURE_TRUE_LE | \34PPC_FEATURE_PSERIES_PERFMON_COMPAT)35#define COMMON_USER2_POWER8 (PPC_FEATURE2_ARCH_2_07 | \36PPC_FEATURE2_HTM_COMP | \37PPC_FEATURE2_HTM_NOSC_COMP | \38PPC_FEATURE2_DSCR | \39PPC_FEATURE2_ISEL | PPC_FEATURE2_TAR | \40PPC_FEATURE2_VEC_CRYPTO)41#define COMMON_USER_PA6T (COMMON_USER_PPC64 | PPC_FEATURE_PA6T |\42PPC_FEATURE_TRUE_LE | \43PPC_FEATURE_HAS_ALTIVEC_COMP)44#define COMMON_USER_POWER9 COMMON_USER_POWER845#define COMMON_USER2_POWER9 (COMMON_USER2_POWER8 | \46PPC_FEATURE2_ARCH_3_00 | \47PPC_FEATURE2_HAS_IEEE128 | \48PPC_FEATURE2_DARN | \49PPC_FEATURE2_SCV)50#define COMMON_USER_POWER10 COMMON_USER_POWER951#define COMMON_USER2_POWER10 (PPC_FEATURE2_ARCH_3_1 | \52PPC_FEATURE2_MMA | \53PPC_FEATURE2_ARCH_3_00 | \54PPC_FEATURE2_HAS_IEEE128 | \55PPC_FEATURE2_DARN | \56PPC_FEATURE2_SCV | \57PPC_FEATURE2_ARCH_2_07 | \58PPC_FEATURE2_DSCR | \59PPC_FEATURE2_ISEL | PPC_FEATURE2_TAR | \60PPC_FEATURE2_VEC_CRYPTO)6162#define COMMON_USER_POWER11 COMMON_USER_POWER1063#define COMMON_USER2_POWER11 COMMON_USER2_POWER106465static struct cpu_spec cpu_specs[] __initdata = {66{ /* PPC970 */67.pvr_mask = 0xffff0000,68.pvr_value = 0x00390000,69.cpu_name = "PPC970",70.cpu_features = CPU_FTRS_PPC970,71.cpu_user_features = COMMON_USER_POWER4 | PPC_FEATURE_HAS_ALTIVEC_COMP,72.mmu_features = MMU_FTRS_PPC970,73.icache_bsize = 128,74.dcache_bsize = 128,75.num_pmcs = 8,76.pmc_type = PPC_PMC_IBM,77.cpu_setup = __setup_cpu_ppc970,78.cpu_restore = __restore_cpu_ppc970,79.platform = "ppc970",80},81{ /* PPC970FX */82.pvr_mask = 0xffff0000,83.pvr_value = 0x003c0000,84.cpu_name = "PPC970FX",85.cpu_features = CPU_FTRS_PPC970,86.cpu_user_features = COMMON_USER_POWER4 | PPC_FEATURE_HAS_ALTIVEC_COMP,87.mmu_features = MMU_FTRS_PPC970,88.icache_bsize = 128,89.dcache_bsize = 128,90.num_pmcs = 8,91.pmc_type = PPC_PMC_IBM,92.cpu_setup = __setup_cpu_ppc970,93.cpu_restore = __restore_cpu_ppc970,94.platform = "ppc970",95},96{ /* PPC970MP DD1.0 - no DEEPNAP, use regular 970 init */97.pvr_mask = 0xffffffff,98.pvr_value = 0x00440100,99.cpu_name = "PPC970MP",100.cpu_features = CPU_FTRS_PPC970,101.cpu_user_features = COMMON_USER_POWER4 | PPC_FEATURE_HAS_ALTIVEC_COMP,102.mmu_features = MMU_FTRS_PPC970,103.icache_bsize = 128,104.dcache_bsize = 128,105.num_pmcs = 8,106.pmc_type = PPC_PMC_IBM,107.cpu_setup = __setup_cpu_ppc970,108.cpu_restore = __restore_cpu_ppc970,109.platform = "ppc970",110},111{ /* PPC970MP */112.pvr_mask = 0xffff0000,113.pvr_value = 0x00440000,114.cpu_name = "PPC970MP",115.cpu_features = CPU_FTRS_PPC970,116.cpu_user_features = COMMON_USER_POWER4 | PPC_FEATURE_HAS_ALTIVEC_COMP,117.mmu_features = MMU_FTRS_PPC970,118.icache_bsize = 128,119.dcache_bsize = 128,120.num_pmcs = 8,121.pmc_type = PPC_PMC_IBM,122.cpu_setup = __setup_cpu_ppc970MP,123.cpu_restore = __restore_cpu_ppc970,124.platform = "ppc970",125},126{ /* PPC970GX */127.pvr_mask = 0xffff0000,128.pvr_value = 0x00450000,129.cpu_name = "PPC970GX",130.cpu_features = CPU_FTRS_PPC970,131.cpu_user_features = COMMON_USER_POWER4 | PPC_FEATURE_HAS_ALTIVEC_COMP,132.mmu_features = MMU_FTRS_PPC970,133.icache_bsize = 128,134.dcache_bsize = 128,135.num_pmcs = 8,136.pmc_type = PPC_PMC_IBM,137.cpu_setup = __setup_cpu_ppc970,138.platform = "ppc970",139},140{ /* Power5 GR */141.pvr_mask = 0xffff0000,142.pvr_value = 0x003a0000,143.cpu_name = "POWER5 (gr)",144.cpu_features = CPU_FTRS_POWER5,145.cpu_user_features = COMMON_USER_POWER5,146.mmu_features = MMU_FTRS_POWER5,147.icache_bsize = 128,148.dcache_bsize = 128,149.num_pmcs = 6,150.pmc_type = PPC_PMC_IBM,151.platform = "power5",152},153{ /* Power5++ */154.pvr_mask = 0xffffff00,155.pvr_value = 0x003b0300,156.cpu_name = "POWER5+ (gs)",157.cpu_features = CPU_FTRS_POWER5,158.cpu_user_features = COMMON_USER_POWER5_PLUS,159.mmu_features = MMU_FTRS_POWER5,160.icache_bsize = 128,161.dcache_bsize = 128,162.num_pmcs = 6,163.platform = "power5+",164},165{ /* Power5 GS */166.pvr_mask = 0xffff0000,167.pvr_value = 0x003b0000,168.cpu_name = "POWER5+ (gs)",169.cpu_features = CPU_FTRS_POWER5,170.cpu_user_features = COMMON_USER_POWER5_PLUS,171.mmu_features = MMU_FTRS_POWER5,172.icache_bsize = 128,173.dcache_bsize = 128,174.num_pmcs = 6,175.pmc_type = PPC_PMC_IBM,176.platform = "power5+",177},178{ /* POWER6 in P5+ mode; 2.04-compliant processor */179.pvr_mask = 0xffffffff,180.pvr_value = 0x0f000001,181.cpu_name = "POWER5+",182.cpu_features = CPU_FTRS_POWER5,183.cpu_user_features = COMMON_USER_POWER5_PLUS,184.mmu_features = MMU_FTRS_POWER5,185.icache_bsize = 128,186.dcache_bsize = 128,187.platform = "power5+",188},189{ /* Power6 */190.pvr_mask = 0xffff0000,191.pvr_value = 0x003e0000,192.cpu_name = "POWER6 (raw)",193.cpu_features = CPU_FTRS_POWER6,194.cpu_user_features = COMMON_USER_POWER6 | PPC_FEATURE_POWER6_EXT,195.mmu_features = MMU_FTRS_POWER6,196.icache_bsize = 128,197.dcache_bsize = 128,198.num_pmcs = 6,199.pmc_type = PPC_PMC_IBM,200.platform = "power6x",201},202{ /* 2.05-compliant processor, i.e. Power6 "architected" mode */203.pvr_mask = 0xffffffff,204.pvr_value = 0x0f000002,205.cpu_name = "POWER6 (architected)",206.cpu_features = CPU_FTRS_POWER6,207.cpu_user_features = COMMON_USER_POWER6,208.mmu_features = MMU_FTRS_POWER6,209.icache_bsize = 128,210.dcache_bsize = 128,211.platform = "power6",212},213{ /* 2.06-compliant processor, i.e. Power7 "architected" mode */214.pvr_mask = 0xffffffff,215.pvr_value = 0x0f000003,216.cpu_name = "POWER7 (architected)",217.cpu_features = CPU_FTRS_POWER7,218.cpu_user_features = COMMON_USER_POWER7,219.cpu_user_features2 = COMMON_USER2_POWER7,220.mmu_features = MMU_FTRS_POWER7,221.icache_bsize = 128,222.dcache_bsize = 128,223.cpu_setup = __setup_cpu_power7,224.cpu_restore = __restore_cpu_power7,225.machine_check_early = __machine_check_early_realmode_p7,226.platform = "power7",227},228{ /* 2.07-compliant processor, i.e. Power8 "architected" mode */229.pvr_mask = 0xffffffff,230.pvr_value = 0x0f000004,231.cpu_name = "POWER8 (architected)",232.cpu_features = CPU_FTRS_POWER8,233.cpu_user_features = COMMON_USER_POWER8,234.cpu_user_features2 = COMMON_USER2_POWER8,235.mmu_features = MMU_FTRS_POWER8,236.icache_bsize = 128,237.dcache_bsize = 128,238.cpu_setup = __setup_cpu_power8,239.cpu_restore = __restore_cpu_power8,240.machine_check_early = __machine_check_early_realmode_p8,241.platform = "power8",242},243{ /* 2.07-compliant processor, HeXin C2000 processor */244.pvr_mask = 0xffff0000,245.pvr_value = 0x00660000,246.cpu_name = "HX-C2000",247.cpu_features = CPU_FTRS_POWER8,248.cpu_user_features = COMMON_USER_POWER8,249.cpu_user_features2 = COMMON_USER2_POWER8,250.mmu_features = MMU_FTRS_POWER8,251.icache_bsize = 128,252.dcache_bsize = 128,253.cpu_setup = __setup_cpu_power8,254.cpu_restore = __restore_cpu_power8,255.machine_check_early = __machine_check_early_realmode_p8,256.platform = "power8",257},258{ /* 3.00-compliant processor, i.e. Power9 "architected" mode */259.pvr_mask = 0xffffffff,260.pvr_value = 0x0f000005,261.cpu_name = "POWER9 (architected)",262.cpu_features = CPU_FTRS_POWER9,263.cpu_user_features = COMMON_USER_POWER9,264.cpu_user_features2 = COMMON_USER2_POWER9,265.mmu_features = MMU_FTRS_POWER9,266.icache_bsize = 128,267.dcache_bsize = 128,268.cpu_setup = __setup_cpu_power9,269.cpu_restore = __restore_cpu_power9,270.platform = "power9",271},272{ /* 3.1-compliant processor, i.e. Power10 "architected" mode */273.pvr_mask = 0xffffffff,274.pvr_value = 0x0f000006,275.cpu_name = "POWER10 (architected)",276.cpu_features = CPU_FTRS_POWER10,277.cpu_user_features = COMMON_USER_POWER10,278.cpu_user_features2 = COMMON_USER2_POWER10,279.mmu_features = MMU_FTRS_POWER10,280.icache_bsize = 128,281.dcache_bsize = 128,282.cpu_setup = __setup_cpu_power10,283.cpu_restore = __restore_cpu_power10,284.platform = "power10",285},286{ /* 3.1-compliant processor, i.e. Power11 "architected" mode */287.pvr_mask = 0xffffffff,288.pvr_value = 0x0f000007,289.cpu_name = "Power11 (architected)",290.cpu_features = CPU_FTRS_POWER11,291.cpu_user_features = COMMON_USER_POWER11,292.cpu_user_features2 = COMMON_USER2_POWER11,293.mmu_features = MMU_FTRS_POWER11,294.icache_bsize = 128,295.dcache_bsize = 128,296.cpu_setup = __setup_cpu_power10,297.cpu_restore = __restore_cpu_power10,298.platform = "power11",299},300{ /* Power7 */301.pvr_mask = 0xffff0000,302.pvr_value = 0x003f0000,303.cpu_name = "POWER7 (raw)",304.cpu_features = CPU_FTRS_POWER7,305.cpu_user_features = COMMON_USER_POWER7,306.cpu_user_features2 = COMMON_USER2_POWER7,307.mmu_features = MMU_FTRS_POWER7,308.icache_bsize = 128,309.dcache_bsize = 128,310.num_pmcs = 6,311.pmc_type = PPC_PMC_IBM,312.cpu_setup = __setup_cpu_power7,313.cpu_restore = __restore_cpu_power7,314.machine_check_early = __machine_check_early_realmode_p7,315.platform = "power7",316},317{ /* Power7+ */318.pvr_mask = 0xffff0000,319.pvr_value = 0x004A0000,320.cpu_name = "POWER7+ (raw)",321.cpu_features = CPU_FTRS_POWER7,322.cpu_user_features = COMMON_USER_POWER7,323.cpu_user_features2 = COMMON_USER2_POWER7,324.mmu_features = MMU_FTRS_POWER7,325.icache_bsize = 128,326.dcache_bsize = 128,327.num_pmcs = 6,328.pmc_type = PPC_PMC_IBM,329.cpu_setup = __setup_cpu_power7,330.cpu_restore = __restore_cpu_power7,331.machine_check_early = __machine_check_early_realmode_p7,332.platform = "power7+",333},334{ /* Power8E */335.pvr_mask = 0xffff0000,336.pvr_value = 0x004b0000,337.cpu_name = "POWER8E (raw)",338.cpu_features = CPU_FTRS_POWER8E,339.cpu_user_features = COMMON_USER_POWER8,340.cpu_user_features2 = COMMON_USER2_POWER8,341.mmu_features = MMU_FTRS_POWER8,342.icache_bsize = 128,343.dcache_bsize = 128,344.num_pmcs = 6,345.pmc_type = PPC_PMC_IBM,346.cpu_setup = __setup_cpu_power8,347.cpu_restore = __restore_cpu_power8,348.machine_check_early = __machine_check_early_realmode_p8,349.platform = "power8",350},351{ /* Power8NVL */352.pvr_mask = 0xffff0000,353.pvr_value = 0x004c0000,354.cpu_name = "POWER8NVL (raw)",355.cpu_features = CPU_FTRS_POWER8,356.cpu_user_features = COMMON_USER_POWER8,357.cpu_user_features2 = COMMON_USER2_POWER8,358.mmu_features = MMU_FTRS_POWER8,359.icache_bsize = 128,360.dcache_bsize = 128,361.num_pmcs = 6,362.pmc_type = PPC_PMC_IBM,363.cpu_setup = __setup_cpu_power8,364.cpu_restore = __restore_cpu_power8,365.machine_check_early = __machine_check_early_realmode_p8,366.platform = "power8",367},368{ /* Power8 */369.pvr_mask = 0xffff0000,370.pvr_value = 0x004d0000,371.cpu_name = "POWER8 (raw)",372.cpu_features = CPU_FTRS_POWER8,373.cpu_user_features = COMMON_USER_POWER8,374.cpu_user_features2 = COMMON_USER2_POWER8,375.mmu_features = MMU_FTRS_POWER8,376.icache_bsize = 128,377.dcache_bsize = 128,378.num_pmcs = 6,379.pmc_type = PPC_PMC_IBM,380.cpu_setup = __setup_cpu_power8,381.cpu_restore = __restore_cpu_power8,382.machine_check_early = __machine_check_early_realmode_p8,383.platform = "power8",384},385{ /* Power9 DD2.0 */386.pvr_mask = 0xffffefff,387.pvr_value = 0x004e0200,388.cpu_name = "POWER9 (raw)",389.cpu_features = CPU_FTRS_POWER9_DD2_0,390.cpu_user_features = COMMON_USER_POWER9,391.cpu_user_features2 = COMMON_USER2_POWER9,392.mmu_features = MMU_FTRS_POWER9,393.icache_bsize = 128,394.dcache_bsize = 128,395.num_pmcs = 6,396.pmc_type = PPC_PMC_IBM,397.cpu_setup = __setup_cpu_power9,398.cpu_restore = __restore_cpu_power9,399.machine_check_early = __machine_check_early_realmode_p9,400.platform = "power9",401},402{ /* Power9 DD 2.1 */403.pvr_mask = 0xffffefff,404.pvr_value = 0x004e0201,405.cpu_name = "POWER9 (raw)",406.cpu_features = CPU_FTRS_POWER9_DD2_1,407.cpu_user_features = COMMON_USER_POWER9,408.cpu_user_features2 = COMMON_USER2_POWER9,409.mmu_features = MMU_FTRS_POWER9,410.icache_bsize = 128,411.dcache_bsize = 128,412.num_pmcs = 6,413.pmc_type = PPC_PMC_IBM,414.cpu_setup = __setup_cpu_power9,415.cpu_restore = __restore_cpu_power9,416.machine_check_early = __machine_check_early_realmode_p9,417.platform = "power9",418},419{ /* Power9 DD2.2 */420.pvr_mask = 0xffffefff,421.pvr_value = 0x004e0202,422.cpu_name = "POWER9 (raw)",423.cpu_features = CPU_FTRS_POWER9_DD2_2,424.cpu_user_features = COMMON_USER_POWER9,425.cpu_user_features2 = COMMON_USER2_POWER9,426.mmu_features = MMU_FTRS_POWER9,427.icache_bsize = 128,428.dcache_bsize = 128,429.num_pmcs = 6,430.pmc_type = PPC_PMC_IBM,431.cpu_setup = __setup_cpu_power9,432.cpu_restore = __restore_cpu_power9,433.machine_check_early = __machine_check_early_realmode_p9,434.platform = "power9",435},436{ /* Power9 DD2.3 or later */437.pvr_mask = 0xffff0000,438.pvr_value = 0x004e0000,439.cpu_name = "POWER9 (raw)",440.cpu_features = CPU_FTRS_POWER9_DD2_3,441.cpu_user_features = COMMON_USER_POWER9,442.cpu_user_features2 = COMMON_USER2_POWER9,443.mmu_features = MMU_FTRS_POWER9,444.icache_bsize = 128,445.dcache_bsize = 128,446.num_pmcs = 6,447.pmc_type = PPC_PMC_IBM,448.cpu_setup = __setup_cpu_power9,449.cpu_restore = __restore_cpu_power9,450.machine_check_early = __machine_check_early_realmode_p9,451.platform = "power9",452},453{ /* Power10 */454.pvr_mask = 0xffff0000,455.pvr_value = 0x00800000,456.cpu_name = "POWER10 (raw)",457.cpu_features = CPU_FTRS_POWER10,458.cpu_user_features = COMMON_USER_POWER10,459.cpu_user_features2 = COMMON_USER2_POWER10,460.mmu_features = MMU_FTRS_POWER10,461.icache_bsize = 128,462.dcache_bsize = 128,463.num_pmcs = 6,464.pmc_type = PPC_PMC_IBM,465.cpu_setup = __setup_cpu_power10,466.cpu_restore = __restore_cpu_power10,467.machine_check_early = __machine_check_early_realmode_p10,468.platform = "power10",469},470{ /* Power11 */471.pvr_mask = 0xffff0000,472.pvr_value = 0x00820000,473.cpu_name = "Power11 (raw)",474.cpu_features = CPU_FTRS_POWER11,475.cpu_user_features = COMMON_USER_POWER11,476.cpu_user_features2 = COMMON_USER2_POWER11,477.mmu_features = MMU_FTRS_POWER11,478.icache_bsize = 128,479.dcache_bsize = 128,480.num_pmcs = 6,481.pmc_type = PPC_PMC_IBM,482.cpu_setup = __setup_cpu_power10,483.cpu_restore = __restore_cpu_power10,484.machine_check_early = __machine_check_early_realmode_p10,485.platform = "power11",486},487{ /* Cell Broadband Engine */488.pvr_mask = 0xffff0000,489.pvr_value = 0x00700000,490.cpu_name = "Cell Broadband Engine",491.cpu_features = CPU_FTRS_CELL,492.cpu_user_features = COMMON_USER_PPC64 | PPC_FEATURE_CELL |493PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_SMT,494.mmu_features = MMU_FTRS_CELL,495.icache_bsize = 128,496.dcache_bsize = 128,497.num_pmcs = 4,498.pmc_type = PPC_PMC_IBM,499.platform = "ppc-cell-be",500},501{ /* PA Semi PA6T */502.pvr_mask = 0x7fff0000,503.pvr_value = 0x00900000,504.cpu_name = "PA6T",505.cpu_features = CPU_FTRS_PA6T,506.cpu_user_features = COMMON_USER_PA6T,507.mmu_features = MMU_FTRS_PA6T,508.icache_bsize = 64,509.dcache_bsize = 64,510.num_pmcs = 6,511.pmc_type = PPC_PMC_PA6T,512.cpu_setup = __setup_cpu_pa6t,513.cpu_restore = __restore_cpu_pa6t,514.platform = "pa6t",515},516{ /* default match */517.pvr_mask = 0x00000000,518.pvr_value = 0x00000000,519.cpu_name = "POWER5 (compatible)",520.cpu_features = CPU_FTRS_COMPATIBLE,521.cpu_user_features = COMMON_USER_PPC64,522.mmu_features = MMU_FTRS_POWER,523.icache_bsize = 128,524.dcache_bsize = 128,525.num_pmcs = 6,526.pmc_type = PPC_PMC_IBM,527.platform = "power5",528}529};530531532