diff options
Diffstat (limited to 'include/asm-powerpc/cputable.h')
-rw-r--r-- | include/asm-powerpc/cputable.h | 40 |
1 files changed, 30 insertions, 10 deletions
diff --git a/include/asm-powerpc/cputable.h b/include/asm-powerpc/cputable.h index 3dc8e2dfca84..ae093ef68363 100644 --- a/include/asm-powerpc/cputable.h +++ b/include/asm-powerpc/cputable.h | |||
@@ -57,6 +57,7 @@ enum powerpc_pmc_type { | |||
57 | PPC_PMC_PA6T = 2, | 57 | PPC_PMC_PA6T = 2, |
58 | }; | 58 | }; |
59 | 59 | ||
60 | /* NOTE WELL: Update identify_cpu() if fields are added or removed! */ | ||
60 | struct cpu_spec { | 61 | struct cpu_spec { |
61 | /* CPU is matched via (PVR & pvr_mask) == pvr_value */ | 62 | /* CPU is matched via (PVR & pvr_mask) == pvr_value */ |
62 | unsigned int pvr_mask; | 63 | unsigned int pvr_mask; |
@@ -136,6 +137,7 @@ extern void do_feature_fixups(unsigned long value, void *fixup_start, | |||
136 | #define CPU_FTR_REAL_LE ASM_CONST(0x0000000000400000) | 137 | #define CPU_FTR_REAL_LE ASM_CONST(0x0000000000400000) |
137 | #define CPU_FTR_FPU_UNAVAILABLE ASM_CONST(0x0000000000800000) | 138 | #define CPU_FTR_FPU_UNAVAILABLE ASM_CONST(0x0000000000800000) |
138 | #define CPU_FTR_UNIFIED_ID_CACHE ASM_CONST(0x0000000001000000) | 139 | #define CPU_FTR_UNIFIED_ID_CACHE ASM_CONST(0x0000000001000000) |
140 | #define CPU_FTR_SPE ASM_CONST(0x0000000002000000) | ||
139 | 141 | ||
140 | /* | 142 | /* |
141 | * Add the 64-bit processor unique features in the top half of the word; | 143 | * Add the 64-bit processor unique features in the top half of the word; |
@@ -162,6 +164,7 @@ extern void do_feature_fixups(unsigned long value, void *fixup_start, | |||
162 | #define CPU_FTR_CELL_TB_BUG LONG_ASM_CONST(0x0000800000000000) | 164 | #define CPU_FTR_CELL_TB_BUG LONG_ASM_CONST(0x0000800000000000) |
163 | #define CPU_FTR_SPURR LONG_ASM_CONST(0x0001000000000000) | 165 | #define CPU_FTR_SPURR LONG_ASM_CONST(0x0001000000000000) |
164 | #define CPU_FTR_DSCR LONG_ASM_CONST(0x0002000000000000) | 166 | #define CPU_FTR_DSCR LONG_ASM_CONST(0x0002000000000000) |
167 | #define CPU_FTR_1T_SEGMENT LONG_ASM_CONST(0x0004000000000000) | ||
165 | 168 | ||
166 | #ifndef __ASSEMBLY__ | 169 | #ifndef __ASSEMBLY__ |
167 | 170 | ||
@@ -180,12 +183,27 @@ extern void do_feature_fixups(unsigned long value, void *fixup_start, | |||
180 | #define PPC_FEATURE_HAS_ALTIVEC_COMP 0 | 183 | #define PPC_FEATURE_HAS_ALTIVEC_COMP 0 |
181 | #endif | 184 | #endif |
182 | 185 | ||
183 | /* We need to mark all pages as being coherent if we're SMP or we | 186 | /* We only set the spe features if the kernel was compiled with spe |
184 | * have a 74[45]x and an MPC107 host bridge. Also 83xx requires | 187 | * support |
185 | * it for PCI "streaming/prefetch" to work properly. | 188 | */ |
189 | #ifdef CONFIG_SPE | ||
190 | #define CPU_FTR_SPE_COMP CPU_FTR_SPE | ||
191 | #define PPC_FEATURE_HAS_SPE_COMP PPC_FEATURE_HAS_SPE | ||
192 | #define PPC_FEATURE_HAS_EFP_SINGLE_COMP PPC_FEATURE_HAS_EFP_SINGLE | ||
193 | #define PPC_FEATURE_HAS_EFP_DOUBLE_COMP PPC_FEATURE_HAS_EFP_DOUBLE | ||
194 | #else | ||
195 | #define CPU_FTR_SPE_COMP 0 | ||
196 | #define PPC_FEATURE_HAS_SPE_COMP 0 | ||
197 | #define PPC_FEATURE_HAS_EFP_SINGLE_COMP 0 | ||
198 | #define PPC_FEATURE_HAS_EFP_DOUBLE_COMP 0 | ||
199 | #endif | ||
200 | |||
201 | /* We need to mark all pages as being coherent if we're SMP or we have a | ||
202 | * 74[45]x and an MPC107 host bridge. Also 83xx and PowerQUICC II | ||
203 | * require it for PCI "streaming/prefetch" to work properly. | ||
186 | */ | 204 | */ |
187 | #if defined(CONFIG_SMP) || defined(CONFIG_MPC10X_BRIDGE) \ | 205 | #if defined(CONFIG_SMP) || defined(CONFIG_MPC10X_BRIDGE) \ |
188 | || defined(CONFIG_PPC_83xx) | 206 | || defined(CONFIG_PPC_83xx) || defined(CONFIG_8260) |
189 | #define CPU_FTR_COMMON CPU_FTR_NEED_COHERENT | 207 | #define CPU_FTR_COMMON CPU_FTR_NEED_COHERENT |
190 | #else | 208 | #else |
191 | #define CPU_FTR_COMMON 0 | 209 | #define CPU_FTR_COMMON 0 |
@@ -297,7 +315,7 @@ extern void do_feature_fixups(unsigned long value, void *fixup_start, | |||
297 | CPU_FTR_PPC_LE) | 315 | CPU_FTR_PPC_LE) |
298 | #define CPU_FTRS_82XX (CPU_FTR_COMMON | \ | 316 | #define CPU_FTRS_82XX (CPU_FTR_COMMON | \ |
299 | CPU_FTR_MAYBE_CAN_DOZE | CPU_FTR_USE_TB) | 317 | CPU_FTR_MAYBE_CAN_DOZE | CPU_FTR_USE_TB) |
300 | #define CPU_FTRS_G2_LE (CPU_FTR_MAYBE_CAN_DOZE | \ | 318 | #define CPU_FTRS_G2_LE (CPU_FTR_COMMON | CPU_FTR_MAYBE_CAN_DOZE | \ |
301 | CPU_FTR_USE_TB | CPU_FTR_MAYBE_CAN_NAP | CPU_FTR_HAS_HIGH_BATS) | 319 | CPU_FTR_USE_TB | CPU_FTR_MAYBE_CAN_NAP | CPU_FTR_HAS_HIGH_BATS) |
302 | #define CPU_FTRS_E300 (CPU_FTR_MAYBE_CAN_DOZE | \ | 320 | #define CPU_FTRS_E300 (CPU_FTR_MAYBE_CAN_DOZE | \ |
303 | CPU_FTR_USE_TB | CPU_FTR_MAYBE_CAN_NAP | CPU_FTR_HAS_HIGH_BATS | \ | 321 | CPU_FTR_USE_TB | CPU_FTR_MAYBE_CAN_NAP | CPU_FTR_HAS_HIGH_BATS | \ |
@@ -310,10 +328,12 @@ extern void do_feature_fixups(unsigned long value, void *fixup_start, | |||
310 | #define CPU_FTRS_8XX (CPU_FTR_USE_TB) | 328 | #define CPU_FTRS_8XX (CPU_FTR_USE_TB) |
311 | #define CPU_FTRS_40X (CPU_FTR_USE_TB | CPU_FTR_NODSISRALIGN) | 329 | #define CPU_FTRS_40X (CPU_FTR_USE_TB | CPU_FTR_NODSISRALIGN) |
312 | #define CPU_FTRS_44X (CPU_FTR_USE_TB | CPU_FTR_NODSISRALIGN) | 330 | #define CPU_FTRS_44X (CPU_FTR_USE_TB | CPU_FTR_NODSISRALIGN) |
313 | #define CPU_FTRS_E200 (CPU_FTR_USE_TB | CPU_FTR_NODSISRALIGN | \ | 331 | #define CPU_FTRS_E200 (CPU_FTR_USE_TB | CPU_FTR_SPE_COMP | \ |
314 | CPU_FTR_COHERENT_ICACHE | CPU_FTR_UNIFIED_ID_CACHE) | 332 | CPU_FTR_NODSISRALIGN | CPU_FTR_COHERENT_ICACHE | \ |
315 | #define CPU_FTRS_E500 (CPU_FTR_USE_TB | CPU_FTR_NODSISRALIGN) | 333 | CPU_FTR_UNIFIED_ID_CACHE) |
316 | #define CPU_FTRS_E500_2 (CPU_FTR_USE_TB | \ | 334 | #define CPU_FTRS_E500 (CPU_FTR_USE_TB | CPU_FTR_SPE_COMP | \ |
335 | CPU_FTR_NODSISRALIGN) | ||
336 | #define CPU_FTRS_E500_2 (CPU_FTR_USE_TB | CPU_FTR_SPE_COMP | \ | ||
317 | CPU_FTR_BIG_PHYS | CPU_FTR_NODSISRALIGN) | 337 | CPU_FTR_BIG_PHYS | CPU_FTR_NODSISRALIGN) |
318 | #define CPU_FTRS_GENERIC_32 (CPU_FTR_COMMON | CPU_FTR_NODSISRALIGN) | 338 | #define CPU_FTRS_GENERIC_32 (CPU_FTR_COMMON | CPU_FTR_NODSISRALIGN) |
319 | 339 | ||
@@ -355,7 +375,7 @@ extern void do_feature_fixups(unsigned long value, void *fixup_start, | |||
355 | #define CPU_FTRS_POSSIBLE \ | 375 | #define CPU_FTRS_POSSIBLE \ |
356 | (CPU_FTRS_POWER3 | CPU_FTRS_RS64 | CPU_FTRS_POWER4 | \ | 376 | (CPU_FTRS_POWER3 | CPU_FTRS_RS64 | CPU_FTRS_POWER4 | \ |
357 | CPU_FTRS_PPC970 | CPU_FTRS_POWER5 | CPU_FTRS_POWER6 | \ | 377 | CPU_FTRS_PPC970 | CPU_FTRS_POWER5 | CPU_FTRS_POWER6 | \ |
358 | CPU_FTRS_CELL | CPU_FTRS_PA6T) | 378 | CPU_FTRS_CELL | CPU_FTRS_PA6T | CPU_FTR_1T_SEGMENT) |
359 | #else | 379 | #else |
360 | enum { | 380 | enum { |
361 | CPU_FTRS_POSSIBLE = | 381 | CPU_FTRS_POSSIBLE = |