diff options
author | Ulrich Drepper <drepper@redhat.com> | 2003-02-24 09:23:15 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2003-02-24 09:23:15 +0000 |
commit | 18a535792b7a63721a123e152266c4b8cf1fae8e (patch) | |
tree | b86a475d52a5cade9e9820808a7d8f165cf081aa /nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_rdlock.S | |
parent | 3724f268b15bdbd322cda97f88a965a68f2fd3ef (diff) |
Update.
* sysdeps/pthread/pthread_rwlock_rdlock.c: Likewise.
* sysdeps/pthread/pthread_rwlock_timedrdlock.c: Likewise.
* sysdeps/pthread/pthread_rwlock_timedwrlock.c: Likewise.
* sysdeps/pthread/pthread_rwlock_unlock.c: Likewise.
* sysdeps/pthread/pthread_rwlock_wrlock.c: Likewise.
Diffstat (limited to 'nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_rdlock.S')
-rw-r--r-- | nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_rdlock.S | 33 |
1 files changed, 26 insertions, 7 deletions
diff --git a/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_rdlock.S b/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_rdlock.S index 47ae4fa35a..f8f2e06b18 100644 --- a/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_rdlock.S +++ b/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_rdlock.S @@ -45,7 +45,6 @@ __pthread_rwlock_rdlock: pushl %ebx xorl %esi, %esi - xorl %edx, %edx movl 12(%esp), %ebx /* Get the lock. */ @@ -70,6 +69,8 @@ __pthread_rwlock_rdlock: 3: incl READERS_QUEUED(%ebx) je 4f + movl READERS_WAKEUP(%ebx), %edx + LOCK #if MUTEX == 0 decl (%ebx) @@ -97,8 +98,6 @@ __pthread_rwlock_rdlock: jne 12f 13: decl READERS_QUEUED(%ebx) - jne 2b - movl $0, READERS_WAKEUP(%ebx) jmp 2b 5: xorl %ecx, %ecx @@ -118,7 +117,12 @@ __pthread_rwlock_rdlock: popl %esi ret -1: movl %ebx, %ecx +1: +#if MUTEX == 0 + movl %ebx, %ecx +#else + leal MUTEX(%ebx), %ecx +#endif call __lll_mutex_lock_wait jmp 2b @@ -128,7 +132,12 @@ __pthread_rwlock_rdlock: movl $EDEADLK, %ecx jmp 9b -6: movl %ebx, %eax +6: +#if MUTEX == 0 + movl %ebx, %eax +#else + leal MUTEX(%ebx), %eax +#endif call __lll_mutex_unlock_wake jmp 7b @@ -142,11 +151,21 @@ __pthread_rwlock_rdlock: movl $EAGAIN, %ecx jmp 9b -10: movl %ebx, %eax +10: +#if MUTEX == 0 + movl %ebx, %eax +#else + leal MUTEX(%ebx), %eax +#endif call __lll_mutex_unlock_wake jmp 11b -12: movl %ebx, %ecx +12: +#if MUTEX == 0 + movl %ebx, %ecx +#else + leal MUTEX(%ebx), %ecx +#endif call __lll_mutex_lock_wait jmp 13b .size __pthread_rwlock_rdlock,.-__pthread_rwlock_rdlock |