diff options
| author | H. Peter Anvin <hpa@zytor.com> | 2010-05-08 14:59:58 -0700 |
|---|---|---|
| committer | H. Peter Anvin <hpa@zytor.com> | 2010-05-08 14:59:58 -0700 |
| commit | d7be0ce6afb1df60bc786f57410407ceae92b994 (patch) | |
| tree | 5e91acfc12c833531ad3320f274e0cd96a129973 /arch/arm/include/asm/system.h | |
| parent | e08cae4181af9483b04ecfac48f01c8e5a5f27bf (diff) | |
| parent | 66f41d4c5c8a5deed66fdcc84509376c9a0bf9d8 (diff) | |
| download | linux-d7be0ce6afb1df60bc786f57410407ceae92b994.tar.gz linux-d7be0ce6afb1df60bc786f57410407ceae92b994.tar.bz2 linux-d7be0ce6afb1df60bc786f57410407ceae92b994.zip | |
Merge commit 'v2.6.34-rc6' into x86/cpu
Diffstat (limited to 'arch/arm/include/asm/system.h')
| -rw-r--r-- | arch/arm/include/asm/system.h | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/arch/arm/include/asm/system.h b/arch/arm/include/asm/system.h index ca88e6a84707..4ace45ec3ef8 100644 --- a/arch/arm/include/asm/system.h +++ b/arch/arm/include/asm/system.h @@ -60,6 +60,8 @@ #include <linux/linkage.h> #include <linux/irqflags.h> +#include <asm/outercache.h> + #define __exception __attribute__((section(".exception.text"))) struct thread_info; @@ -137,10 +139,12 @@ extern unsigned int user_debug; #define dmb() __asm__ __volatile__ ("" : : : "memory") #endif -#if __LINUX_ARM_ARCH__ >= 7 || defined(CONFIG_SMP) -#define mb() dmb() +#ifdef CONFIG_ARCH_HAS_BARRIERS +#include <mach/barriers.h> +#elif __LINUX_ARM_ARCH__ >= 7 || defined(CONFIG_SMP) +#define mb() do { dsb(); outer_sync(); } while (0) #define rmb() dmb() -#define wmb() dmb() +#define wmb() mb() #else #define mb() do { if (arch_is_coherent()) dmb(); else barrier(); } while (0) #define rmb() do { if (arch_is_coherent()) dmb(); else barrier(); } while (0) @@ -152,9 +156,9 @@ extern unsigned int user_debug; #define smp_rmb() barrier() #define smp_wmb() barrier() #else -#define smp_mb() mb() -#define smp_rmb() rmb() -#define smp_wmb() wmb() +#define smp_mb() dmb() +#define smp_rmb() dmb() +#define smp_wmb() dmb() #endif #define read_barrier_depends() do { } while(0) |
