about summary refs log tree commit diff
path: root/nptl
diff options
context:
space:
mode:
Diffstat (limited to 'nptl')
-rw-r--r--nptl/ChangeLog3
-rw-r--r--nptl/DESIGN-barrier.txt2
-rw-r--r--nptl/sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h14
3 files changed, 14 insertions, 5 deletions
diff --git a/nptl/ChangeLog b/nptl/ChangeLog
index 6857273d9c..f382a0080c 100644
--- a/nptl/ChangeLog
+++ b/nptl/ChangeLog
@@ -1,5 +1,8 @@
 2004-09-07  Ulrich Drepper  <drepper@redhat.com>
 
+	* sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h: Allow
+	PSEUDO to be used with . prefix.
+
 	* sysdeps/unix/sysv/linux/alpha/pthread_once.c (__pthread_once):
 	Use atomic_increment instead of atomic_exchange_and_add.
 	* sysdeps/unix/sysv/linux/sparc/pthread_once.c (__pthread_once):
diff --git a/nptl/DESIGN-barrier.txt b/nptl/DESIGN-barrier.txt
index b0fbf14fb1..23463c6b7e 100644
--- a/nptl/DESIGN-barrier.txt
+++ b/nptl/DESIGN-barrier.txt
@@ -37,7 +37,7 @@ pthread_barrier_wait(barrier_t *barrier)
     } while (event == barrier->curr_event);
   }
 
-  if (atomic_exchange_and_add (barrier->left, 1) == barrier->init_count - 1)
+  if (atomic_increment_val (barrier->left) == barrier->init_count)
     lll_unlock(barrier->lock);
 
   return result;
diff --git a/nptl/sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h b/nptl/sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h
index aa993b9a58..226aaafdce 100644
--- a/nptl/sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h
+++ b/nptl/sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h
@@ -26,6 +26,12 @@
 
 #if !defined NOT_IN_libc || defined IS_IN_libpthread || defined IS_IN_librt
 
+# ifdef HAVE_ASM_GLOBAL_DOT_NAME
+#  define DASHDASHPFX(str) .__##str
+# else
+#  define DASHDASHPFX(str) __##str
+# endif
+
 # undef PSEUDO
 # define PSEUDO(name, syscall_name, args)				\
   .section ".text";							\
@@ -33,12 +39,12 @@
     cfi_startproc;							\
     SINGLE_THREAD_P;							\
     bne- .Lpseudo_cancel;						\
-  .type .__##syscall_name##_nocancel,@function;				\
-  .globl .__##syscall_name##_nocancel;					\
-  .__##syscall_name##_nocancel:						\
+  .type DASHDASHPFX(syscall_name##_nocancel),@function;			\
+  .globl DASHDASHPFX(syscall_name##_nocancel);				\
+  DASHDASHPFX(syscall_name##_nocancel):					\
     DO_CALL (SYS_ify (syscall_name));					\
     PSEUDO_RET;								\
-  .size .__##syscall_name##_nocancel,.-.__##syscall_name##_nocancel;	\
+  .size DASHDASHPFX(syscall_name##_nocancel),.-DASHDASHPFX(syscall_name##_nocancel);	\
   .Lpseudo_cancel:							\
     stdu 1,-128(1);							\
     cfi_adjust_cfa_offset (128);					\