aboutsummaryrefslogtreecommitdiff
path: root/nptl
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2004-09-08 07:02:28 +0000
committerUlrich Drepper <drepper@redhat.com>2004-09-08 07:02:28 +0000
commit590b40f7ec801ea1b4be47112a016ed369041e64 (patch)
tree63d37abbae8a1046c88c4af07744f35830506ba5 /nptl
parent67254a97d98f73a35ab995e8afccb3ded433c8b1 (diff)
downloadglibc-590b40f7ec801ea1b4be47112a016ed369041e64.zip
glibc-590b40f7ec801ea1b4be47112a016ed369041e64.tar.gz
glibc-590b40f7ec801ea1b4be47112a016ed369041e64.tar.bz2
Update.
2004-09-07 Jakub Jelinek <jakub@redhat.com> * sysdeps/powerpc/powerpc64/configure.in: New file. * config.h.in (USE_PPC64_OVERLAPPING_OPD): Add. * configure.in (HAVE_ASM_GLOBAL_DOT_NAME): Remove. * sysdeps/powerpc/powerpc64/sysdep.h: Formatting. (OPD_ENT, BODY_LABEL, ENTRY_1, ENTRY_2, END_2, DOT_PREFIX, BODY_PREFIX): Define. (ENTRY, DOT_LABEL, END, TRACEBACK, END_GEN_TB, EALIGN): Support HAVE_ASM_GLOBAL_DOT_NAME or no dot symbols, USE_PPC64_OVERLAPPING_OPD or never overlapping .opd entries. * sysdeps/powerpc/powerpc64/dl-machine.h: Include sysdep.h. (TRAMPOLINE_TEMPLATE, RTLD_START): Use the new sysdep.h macros.
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 6857273..f382a00 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 b0fbf14..23463c6 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 aa993b9..226aaaf 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); \