e320a76db4
cpu_specs[] is full of #ifdefs depending on the different types of CPU. CPUs are mutually exclusive, it is therefore possible to split cpu_specs[] into smaller more readable pieces. Create cpu_specs_XXX.h that will each be dedicated on one of the following mutually exclusive families: - 40x - 44x - 47x - 8xx - e500 - book3s/32 - book3s/64 In book3s/32, the block for 603 has been moved in front in order to not have two 604 blocks. Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu> [mpe: Fix CONFIG_47x to be CONFIG_PPC_47x, tweak some formatting] Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Link: https://lore.kernel.org/r/a44b865e0318286155273b10cdf524ab697928c1.1663606875.git.christophe.leroy@csgroup.eu
281 lines
8.1 KiB
C
281 lines
8.1 KiB
C
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
|
/*
|
|
* Copyright (C) 2001 Ben. Herrenschmidt (benh@kernel.crashing.org)
|
|
*/
|
|
|
|
static struct cpu_spec cpu_specs[] __initdata = {
|
|
{ /* STB 04xxx */
|
|
.pvr_mask = 0xffff0000,
|
|
.pvr_value = 0x41810000,
|
|
.cpu_name = "STB04xxx",
|
|
.cpu_features = CPU_FTRS_40X,
|
|
.cpu_user_features = PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU |
|
|
PPC_FEATURE_HAS_4xxMAC,
|
|
.mmu_features = MMU_FTR_TYPE_40x,
|
|
.icache_bsize = 32,
|
|
.dcache_bsize = 32,
|
|
.machine_check = machine_check_4xx,
|
|
.platform = "ppc405",
|
|
},
|
|
{ /* NP405L */
|
|
.pvr_mask = 0xffff0000,
|
|
.pvr_value = 0x41610000,
|
|
.cpu_name = "NP405L",
|
|
.cpu_features = CPU_FTRS_40X,
|
|
.cpu_user_features = PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU |
|
|
PPC_FEATURE_HAS_4xxMAC,
|
|
.mmu_features = MMU_FTR_TYPE_40x,
|
|
.icache_bsize = 32,
|
|
.dcache_bsize = 32,
|
|
.machine_check = machine_check_4xx,
|
|
.platform = "ppc405",
|
|
},
|
|
{ /* NP4GS3 */
|
|
.pvr_mask = 0xffff0000,
|
|
.pvr_value = 0x40B10000,
|
|
.cpu_name = "NP4GS3",
|
|
.cpu_features = CPU_FTRS_40X,
|
|
.cpu_user_features = PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU |
|
|
PPC_FEATURE_HAS_4xxMAC,
|
|
.mmu_features = MMU_FTR_TYPE_40x,
|
|
.icache_bsize = 32,
|
|
.dcache_bsize = 32,
|
|
.machine_check = machine_check_4xx,
|
|
.platform = "ppc405",
|
|
},
|
|
{ /* NP405H */
|
|
.pvr_mask = 0xffff0000,
|
|
.pvr_value = 0x41410000,
|
|
.cpu_name = "NP405H",
|
|
.cpu_features = CPU_FTRS_40X,
|
|
.cpu_user_features = PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU |
|
|
PPC_FEATURE_HAS_4xxMAC,
|
|
.mmu_features = MMU_FTR_TYPE_40x,
|
|
.icache_bsize = 32,
|
|
.dcache_bsize = 32,
|
|
.machine_check = machine_check_4xx,
|
|
.platform = "ppc405",
|
|
},
|
|
{ /* 405GPr */
|
|
.pvr_mask = 0xffff0000,
|
|
.pvr_value = 0x50910000,
|
|
.cpu_name = "405GPr",
|
|
.cpu_features = CPU_FTRS_40X,
|
|
.cpu_user_features = PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU |
|
|
PPC_FEATURE_HAS_4xxMAC,
|
|
.mmu_features = MMU_FTR_TYPE_40x,
|
|
.icache_bsize = 32,
|
|
.dcache_bsize = 32,
|
|
.machine_check = machine_check_4xx,
|
|
.platform = "ppc405",
|
|
},
|
|
{ /* STBx25xx */
|
|
.pvr_mask = 0xffff0000,
|
|
.pvr_value = 0x51510000,
|
|
.cpu_name = "STBx25xx",
|
|
.cpu_features = CPU_FTRS_40X,
|
|
.cpu_user_features = PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU |
|
|
PPC_FEATURE_HAS_4xxMAC,
|
|
.mmu_features = MMU_FTR_TYPE_40x,
|
|
.icache_bsize = 32,
|
|
.dcache_bsize = 32,
|
|
.machine_check = machine_check_4xx,
|
|
.platform = "ppc405",
|
|
},
|
|
{ /* 405LP */
|
|
.pvr_mask = 0xffff0000,
|
|
.pvr_value = 0x41F10000,
|
|
.cpu_name = "405LP",
|
|
.cpu_features = CPU_FTRS_40X,
|
|
.cpu_user_features = PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU,
|
|
.mmu_features = MMU_FTR_TYPE_40x,
|
|
.icache_bsize = 32,
|
|
.dcache_bsize = 32,
|
|
.machine_check = machine_check_4xx,
|
|
.platform = "ppc405",
|
|
},
|
|
{ /* 405EP */
|
|
.pvr_mask = 0xffff0000,
|
|
.pvr_value = 0x51210000,
|
|
.cpu_name = "405EP",
|
|
.cpu_features = CPU_FTRS_40X,
|
|
.cpu_user_features = PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU |
|
|
PPC_FEATURE_HAS_4xxMAC,
|
|
.mmu_features = MMU_FTR_TYPE_40x,
|
|
.icache_bsize = 32,
|
|
.dcache_bsize = 32,
|
|
.machine_check = machine_check_4xx,
|
|
.platform = "ppc405",
|
|
},
|
|
{ /* 405EX Rev. A/B with Security */
|
|
.pvr_mask = 0xffff000f,
|
|
.pvr_value = 0x12910007,
|
|
.cpu_name = "405EX Rev. A/B",
|
|
.cpu_features = CPU_FTRS_40X,
|
|
.cpu_user_features = PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU |
|
|
PPC_FEATURE_HAS_4xxMAC,
|
|
.mmu_features = MMU_FTR_TYPE_40x,
|
|
.icache_bsize = 32,
|
|
.dcache_bsize = 32,
|
|
.machine_check = machine_check_4xx,
|
|
.platform = "ppc405",
|
|
},
|
|
{ /* 405EX Rev. C without Security */
|
|
.pvr_mask = 0xffff000f,
|
|
.pvr_value = 0x1291000d,
|
|
.cpu_name = "405EX Rev. C",
|
|
.cpu_features = CPU_FTRS_40X,
|
|
.cpu_user_features = PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU |
|
|
PPC_FEATURE_HAS_4xxMAC,
|
|
.mmu_features = MMU_FTR_TYPE_40x,
|
|
.icache_bsize = 32,
|
|
.dcache_bsize = 32,
|
|
.machine_check = machine_check_4xx,
|
|
.platform = "ppc405",
|
|
},
|
|
{ /* 405EX Rev. C with Security */
|
|
.pvr_mask = 0xffff000f,
|
|
.pvr_value = 0x1291000f,
|
|
.cpu_name = "405EX Rev. C",
|
|
.cpu_features = CPU_FTRS_40X,
|
|
.cpu_user_features = PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU |
|
|
PPC_FEATURE_HAS_4xxMAC,
|
|
.mmu_features = MMU_FTR_TYPE_40x,
|
|
.icache_bsize = 32,
|
|
.dcache_bsize = 32,
|
|
.machine_check = machine_check_4xx,
|
|
.platform = "ppc405",
|
|
},
|
|
{ /* 405EX Rev. D without Security */
|
|
.pvr_mask = 0xffff000f,
|
|
.pvr_value = 0x12910003,
|
|
.cpu_name = "405EX Rev. D",
|
|
.cpu_features = CPU_FTRS_40X,
|
|
.cpu_user_features = PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU |
|
|
PPC_FEATURE_HAS_4xxMAC,
|
|
.mmu_features = MMU_FTR_TYPE_40x,
|
|
.icache_bsize = 32,
|
|
.dcache_bsize = 32,
|
|
.machine_check = machine_check_4xx,
|
|
.platform = "ppc405",
|
|
},
|
|
{ /* 405EX Rev. D with Security */
|
|
.pvr_mask = 0xffff000f,
|
|
.pvr_value = 0x12910005,
|
|
.cpu_name = "405EX Rev. D",
|
|
.cpu_features = CPU_FTRS_40X,
|
|
.cpu_user_features = PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU |
|
|
PPC_FEATURE_HAS_4xxMAC,
|
|
.mmu_features = MMU_FTR_TYPE_40x,
|
|
.icache_bsize = 32,
|
|
.dcache_bsize = 32,
|
|
.machine_check = machine_check_4xx,
|
|
.platform = "ppc405",
|
|
},
|
|
{ /* 405EXr Rev. A/B without Security */
|
|
.pvr_mask = 0xffff000f,
|
|
.pvr_value = 0x12910001,
|
|
.cpu_name = "405EXr Rev. A/B",
|
|
.cpu_features = CPU_FTRS_40X,
|
|
.cpu_user_features = PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU |
|
|
PPC_FEATURE_HAS_4xxMAC,
|
|
.mmu_features = MMU_FTR_TYPE_40x,
|
|
.icache_bsize = 32,
|
|
.dcache_bsize = 32,
|
|
.machine_check = machine_check_4xx,
|
|
.platform = "ppc405",
|
|
},
|
|
{ /* 405EXr Rev. C without Security */
|
|
.pvr_mask = 0xffff000f,
|
|
.pvr_value = 0x12910009,
|
|
.cpu_name = "405EXr Rev. C",
|
|
.cpu_features = CPU_FTRS_40X,
|
|
.cpu_user_features = PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU |
|
|
PPC_FEATURE_HAS_4xxMAC,
|
|
.mmu_features = MMU_FTR_TYPE_40x,
|
|
.icache_bsize = 32,
|
|
.dcache_bsize = 32,
|
|
.machine_check = machine_check_4xx,
|
|
.platform = "ppc405",
|
|
},
|
|
{ /* 405EXr Rev. C with Security */
|
|
.pvr_mask = 0xffff000f,
|
|
.pvr_value = 0x1291000b,
|
|
.cpu_name = "405EXr Rev. C",
|
|
.cpu_features = CPU_FTRS_40X,
|
|
.cpu_user_features = PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU |
|
|
PPC_FEATURE_HAS_4xxMAC,
|
|
.mmu_features = MMU_FTR_TYPE_40x,
|
|
.icache_bsize = 32,
|
|
.dcache_bsize = 32,
|
|
.machine_check = machine_check_4xx,
|
|
.platform = "ppc405",
|
|
},
|
|
{ /* 405EXr Rev. D without Security */
|
|
.pvr_mask = 0xffff000f,
|
|
.pvr_value = 0x12910000,
|
|
.cpu_name = "405EXr Rev. D",
|
|
.cpu_features = CPU_FTRS_40X,
|
|
.cpu_user_features = PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU |
|
|
PPC_FEATURE_HAS_4xxMAC,
|
|
.mmu_features = MMU_FTR_TYPE_40x,
|
|
.icache_bsize = 32,
|
|
.dcache_bsize = 32,
|
|
.machine_check = machine_check_4xx,
|
|
.platform = "ppc405",
|
|
},
|
|
{ /* 405EXr Rev. D with Security */
|
|
.pvr_mask = 0xffff000f,
|
|
.pvr_value = 0x12910002,
|
|
.cpu_name = "405EXr Rev. D",
|
|
.cpu_features = CPU_FTRS_40X,
|
|
.cpu_user_features = PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU |
|
|
PPC_FEATURE_HAS_4xxMAC,
|
|
.mmu_features = MMU_FTR_TYPE_40x,
|
|
.icache_bsize = 32,
|
|
.dcache_bsize = 32,
|
|
.machine_check = machine_check_4xx,
|
|
.platform = "ppc405",
|
|
},
|
|
{
|
|
/* 405EZ */
|
|
.pvr_mask = 0xffff0000,
|
|
.pvr_value = 0x41510000,
|
|
.cpu_name = "405EZ",
|
|
.cpu_features = CPU_FTRS_40X,
|
|
.cpu_user_features = PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU |
|
|
PPC_FEATURE_HAS_4xxMAC,
|
|
.mmu_features = MMU_FTR_TYPE_40x,
|
|
.icache_bsize = 32,
|
|
.dcache_bsize = 32,
|
|
.machine_check = machine_check_4xx,
|
|
.platform = "ppc405",
|
|
},
|
|
{ /* APM8018X */
|
|
.pvr_mask = 0xffff0000,
|
|
.pvr_value = 0x7ff11432,
|
|
.cpu_name = "APM8018X",
|
|
.cpu_features = CPU_FTRS_40X,
|
|
.cpu_user_features = PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU |
|
|
PPC_FEATURE_HAS_4xxMAC,
|
|
.mmu_features = MMU_FTR_TYPE_40x,
|
|
.icache_bsize = 32,
|
|
.dcache_bsize = 32,
|
|
.machine_check = machine_check_4xx,
|
|
.platform = "ppc405",
|
|
},
|
|
{ /* default match */
|
|
.pvr_mask = 0x00000000,
|
|
.pvr_value = 0x00000000,
|
|
.cpu_name = "(generic 40x PPC)",
|
|
.cpu_features = CPU_FTRS_40X,
|
|
.cpu_user_features = PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU |
|
|
PPC_FEATURE_HAS_4xxMAC,
|
|
.mmu_features = MMU_FTR_TYPE_40x,
|
|
.icache_bsize = 32,
|
|
.dcache_bsize = 32,
|
|
.machine_check = machine_check_4xx,
|
|
.platform = "ppc405",
|
|
}
|
|
};
|