about summary refs log tree commit diff
path: root/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_barrier_wait.S
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2003-03-01 09:45:23 +0000
committerUlrich Drepper <drepper@redhat.com>2003-03-01 09:45:23 +0000
commitbd8bb78ba24ecd14b648dbf7f001a8afa9d5ede5 (patch)
tree4ede4b546342198dd0869b7814967725445a7f6c /nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_barrier_wait.S
parent85c54a327d4c05381603eb49792afa5ad5dbe46c (diff)
downloadglibc-bd8bb78ba24ecd14b648dbf7f001a8afa9d5ede5.tar.gz
glibc-bd8bb78ba24ecd14b648dbf7f001a8afa9d5ede5.tar.xz
glibc-bd8bb78ba24ecd14b648dbf7f001a8afa9d5ede5.zip
Update.
2003-03-01  Ulrich Drepper  <drepper@redhat.com>

	* descr.h (struct pthread): Move tid field to the front now that
	it is often used.

	* sysdeps/unix/sysv/linux/i386/i486/libc-lowlevelmutex.S
	(__lll_mutex_timedlock_wait): Remove.
	(__lll_mutex_unlock_wake): Don't save, load, and restore %esi.
	* sysdeps/unix/sysv/linux/i386/i486/lowlevelmutex.S
	(__lll_mutex_unlock_wake): Don't save, load, and restore %esi.
	* sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S
	(lll_unlock_wake_cb): Don't save and restore %esi.
	(__lll_unlock_wake): Add alignment.  Don't save, load, and restore
	%esi.
	(__lll_timedwait_tid): Add alignment.
	* sysdeps/unix/sysv/linux/i386/i486/libc-lowlevellock.S
	(__lll_unlock_wake): Add alignment.  Don't save, load, and restore
	%esi.
	(__lll_timedwait_tid): Removed.
	* sysdeps/unix/sysv/linux/i386/i486/pthread_cond_broadcast.S
	(__pthread_cond_broadcast): Don't save, load, and restore %esi.
	* sysdeps/unix/sysv/linux/i386/i486/pthread_barrier_wait.S
	(pthread_barrier_wait): Don't save, load, and restore %esi for
	last thread.
	* sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S
	(__pthread_cond_signal): Don't save, load, and restore %esi.
	* sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_unlock.S
	(__pthread_rwlock_unlock): Don't save, load, and restore %esi.
	* sysdeps/unix/sysv/linux/i386/i486/sem_post.S (__new_sem_post):
	Don't save, load, and restore %esi.
Diffstat (limited to 'nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_barrier_wait.S')
-rw-r--r--nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_barrier_wait.S12
1 files changed, 6 insertions, 6 deletions
diff --git a/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_barrier_wait.S b/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_barrier_wait.S
index 8348f6e017..d36bc7e1b2 100644
--- a/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_barrier_wait.S
+++ b/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_barrier_wait.S
@@ -41,11 +41,9 @@
 	.type	pthread_barrier_wait,@function
 	.align	16
 pthread_barrier_wait:
-	pushl	%esi
 	pushl	%ebx
 
-	movl	12(%esp), %ebx
-	xorl	%esi, %esi
+	movl	8(%esp), %ebx
 
 	/* Get the mutex.  */
 	orl	$-1, %eax
@@ -59,6 +57,8 @@ pthread_barrier_wait:
 	je	3f
 
 	/* There are more threads to come.  */
+	pushl	%esi
+
 #if CURR_EVENT == 0
 	movl	(%ebx), %edx
 #else
@@ -72,7 +72,8 @@ pthread_barrier_wait:
 
 	/* Wait for the remaining threads.  The call will return immediately
 	   if the CURR_EVENT memory has meanwhile been changed.  */
-7:	movl	%esi, %ecx		/* movl $FUTEX_WAIT, %ecx */
+7:	xorl	%ecx, %ecx		/* movl $FUTEX_WAIT, %ecx */
+	xorl	%esi, %esi
 8:	movl	$SYS_futex, %eax
 	ENTER_KERNEL
 
@@ -89,8 +90,8 @@ pthread_barrier_wait:
 	/* Note: %esi is still zero.  */
 	movl	%esi, %eax		/* != PTHREAD_BARRIER_SERIAL_THREAD */
 
-	popl	%ebx
 	popl	%esi
+	popl	%ebx
 	ret
 
 	/* The necessary number of threads arrived.  */
@@ -119,7 +120,6 @@ pthread_barrier_wait:
 5:	orl	$-1, %eax		/* == PTHREAD_BARRIER_SERIAL_THREAD */
 
 	popl	%ebx
-	popl	%esi
 	ret
 
 1:	leal	MUTEX(%ebx), %ecx