s390: cpu_relax() is supposed to have barrier() semantics.
PATCH 1/1 s390: cpu_relax() is supposed to have barrier() semantics.
From: Heiko Carstens <[email protected]>
[S390] cpu_relax() is supposed to have barrier() semantics.
Signed-off-by Heiko Carstens <[email protected]>
Signed-off-by Martin Schwidefsky <[email protected]>
---
include/asm-s390/processor.h | 16 +++++++--------- include/asm-s390/setup.h | 3 ++- 2 files changed, 9 insertions(+), 10 deletions(-)
include/asm-s390/processor.h +7 -9
@@ -199,15 +199,13 @@ unsigned long get_wchan(struct task_stru/* * 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 ) + asmvolatile ("diag 0,0,68" : : :"memory" ); +else +barrier (); +}/* * Set PSW to specified value.
include/asm-s390/setup.h +2 -1
@@ -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__ */