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_cond_timedwait.S | |
parent | 5a77f1501d9031c0fd8bad1d5a04b0379a99c029 (diff) | |
download | glibc-ea2630c63292c4c376c392dcbc6625a6aefa0d1e.tar glibc-ea2630c63292c4c376c392dcbc6625a6aefa0d1e.tar.gz glibc-ea2630c63292c4c376c392dcbc6625a6aefa0d1e.tar.bz2 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_cond_timedwait.S')
-rw-r--r-- | nptl/sysdeps/unix/sysv/linux/sh/pthread_cond_timedwait.S | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/nptl/sysdeps/unix/sysv/linux/sh/pthread_cond_timedwait.S b/nptl/sysdeps/unix/sysv/linux/sh/pthread_cond_timedwait.S index 6ad987d005..5de20dd799 100644 --- a/nptl/sysdeps/unix/sysv/linux/sh/pthread_cond_timedwait.S +++ b/nptl/sysdeps/unix/sysv/linux/sh/pthread_cond_timedwait.S @@ -58,6 +58,10 @@ __pthread_cond_timedwait: bra 1f nop 2: + /* Store the reference to the mutex. If there is already a + different value in there this is a bad user bug. */ + mov.l r9, @(dep_mutex,r8) + /* Unlock the mutex. */ mov.l .Lmunlock1, r1 bsrf r1 @@ -117,12 +121,11 @@ __pthread_cond_timedwait: bra 3f nop 4: - mov r15, r4 mov.l .Lenable1, r1 bsrf r1 - add #8, r4 - + nop .Lenable1b: + mov.l r0, @(8,r15) /* Get current time. */ mov r15, r4 @@ -258,7 +261,7 @@ __pthread_cond_timedwait: mov r9, r4 mov.l .Lmlocki1, r1 bsrf r1 - mov #0, r5 + nop .Lmlocki1b: /* We return the result of the mutex_lock operation if it failed. */ @@ -293,13 +296,13 @@ __pthread_cond_timedwait: .Lccpush1: .long __pthread_cleanup_push-.Lccpush1b .Lenable1: - .long __pthread_enable_asynccancel_2-.Lenable1b + .long __pthread_enable_asynccancel-.Lenable1b .Ldisable1: .long __pthread_disable_asynccancel-.Ldisable1b .Lcpop1: .long __pthread_cleanup_pop-.Lcpop1b .Lmlocki1: - .long __pthread_mutex_lock_internal-.Lmlocki1b + .long __pthread_mutex_cond_lock-.Lmlocki1b .L1g: .long 1000000000 |