about summary refs log tree commit diff
path: root/linuxthreads
diff options
context:
space:
mode:
Diffstat (limited to 'linuxthreads')
-rw-r--r--linuxthreads/ChangeLog9
-rw-r--r--linuxthreads/sysdeps/ia64/pt-machine.h6
-rw-r--r--linuxthreads/sysdeps/s390/pspinlock.c6
3 files changed, 15 insertions, 6 deletions
diff --git a/linuxthreads/ChangeLog b/linuxthreads/ChangeLog
index 69209f8914..75dea58638 100644
--- a/linuxthreads/ChangeLog
+++ b/linuxthreads/ChangeLog
@@ -1,3 +1,12 @@
+2004-07-05  Jakub Jelinek  <jakub@redhat.com>
+
+	* sysdeps/s390/pspinlock.c (__pthread_spin_lock,
+	__pthread_spin_trylock): Use constraint "m" instead of "0" for
+	futex.
+	* sysdeps/ia64/pt-machine.h (__compare_and_swap,
+	__compare_and_swap_with_release_semantic, testandset): Use
+	constraint "m" instead of "0" for futex.
+
 2004-06-29  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
 
 	* sysdeps/unix/sysv/linux/sh/sysdep-cancel.h (CENABLE): Fix
diff --git a/linuxthreads/sysdeps/ia64/pt-machine.h b/linuxthreads/sysdeps/ia64/pt-machine.h
index a04ae81e2c..6c5dfe93bb 100644
--- a/linuxthreads/sysdeps/ia64/pt-machine.h
+++ b/linuxthreads/sysdeps/ia64/pt-machine.h
@@ -89,7 +89,7 @@ __compare_and_swap (long int *p, long int oldval, long int newval)
        ("mov ar.ccv=%4;;\n\t"
 	"cmpxchg8.acq %0=%1,%2,ar.ccv"
 	: "=r" (readval), "=m" (__atomic_fool_gcc (p))
-	: "r"(newval), "1" (__atomic_fool_gcc (p)), "r" (oldval)
+	: "r"(newval), "m" (__atomic_fool_gcc (p)), "r" (oldval)
 	: "memory");
   return readval == oldval;
 }
@@ -105,7 +105,7 @@ __compare_and_swap_with_release_semantics (long int *p,
        ("mov ar.ccv=%4;;\n\t"
 	"cmpxchg8.rel %0=%1,%2,ar.ccv"
 	: "=r" (readval), "=m" (__atomic_fool_gcc (p))
-	: "r"(newval), "1" (__atomic_fool_gcc (p)), "r" (oldval)
+	: "r"(newval), "m" (__atomic_fool_gcc (p)), "r" (oldval)
 	: "memory");
   return readval == oldval;
 }
@@ -121,7 +121,7 @@ testandset (int *spinlock)
   __asm__ __volatile__(
        "xchg4 %0=%1,%2"
        : "=r"(ret), "=m"(__atomic_fool_gcc (spinlock))
-       : "r"(1), "1"(__atomic_fool_gcc (spinlock))
+       : "r"(1), "m"(__atomic_fool_gcc (spinlock))
        : "memory");
 
   return ret;
diff --git a/linuxthreads/sysdeps/s390/pspinlock.c b/linuxthreads/sysdeps/s390/pspinlock.c
index 71ec6b2ae9..f963f35371 100644
--- a/linuxthreads/sysdeps/s390/pspinlock.c
+++ b/linuxthreads/sysdeps/s390/pspinlock.c
@@ -1,5 +1,5 @@
 /* POSIX spinlock implementation.  S/390 version.
-   Copyright (C) 2000 Free Software Foundation, Inc.
+   Copyright (C) 2000, 2004 Free Software Foundation, Inc.
    Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
    This file is part of the GNU C Library.
 
@@ -39,7 +39,7 @@ __pthread_spin_lock (pthread_spinlock_t *lock)
 	       "    cs    0,1,%1\n"
 	       "    jl    0b\n"
 	       : "=m" (*lock)
-	       : "0" (*lock) : "0", "1", "cc" );
+	       : "m" (*lock) : "0", "1", "cc" );
   return 0;
 }
 weak_alias (__pthread_spin_lock, pthread_spin_lock)
@@ -53,7 +53,7 @@ __pthread_spin_trylock (pthread_spinlock_t *lock)
 	       "    basr  1,0\n"
 	       "0:  cs    %1,1,%0"
 	       : "=m" (*lock), "=&d" (oldval)
-	       : "0" (*lock) : "1", "cc" );
+	       : "m" (*lock) : "1", "cc" );
   return oldval == 0 ? 0 : EBUSY;
 }
 weak_alias (__pthread_spin_trylock, pthread_spin_trylock)