[S390] cpu_relax() is supposed to have barrier() semantics.

Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
This commit is contained in:
Heiko Carstens 2006-07-12 16:39:58 +02:00 committed by Martin Schwidefsky
parent 13492c50f6
commit abdba61a43
2 changed files with 9 additions and 10 deletions

View File

@ -199,15 +199,13 @@ unsigned long get_wchan(struct task_struct *p);
/* /*
* Give up the time slice of the virtual PU. * Give up the time slice of the virtual PU.
*/ */
#ifndef __s390x__ static inline void cpu_relax(void)
# define cpu_relax() asm volatile ("diag 0,0,68" : : : "memory") {
#else /* __s390x__ */ if (MACHINE_HAS_DIAG44)
# define cpu_relax() \ asm volatile ("diag 0,0,68" : : : "memory");
do { \ else
if (MACHINE_HAS_DIAG44) \ barrier();
asm volatile ("diag 0,0,68" : : : "memory"); \ }
} while (0)
#endif /* __s390x__ */
/* /*
* Set PSW to specified value. * Set PSW to specified value.

View File

@ -40,15 +40,16 @@ extern unsigned long machine_flags;
#define MACHINE_IS_VM (machine_flags & 1) #define MACHINE_IS_VM (machine_flags & 1)
#define MACHINE_IS_P390 (machine_flags & 4) #define MACHINE_IS_P390 (machine_flags & 4)
#define MACHINE_HAS_MVPG (machine_flags & 16) #define MACHINE_HAS_MVPG (machine_flags & 16)
#define MACHINE_HAS_DIAG44 (machine_flags & 32)
#define MACHINE_HAS_IDTE (machine_flags & 128) #define MACHINE_HAS_IDTE (machine_flags & 128)
#ifndef __s390x__ #ifndef __s390x__
#define MACHINE_HAS_IEEE (machine_flags & 2) #define MACHINE_HAS_IEEE (machine_flags & 2)
#define MACHINE_HAS_CSP (machine_flags & 8) #define MACHINE_HAS_CSP (machine_flags & 8)
#define MACHINE_HAS_DIAG44 (1)
#else /* __s390x__ */ #else /* __s390x__ */
#define MACHINE_HAS_IEEE (1) #define MACHINE_HAS_IEEE (1)
#define MACHINE_HAS_CSP (1) #define MACHINE_HAS_CSP (1)
#define MACHINE_HAS_DIAG44 (machine_flags & 32)
#endif /* __s390x__ */ #endif /* __s390x__ */