aboutsummaryrefslogtreecommitdiff
path: root/nptl/sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedrdlock.S
diff options
context:
space:
mode:
Diffstat (limited to 'nptl/sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedrdlock.S')
-rw-r--r--nptl/sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedrdlock.S11
1 files changed, 5 insertions, 6 deletions
diff --git a/nptl/sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedrdlock.S b/nptl/sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedrdlock.S
index 6f3f67e07b..5f1c1f739a 100644
--- a/nptl/sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedrdlock.S
+++ b/nptl/sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedrdlock.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_timedrdlock:
mov.l r12, @-r15
+ mov.l r10, @-r15
mov.l r9, @-r15
mov.l r8, @-r15
sts.l pr, @-r15
@@ -74,6 +74,8 @@ pthread_rwlock_timedrdlock:
tst r0, r0
bt 4f
+ mov.l @(READERS_WAKEUP,r8), r10
+
#if MUTEX == 0
DEC (@r8, r2)
#else
@@ -115,7 +117,7 @@ pthread_rwlock_timedrdlock:
/* Futex call. */
mov r15, r7
mov #FUTEX_WAIT, r5
- mov.l @(READERS_WAKEUP,r8), r6
+ mov r10, r6
mov r8, r4
add #READERS_WAKEUP, r4
mov #SYS_futex, r3
@@ -169,6 +171,7 @@ pthread_rwlock_timedrdlock:
lds.l @r15+, pr
mov.l @r15+, r8
mov.l @r15+, r9
+ mov.l @r15+, r10
mov.l @r15+, r12
rts
mov r3, r0
@@ -193,8 +196,6 @@ pthread_rwlock_timedrdlock:
nop
14:
stc gbr, r1
- mov.w .Ltcboff,r2
- sub r2,r1
cmp/eq r1, r0
bf 3b
/* Deadlock detected. */
@@ -262,8 +263,6 @@ pthread_rwlock_timedrdlock:
bra 9b
mov #EINVAL, r3
-.Ltcboff:
- .word TLS_PRE_TCB_SIZE
.align 2
.Lwait2:
.long __lll_mutex_lock_wait-.Lwait2b