diff options
author | Ulrich Drepper <drepper@redhat.com> | 2003-05-29 05:38:43 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2003-05-29 05:38:43 +0000 |
commit | ea2630c63292c4c376c392dcbc6625a6aefa0d1e (patch) | |
tree | 7b2cfc0e31180b1de468f82bc1fa98ff0fb9b392 /nptl/sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedwrlock.S | |
parent | 5a77f1501d9031c0fd8bad1d5a04b0379a99c029 (diff) | |
download | glibc-ea2630c63292c4c376c392dcbc6625a6aefa0d1e.tar.gz glibc-ea2630c63292c4c376c392dcbc6625a6aefa0d1e.tar.xz glibc-ea2630c63292c4c376c392dcbc6625a6aefa0d1e.zip |
Update.
2003-05-28 Kaz Kojima <kkojima@rr.iij4u.or.jp> * sysdeps/sh/tcb-offsets.sym: Define MUTEX_FUTEX. * sysdeps/unix/sysv/linux/sh/bits/pthreadtypes.h (pthread_cond_t): Add __mutex field. * sysdeps/unix/sysv/linux/sh/lowlevellock.h (SYSCALL_WITH_INST_PAD): Define. (lll_futex_wait, lll_futex_wake): Define. * sysdeps/unix/sysv/linux/sh/sh4/lowlevellock.h: New file. * sysdeps/unix/sysv/linux/sh/pthread_cond_broadcast.S: Try using FUTEX_REQUEUE instead of FUTEX_WAIT. * sysdeps/unix/sysv/linux/sh/pthread_cond_signal.S: Likewise. * sysdeps/unix/sysv/linux/sh/pthread_cond_timedwait.S: Remember mutex which was used in condvar structure. Call __pthread_mutex_cond_lock instead of __pthread_mutex_lock_internal. * sysdeps/unix/sysv/linux/sh/pthread_cond_wait.S: Likewise. * sysdeps/unix/sysv/linux/sh/pthread_rwlock_rdlock.S: Don't include tcb-offsets.h. Read wakeup value in locked region. Use the value of gbr register as THREAD_ID. * sysdeps/unix/sysv/linux/sh/pthread_rwlock_wrlock.S: Likewise. * sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedrdlock.S: Likewise. * sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedwrlock.S: Likewise. * sysdeps/unix/sysv/linux/sh/sem_trywait.S: Remove futex related macros.
Diffstat (limited to 'nptl/sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedwrlock.S')
-rw-r--r-- | nptl/sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedwrlock.S | 13 |
1 files changed, 5 insertions, 8 deletions
diff --git a/nptl/sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedwrlock.S b/nptl/sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedwrlock.S index 89bdc76d37..36febf484e 100644 --- a/nptl/sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedwrlock.S +++ b/nptl/sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedwrlock.S @@ -18,7 +18,6 @@ #include <sysdep.h> #include <lowlevelrwlock.h> -#include <tcb-offsets.h> #include <pthread-errnos.h> #include "lowlevel-atomic.h" @@ -35,6 +34,7 @@ .align 5 pthread_rwlock_timedwrlock: mov.l r12, @-r15 + mov.l r10, @-r15 mov.l r9, @-r15 mov.l r8, @-r15 sts.l pr, @-r15 @@ -71,6 +71,8 @@ pthread_rwlock_timedwrlock: tst r0, r0 bt 4f + mov.l @(WRITERS_WAKEUP,r8), r10 + #if MUTEX == 0 DEC (@r8, r2) #else @@ -112,7 +114,7 @@ pthread_rwlock_timedwrlock: /* Futex call. */ mov r15, r7 mov #FUTEX_WAIT, r5 - mov.l @(WRITERS_WAKEUP,r8), r6 + mov r10, r6 mov r8, r4 add #WRITERS_WAKEUP, r4 mov #SYS_futex, r3 @@ -152,8 +154,6 @@ pthread_rwlock_timedwrlock: 5: mov #0, r3 stc gbr, r0 - mov.w .Ltcboff,r2 - sub r2,r0 mov.l r0, @(WRITER,r8) 9: #if MUTEX == 0 @@ -168,6 +168,7 @@ pthread_rwlock_timedwrlock: lds.l @r15+, pr mov.l @r15+, r8 mov.l @r15+, r9 + mov.l @r15+, r10 mov.l @r15+, r12 rts mov r3, r0 @@ -192,8 +193,6 @@ pthread_rwlock_timedwrlock: nop 14: stc gbr, r1 - mov.w .Ltcboff,r2 - sub r2,r1 cmp/eq r1, r0 bf 3b bra 9b @@ -247,8 +246,6 @@ pthread_rwlock_timedwrlock: bra 17b mov #-ETIMEDOUT, r3 -.Ltcboff: - .word TLS_PRE_TCB_SIZE .align 2 .Lwait6: .long __lll_mutex_lock_wait-.Lwait6b |