diff options
author | Ulrich Drepper <drepper@redhat.com> | 2003-02-23 07:20:34 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2003-02-23 07:20:34 +0000 |
commit | b1b8e747d4c35ff924a0247041e276e1abf2faf7 (patch) | |
tree | bb62c4834cc8927e10a5407cfeca0cbbc10ca9a7 /nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_barrier_wait.S | |
parent | 249062b0c2dfeddb342fd13d5cebdcffb7ebcd64 (diff) | |
download | glibc-b1b8e747d4c35ff924a0247041e276e1abf2faf7.tar.gz glibc-b1b8e747d4c35ff924a0247041e276e1abf2faf7.tar.xz glibc-b1b8e747d4c35ff924a0247041e276e1abf2faf7.zip |
Update.
* sysdeps/unix/sysv/linux/i386/i486/pthread_barrier_wait.S: Shave off 3 more bytes by using offset-less instructions when possible.
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.S | 14 |
1 files changed, 13 insertions, 1 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 b77c342a99..7c27b94623 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 @@ -1,4 +1,4 @@ -/* Copyright (C) 2002 Free Software Foundation, Inc. +/* Copyright (C) 2002, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper <drepper@redhat.com>, 2002. @@ -59,7 +59,11 @@ pthread_barrier_wait: je 3f /* There are more threads to come. */ +#if CURR_EVENT == 0 + movl (%ebx), %edx +#else movl CURR_EVENT(%ebx), %edx +#endif /* Release the mutex. */ LOCK @@ -75,7 +79,11 @@ pthread_barrier_wait: /* Don't return on spurious wakeups. The syscall does not change any register except %eax so there is no need to reload any of them. */ +#if CURR_EVENT == 0 + cmpl %edx, (%ebx) +#else cmpl %edx, CURR_EVENT(%ebx) +#endif je,pn 8b /* Note: %esi is still zero. */ @@ -88,7 +96,11 @@ pthread_barrier_wait: /* The necessary number of threads arrived. */ 3: movl INIT_COUNT(%ebx), %eax movl %eax, LEFT(%ebx) +#if CURR_EVENT == 0 + incl (%ebx) +#else incl CURR_EVENT(%ebx) +#endif /* Wake up all waiters. The count is a signed number in the kernel so 0x7fffffff is the highest value. */ |