]> err.no Git - linux-2.6/blobdiff - include/asm-blackfin/system.h
Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/sparc-2.6
[linux-2.6] / include / asm-blackfin / system.h
index 5e5f1a0566c0fe6b1c90d9d0d0b039ed23c289e8..4a927379ee1ce9c5fdc006fe2a3bbed851f3d1eb 100644 (file)
@@ -36,6 +36,7 @@
 
 #include <linux/linkage.h>
 #include <linux/compiler.h>
+#include <asm/mach/anomaly.h>
 
 /*
  * Interrupt configuring macros.
 
 extern unsigned long irq_flags;
 
-#define local_irq_enable() do {                \
-       __asm__ __volatile__ (          \
-               "sti %0;"               \
-               ::"d"(irq_flags));      \
-} while (0)
+#define local_irq_enable() \
+       __asm__ __volatile__( \
+               "sti %0;" \
+               : \
+               : "d" (irq_flags) \
+       )
 
-#define local_irq_disable() do {       \
-       int _tmp_dummy;                 \
-       __asm__ __volatile__ (          \
-               "cli %0;"               \
-               :"=d" (_tmp_dummy):);   \
-} while (0)
+#define local_irq_disable() \
+       do { \
+               int __tmp_dummy; \
+               __asm__ __volatile__( \
+                       "cli %0;" \
+                       : "=d" (__tmp_dummy) \
+               ); \
+       } while (0)
 
-#if defined(ANOMALY_05000244) && defined (CONFIG_BLKFIN_CACHE)
-#define idle_with_irq_disabled() do {   \
-        __asm__ __volatile__ (          \
-                "nop; nop;\n"           \
-                ".align 8;\n"           \
-                "sti %0; idle;\n"       \
-                ::"d" (irq_flags));     \
-} while (0)
+#if ANOMALY_05000244 && defined(CONFIG_BFIN_ICACHE)
+# define NOP_PAD_ANOMALY_05000244 "nop; nop;"
 #else
-#define idle_with_irq_disabled() do {   \
-       __asm__ __volatile__ (          \
-               ".align 8;\n"           \
-               "sti %0; idle;\n"       \
-               ::"d" (irq_flags));     \
-} while (0)
+# define NOP_PAD_ANOMALY_05000244
 #endif
 
+#define idle_with_irq_disabled() \
+       __asm__ __volatile__( \
+               NOP_PAD_ANOMALY_05000244 \
+               ".align 8;" \
+               "sti %0;" \
+               "idle;" \
+               : \
+               : "d" (irq_flags) \
+       )
+
 #ifdef CONFIG_DEBUG_HWERR
-#define __save_and_cli(x) do {                 \
-       __asm__ __volatile__ (                  \
-               "cli %0;\n\tsti %1;"            \
-               :"=&d"(x): "d" (0x3F));         \
-} while (0)
+# define __save_and_cli(x) \
+       __asm__ __volatile__( \
+               "cli %0;" \
+               "sti %1;" \
+               : "=&d" (x) \
+               : "d" (0x3F) \
+       )
 #else
-#define __save_and_cli(x) do {         \
-       __asm__ __volatile__ (          \
-               "cli %0;"               \
-               :"=&d"(x):);            \
-} while (0)
+# define __save_and_cli(x) \
+       __asm__ __volatile__( \
+               "cli %0;" \
+               : "=&d" (x) \
+       )
 #endif
 
-#define local_save_flags(x) asm volatile ("cli %0;"     \
-                                         "sti %0;"     \
-                                         :"=d"(x):);
+#define local_save_flags(x) \
+       __asm__ __volatile__( \
+               "cli %0;" \
+               "sti %0;" \
+               : "=d" (x) \
+       )
 
 #ifdef CONFIG_DEBUG_HWERR
 #define irqs_enabled_from_flags(x) (((x) & ~0x3f) != 0)
@@ -97,10 +105,11 @@ extern unsigned long irq_flags;
 #define irqs_enabled_from_flags(x) ((x) != 0x1f)
 #endif
 
-#define local_irq_restore(x) do {                      \
-       if (irqs_enabled_from_flags(x))                 \
-               local_irq_enable ();                    \
-} while (0)
+#define local_irq_restore(x) \
+       do { \
+               if (irqs_enabled_from_flags(x)) \
+                       local_irq_enable(); \
+       } while (0)
 
 /* For spinlocks etc */
 #define local_irq_save(x) __save_and_cli(x)
@@ -119,9 +128,7 @@ extern unsigned long irq_flags;
 #define mb()   asm volatile (""   : : :"memory")
 #define rmb()  asm volatile (""   : : :"memory")
 #define wmb()  asm volatile (""   : : :"memory")
-#define set_rmb(var, value)    do { (void) xchg(&var, value); } while (0)
-#define set_mb(var, value)     set_rmb(var, value)
-#define set_wmb(var, value)    do { var = value; wmb(); } while (0)
+#define set_mb(var, value) do { (void) xchg(&var, value); } while (0)
 
 #define read_barrier_depends()                 do { } while(0)