diff options
-rw-r--r-- | ChangeLog | 8 | ||||
-rw-r--r-- | sysdeps/ia64/dl-fptr.c | 6 |
2 files changed, 11 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog index 6b54fb1537..20515ef0b8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2002-11-12 Roland McGrath <roland@redhat.com> + + * sysdeps/ia64/dl-fptr.c [_LIBC_REENTRANT]: Include <ia64intrin.h> + instead of <pt-machine.h>. + [_LIBC_REENTRANT] (lock, unlock): Use __sync_lock_* macros instead of + testandset. + From Ian Wienand <ianw@gelato.unsw.edu.au>. + 2002-11-10 Roland McGrath <roland@redhat.com> * libio/bug-wfflush.c (do_test): Call rewind instead of fsetpos. diff --git a/sysdeps/ia64/dl-fptr.c b/sysdeps/ia64/dl-fptr.c index 809e11311f..929d1959d2 100644 --- a/sysdeps/ia64/dl-fptr.c +++ b/sysdeps/ia64/dl-fptr.c @@ -27,7 +27,7 @@ #include <elf/dynamic-link.h> #include <dl-machine.h> #ifdef _LIBC_REENTRANT -# include <pt-machine.h> +# include <ia64intrin.h> # include <signal.h> # include <time.h> #endif @@ -73,7 +73,7 @@ local = if (!__sigismember (&(l)->full_sigset, SIGINT)) \ __sigfillset (&(l)->full_sigset); \ \ - while (testandset ((int *) &(l)->lock)) \ + while (__sync_lock_test_and_set (&(l)->lock, 1)) \ { \ struct timespec ts; \ if (i > 0) \ @@ -88,7 +88,7 @@ local = __sigprocmask (SIG_BLOCK, &(l)->full_sigset, &_saved_set); # define unlock(l) \ __sigprocmask (SIG_SETMASK, &_saved_set, NULL); \ - (l)->lock = 0; \ + __sync_lock_release (&(l)->lock); \ } #else # define lock(l) |