summaryrefslogtreecommitdiff
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)
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