about summary refs log tree commit diff
path: root/nptl/sysdeps/unix/sysv/linux/s390/s390-64
diff options
context:
space:
mode:
authorRoland McGrath <roland@gnu.org>2003-03-20 09:51:17 +0000
committerRoland McGrath <roland@gnu.org>2003-03-20 09:51:17 +0000
commit100a7100a77029d3e56174c4a9124779c40a5d72 (patch)
treeea475925953a121f4809df0d7bb769c0417718bc /nptl/sysdeps/unix/sysv/linux/s390/s390-64
parent7d0878cc839492c5c6845deef645df3dd41b5441 (diff)
downloadglibc-100a7100a77029d3e56174c4a9124779c40a5d72.tar.gz
glibc-100a7100a77029d3e56174c4a9124779c40a5d72.tar.xz
glibc-100a7100a77029d3e56174c4a9124779c40a5d72.zip
* sysdeps/s390/pthread_spin_lock.c (pthread_spin_lock): Use type
	int for variable OLDVAL and correct inline assembler contraint.
	* sysdeps/s390/pthread_spin_trylock.c (pthread_spin_trylock): Use
	type int for variable OLD.

	* sysdeps/s390/tls.h (TLS_MULTIPLE_THREADS_IN_TCB): Define it
	only for s390-32.
	* sysdeps/unix/sysv/linux/s390/s390-64/sysdep-cancel.h
	(SINGLE_THREAD_P): Use global variable __local_multiple_threads
	instead of multiple_threads field in the TCB.
Diffstat (limited to 'nptl/sysdeps/unix/sysv/linux/s390/s390-64')
-rw-r--r--nptl/sysdeps/unix/sysv/linux/s390/s390-64/sysdep-cancel.h10
1 files changed, 4 insertions, 6 deletions
diff --git a/nptl/sysdeps/unix/sysv/linux/s390/s390-64/sysdep-cancel.h b/nptl/sysdeps/unix/sysv/linux/s390/s390-64/sysdep-cancel.h
index 5a3ae51c23..c07c0442ea 100644
--- a/nptl/sysdeps/unix/sysv/linux/s390/s390-64/sysdep-cancel.h
+++ b/nptl/sysdeps/unix/sysv/linux/s390/s390-64/sysdep-cancel.h
@@ -79,15 +79,13 @@ L(pseudo_end):
 #define LM_5		lmg %r2,%r5,16+160(%r15);
 
 # ifndef __ASSEMBLER__
+extern int __local_multiple_threads attribute_hidden;
 #  define SINGLE_THREAD_P \
-  __builtin_expect (THREAD_GETMEM (THREAD_SELF,				      \
-				   header.multiple_threads) == 0, 1)
+  __builtin_expect (__local_multiple_threads == 0, 1)
 # else
 #  define SINGLE_THREAD_P \
-	ear	%r1,%a0;						      \
-	sllg	%r1,%r1,32;						      \
-	ear	%r1,%a1;						      \
-	icm	%r1,15,MULTIPLE_THREADS_OFFSET(%r1);
+	larl	%r1,__local_multiple_threads;				      \
+	icm	%r0,15,0(%r1);
 # endif
 
 #elif !defined __ASSEMBLER__