[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.
*/
#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.

View 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__ */