[ARM] 4126/1: Add the ARM specific barriers
authorCatalin Marinas <catalin.marinas@arm.com>
Mon, 5 Feb 2007 13:47:35 +0000 (14:47 +0100)
committerRussell King <rmk+kernel@arm.linux.org.uk>
Thu, 8 Feb 2007 14:49:15 +0000 (14:49 +0000)
There are three barriers - ISB, DMB and DSB for different
scenarious. This patch adds their definitions in the system.h file.

Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
include/asm-arm/system.h

index aa223fc546afdee10d5b0d74bae41014122a07fe..e5aa372beb94ab8caddeb346959b897ac91f33cf 100644 (file)
@@ -193,11 +193,19 @@ extern unsigned int user_debug;
 #endif
 
 #if __LINUX_ARM_ARCH__ >= 6
-#define mb() __asm__ __volatile__ ("mcr p15, 0, %0, c7, c10, 5" \
-                                   : : "r" (0) : "memory")
+#define isb() __asm__ __volatile__ ("mcr p15, 0, %0, c7, c5, 4" \
+                                   : : "r" (0) : "memory")
+#define dsb() __asm__ __volatile__ ("mcr p15, 0, %0, c7, c10, 4" \
+                                   : : "r" (0) : "memory")
+#define dmb() __asm__ __volatile__ ("mcr p15, 0, %0, c7, c10, 5" \
+                                   : : "r" (0) : "memory")
 #else
-#define mb() __asm__ __volatile__ ("" : : : "memory")
+#define isb() __asm__ __volatile__ ("" : : : "memory")
+#define dsb() __asm__ __volatile__ ("mcr p15, 0, %0, c7, c10, 4" \
+                                   : : "r" (0) : "memory")
+#define dmb() __asm__ __volatile__ ("" : : : "memory")
 #endif
+#define mb() dmb()
 #define rmb() mb()
 #define wmb() mb()
 #define read_barrier_depends() do { } while(0)