about summary refs log tree commit diff
path: root/nptl
diff options
context:
space:
mode:
Diffstat (limited to 'nptl')
-rw-r--r--nptl/ChangeLog7
-rw-r--r--nptl/sysdeps/alpha/elf/pt-initfini.c12
-rw-r--r--nptl/sysdeps/unix/sysv/linux/alpha/lowlevellock.h9
3 files changed, 15 insertions, 13 deletions
diff --git a/nptl/ChangeLog b/nptl/ChangeLog
index 4fa3910bac..27926968bc 100644
--- a/nptl/ChangeLog
+++ b/nptl/ChangeLog
@@ -1,3 +1,10 @@
+2003-07-05  Richard Henderson  <rth@redhat.com>
+
+	* sysdeps/alpha/elf/pt-initfini.c: Avoid .ent/.end.
+	* sysdeps/unix/sysv/linux/alpha/lowlevellock.h (lll_futex_wait,
+        lll_futex_timed_wait, lll_futex_wake, lll_futex_requeue): On success
+        return actual return value from the syscall, not 0.
+
 2003-07-07  Ulrich Drepper  <drepper@redhat.com>
 
 	* descr.h (struct pthread): Add pid field.
diff --git a/nptl/sysdeps/alpha/elf/pt-initfini.c b/nptl/sysdeps/alpha/elf/pt-initfini.c
index d48c571b7c..ba2e419d61 100644
--- a/nptl/sysdeps/alpha/elf/pt-initfini.c
+++ b/nptl/sysdeps/alpha/elf/pt-initfini.c
@@ -45,17 +45,15 @@ __asm__ ("						\n\
 /*@_init_PROLOG_BEGINS*/				\n\
 	.section .init, \"ax\", @progbits		\n\
 	.globl	_init					\n\
-	.ent	_init					\n\
+	.type	_init,@function				\n\
+	.usepv	_init,std				\n\
 _init:							\n\
 	ldgp	$29, 0($27)				\n\
 	subq	$30, 16, $30				\n\
 	stq	$26, 0($30)				\n\
 	stq	$29, 8($30)				\n\
-	.prologue 1					\n\
 	bsr	$26, __pthread_initialize_minimal_internal !samegp \n\
 	.align 3					\n\
-	.end	_init					\n\
-	.size	_init, 0				\n\
 /*@_init_PROLOG_ENDS*/					\n\
 							\n\
 /*@_init_EPILOG_BEGINS*/				\n\
@@ -69,16 +67,14 @@ _init:							\n\
 /*@_fini_PROLOG_BEGINS*/				\n\
 	.section .fini, \"ax\", @progbits		\n\
 	.globl	_fini					\n\
-	.ent	_fini					\n\
+	.type	_fini,@function				\n\
+	.usepv	_fini,std				\n\
 _fini:							\n\
 	ldgp	$29, 0($27)				\n\
 	subq	$30, 16, $30				\n\
 	stq	$26, 0($30)				\n\
 	stq	$29, 8($30)				\n\
-	.prologue 1					\n\
 	.align 3					\n\
-	.end	_fini					\n\
-	.size	_fini, 0				\n\
 /*@_fini_PROLOG_ENDS*/					\n\
 							\n\
 /*@_fini_EPILOG_BEGINS*/				\n\
diff --git a/nptl/sysdeps/unix/sysv/linux/alpha/lowlevellock.h b/nptl/sysdeps/unix/sysv/linux/alpha/lowlevellock.h
index e286ef36cb..cc054f9ef3 100644
--- a/nptl/sysdeps/unix/sysv/linux/alpha/lowlevellock.h
+++ b/nptl/sysdeps/unix/sysv/linux/alpha/lowlevellock.h
@@ -39,7 +39,7 @@
     long int __ret;							      \
     __ret = INTERNAL_SYSCALL (futex, __err, 4,				      \
 			      (futexp), FUTEX_WAIT, (val), 0);		      \
-    INTERNAL_SYSCALL_ERROR_P (__ret, __err)? -__ret: 0;			      \
+    INTERNAL_SYSCALL_ERROR_P (__ret, __err)? -__ret : __ret;		      \
   })
 
 #define lll_futex_timed_wait(futexp, val, timespec) \
@@ -48,7 +48,7 @@
     long int __ret;							      \
     __ret = INTERNAL_SYSCALL (futex, __err, 4,				      \
 			      (futexp), FUTEX_WAIT, (val), (timespec));	      \
-    INTERNAL_SYSCALL_ERROR_P (__ret, __err)? -__ret: 0;			      \
+    INTERNAL_SYSCALL_ERROR_P (__ret, __err)? -__ret : __ret;		      \
   })
 
 #define lll_futex_wake(futexp, nr) \
@@ -57,18 +57,17 @@
     long int __ret;							      \
     __ret = INTERNAL_SYSCALL (futex, __err, 4,				      \
 			      (futexp), FUTEX_WAKE, (nr), 0);		      \
-    INTERNAL_SYSCALL_ERROR_P (__ret, __err)? -__ret: 0;			      \
+    INTERNAL_SYSCALL_ERROR_P (__ret, __err)? -__ret : __ret;		      \
   })
 
 #define lll_futex_requeue(futexp, nr_wake, nr_move, mutex) \
   ({									      \
     INTERNAL_SYSCALL_DECL (__err);					      \
     long int __ret;							      \
-									      \
     __ret = INTERNAL_SYSCALL (futex, __err, 5,				      \
 			      (futexp), FUTEX_REQUEUE, (nr_wake), (nr_move),  \
 			      (mutex));					      \
-    INTERNAL_SYSCALL_ERROR_P (__ret, __err)? -__ret: 0;			      \
+    INTERNAL_SYSCALL_ERROR_P (__ret, __err)? -__ret : __ret;		      \
   })
 
 /* Set *futex to 1 if it is 0, atomically.  Returns the old value */