projects
/
kopensolaris-gnu
/
glibc.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
(pthread_barrier_wait): Don't save, load, and restore %esi for last thread.
[kopensolaris-gnu/glibc.git]
/
nptl
/
sysdeps
/
unix
/
sysv
/
linux
/
i386
/
i486
/
pthread_barrier_wait.S
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
8348f6e
..
d36bc7e
100644
(file)
--- 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:
.type pthread_barrier_wait,@function
.align 16
pthread_barrier_wait:
- pushl %esi
pushl %ebx
pushl %ebx
- movl 12(%esp), %ebx
- xorl %esi, %esi
+ movl 8(%esp), %ebx
/* Get the mutex. */
orl $-1, %eax
/* Get the mutex. */
orl $-1, %eax
@@
-59,6
+57,8
@@
pthread_barrier_wait:
je 3f
/* There are more threads to come. */
je 3f
/* There are more threads to come. */
+ pushl %esi
+
#if CURR_EVENT == 0
movl (%ebx), %edx
#else
#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. */
/* 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
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 */
/* Note: %esi is still zero. */
movl %esi, %eax /* != PTHREAD_BARRIER_SERIAL_THREAD */
- popl %ebx
popl %esi
popl %esi
+ popl %ebx
ret
/* The necessary number of threads arrived. */
ret
/* The necessary number of threads arrived. */
@@
-119,7
+120,6
@@
pthread_barrier_wait:
5: orl $-1, %eax /* == PTHREAD_BARRIER_SERIAL_THREAD */
popl %ebx
5: orl $-1, %eax /* == PTHREAD_BARRIER_SERIAL_THREAD */
popl %ebx
- popl %esi
ret
1: leal MUTEX(%ebx), %ecx
ret
1: leal MUTEX(%ebx), %ecx