1d7216567SChristophe Leroy /* SPDX-License-Identifier: GPL-2.0-or-later */
2d7216567SChristophe Leroy /*
3d7216567SChristophe Leroy  *  Copyright (C) 2001 Ben. Herrenschmidt (benh@kernel.crashing.org)
4d7216567SChristophe Leroy  *
5d7216567SChristophe Leroy  *  Modifications for ppc64:
6d7216567SChristophe Leroy  *      Copyright (C) 2003 Dave Engebretsen <engebret@us.ibm.com>
7d7216567SChristophe Leroy  */
8d7216567SChristophe Leroy 
9d7216567SChristophe Leroy #ifdef CONFIG_PPC64
10d7216567SChristophe Leroy #define COMMON_USER_BOOKE	(PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU | \
11*7fec35ffSDavid Engraf 				 PPC_FEATURE_HAS_FPU | PPC_FEATURE_64 | \
12*7fec35ffSDavid Engraf 				 PPC_FEATURE_BOOKE)
13d7216567SChristophe Leroy #else
14d7216567SChristophe Leroy #define COMMON_USER_BOOKE	(PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU | \
15d7216567SChristophe Leroy 				 PPC_FEATURE_BOOKE)
16d7216567SChristophe Leroy #endif
17d7216567SChristophe Leroy 
18d7216567SChristophe Leroy static struct cpu_spec cpu_specs[] __initdata = {
19d7216567SChristophe Leroy #ifdef CONFIG_PPC32
20d7216567SChristophe Leroy 	{	/* e500mc */
21d7216567SChristophe Leroy 		.pvr_mask		= 0xffff0000,
22d7216567SChristophe Leroy 		.pvr_value		= 0x80230000,
23d7216567SChristophe Leroy 		.cpu_name		= "e500mc",
24d7216567SChristophe Leroy 		.cpu_features		= CPU_FTRS_E500MC,
25d7216567SChristophe Leroy 		.cpu_user_features	= COMMON_USER_BOOKE | PPC_FEATURE_HAS_FPU,
26d7216567SChristophe Leroy 		.cpu_user_features2	= PPC_FEATURE2_ISEL,
27d7216567SChristophe Leroy 		.mmu_features		= MMU_FTR_TYPE_FSL_E | MMU_FTR_BIG_PHYS | MMU_FTR_USE_TLBILX,
28d7216567SChristophe Leroy 		.icache_bsize		= 64,
29d7216567SChristophe Leroy 		.dcache_bsize		= 64,
30d7216567SChristophe Leroy 		.num_pmcs		= 4,
31d7216567SChristophe Leroy 		.cpu_setup		= __setup_cpu_e500mc,
32d7216567SChristophe Leroy 		.machine_check		= machine_check_e500mc,
33d7216567SChristophe Leroy 		.platform		= "ppce500mc",
34d7216567SChristophe Leroy 		.cpu_down_flush		= cpu_down_flush_e500mc,
35d7216567SChristophe Leroy 	},
36d7216567SChristophe Leroy #endif /* CONFIG_PPC32 */
37d7216567SChristophe Leroy 	{	/* e5500 */
38d7216567SChristophe Leroy 		.pvr_mask		= 0xffff0000,
39d7216567SChristophe Leroy 		.pvr_value		= 0x80240000,
40d7216567SChristophe Leroy 		.cpu_name		= "e5500",
41d7216567SChristophe Leroy 		.cpu_features		= CPU_FTRS_E5500,
42d7216567SChristophe Leroy 		.cpu_user_features	= COMMON_USER_BOOKE | PPC_FEATURE_HAS_FPU,
43d7216567SChristophe Leroy 		.cpu_user_features2	= PPC_FEATURE2_ISEL,
44d7216567SChristophe Leroy 		.mmu_features		= MMU_FTR_TYPE_FSL_E | MMU_FTR_BIG_PHYS | MMU_FTR_USE_TLBILX,
45d7216567SChristophe Leroy 		.icache_bsize		= 64,
46d7216567SChristophe Leroy 		.dcache_bsize		= 64,
47d7216567SChristophe Leroy 		.num_pmcs		= 4,
48d7216567SChristophe Leroy 		.cpu_setup		= __setup_cpu_e5500,
49d7216567SChristophe Leroy #ifndef CONFIG_PPC32
50d7216567SChristophe Leroy 		.cpu_restore		= __restore_cpu_e5500,
51d7216567SChristophe Leroy #endif
52d7216567SChristophe Leroy 		.machine_check		= machine_check_e500mc,
53d7216567SChristophe Leroy 		.platform		= "ppce5500",
54d7216567SChristophe Leroy 		.cpu_down_flush		= cpu_down_flush_e5500,
55d7216567SChristophe Leroy 	},
56d7216567SChristophe Leroy 	{	/* e6500 */
57d7216567SChristophe Leroy 		.pvr_mask		= 0xffff0000,
58d7216567SChristophe Leroy 		.pvr_value		= 0x80400000,
59d7216567SChristophe Leroy 		.cpu_name		= "e6500",
60d7216567SChristophe Leroy 		.cpu_features		= CPU_FTRS_E6500,
61d7216567SChristophe Leroy 		.cpu_user_features	= COMMON_USER_BOOKE | PPC_FEATURE_HAS_FPU |
62d7216567SChristophe Leroy 					  PPC_FEATURE_HAS_ALTIVEC_COMP,
63d7216567SChristophe Leroy 		.cpu_user_features2	= PPC_FEATURE2_ISEL,
64d7216567SChristophe Leroy 		.mmu_features		= MMU_FTR_TYPE_FSL_E | MMU_FTR_BIG_PHYS | MMU_FTR_USE_TLBILX,
65d7216567SChristophe Leroy 		.icache_bsize		= 64,
66d7216567SChristophe Leroy 		.dcache_bsize		= 64,
67d7216567SChristophe Leroy 		.num_pmcs		= 6,
68d7216567SChristophe Leroy 		.cpu_setup		= __setup_cpu_e6500,
69d7216567SChristophe Leroy #ifndef CONFIG_PPC32
70d7216567SChristophe Leroy 		.cpu_restore		= __restore_cpu_e6500,
71d7216567SChristophe Leroy #endif
72d7216567SChristophe Leroy 		.machine_check		= machine_check_e500mc,
73d7216567SChristophe Leroy 		.platform		= "ppce6500",
74d7216567SChristophe Leroy 		.cpu_down_flush		= cpu_down_flush_e6500,
75d7216567SChristophe Leroy 	},
76d7216567SChristophe Leroy };
77