[S390] cpu_relax() is supposed to have barrier() semantics.
authorHeiko Carstens <heiko.carstens@de.ibm.com>
Wed, 12 Jul 2006 14:39:58 +0000 (16:39 +0200)
committerMartin Schwidefsky <schwidefsky@de.ibm.com>
Wed, 12 Jul 2006 14:39:58 +0000 (16:39 +0200)
Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
include/asm-s390/processor.h
include/asm-s390/setup.h

index c5cbc4bd8414e12c571982cb5c5d0f85bec31406..5b71d37317239b94c38eef11eae89a34048b79d6 100644 (file)
@@ -199,15 +199,13 @@ unsigned long get_wchan(struct task_struct *p);
 /*
  * Give up the time slice of the virtual PU.
  */
-#ifndef __s390x__
-# define cpu_relax()   asm volatile ("diag 0,0,68" : : : "memory")
-#else /* __s390x__ */
-# define cpu_relax() \
-       do { \
-               if (MACHINE_HAS_DIAG44) \
-                       asm volatile ("diag 0,0,68" : : : "memory"); \
-       } while (0)
-#endif /* __s390x__ */
+static inline void cpu_relax(void)
+{
+       if (MACHINE_HAS_DIAG44)
+               asm volatile ("diag 0,0,68" : : : "memory");
+       else
+               barrier();
+}
 
 /*
  * Set PSW to specified value.
index da3fd4a7bb3257f75b0e6be92d7c13c1879b7c4d..19e31979309a14ce713333b540127cedefeb4ce9 100644 (file)
@@ -40,15 +40,16 @@ extern unsigned long machine_flags;
 #define MACHINE_IS_VM          (machine_flags & 1)
 #define MACHINE_IS_P390                (machine_flags & 4)
 #define MACHINE_HAS_MVPG       (machine_flags & 16)
-#define MACHINE_HAS_DIAG44     (machine_flags & 32)
 #define MACHINE_HAS_IDTE       (machine_flags & 128)
 
 #ifndef __s390x__
 #define MACHINE_HAS_IEEE       (machine_flags & 2)
 #define MACHINE_HAS_CSP                (machine_flags & 8)
+#define MACHINE_HAS_DIAG44     (1)
 #else /* __s390x__ */
 #define MACHINE_HAS_IEEE       (1)
 #define MACHINE_HAS_CSP                (1)
+#define MACHINE_HAS_DIAG44     (machine_flags & 32)
 #endif /* __s390x__ */