Merge branches 'at91', 'dcache', 'ftrace', 'hwbpt', 'misc', 'mmci', 's3c', 'st-ux...
[linux-2.6/linux-acpi-2.6/ibm-acpi-2.6.git] / arch / arm / include / asm / smp_plat.h
blobf24c1b9e211dd180a6caf548260110a33f75b33c
1 /*
2 * ARM specific SMP header, this contains our implementation
3 * details.
4 */
5 #ifndef __ASMARM_SMP_PLAT_H
6 #define __ASMARM_SMP_PLAT_H
8 #include <asm/cputype.h>
11 * Return true if we are running on a SMP platform
13 static inline bool is_smp(void)
15 #ifndef CONFIG_SMP
16 return false;
17 #elif defined(CONFIG_SMP_ON_UP)
18 extern unsigned int smp_on_up;
19 return !!smp_on_up;
20 #else
21 return true;
22 #endif
25 /* all SMP configurations have the extended CPUID registers */
26 static inline int tlb_ops_need_broadcast(void)
28 if (!is_smp())
29 return 0;
31 return ((read_cpuid_ext(CPUID_EXT_MMFR3) >> 12) & 0xf) < 2;
34 #if !defined(CONFIG_SMP) || __LINUX_ARM_ARCH__ >= 7
35 #define cache_ops_need_broadcast() 0
36 #else
37 static inline int cache_ops_need_broadcast(void)
39 if (!is_smp())
40 return 0;
42 return ((read_cpuid_ext(CPUID_EXT_MMFR3) >> 12) & 0xf) < 1;
44 #endif
46 #endif