diff options
Diffstat (limited to 'linuxthreads')
-rw-r--r-- | linuxthreads/ChangeLog | 9 | ||||
-rw-r--r-- | linuxthreads/sysdeps/ia64/pt-machine.h | 6 | ||||
-rw-r--r-- | linuxthreads/sysdeps/s390/pspinlock.c | 6 |
3 files changed, 15 insertions, 6 deletions
diff --git a/linuxthreads/ChangeLog b/linuxthreads/ChangeLog index 69209f8..75dea58 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 a04ae81..6c5dfe9 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 71ec6b2..f963f35 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) |