From 1ce9631b86cbc5ae3104561f37bf7ea22f8c437c Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Thu, 11 Dec 2003 22:18:39 +0000 Subject: [PATCH] Update. 2003-12-11 Carlos O'Donell * sysdeps/generic/dl-fptr.c (COMPARE_AND_SWAP): Pass new and old in the right order. --- ChangeLog | 5 +++++ linuxthreads/ChangeLog | 5 +++++ .../sysv/linux/powerpc/powerpc64/sysdep-cancel.h | 20 +++++--------------- sysdeps/generic/dl-fptr.c | 6 +++--- 4 files changed, 18 insertions(+), 18 deletions(-) diff --git a/ChangeLog b/ChangeLog index 03647d7..b58b6fa 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2003-12-11 Carlos O'Donell + + * sysdeps/generic/dl-fptr.c (COMPARE_AND_SWAP): Pass new and old + in the right order. + 2003-12-01 Jes Sorensen * rt/tst-clock.c (do_test): Print message when skipping diff --git a/linuxthreads/ChangeLog b/linuxthreads/ChangeLog index 296c56f..ac281b8 100644 --- a/linuxthreads/ChangeLog +++ b/linuxthreads/ChangeLog @@ -1,3 +1,8 @@ +2003-12-04 Steven Munroe + + * sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h + (SINGLE_THREAD_P): Test using thread local p_multiple_threads field. + 2003-12-10 David Mosberger * sysdeps/unix/sysv/linux/ia64/pt-initfini.c: Update copyright diff --git a/linuxthreads/sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h b/linuxthreads/sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h index 17fde9d..387229a 100644 --- a/linuxthreads/sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h +++ b/linuxthreads/sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h @@ -89,22 +89,12 @@ # endif # ifndef __ASSEMBLER__ -extern int __local_multiple_threads -# if !defined NOT_IN_libc || defined IS_IN_libpthread - attribute_hidden; -# else - ; -# endif -# define SINGLE_THREAD_P __builtin_expect (__local_multiple_threads == 0, 1) +# define SINGLE_THREAD_P \ + __builtin_expect (THREAD_GETMEM (THREAD_SELF, p_multiple_threads) == 0, 1) # else -# define SINGLE_THREAD_P \ - .section ".toc","aw"; \ -.LC__local_multiple_threads:; \ - .tc __local_multiple_threads[TC],__local_multiple_threads; \ - .previous; \ - ld 10,.LC__local_multiple_threads@toc(2); \ - ld 10,0(10); \ - cmpdi 10,0 +# define SINGLE_THREAD_P \ + lwz 10,MULTIPLE_THREADS_OFFSET(13); \ + cmpwi 10,0 # endif #elif !defined __ASSEMBLER__ diff --git a/sysdeps/generic/dl-fptr.c b/sysdeps/generic/dl-fptr.c index 32cf28c..1ed4637 100644 --- a/sysdeps/generic/dl-fptr.c +++ b/sysdeps/generic/dl-fptr.c @@ -31,7 +31,7 @@ #ifndef ELF_MACHINE_BOOT_FPTR_TABLE_LEN /* ELF_MACHINE_BOOT_FPTR_TABLE_LEN should be greater than the number of dynamic symbols in ld.so. */ -#define ELF_MACHINE_BOOT_FPTR_TABLE_LEN 256 +# define ELF_MACHINE_BOOT_FPTR_TABLE_LEN 256 #endif #ifndef ELF_MACHINE_LOAD_ADDRESS @@ -39,8 +39,8 @@ #endif #ifndef COMPARE_AND_SWAP -#define COMPARE_AND_SWAP(ptr,old,new) \ - atomic_compare_and_exchange_bool_acq ((ptr), (old), (new)) +# define COMPARE_AND_SWAP(ptr, old, new) \ + (atomic_compare_and_exchange_bool_acq (ptr, new, old) == 0) #endif ElfW(Addr) _dl_boot_fptr_table [ELF_MACHINE_BOOT_FPTR_TABLE_LEN]; -- 2.7.4