diff options
author | Tony Lindgren <tony@atomide.com> | 2010-10-05 11:40:13 -0400 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2010-10-08 05:02:24 -0400 |
commit | 7511db9d25080d53e5427bf4b8849278c07019bc (patch) | |
tree | ab05e133b3b7a277c28dd01cf10f8d768674c28e /arch/arm/include/asm | |
parent | 81d11955bf0b5ae25e3adbec930cd84840385dae (diff) |
ARM: 6429/1: Check for is_smp for tlb_ops and cache_ops broadcast
Broadcast should not be needed when running SMP kernel on UP systems.
Also, this fixes an undefined instruction for SMP_ON_UP on earlier ARM
cores without the extended CPUID_EXT_MMFR3 register.
Signed-off-by: Tony Lindgren <tony@atomide.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'arch/arm/include/asm')
-rw-r--r-- | arch/arm/include/asm/smp_plat.h | 28 |
1 files changed, 17 insertions, 11 deletions
diff --git a/arch/arm/include/asm/smp_plat.h b/arch/arm/include/asm/smp_plat.h index 7de5aa56c18b..7f4e6633f753 100644 --- a/arch/arm/include/asm/smp_plat.h +++ b/arch/arm/include/asm/smp_plat.h | |||
@@ -7,17 +7,6 @@ | |||
7 | 7 | ||
8 | #include <asm/cputype.h> | 8 | #include <asm/cputype.h> |
9 | 9 | ||
10 | /* all SMP configurations have the extended CPUID registers */ | ||
11 | static inline int tlb_ops_need_broadcast(void) | ||
12 | { | ||
13 | return ((read_cpuid_ext(CPUID_EXT_MMFR3) >> 12) & 0xf) < 2; | ||
14 | } | ||
15 | |||
16 | static inline int cache_ops_need_broadcast(void) | ||
17 | { | ||
18 | return ((read_cpuid_ext(CPUID_EXT_MMFR3) >> 12) & 0xf) < 1; | ||
19 | } | ||
20 | |||
21 | /* | 10 | /* |
22 | * Return true if we are running on a SMP platform | 11 | * Return true if we are running on a SMP platform |
23 | */ | 12 | */ |
@@ -33,4 +22,21 @@ static inline bool is_smp(void) | |||
33 | #endif | 22 | #endif |
34 | } | 23 | } |
35 | 24 | ||
25 | /* all SMP configurations have the extended CPUID registers */ | ||
26 | static inline int tlb_ops_need_broadcast(void) | ||
27 | { | ||
28 | if (!is_smp()) | ||
29 | return 0; | ||
30 | |||
31 | return ((read_cpuid_ext(CPUID_EXT_MMFR3) >> 12) & 0xf) < 2; | ||
32 | } | ||
33 | |||
34 | static inline int cache_ops_need_broadcast(void) | ||
35 | { | ||
36 | if (!is_smp()) | ||
37 | return 0; | ||
38 | |||
39 | return ((read_cpuid_ext(CPUID_EXT_MMFR3) >> 12) & 0xf) < 1; | ||
40 | } | ||
41 | |||
36 | #endif | 42 | #endif |