diff options
Diffstat (limited to 'arch/powerpc/kernel/cputable.c')
-rw-r--r-- | arch/powerpc/kernel/cputable.c | 137 |
1 files changed, 75 insertions, 62 deletions
diff --git a/arch/powerpc/kernel/cputable.c b/arch/powerpc/kernel/cputable.c index 3f7182db9ed5..1c114880dc05 100644 --- a/arch/powerpc/kernel/cputable.c +++ b/arch/powerpc/kernel/cputable.c | |||
@@ -30,11 +30,7 @@ EXPORT_SYMBOL(cur_cpu_spec); | |||
30 | * part of the cputable though. That has to be fixed for both ppc32 | 30 | * part of the cputable though. That has to be fixed for both ppc32 |
31 | * and ppc64 | 31 | * and ppc64 |
32 | */ | 32 | */ |
33 | #ifdef CONFIG_PPC64 | 33 | #ifdef CONFIG_PPC32 |
34 | extern void __setup_cpu_power3(unsigned long offset, struct cpu_spec* spec); | ||
35 | extern void __setup_cpu_power4(unsigned long offset, struct cpu_spec* spec); | ||
36 | extern void __setup_cpu_be(unsigned long offset, struct cpu_spec* spec); | ||
37 | #else | ||
38 | extern void __setup_cpu_603(unsigned long offset, struct cpu_spec* spec); | 34 | extern void __setup_cpu_603(unsigned long offset, struct cpu_spec* spec); |
39 | extern void __setup_cpu_604(unsigned long offset, struct cpu_spec* spec); | 35 | extern void __setup_cpu_604(unsigned long offset, struct cpu_spec* spec); |
40 | extern void __setup_cpu_750(unsigned long offset, struct cpu_spec* spec); | 36 | extern void __setup_cpu_750(unsigned long offset, struct cpu_spec* spec); |
@@ -58,7 +54,8 @@ extern void __setup_cpu_ppc970(unsigned long offset, struct cpu_spec* spec); | |||
58 | #define COMMON_USER_POWER5_PLUS (COMMON_USER_PPC64 | PPC_FEATURE_POWER5_PLUS|\ | 54 | #define COMMON_USER_POWER5_PLUS (COMMON_USER_PPC64 | PPC_FEATURE_POWER5_PLUS|\ |
59 | PPC_FEATURE_SMT | PPC_FEATURE_ICACHE_SNOOP) | 55 | PPC_FEATURE_SMT | PPC_FEATURE_ICACHE_SNOOP) |
60 | #define COMMON_USER_POWER6 (COMMON_USER_PPC64 | PPC_FEATURE_ARCH_2_05 |\ | 56 | #define COMMON_USER_POWER6 (COMMON_USER_PPC64 | PPC_FEATURE_ARCH_2_05 |\ |
61 | PPC_FEATURE_SMT | PPC_FEATURE_ICACHE_SNOOP) | 57 | PPC_FEATURE_SMT | PPC_FEATURE_ICACHE_SNOOP | \ |
58 | PPC_FEATURE_TRUE_LE) | ||
62 | #define COMMON_USER_BOOKE (PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU | \ | 59 | #define COMMON_USER_BOOKE (PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU | \ |
63 | PPC_FEATURE_BOOKE) | 60 | PPC_FEATURE_BOOKE) |
64 | 61 | ||
@@ -78,11 +75,10 @@ struct cpu_spec cpu_specs[] = { | |||
78 | .pvr_value = 0x00400000, | 75 | .pvr_value = 0x00400000, |
79 | .cpu_name = "POWER3 (630)", | 76 | .cpu_name = "POWER3 (630)", |
80 | .cpu_features = CPU_FTRS_POWER3, | 77 | .cpu_features = CPU_FTRS_POWER3, |
81 | .cpu_user_features = COMMON_USER_PPC64, | 78 | .cpu_user_features = COMMON_USER_PPC64|PPC_FEATURE_PPC_LE, |
82 | .icache_bsize = 128, | 79 | .icache_bsize = 128, |
83 | .dcache_bsize = 128, | 80 | .dcache_bsize = 128, |
84 | .num_pmcs = 8, | 81 | .num_pmcs = 8, |
85 | .cpu_setup = __setup_cpu_power3, | ||
86 | .oprofile_cpu_type = "ppc64/power3", | 82 | .oprofile_cpu_type = "ppc64/power3", |
87 | .oprofile_type = PPC_OPROFILE_RS64, | 83 | .oprofile_type = PPC_OPROFILE_RS64, |
88 | .platform = "power3", | 84 | .platform = "power3", |
@@ -92,11 +88,10 @@ struct cpu_spec cpu_specs[] = { | |||
92 | .pvr_value = 0x00410000, | 88 | .pvr_value = 0x00410000, |
93 | .cpu_name = "POWER3 (630+)", | 89 | .cpu_name = "POWER3 (630+)", |
94 | .cpu_features = CPU_FTRS_POWER3, | 90 | .cpu_features = CPU_FTRS_POWER3, |
95 | .cpu_user_features = COMMON_USER_PPC64, | 91 | .cpu_user_features = COMMON_USER_PPC64|PPC_FEATURE_PPC_LE, |
96 | .icache_bsize = 128, | 92 | .icache_bsize = 128, |
97 | .dcache_bsize = 128, | 93 | .dcache_bsize = 128, |
98 | .num_pmcs = 8, | 94 | .num_pmcs = 8, |
99 | .cpu_setup = __setup_cpu_power3, | ||
100 | .oprofile_cpu_type = "ppc64/power3", | 95 | .oprofile_cpu_type = "ppc64/power3", |
101 | .oprofile_type = PPC_OPROFILE_RS64, | 96 | .oprofile_type = PPC_OPROFILE_RS64, |
102 | .platform = "power3", | 97 | .platform = "power3", |
@@ -110,7 +105,6 @@ struct cpu_spec cpu_specs[] = { | |||
110 | .icache_bsize = 128, | 105 | .icache_bsize = 128, |
111 | .dcache_bsize = 128, | 106 | .dcache_bsize = 128, |
112 | .num_pmcs = 8, | 107 | .num_pmcs = 8, |
113 | .cpu_setup = __setup_cpu_power3, | ||
114 | .oprofile_cpu_type = "ppc64/rs64", | 108 | .oprofile_cpu_type = "ppc64/rs64", |
115 | .oprofile_type = PPC_OPROFILE_RS64, | 109 | .oprofile_type = PPC_OPROFILE_RS64, |
116 | .platform = "rs64", | 110 | .platform = "rs64", |
@@ -124,7 +118,6 @@ struct cpu_spec cpu_specs[] = { | |||
124 | .icache_bsize = 128, | 118 | .icache_bsize = 128, |
125 | .dcache_bsize = 128, | 119 | .dcache_bsize = 128, |
126 | .num_pmcs = 8, | 120 | .num_pmcs = 8, |
127 | .cpu_setup = __setup_cpu_power3, | ||
128 | .oprofile_cpu_type = "ppc64/rs64", | 121 | .oprofile_cpu_type = "ppc64/rs64", |
129 | .oprofile_type = PPC_OPROFILE_RS64, | 122 | .oprofile_type = PPC_OPROFILE_RS64, |
130 | .platform = "rs64", | 123 | .platform = "rs64", |
@@ -138,7 +131,6 @@ struct cpu_spec cpu_specs[] = { | |||
138 | .icache_bsize = 128, | 131 | .icache_bsize = 128, |
139 | .dcache_bsize = 128, | 132 | .dcache_bsize = 128, |
140 | .num_pmcs = 8, | 133 | .num_pmcs = 8, |
141 | .cpu_setup = __setup_cpu_power3, | ||
142 | .oprofile_cpu_type = "ppc64/rs64", | 134 | .oprofile_cpu_type = "ppc64/rs64", |
143 | .oprofile_type = PPC_OPROFILE_RS64, | 135 | .oprofile_type = PPC_OPROFILE_RS64, |
144 | .platform = "rs64", | 136 | .platform = "rs64", |
@@ -152,7 +144,6 @@ struct cpu_spec cpu_specs[] = { | |||
152 | .icache_bsize = 128, | 144 | .icache_bsize = 128, |
153 | .dcache_bsize = 128, | 145 | .dcache_bsize = 128, |
154 | .num_pmcs = 8, | 146 | .num_pmcs = 8, |
155 | .cpu_setup = __setup_cpu_power3, | ||
156 | .oprofile_cpu_type = "ppc64/rs64", | 147 | .oprofile_cpu_type = "ppc64/rs64", |
157 | .oprofile_type = PPC_OPROFILE_RS64, | 148 | .oprofile_type = PPC_OPROFILE_RS64, |
158 | .platform = "rs64", | 149 | .platform = "rs64", |
@@ -166,7 +157,6 @@ struct cpu_spec cpu_specs[] = { | |||
166 | .icache_bsize = 128, | 157 | .icache_bsize = 128, |
167 | .dcache_bsize = 128, | 158 | .dcache_bsize = 128, |
168 | .num_pmcs = 8, | 159 | .num_pmcs = 8, |
169 | .cpu_setup = __setup_cpu_power4, | ||
170 | .oprofile_cpu_type = "ppc64/power4", | 160 | .oprofile_cpu_type = "ppc64/power4", |
171 | .oprofile_type = PPC_OPROFILE_POWER4, | 161 | .oprofile_type = PPC_OPROFILE_POWER4, |
172 | .platform = "power4", | 162 | .platform = "power4", |
@@ -180,7 +170,6 @@ struct cpu_spec cpu_specs[] = { | |||
180 | .icache_bsize = 128, | 170 | .icache_bsize = 128, |
181 | .dcache_bsize = 128, | 171 | .dcache_bsize = 128, |
182 | .num_pmcs = 8, | 172 | .num_pmcs = 8, |
183 | .cpu_setup = __setup_cpu_power4, | ||
184 | .oprofile_cpu_type = "ppc64/power4", | 173 | .oprofile_cpu_type = "ppc64/power4", |
185 | .oprofile_type = PPC_OPROFILE_POWER4, | 174 | .oprofile_type = PPC_OPROFILE_POWER4, |
186 | .platform = "power4", | 175 | .platform = "power4", |
@@ -200,17 +189,11 @@ struct cpu_spec cpu_specs[] = { | |||
200 | .oprofile_type = PPC_OPROFILE_POWER4, | 189 | .oprofile_type = PPC_OPROFILE_POWER4, |
201 | .platform = "ppc970", | 190 | .platform = "ppc970", |
202 | }, | 191 | }, |
203 | #endif /* CONFIG_PPC64 */ | ||
204 | #if defined(CONFIG_PPC64) || defined(CONFIG_POWER4) | ||
205 | { /* PPC970FX */ | 192 | { /* PPC970FX */ |
206 | .pvr_mask = 0xffff0000, | 193 | .pvr_mask = 0xffff0000, |
207 | .pvr_value = 0x003c0000, | 194 | .pvr_value = 0x003c0000, |
208 | .cpu_name = "PPC970FX", | 195 | .cpu_name = "PPC970FX", |
209 | #ifdef CONFIG_PPC32 | ||
210 | .cpu_features = CPU_FTRS_970_32, | ||
211 | #else | ||
212 | .cpu_features = CPU_FTRS_PPC970, | 196 | .cpu_features = CPU_FTRS_PPC970, |
213 | #endif | ||
214 | .cpu_user_features = COMMON_USER_POWER4 | | 197 | .cpu_user_features = COMMON_USER_POWER4 | |
215 | PPC_FEATURE_HAS_ALTIVEC_COMP, | 198 | PPC_FEATURE_HAS_ALTIVEC_COMP, |
216 | .icache_bsize = 128, | 199 | .icache_bsize = 128, |
@@ -221,8 +204,6 @@ struct cpu_spec cpu_specs[] = { | |||
221 | .oprofile_type = PPC_OPROFILE_POWER4, | 204 | .oprofile_type = PPC_OPROFILE_POWER4, |
222 | .platform = "ppc970", | 205 | .platform = "ppc970", |
223 | }, | 206 | }, |
224 | #endif /* defined(CONFIG_PPC64) || defined(CONFIG_POWER4) */ | ||
225 | #ifdef CONFIG_PPC64 | ||
226 | { /* PPC970MP */ | 207 | { /* PPC970MP */ |
227 | .pvr_mask = 0xffff0000, | 208 | .pvr_mask = 0xffff0000, |
228 | .pvr_value = 0x00440000, | 209 | .pvr_value = 0x00440000, |
@@ -232,6 +213,7 @@ struct cpu_spec cpu_specs[] = { | |||
232 | PPC_FEATURE_HAS_ALTIVEC_COMP, | 213 | PPC_FEATURE_HAS_ALTIVEC_COMP, |
233 | .icache_bsize = 128, | 214 | .icache_bsize = 128, |
234 | .dcache_bsize = 128, | 215 | .dcache_bsize = 128, |
216 | .num_pmcs = 8, | ||
235 | .cpu_setup = __setup_cpu_ppc970, | 217 | .cpu_setup = __setup_cpu_ppc970, |
236 | .oprofile_cpu_type = "ppc64/970", | 218 | .oprofile_cpu_type = "ppc64/970", |
237 | .oprofile_type = PPC_OPROFILE_POWER4, | 219 | .oprofile_type = PPC_OPROFILE_POWER4, |
@@ -246,9 +228,13 @@ struct cpu_spec cpu_specs[] = { | |||
246 | .icache_bsize = 128, | 228 | .icache_bsize = 128, |
247 | .dcache_bsize = 128, | 229 | .dcache_bsize = 128, |
248 | .num_pmcs = 6, | 230 | .num_pmcs = 6, |
249 | .cpu_setup = __setup_cpu_power4, | ||
250 | .oprofile_cpu_type = "ppc64/power5", | 231 | .oprofile_cpu_type = "ppc64/power5", |
251 | .oprofile_type = PPC_OPROFILE_POWER4, | 232 | .oprofile_type = PPC_OPROFILE_POWER4, |
233 | /* SIHV / SIPR bits are implemented on POWER4+ (GQ) | ||
234 | * and above but only works on POWER5 and above | ||
235 | */ | ||
236 | .oprofile_mmcra_sihv = MMCRA_SIHV, | ||
237 | .oprofile_mmcra_sipr = MMCRA_SIPR, | ||
252 | .platform = "power5", | 238 | .platform = "power5", |
253 | }, | 239 | }, |
254 | { /* Power5 GS */ | 240 | { /* Power5 GS */ |
@@ -260,9 +246,10 @@ struct cpu_spec cpu_specs[] = { | |||
260 | .icache_bsize = 128, | 246 | .icache_bsize = 128, |
261 | .dcache_bsize = 128, | 247 | .dcache_bsize = 128, |
262 | .num_pmcs = 6, | 248 | .num_pmcs = 6, |
263 | .cpu_setup = __setup_cpu_power4, | ||
264 | .oprofile_cpu_type = "ppc64/power5+", | 249 | .oprofile_cpu_type = "ppc64/power5+", |
265 | .oprofile_type = PPC_OPROFILE_POWER4, | 250 | .oprofile_type = PPC_OPROFILE_POWER4, |
251 | .oprofile_mmcra_sihv = MMCRA_SIHV, | ||
252 | .oprofile_mmcra_sipr = MMCRA_SIPR, | ||
266 | .platform = "power5+", | 253 | .platform = "power5+", |
267 | }, | 254 | }, |
268 | { /* Power6 */ | 255 | { /* Power6 */ |
@@ -273,10 +260,13 @@ struct cpu_spec cpu_specs[] = { | |||
273 | .cpu_user_features = COMMON_USER_POWER6, | 260 | .cpu_user_features = COMMON_USER_POWER6, |
274 | .icache_bsize = 128, | 261 | .icache_bsize = 128, |
275 | .dcache_bsize = 128, | 262 | .dcache_bsize = 128, |
276 | .num_pmcs = 6, | 263 | .num_pmcs = 8, |
277 | .cpu_setup = __setup_cpu_power4, | ||
278 | .oprofile_cpu_type = "ppc64/power6", | 264 | .oprofile_cpu_type = "ppc64/power6", |
279 | .oprofile_type = PPC_OPROFILE_POWER4, | 265 | .oprofile_type = PPC_OPROFILE_POWER4, |
266 | .oprofile_mmcra_sihv = POWER6_MMCRA_SIHV, | ||
267 | .oprofile_mmcra_sipr = POWER6_MMCRA_SIPR, | ||
268 | .oprofile_mmcra_clear = POWER6_MMCRA_THRM | | ||
269 | POWER6_MMCRA_OTHER, | ||
280 | .platform = "power6", | 270 | .platform = "power6", |
281 | }, | 271 | }, |
282 | { /* Cell Broadband Engine */ | 272 | { /* Cell Broadband Engine */ |
@@ -289,7 +279,6 @@ struct cpu_spec cpu_specs[] = { | |||
289 | PPC_FEATURE_SMT, | 279 | PPC_FEATURE_SMT, |
290 | .icache_bsize = 128, | 280 | .icache_bsize = 128, |
291 | .dcache_bsize = 128, | 281 | .dcache_bsize = 128, |
292 | .cpu_setup = __setup_cpu_be, | ||
293 | .platform = "ppc-cell-be", | 282 | .platform = "ppc-cell-be", |
294 | }, | 283 | }, |
295 | { /* default match */ | 284 | { /* default match */ |
@@ -301,7 +290,6 @@ struct cpu_spec cpu_specs[] = { | |||
301 | .icache_bsize = 128, | 290 | .icache_bsize = 128, |
302 | .dcache_bsize = 128, | 291 | .dcache_bsize = 128, |
303 | .num_pmcs = 6, | 292 | .num_pmcs = 6, |
304 | .cpu_setup = __setup_cpu_power4, | ||
305 | .platform = "power4", | 293 | .platform = "power4", |
306 | } | 294 | } |
307 | #endif /* CONFIG_PPC64 */ | 295 | #endif /* CONFIG_PPC64 */ |
@@ -323,7 +311,7 @@ struct cpu_spec cpu_specs[] = { | |||
323 | .pvr_value = 0x00030000, | 311 | .pvr_value = 0x00030000, |
324 | .cpu_name = "603", | 312 | .cpu_name = "603", |
325 | .cpu_features = CPU_FTRS_603, | 313 | .cpu_features = CPU_FTRS_603, |
326 | .cpu_user_features = COMMON_USER, | 314 | .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE, |
327 | .icache_bsize = 32, | 315 | .icache_bsize = 32, |
328 | .dcache_bsize = 32, | 316 | .dcache_bsize = 32, |
329 | .cpu_setup = __setup_cpu_603, | 317 | .cpu_setup = __setup_cpu_603, |
@@ -334,7 +322,7 @@ struct cpu_spec cpu_specs[] = { | |||
334 | .pvr_value = 0x00060000, | 322 | .pvr_value = 0x00060000, |
335 | .cpu_name = "603e", | 323 | .cpu_name = "603e", |
336 | .cpu_features = CPU_FTRS_603, | 324 | .cpu_features = CPU_FTRS_603, |
337 | .cpu_user_features = COMMON_USER, | 325 | .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE, |
338 | .icache_bsize = 32, | 326 | .icache_bsize = 32, |
339 | .dcache_bsize = 32, | 327 | .dcache_bsize = 32, |
340 | .cpu_setup = __setup_cpu_603, | 328 | .cpu_setup = __setup_cpu_603, |
@@ -345,7 +333,7 @@ struct cpu_spec cpu_specs[] = { | |||
345 | .pvr_value = 0x00070000, | 333 | .pvr_value = 0x00070000, |
346 | .cpu_name = "603ev", | 334 | .cpu_name = "603ev", |
347 | .cpu_features = CPU_FTRS_603, | 335 | .cpu_features = CPU_FTRS_603, |
348 | .cpu_user_features = COMMON_USER, | 336 | .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE, |
349 | .icache_bsize = 32, | 337 | .icache_bsize = 32, |
350 | .dcache_bsize = 32, | 338 | .dcache_bsize = 32, |
351 | .cpu_setup = __setup_cpu_603, | 339 | .cpu_setup = __setup_cpu_603, |
@@ -356,7 +344,7 @@ struct cpu_spec cpu_specs[] = { | |||
356 | .pvr_value = 0x00040000, | 344 | .pvr_value = 0x00040000, |
357 | .cpu_name = "604", | 345 | .cpu_name = "604", |
358 | .cpu_features = CPU_FTRS_604, | 346 | .cpu_features = CPU_FTRS_604, |
359 | .cpu_user_features = COMMON_USER, | 347 | .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE, |
360 | .icache_bsize = 32, | 348 | .icache_bsize = 32, |
361 | .dcache_bsize = 32, | 349 | .dcache_bsize = 32, |
362 | .num_pmcs = 2, | 350 | .num_pmcs = 2, |
@@ -368,7 +356,7 @@ struct cpu_spec cpu_specs[] = { | |||
368 | .pvr_value = 0x00090000, | 356 | .pvr_value = 0x00090000, |
369 | .cpu_name = "604e", | 357 | .cpu_name = "604e", |
370 | .cpu_features = CPU_FTRS_604, | 358 | .cpu_features = CPU_FTRS_604, |
371 | .cpu_user_features = COMMON_USER, | 359 | .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE, |
372 | .icache_bsize = 32, | 360 | .icache_bsize = 32, |
373 | .dcache_bsize = 32, | 361 | .dcache_bsize = 32, |
374 | .num_pmcs = 4, | 362 | .num_pmcs = 4, |
@@ -380,7 +368,7 @@ struct cpu_spec cpu_specs[] = { | |||
380 | .pvr_value = 0x00090000, | 368 | .pvr_value = 0x00090000, |
381 | .cpu_name = "604r", | 369 | .cpu_name = "604r", |
382 | .cpu_features = CPU_FTRS_604, | 370 | .cpu_features = CPU_FTRS_604, |
383 | .cpu_user_features = COMMON_USER, | 371 | .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE, |
384 | .icache_bsize = 32, | 372 | .icache_bsize = 32, |
385 | .dcache_bsize = 32, | 373 | .dcache_bsize = 32, |
386 | .num_pmcs = 4, | 374 | .num_pmcs = 4, |
@@ -392,7 +380,7 @@ struct cpu_spec cpu_specs[] = { | |||
392 | .pvr_value = 0x000a0000, | 380 | .pvr_value = 0x000a0000, |
393 | .cpu_name = "604ev", | 381 | .cpu_name = "604ev", |
394 | .cpu_features = CPU_FTRS_604, | 382 | .cpu_features = CPU_FTRS_604, |
395 | .cpu_user_features = COMMON_USER, | 383 | .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE, |
396 | .icache_bsize = 32, | 384 | .icache_bsize = 32, |
397 | .dcache_bsize = 32, | 385 | .dcache_bsize = 32, |
398 | .num_pmcs = 4, | 386 | .num_pmcs = 4, |
@@ -404,7 +392,7 @@ struct cpu_spec cpu_specs[] = { | |||
404 | .pvr_value = 0x00084202, | 392 | .pvr_value = 0x00084202, |
405 | .cpu_name = "740/750", | 393 | .cpu_name = "740/750", |
406 | .cpu_features = CPU_FTRS_740_NOTAU, | 394 | .cpu_features = CPU_FTRS_740_NOTAU, |
407 | .cpu_user_features = COMMON_USER, | 395 | .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE, |
408 | .icache_bsize = 32, | 396 | .icache_bsize = 32, |
409 | .dcache_bsize = 32, | 397 | .dcache_bsize = 32, |
410 | .num_pmcs = 4, | 398 | .num_pmcs = 4, |
@@ -416,7 +404,7 @@ struct cpu_spec cpu_specs[] = { | |||
416 | .pvr_value = 0x00080100, | 404 | .pvr_value = 0x00080100, |
417 | .cpu_name = "750CX", | 405 | .cpu_name = "750CX", |
418 | .cpu_features = CPU_FTRS_750, | 406 | .cpu_features = CPU_FTRS_750, |
419 | .cpu_user_features = COMMON_USER, | 407 | .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE, |
420 | .icache_bsize = 32, | 408 | .icache_bsize = 32, |
421 | .dcache_bsize = 32, | 409 | .dcache_bsize = 32, |
422 | .num_pmcs = 4, | 410 | .num_pmcs = 4, |
@@ -428,7 +416,7 @@ struct cpu_spec cpu_specs[] = { | |||
428 | .pvr_value = 0x00082200, | 416 | .pvr_value = 0x00082200, |
429 | .cpu_name = "750CX", | 417 | .cpu_name = "750CX", |
430 | .cpu_features = CPU_FTRS_750, | 418 | .cpu_features = CPU_FTRS_750, |
431 | .cpu_user_features = COMMON_USER, | 419 | .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE, |
432 | .icache_bsize = 32, | 420 | .icache_bsize = 32, |
433 | .dcache_bsize = 32, | 421 | .dcache_bsize = 32, |
434 | .num_pmcs = 4, | 422 | .num_pmcs = 4, |
@@ -440,7 +428,7 @@ struct cpu_spec cpu_specs[] = { | |||
440 | .pvr_value = 0x00082210, | 428 | .pvr_value = 0x00082210, |
441 | .cpu_name = "750CXe", | 429 | .cpu_name = "750CXe", |
442 | .cpu_features = CPU_FTRS_750, | 430 | .cpu_features = CPU_FTRS_750, |
443 | .cpu_user_features = COMMON_USER, | 431 | .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE, |
444 | .icache_bsize = 32, | 432 | .icache_bsize = 32, |
445 | .dcache_bsize = 32, | 433 | .dcache_bsize = 32, |
446 | .num_pmcs = 4, | 434 | .num_pmcs = 4, |
@@ -452,7 +440,7 @@ struct cpu_spec cpu_specs[] = { | |||
452 | .pvr_value = 0x00083214, | 440 | .pvr_value = 0x00083214, |
453 | .cpu_name = "750CXe", | 441 | .cpu_name = "750CXe", |
454 | .cpu_features = CPU_FTRS_750, | 442 | .cpu_features = CPU_FTRS_750, |
455 | .cpu_user_features = COMMON_USER, | 443 | .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE, |
456 | .icache_bsize = 32, | 444 | .icache_bsize = 32, |
457 | .dcache_bsize = 32, | 445 | .dcache_bsize = 32, |
458 | .num_pmcs = 4, | 446 | .num_pmcs = 4, |
@@ -464,7 +452,7 @@ struct cpu_spec cpu_specs[] = { | |||
464 | .pvr_value = 0x00083000, | 452 | .pvr_value = 0x00083000, |
465 | .cpu_name = "745/755", | 453 | .cpu_name = "745/755", |
466 | .cpu_features = CPU_FTRS_750, | 454 | .cpu_features = CPU_FTRS_750, |
467 | .cpu_user_features = COMMON_USER, | 455 | .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE, |
468 | .icache_bsize = 32, | 456 | .icache_bsize = 32, |
469 | .dcache_bsize = 32, | 457 | .dcache_bsize = 32, |
470 | .num_pmcs = 4, | 458 | .num_pmcs = 4, |
@@ -476,7 +464,7 @@ struct cpu_spec cpu_specs[] = { | |||
476 | .pvr_value = 0x70000100, | 464 | .pvr_value = 0x70000100, |
477 | .cpu_name = "750FX", | 465 | .cpu_name = "750FX", |
478 | .cpu_features = CPU_FTRS_750FX1, | 466 | .cpu_features = CPU_FTRS_750FX1, |
479 | .cpu_user_features = COMMON_USER, | 467 | .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE, |
480 | .icache_bsize = 32, | 468 | .icache_bsize = 32, |
481 | .dcache_bsize = 32, | 469 | .dcache_bsize = 32, |
482 | .num_pmcs = 4, | 470 | .num_pmcs = 4, |
@@ -488,7 +476,7 @@ struct cpu_spec cpu_specs[] = { | |||
488 | .pvr_value = 0x70000200, | 476 | .pvr_value = 0x70000200, |
489 | .cpu_name = "750FX", | 477 | .cpu_name = "750FX", |
490 | .cpu_features = CPU_FTRS_750FX2, | 478 | .cpu_features = CPU_FTRS_750FX2, |
491 | .cpu_user_features = COMMON_USER, | 479 | .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE, |
492 | .icache_bsize = 32, | 480 | .icache_bsize = 32, |
493 | .dcache_bsize = 32, | 481 | .dcache_bsize = 32, |
494 | .num_pmcs = 4, | 482 | .num_pmcs = 4, |
@@ -500,7 +488,7 @@ struct cpu_spec cpu_specs[] = { | |||
500 | .pvr_value = 0x70000000, | 488 | .pvr_value = 0x70000000, |
501 | .cpu_name = "750FX", | 489 | .cpu_name = "750FX", |
502 | .cpu_features = CPU_FTRS_750FX, | 490 | .cpu_features = CPU_FTRS_750FX, |
503 | .cpu_user_features = COMMON_USER, | 491 | .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE, |
504 | .icache_bsize = 32, | 492 | .icache_bsize = 32, |
505 | .dcache_bsize = 32, | 493 | .dcache_bsize = 32, |
506 | .num_pmcs = 4, | 494 | .num_pmcs = 4, |
@@ -512,7 +500,7 @@ struct cpu_spec cpu_specs[] = { | |||
512 | .pvr_value = 0x70020000, | 500 | .pvr_value = 0x70020000, |
513 | .cpu_name = "750GX", | 501 | .cpu_name = "750GX", |
514 | .cpu_features = CPU_FTRS_750GX, | 502 | .cpu_features = CPU_FTRS_750GX, |
515 | .cpu_user_features = COMMON_USER, | 503 | .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE, |
516 | .icache_bsize = 32, | 504 | .icache_bsize = 32, |
517 | .dcache_bsize = 32, | 505 | .dcache_bsize = 32, |
518 | .num_pmcs = 4, | 506 | .num_pmcs = 4, |
@@ -524,7 +512,7 @@ struct cpu_spec cpu_specs[] = { | |||
524 | .pvr_value = 0x00080000, | 512 | .pvr_value = 0x00080000, |
525 | .cpu_name = "740/750", | 513 | .cpu_name = "740/750", |
526 | .cpu_features = CPU_FTRS_740, | 514 | .cpu_features = CPU_FTRS_740, |
527 | .cpu_user_features = COMMON_USER, | 515 | .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE, |
528 | .icache_bsize = 32, | 516 | .icache_bsize = 32, |
529 | .dcache_bsize = 32, | 517 | .dcache_bsize = 32, |
530 | .num_pmcs = 4, | 518 | .num_pmcs = 4, |
@@ -536,7 +524,8 @@ struct cpu_spec cpu_specs[] = { | |||
536 | .pvr_value = 0x000c1101, | 524 | .pvr_value = 0x000c1101, |
537 | .cpu_name = "7400 (1.1)", | 525 | .cpu_name = "7400 (1.1)", |
538 | .cpu_features = CPU_FTRS_7400_NOTAU, | 526 | .cpu_features = CPU_FTRS_7400_NOTAU, |
539 | .cpu_user_features = COMMON_USER | PPC_FEATURE_HAS_ALTIVEC_COMP, | 527 | .cpu_user_features = COMMON_USER | |
528 | PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_PPC_LE, | ||
540 | .icache_bsize = 32, | 529 | .icache_bsize = 32, |
541 | .dcache_bsize = 32, | 530 | .dcache_bsize = 32, |
542 | .num_pmcs = 4, | 531 | .num_pmcs = 4, |
@@ -548,7 +537,8 @@ struct cpu_spec cpu_specs[] = { | |||
548 | .pvr_value = 0x000c0000, | 537 | .pvr_value = 0x000c0000, |
549 | .cpu_name = "7400", | 538 | .cpu_name = "7400", |
550 | .cpu_features = CPU_FTRS_7400, | 539 | .cpu_features = CPU_FTRS_7400, |
551 | .cpu_user_features = COMMON_USER | PPC_FEATURE_HAS_ALTIVEC_COMP, | 540 | .cpu_user_features = COMMON_USER | |
541 | PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_PPC_LE, | ||
552 | .icache_bsize = 32, | 542 | .icache_bsize = 32, |
553 | .dcache_bsize = 32, | 543 | .dcache_bsize = 32, |
554 | .num_pmcs = 4, | 544 | .num_pmcs = 4, |
@@ -560,7 +550,8 @@ struct cpu_spec cpu_specs[] = { | |||
560 | .pvr_value = 0x800c0000, | 550 | .pvr_value = 0x800c0000, |
561 | .cpu_name = "7410", | 551 | .cpu_name = "7410", |
562 | .cpu_features = CPU_FTRS_7400, | 552 | .cpu_features = CPU_FTRS_7400, |
563 | .cpu_user_features = COMMON_USER | PPC_FEATURE_HAS_ALTIVEC_COMP, | 553 | .cpu_user_features = COMMON_USER | |
554 | PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_PPC_LE, | ||
564 | .icache_bsize = 32, | 555 | .icache_bsize = 32, |
565 | .dcache_bsize = 32, | 556 | .dcache_bsize = 32, |
566 | .num_pmcs = 4, | 557 | .num_pmcs = 4, |
@@ -572,7 +563,8 @@ struct cpu_spec cpu_specs[] = { | |||
572 | .pvr_value = 0x80000200, | 563 | .pvr_value = 0x80000200, |
573 | .cpu_name = "7450", | 564 | .cpu_name = "7450", |
574 | .cpu_features = CPU_FTRS_7450_20, | 565 | .cpu_features = CPU_FTRS_7450_20, |
575 | .cpu_user_features = COMMON_USER | PPC_FEATURE_HAS_ALTIVEC_COMP, | 566 | .cpu_user_features = COMMON_USER | |
567 | PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_PPC_LE, | ||
576 | .icache_bsize = 32, | 568 | .icache_bsize = 32, |
577 | .dcache_bsize = 32, | 569 | .dcache_bsize = 32, |
578 | .num_pmcs = 6, | 570 | .num_pmcs = 6, |
@@ -586,7 +578,8 @@ struct cpu_spec cpu_specs[] = { | |||
586 | .pvr_value = 0x80000201, | 578 | .pvr_value = 0x80000201, |
587 | .cpu_name = "7450", | 579 | .cpu_name = "7450", |
588 | .cpu_features = CPU_FTRS_7450_21, | 580 | .cpu_features = CPU_FTRS_7450_21, |
589 | .cpu_user_features = COMMON_USER | PPC_FEATURE_HAS_ALTIVEC_COMP, | 581 | .cpu_user_features = COMMON_USER | |
582 | PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_PPC_LE, | ||
590 | .icache_bsize = 32, | 583 | .icache_bsize = 32, |
591 | .dcache_bsize = 32, | 584 | .dcache_bsize = 32, |
592 | .num_pmcs = 6, | 585 | .num_pmcs = 6, |
@@ -600,7 +593,8 @@ struct cpu_spec cpu_specs[] = { | |||
600 | .pvr_value = 0x80000000, | 593 | .pvr_value = 0x80000000, |
601 | .cpu_name = "7450", | 594 | .cpu_name = "7450", |
602 | .cpu_features = CPU_FTRS_7450_23, | 595 | .cpu_features = CPU_FTRS_7450_23, |
603 | .cpu_user_features = COMMON_USER | PPC_FEATURE_HAS_ALTIVEC_COMP, | 596 | .cpu_user_features = COMMON_USER | |
597 | PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_PPC_LE, | ||
604 | .icache_bsize = 32, | 598 | .icache_bsize = 32, |
605 | .dcache_bsize = 32, | 599 | .dcache_bsize = 32, |
606 | .num_pmcs = 6, | 600 | .num_pmcs = 6, |
@@ -614,7 +608,8 @@ struct cpu_spec cpu_specs[] = { | |||
614 | .pvr_value = 0x80010100, | 608 | .pvr_value = 0x80010100, |
615 | .cpu_name = "7455", | 609 | .cpu_name = "7455", |
616 | .cpu_features = CPU_FTRS_7455_1, | 610 | .cpu_features = CPU_FTRS_7455_1, |
617 | .cpu_user_features = COMMON_USER | PPC_FEATURE_HAS_ALTIVEC_COMP, | 611 | .cpu_user_features = COMMON_USER | |
612 | PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_PPC_LE, | ||
618 | .icache_bsize = 32, | 613 | .icache_bsize = 32, |
619 | .dcache_bsize = 32, | 614 | .dcache_bsize = 32, |
620 | .num_pmcs = 6, | 615 | .num_pmcs = 6, |
@@ -628,7 +623,8 @@ struct cpu_spec cpu_specs[] = { | |||
628 | .pvr_value = 0x80010200, | 623 | .pvr_value = 0x80010200, |
629 | .cpu_name = "7455", | 624 | .cpu_name = "7455", |
630 | .cpu_features = CPU_FTRS_7455_20, | 625 | .cpu_features = CPU_FTRS_7455_20, |
631 | .cpu_user_features = COMMON_USER | PPC_FEATURE_HAS_ALTIVEC_COMP, | 626 | .cpu_user_features = COMMON_USER | |
627 | PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_PPC_LE, | ||
632 | .icache_bsize = 32, | 628 | .icache_bsize = 32, |
633 | .dcache_bsize = 32, | 629 | .dcache_bsize = 32, |
634 | .num_pmcs = 6, | 630 | .num_pmcs = 6, |
@@ -642,7 +638,8 @@ struct cpu_spec cpu_specs[] = { | |||
642 | .pvr_value = 0x80010000, | 638 | .pvr_value = 0x80010000, |
643 | .cpu_name = "7455", | 639 | .cpu_name = "7455", |
644 | .cpu_features = CPU_FTRS_7455, | 640 | .cpu_features = CPU_FTRS_7455, |
645 | .cpu_user_features = COMMON_USER | PPC_FEATURE_HAS_ALTIVEC_COMP, | 641 | .cpu_user_features = COMMON_USER | |
642 | PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_PPC_LE, | ||
646 | .icache_bsize = 32, | 643 | .icache_bsize = 32, |
647 | .dcache_bsize = 32, | 644 | .dcache_bsize = 32, |
648 | .num_pmcs = 6, | 645 | .num_pmcs = 6, |
@@ -656,7 +653,8 @@ struct cpu_spec cpu_specs[] = { | |||
656 | .pvr_value = 0x80020100, | 653 | .pvr_value = 0x80020100, |
657 | .cpu_name = "7447/7457", | 654 | .cpu_name = "7447/7457", |
658 | .cpu_features = CPU_FTRS_7447_10, | 655 | .cpu_features = CPU_FTRS_7447_10, |
659 | .cpu_user_features = COMMON_USER | PPC_FEATURE_HAS_ALTIVEC_COMP, | 656 | .cpu_user_features = COMMON_USER | |
657 | PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_PPC_LE, | ||
660 | .icache_bsize = 32, | 658 | .icache_bsize = 32, |
661 | .dcache_bsize = 32, | 659 | .dcache_bsize = 32, |
662 | .num_pmcs = 6, | 660 | .num_pmcs = 6, |
@@ -670,7 +668,8 @@ struct cpu_spec cpu_specs[] = { | |||
670 | .pvr_value = 0x80020101, | 668 | .pvr_value = 0x80020101, |
671 | .cpu_name = "7447/7457", | 669 | .cpu_name = "7447/7457", |
672 | .cpu_features = CPU_FTRS_7447_10, | 670 | .cpu_features = CPU_FTRS_7447_10, |
673 | .cpu_user_features = COMMON_USER | PPC_FEATURE_HAS_ALTIVEC_COMP, | 671 | .cpu_user_features = COMMON_USER | |
672 | PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_PPC_LE, | ||
674 | .icache_bsize = 32, | 673 | .icache_bsize = 32, |
675 | .dcache_bsize = 32, | 674 | .dcache_bsize = 32, |
676 | .num_pmcs = 6, | 675 | .num_pmcs = 6, |
@@ -684,7 +683,7 @@ struct cpu_spec cpu_specs[] = { | |||
684 | .pvr_value = 0x80020000, | 683 | .pvr_value = 0x80020000, |
685 | .cpu_name = "7447/7457", | 684 | .cpu_name = "7447/7457", |
686 | .cpu_features = CPU_FTRS_7447, | 685 | .cpu_features = CPU_FTRS_7447, |
687 | .cpu_user_features = COMMON_USER | PPC_FEATURE_HAS_ALTIVEC_COMP, | 686 | .cpu_user_features = COMMON_USER | PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_PPC_LE, |
688 | .icache_bsize = 32, | 687 | .icache_bsize = 32, |
689 | .dcache_bsize = 32, | 688 | .dcache_bsize = 32, |
690 | .num_pmcs = 6, | 689 | .num_pmcs = 6, |
@@ -698,7 +697,8 @@ struct cpu_spec cpu_specs[] = { | |||
698 | .pvr_value = 0x80030000, | 697 | .pvr_value = 0x80030000, |
699 | .cpu_name = "7447A", | 698 | .cpu_name = "7447A", |
700 | .cpu_features = CPU_FTRS_7447A, | 699 | .cpu_features = CPU_FTRS_7447A, |
701 | .cpu_user_features = COMMON_USER | PPC_FEATURE_HAS_ALTIVEC_COMP, | 700 | .cpu_user_features = COMMON_USER | |
701 | PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_PPC_LE, | ||
702 | .icache_bsize = 32, | 702 | .icache_bsize = 32, |
703 | .dcache_bsize = 32, | 703 | .dcache_bsize = 32, |
704 | .num_pmcs = 6, | 704 | .num_pmcs = 6, |
@@ -712,7 +712,8 @@ struct cpu_spec cpu_specs[] = { | |||
712 | .pvr_value = 0x80040000, | 712 | .pvr_value = 0x80040000, |
713 | .cpu_name = "7448", | 713 | .cpu_name = "7448", |
714 | .cpu_features = CPU_FTRS_7447A, | 714 | .cpu_features = CPU_FTRS_7447A, |
715 | .cpu_user_features = COMMON_USER | PPC_FEATURE_HAS_ALTIVEC_COMP, | 715 | .cpu_user_features = COMMON_USER | |
716 | PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_PPC_LE, | ||
716 | .icache_bsize = 32, | 717 | .icache_bsize = 32, |
717 | .dcache_bsize = 32, | 718 | .dcache_bsize = 32, |
718 | .num_pmcs = 6, | 719 | .num_pmcs = 6, |
@@ -721,6 +722,18 @@ struct cpu_spec cpu_specs[] = { | |||
721 | .oprofile_type = PPC_OPROFILE_G4, | 722 | .oprofile_type = PPC_OPROFILE_G4, |
722 | .platform = "ppc7450", | 723 | .platform = "ppc7450", |
723 | }, | 724 | }, |
725 | { /* 8641 */ | ||
726 | .pvr_mask = 0xffffffff, | ||
727 | .pvr_value = 0x80040010, | ||
728 | .cpu_name = "8641", | ||
729 | .cpu_features = CPU_FTRS_7447A, | ||
730 | .cpu_user_features = COMMON_USER | PPC_FEATURE_HAS_ALTIVEC_COMP, | ||
731 | .icache_bsize = 32, | ||
732 | .dcache_bsize = 32, | ||
733 | .num_pmcs = 6, | ||
734 | .cpu_setup = __setup_cpu_745x | ||
735 | }, | ||
736 | |||
724 | { /* 82xx (8240, 8245, 8260 are all 603e cores) */ | 737 | { /* 82xx (8240, 8245, 8260 are all 603e cores) */ |
725 | .pvr_mask = 0x7fff0000, | 738 | .pvr_mask = 0x7fff0000, |
726 | .pvr_value = 0x00810000, | 739 | .pvr_value = 0x00810000, |