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
305 lines
8.8 KiB
C
305 lines
8.8 KiB
C
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
|
/*
|
|
* Copyright (C) 2001 Ben. Herrenschmidt (benh@kernel.crashing.org)
|
|
*/
|
|
|
|
#define COMMON_USER_BOOKE (PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU | \
|
|
PPC_FEATURE_BOOKE)
|
|
|
|
static struct cpu_spec cpu_specs[] __initdata = {
|
|
{
|
|
.pvr_mask = 0xf0000fff,
|
|
.pvr_value = 0x40000850,
|
|
.cpu_name = "440GR Rev. A",
|
|
.cpu_features = CPU_FTRS_44X,
|
|
.cpu_user_features = COMMON_USER_BOOKE,
|
|
.mmu_features = MMU_FTR_TYPE_44x,
|
|
.icache_bsize = 32,
|
|
.dcache_bsize = 32,
|
|
.machine_check = machine_check_4xx,
|
|
.platform = "ppc440",
|
|
},
|
|
{ /* Use logical PVR for 440EP (logical pvr = pvr | 0x8) */
|
|
.pvr_mask = 0xf0000fff,
|
|
.pvr_value = 0x40000858,
|
|
.cpu_name = "440EP Rev. A",
|
|
.cpu_features = CPU_FTRS_44X,
|
|
.cpu_user_features = COMMON_USER_BOOKE | PPC_FEATURE_HAS_FPU,
|
|
.mmu_features = MMU_FTR_TYPE_44x,
|
|
.icache_bsize = 32,
|
|
.dcache_bsize = 32,
|
|
.cpu_setup = __setup_cpu_440ep,
|
|
.machine_check = machine_check_4xx,
|
|
.platform = "ppc440",
|
|
},
|
|
{
|
|
.pvr_mask = 0xf0000fff,
|
|
.pvr_value = 0x400008d3,
|
|
.cpu_name = "440GR Rev. B",
|
|
.cpu_features = CPU_FTRS_44X,
|
|
.cpu_user_features = COMMON_USER_BOOKE | PPC_FEATURE_HAS_FPU,
|
|
.mmu_features = MMU_FTR_TYPE_44x,
|
|
.icache_bsize = 32,
|
|
.dcache_bsize = 32,
|
|
.machine_check = machine_check_4xx,
|
|
.platform = "ppc440",
|
|
},
|
|
{ /* Matches both physical and logical PVR for 440EP (logical pvr = pvr | 0x8) */
|
|
.pvr_mask = 0xf0000ff7,
|
|
.pvr_value = 0x400008d4,
|
|
.cpu_name = "440EP Rev. C",
|
|
.cpu_features = CPU_FTRS_44X,
|
|
.cpu_user_features = COMMON_USER_BOOKE | PPC_FEATURE_HAS_FPU,
|
|
.mmu_features = MMU_FTR_TYPE_44x,
|
|
.icache_bsize = 32,
|
|
.dcache_bsize = 32,
|
|
.cpu_setup = __setup_cpu_440ep,
|
|
.machine_check = machine_check_4xx,
|
|
.platform = "ppc440",
|
|
},
|
|
{ /* Use logical PVR for 440EP (logical pvr = pvr | 0x8) */
|
|
.pvr_mask = 0xf0000fff,
|
|
.pvr_value = 0x400008db,
|
|
.cpu_name = "440EP Rev. B",
|
|
.cpu_features = CPU_FTRS_44X,
|
|
.cpu_user_features = COMMON_USER_BOOKE | PPC_FEATURE_HAS_FPU,
|
|
.mmu_features = MMU_FTR_TYPE_44x,
|
|
.icache_bsize = 32,
|
|
.dcache_bsize = 32,
|
|
.cpu_setup = __setup_cpu_440ep,
|
|
.machine_check = machine_check_4xx,
|
|
.platform = "ppc440",
|
|
},
|
|
{ /* 440GRX */
|
|
.pvr_mask = 0xf0000ffb,
|
|
.pvr_value = 0x200008D0,
|
|
.cpu_name = "440GRX",
|
|
.cpu_features = CPU_FTRS_44X,
|
|
.cpu_user_features = COMMON_USER_BOOKE,
|
|
.mmu_features = MMU_FTR_TYPE_44x,
|
|
.icache_bsize = 32,
|
|
.dcache_bsize = 32,
|
|
.cpu_setup = __setup_cpu_440grx,
|
|
.machine_check = machine_check_440A,
|
|
.platform = "ppc440",
|
|
},
|
|
{ /* Use logical PVR for 440EPx (logical pvr = pvr | 0x8) */
|
|
.pvr_mask = 0xf0000ffb,
|
|
.pvr_value = 0x200008D8,
|
|
.cpu_name = "440EPX",
|
|
.cpu_features = CPU_FTRS_44X,
|
|
.cpu_user_features = COMMON_USER_BOOKE | PPC_FEATURE_HAS_FPU,
|
|
.mmu_features = MMU_FTR_TYPE_44x,
|
|
.icache_bsize = 32,
|
|
.dcache_bsize = 32,
|
|
.cpu_setup = __setup_cpu_440epx,
|
|
.machine_check = machine_check_440A,
|
|
.platform = "ppc440",
|
|
},
|
|
{ /* 440GP Rev. B */
|
|
.pvr_mask = 0xf0000fff,
|
|
.pvr_value = 0x40000440,
|
|
.cpu_name = "440GP Rev. B",
|
|
.cpu_features = CPU_FTRS_44X,
|
|
.cpu_user_features = COMMON_USER_BOOKE,
|
|
.mmu_features = MMU_FTR_TYPE_44x,
|
|
.icache_bsize = 32,
|
|
.dcache_bsize = 32,
|
|
.machine_check = machine_check_4xx,
|
|
.platform = "ppc440gp",
|
|
},
|
|
{ /* 440GP Rev. C */
|
|
.pvr_mask = 0xf0000fff,
|
|
.pvr_value = 0x40000481,
|
|
.cpu_name = "440GP Rev. C",
|
|
.cpu_features = CPU_FTRS_44X,
|
|
.cpu_user_features = COMMON_USER_BOOKE,
|
|
.mmu_features = MMU_FTR_TYPE_44x,
|
|
.icache_bsize = 32,
|
|
.dcache_bsize = 32,
|
|
.machine_check = machine_check_4xx,
|
|
.platform = "ppc440gp",
|
|
},
|
|
{ /* 440GX Rev. A */
|
|
.pvr_mask = 0xf0000fff,
|
|
.pvr_value = 0x50000850,
|
|
.cpu_name = "440GX Rev. A",
|
|
.cpu_features = CPU_FTRS_44X,
|
|
.cpu_user_features = COMMON_USER_BOOKE,
|
|
.mmu_features = MMU_FTR_TYPE_44x,
|
|
.icache_bsize = 32,
|
|
.dcache_bsize = 32,
|
|
.cpu_setup = __setup_cpu_440gx,
|
|
.machine_check = machine_check_440A,
|
|
.platform = "ppc440",
|
|
},
|
|
{ /* 440GX Rev. B */
|
|
.pvr_mask = 0xf0000fff,
|
|
.pvr_value = 0x50000851,
|
|
.cpu_name = "440GX Rev. B",
|
|
.cpu_features = CPU_FTRS_44X,
|
|
.cpu_user_features = COMMON_USER_BOOKE,
|
|
.mmu_features = MMU_FTR_TYPE_44x,
|
|
.icache_bsize = 32,
|
|
.dcache_bsize = 32,
|
|
.cpu_setup = __setup_cpu_440gx,
|
|
.machine_check = machine_check_440A,
|
|
.platform = "ppc440",
|
|
},
|
|
{ /* 440GX Rev. C */
|
|
.pvr_mask = 0xf0000fff,
|
|
.pvr_value = 0x50000892,
|
|
.cpu_name = "440GX Rev. C",
|
|
.cpu_features = CPU_FTRS_44X,
|
|
.cpu_user_features = COMMON_USER_BOOKE,
|
|
.mmu_features = MMU_FTR_TYPE_44x,
|
|
.icache_bsize = 32,
|
|
.dcache_bsize = 32,
|
|
.cpu_setup = __setup_cpu_440gx,
|
|
.machine_check = machine_check_440A,
|
|
.platform = "ppc440",
|
|
},
|
|
{ /* 440GX Rev. F */
|
|
.pvr_mask = 0xf0000fff,
|
|
.pvr_value = 0x50000894,
|
|
.cpu_name = "440GX Rev. F",
|
|
.cpu_features = CPU_FTRS_44X,
|
|
.cpu_user_features = COMMON_USER_BOOKE,
|
|
.mmu_features = MMU_FTR_TYPE_44x,
|
|
.icache_bsize = 32,
|
|
.dcache_bsize = 32,
|
|
.cpu_setup = __setup_cpu_440gx,
|
|
.machine_check = machine_check_440A,
|
|
.platform = "ppc440",
|
|
},
|
|
{ /* 440SP Rev. A */
|
|
.pvr_mask = 0xfff00fff,
|
|
.pvr_value = 0x53200891,
|
|
.cpu_name = "440SP Rev. A",
|
|
.cpu_features = CPU_FTRS_44X,
|
|
.cpu_user_features = COMMON_USER_BOOKE,
|
|
.mmu_features = MMU_FTR_TYPE_44x,
|
|
.icache_bsize = 32,
|
|
.dcache_bsize = 32,
|
|
.machine_check = machine_check_4xx,
|
|
.platform = "ppc440",
|
|
},
|
|
{ /* 440SPe Rev. A */
|
|
.pvr_mask = 0xfff00fff,
|
|
.pvr_value = 0x53400890,
|
|
.cpu_name = "440SPe Rev. A",
|
|
.cpu_features = CPU_FTRS_44X,
|
|
.cpu_user_features = COMMON_USER_BOOKE,
|
|
.mmu_features = MMU_FTR_TYPE_44x,
|
|
.icache_bsize = 32,
|
|
.dcache_bsize = 32,
|
|
.cpu_setup = __setup_cpu_440spe,
|
|
.machine_check = machine_check_440A,
|
|
.platform = "ppc440",
|
|
},
|
|
{ /* 440SPe Rev. B */
|
|
.pvr_mask = 0xfff00fff,
|
|
.pvr_value = 0x53400891,
|
|
.cpu_name = "440SPe Rev. B",
|
|
.cpu_features = CPU_FTRS_44X,
|
|
.cpu_user_features = COMMON_USER_BOOKE,
|
|
.mmu_features = MMU_FTR_TYPE_44x,
|
|
.icache_bsize = 32,
|
|
.dcache_bsize = 32,
|
|
.cpu_setup = __setup_cpu_440spe,
|
|
.machine_check = machine_check_440A,
|
|
.platform = "ppc440",
|
|
},
|
|
{ /* 460EX */
|
|
.pvr_mask = 0xffff0006,
|
|
.pvr_value = 0x13020002,
|
|
.cpu_name = "460EX",
|
|
.cpu_features = CPU_FTRS_440x6,
|
|
.cpu_user_features = COMMON_USER_BOOKE | PPC_FEATURE_HAS_FPU,
|
|
.mmu_features = MMU_FTR_TYPE_44x,
|
|
.icache_bsize = 32,
|
|
.dcache_bsize = 32,
|
|
.cpu_setup = __setup_cpu_460ex,
|
|
.machine_check = machine_check_440A,
|
|
.platform = "ppc440",
|
|
},
|
|
{ /* 460EX Rev B */
|
|
.pvr_mask = 0xffff0007,
|
|
.pvr_value = 0x13020004,
|
|
.cpu_name = "460EX Rev. B",
|
|
.cpu_features = CPU_FTRS_440x6,
|
|
.cpu_user_features = COMMON_USER_BOOKE | PPC_FEATURE_HAS_FPU,
|
|
.mmu_features = MMU_FTR_TYPE_44x,
|
|
.icache_bsize = 32,
|
|
.dcache_bsize = 32,
|
|
.cpu_setup = __setup_cpu_460ex,
|
|
.machine_check = machine_check_440A,
|
|
.platform = "ppc440",
|
|
},
|
|
{ /* 460GT */
|
|
.pvr_mask = 0xffff0006,
|
|
.pvr_value = 0x13020000,
|
|
.cpu_name = "460GT",
|
|
.cpu_features = CPU_FTRS_440x6,
|
|
.cpu_user_features = COMMON_USER_BOOKE | PPC_FEATURE_HAS_FPU,
|
|
.mmu_features = MMU_FTR_TYPE_44x,
|
|
.icache_bsize = 32,
|
|
.dcache_bsize = 32,
|
|
.cpu_setup = __setup_cpu_460gt,
|
|
.machine_check = machine_check_440A,
|
|
.platform = "ppc440",
|
|
},
|
|
{ /* 460GT Rev B */
|
|
.pvr_mask = 0xffff0007,
|
|
.pvr_value = 0x13020005,
|
|
.cpu_name = "460GT Rev. B",
|
|
.cpu_features = CPU_FTRS_440x6,
|
|
.cpu_user_features = COMMON_USER_BOOKE | PPC_FEATURE_HAS_FPU,
|
|
.mmu_features = MMU_FTR_TYPE_44x,
|
|
.icache_bsize = 32,
|
|
.dcache_bsize = 32,
|
|
.cpu_setup = __setup_cpu_460gt,
|
|
.machine_check = machine_check_440A,
|
|
.platform = "ppc440",
|
|
},
|
|
{ /* 460SX */
|
|
.pvr_mask = 0xffffff00,
|
|
.pvr_value = 0x13541800,
|
|
.cpu_name = "460SX",
|
|
.cpu_features = CPU_FTRS_44X,
|
|
.cpu_user_features = COMMON_USER_BOOKE,
|
|
.mmu_features = MMU_FTR_TYPE_44x,
|
|
.icache_bsize = 32,
|
|
.dcache_bsize = 32,
|
|
.cpu_setup = __setup_cpu_460sx,
|
|
.machine_check = machine_check_440A,
|
|
.platform = "ppc440",
|
|
},
|
|
{ /* 464 in APM821xx */
|
|
.pvr_mask = 0xfffffff0,
|
|
.pvr_value = 0x12C41C80,
|
|
.cpu_name = "APM821XX",
|
|
.cpu_features = CPU_FTRS_44X,
|
|
.cpu_user_features = COMMON_USER_BOOKE |
|
|
PPC_FEATURE_HAS_FPU,
|
|
.mmu_features = MMU_FTR_TYPE_44x,
|
|
.icache_bsize = 32,
|
|
.dcache_bsize = 32,
|
|
.cpu_setup = __setup_cpu_apm821xx,
|
|
.machine_check = machine_check_440A,
|
|
.platform = "ppc440",
|
|
},
|
|
{ /* default match */
|
|
.pvr_mask = 0x00000000,
|
|
.pvr_value = 0x00000000,
|
|
.cpu_name = "(generic 44x PPC)",
|
|
.cpu_features = CPU_FTRS_44X,
|
|
.cpu_user_features = COMMON_USER_BOOKE,
|
|
.mmu_features = MMU_FTR_TYPE_44x,
|
|
.icache_bsize = 32,
|
|
.dcache_bsize = 32,
|
|
.machine_check = machine_check_4xx,
|
|
.platform = "ppc440",
|
|
}
|
|
};
|