1 /* SPDX-License-Identifier: GPL-2.0-or-later */
2 /*
3  *  Copyright (C) 2001 Ben. Herrenschmidt (benh@kernel.crashing.org)
4  */
5 
6 static struct cpu_spec cpu_specs[] __initdata = {
7 	{	/* STB 04xxx */
8 		.pvr_mask		= 0xffff0000,
9 		.pvr_value		= 0x41810000,
10 		.cpu_name		= "STB04xxx",
11 		.cpu_features		= CPU_FTRS_40X,
12 		.cpu_user_features	= PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU |
13 					  PPC_FEATURE_HAS_4xxMAC,
14 		.mmu_features		= MMU_FTR_TYPE_40x,
15 		.icache_bsize		= 32,
16 		.dcache_bsize		= 32,
17 		.machine_check		= machine_check_4xx,
18 		.platform		= "ppc405",
19 	},
20 	{	/* NP405L */
21 		.pvr_mask		= 0xffff0000,
22 		.pvr_value		= 0x41610000,
23 		.cpu_name		= "NP405L",
24 		.cpu_features		= CPU_FTRS_40X,
25 		.cpu_user_features	= PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU |
26 					  PPC_FEATURE_HAS_4xxMAC,
27 		.mmu_features		= MMU_FTR_TYPE_40x,
28 		.icache_bsize		= 32,
29 		.dcache_bsize		= 32,
30 		.machine_check		= machine_check_4xx,
31 		.platform		= "ppc405",
32 	},
33 	{	/* NP4GS3 */
34 		.pvr_mask		= 0xffff0000,
35 		.pvr_value		= 0x40B10000,
36 		.cpu_name		= "NP4GS3",
37 		.cpu_features		= CPU_FTRS_40X,
38 		.cpu_user_features	= PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU |
39 					  PPC_FEATURE_HAS_4xxMAC,
40 		.mmu_features		= MMU_FTR_TYPE_40x,
41 		.icache_bsize		= 32,
42 		.dcache_bsize		= 32,
43 		.machine_check		= machine_check_4xx,
44 		.platform		= "ppc405",
45 	},
46 	{   /* NP405H */
47 		.pvr_mask		= 0xffff0000,
48 		.pvr_value		= 0x41410000,
49 		.cpu_name		= "NP405H",
50 		.cpu_features		= CPU_FTRS_40X,
51 		.cpu_user_features	= PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU |
52 					  PPC_FEATURE_HAS_4xxMAC,
53 		.mmu_features		= MMU_FTR_TYPE_40x,
54 		.icache_bsize		= 32,
55 		.dcache_bsize		= 32,
56 		.machine_check		= machine_check_4xx,
57 		.platform		= "ppc405",
58 	},
59 	{	/* 405GPr */
60 		.pvr_mask		= 0xffff0000,
61 		.pvr_value		= 0x50910000,
62 		.cpu_name		= "405GPr",
63 		.cpu_features		= CPU_FTRS_40X,
64 		.cpu_user_features	= PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU |
65 					  PPC_FEATURE_HAS_4xxMAC,
66 		.mmu_features		= MMU_FTR_TYPE_40x,
67 		.icache_bsize		= 32,
68 		.dcache_bsize		= 32,
69 		.machine_check		= machine_check_4xx,
70 		.platform		= "ppc405",
71 	},
72 	{   /* STBx25xx */
73 		.pvr_mask		= 0xffff0000,
74 		.pvr_value		= 0x51510000,
75 		.cpu_name		= "STBx25xx",
76 		.cpu_features		= CPU_FTRS_40X,
77 		.cpu_user_features	= PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU |
78 					  PPC_FEATURE_HAS_4xxMAC,
79 		.mmu_features		= MMU_FTR_TYPE_40x,
80 		.icache_bsize		= 32,
81 		.dcache_bsize		= 32,
82 		.machine_check		= machine_check_4xx,
83 		.platform		= "ppc405",
84 	},
85 	{	/* 405LP */
86 		.pvr_mask		= 0xffff0000,
87 		.pvr_value		= 0x41F10000,
88 		.cpu_name		= "405LP",
89 		.cpu_features		= CPU_FTRS_40X,
90 		.cpu_user_features	= PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU,
91 		.mmu_features		= MMU_FTR_TYPE_40x,
92 		.icache_bsize		= 32,
93 		.dcache_bsize		= 32,
94 		.machine_check		= machine_check_4xx,
95 		.platform		= "ppc405",
96 	},
97 	{	/* 405EP */
98 		.pvr_mask		= 0xffff0000,
99 		.pvr_value		= 0x51210000,
100 		.cpu_name		= "405EP",
101 		.cpu_features		= CPU_FTRS_40X,
102 		.cpu_user_features	= PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU |
103 					  PPC_FEATURE_HAS_4xxMAC,
104 		.mmu_features		= MMU_FTR_TYPE_40x,
105 		.icache_bsize		= 32,
106 		.dcache_bsize		= 32,
107 		.machine_check		= machine_check_4xx,
108 		.platform		= "ppc405",
109 	},
110 	{	/* 405EX Rev. A/B with Security */
111 		.pvr_mask		= 0xffff000f,
112 		.pvr_value		= 0x12910007,
113 		.cpu_name		= "405EX Rev. A/B",
114 		.cpu_features		= CPU_FTRS_40X,
115 		.cpu_user_features	= PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU |
116 					  PPC_FEATURE_HAS_4xxMAC,
117 		.mmu_features		= MMU_FTR_TYPE_40x,
118 		.icache_bsize		= 32,
119 		.dcache_bsize		= 32,
120 		.machine_check		= machine_check_4xx,
121 		.platform		= "ppc405",
122 	},
123 	{	/* 405EX Rev. C without Security */
124 		.pvr_mask		= 0xffff000f,
125 		.pvr_value		= 0x1291000d,
126 		.cpu_name		= "405EX Rev. C",
127 		.cpu_features		= CPU_FTRS_40X,
128 		.cpu_user_features	= PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU |
129 					  PPC_FEATURE_HAS_4xxMAC,
130 		.mmu_features		= MMU_FTR_TYPE_40x,
131 		.icache_bsize		= 32,
132 		.dcache_bsize		= 32,
133 		.machine_check		= machine_check_4xx,
134 		.platform		= "ppc405",
135 	},
136 	{	/* 405EX Rev. C with Security */
137 		.pvr_mask		= 0xffff000f,
138 		.pvr_value		= 0x1291000f,
139 		.cpu_name		= "405EX Rev. C",
140 		.cpu_features		= CPU_FTRS_40X,
141 		.cpu_user_features	= PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU |
142 					  PPC_FEATURE_HAS_4xxMAC,
143 		.mmu_features		= MMU_FTR_TYPE_40x,
144 		.icache_bsize		= 32,
145 		.dcache_bsize		= 32,
146 		.machine_check		= machine_check_4xx,
147 		.platform		= "ppc405",
148 	},
149 	{	/* 405EX Rev. D without Security */
150 		.pvr_mask		= 0xffff000f,
151 		.pvr_value		= 0x12910003,
152 		.cpu_name		= "405EX Rev. D",
153 		.cpu_features		= CPU_FTRS_40X,
154 		.cpu_user_features	= PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU |
155 					  PPC_FEATURE_HAS_4xxMAC,
156 		.mmu_features		= MMU_FTR_TYPE_40x,
157 		.icache_bsize		= 32,
158 		.dcache_bsize		= 32,
159 		.machine_check		= machine_check_4xx,
160 		.platform		= "ppc405",
161 	},
162 	{	/* 405EX Rev. D with Security */
163 		.pvr_mask		= 0xffff000f,
164 		.pvr_value		= 0x12910005,
165 		.cpu_name		= "405EX Rev. D",
166 		.cpu_features		= CPU_FTRS_40X,
167 		.cpu_user_features	= PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU |
168 					  PPC_FEATURE_HAS_4xxMAC,
169 		.mmu_features		= MMU_FTR_TYPE_40x,
170 		.icache_bsize		= 32,
171 		.dcache_bsize		= 32,
172 		.machine_check		= machine_check_4xx,
173 		.platform		= "ppc405",
174 	},
175 	{	/* 405EXr Rev. A/B without Security */
176 		.pvr_mask		= 0xffff000f,
177 		.pvr_value		= 0x12910001,
178 		.cpu_name		= "405EXr Rev. A/B",
179 		.cpu_features		= CPU_FTRS_40X,
180 		.cpu_user_features	= PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU |
181 					  PPC_FEATURE_HAS_4xxMAC,
182 		.mmu_features		= MMU_FTR_TYPE_40x,
183 		.icache_bsize		= 32,
184 		.dcache_bsize		= 32,
185 		.machine_check		= machine_check_4xx,
186 		.platform		= "ppc405",
187 	},
188 	{	/* 405EXr Rev. C without Security */
189 		.pvr_mask		= 0xffff000f,
190 		.pvr_value		= 0x12910009,
191 		.cpu_name		= "405EXr Rev. C",
192 		.cpu_features		= CPU_FTRS_40X,
193 		.cpu_user_features	= PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU |
194 					  PPC_FEATURE_HAS_4xxMAC,
195 		.mmu_features		= MMU_FTR_TYPE_40x,
196 		.icache_bsize		= 32,
197 		.dcache_bsize		= 32,
198 		.machine_check		= machine_check_4xx,
199 		.platform		= "ppc405",
200 	},
201 	{	/* 405EXr Rev. C with Security */
202 		.pvr_mask		= 0xffff000f,
203 		.pvr_value		= 0x1291000b,
204 		.cpu_name		= "405EXr Rev. C",
205 		.cpu_features		= CPU_FTRS_40X,
206 		.cpu_user_features	= PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU |
207 					  PPC_FEATURE_HAS_4xxMAC,
208 		.mmu_features		= MMU_FTR_TYPE_40x,
209 		.icache_bsize		= 32,
210 		.dcache_bsize		= 32,
211 		.machine_check		= machine_check_4xx,
212 		.platform		= "ppc405",
213 	},
214 	{	/* 405EXr Rev. D without Security */
215 		.pvr_mask		= 0xffff000f,
216 		.pvr_value		= 0x12910000,
217 		.cpu_name		= "405EXr Rev. D",
218 		.cpu_features		= CPU_FTRS_40X,
219 		.cpu_user_features	= PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU |
220 					  PPC_FEATURE_HAS_4xxMAC,
221 		.mmu_features		= MMU_FTR_TYPE_40x,
222 		.icache_bsize		= 32,
223 		.dcache_bsize		= 32,
224 		.machine_check		= machine_check_4xx,
225 		.platform		= "ppc405",
226 	},
227 	{	/* 405EXr Rev. D with Security */
228 		.pvr_mask		= 0xffff000f,
229 		.pvr_value		= 0x12910002,
230 		.cpu_name		= "405EXr Rev. D",
231 		.cpu_features		= CPU_FTRS_40X,
232 		.cpu_user_features	= PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU |
233 					  PPC_FEATURE_HAS_4xxMAC,
234 		.mmu_features		= MMU_FTR_TYPE_40x,
235 		.icache_bsize		= 32,
236 		.dcache_bsize		= 32,
237 		.machine_check		= machine_check_4xx,
238 		.platform		= "ppc405",
239 	},
240 	{
241 		/* 405EZ */
242 		.pvr_mask		= 0xffff0000,
243 		.pvr_value		= 0x41510000,
244 		.cpu_name		= "405EZ",
245 		.cpu_features		= CPU_FTRS_40X,
246 		.cpu_user_features	= PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU |
247 					  PPC_FEATURE_HAS_4xxMAC,
248 		.mmu_features		= MMU_FTR_TYPE_40x,
249 		.icache_bsize		= 32,
250 		.dcache_bsize		= 32,
251 		.machine_check		= machine_check_4xx,
252 		.platform		= "ppc405",
253 	},
254 	{	/* APM8018X */
255 		.pvr_mask		= 0xffff0000,
256 		.pvr_value		= 0x7ff11432,
257 		.cpu_name		= "APM8018X",
258 		.cpu_features		= CPU_FTRS_40X,
259 		.cpu_user_features	= PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU |
260 					  PPC_FEATURE_HAS_4xxMAC,
261 		.mmu_features		= MMU_FTR_TYPE_40x,
262 		.icache_bsize		= 32,
263 		.dcache_bsize		= 32,
264 		.machine_check		= machine_check_4xx,
265 		.platform		= "ppc405",
266 	},
267 	{	/* default match */
268 		.pvr_mask		= 0x00000000,
269 		.pvr_value		= 0x00000000,
270 		.cpu_name		= "(generic 40x PPC)",
271 		.cpu_features		= CPU_FTRS_40X,
272 		.cpu_user_features	= PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU |
273 					  PPC_FEATURE_HAS_4xxMAC,
274 		.mmu_features		= MMU_FTR_TYPE_40x,
275 		.icache_bsize		= 32,
276 		.dcache_bsize		= 32,
277 		.machine_check		= machine_check_4xx,
278 		.platform		= "ppc405",
279 	}
280 };
281