summaryrefslogtreecommitdiff
path: root/nptl/sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedwrlock.S
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2003-07-12 01:29:23 +0000
committerUlrich Drepper <drepper@redhat.com>2003-07-12 01:29:23 +0000
commit4a17085f1589c5451d031995534e00e763364fb0 (patch)
tree7c4d50a5c79d4d8a6adbe7f4729929bd20daaff6 /nptl/sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedwrlock.S
parent6080ecdf3cfc34b45bdfc7669f03359adc77d959 (diff)
Update.
2003-07-12 Kaz Kojima <kkojima@rr.iij4u.or.jp> * sysdeps/unix/sysv/linux/sh/socket.S: Save and restore the PR register across CENABLE and CDISABLE.
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.S9
1 files changed, 9 insertions, 0 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 36febf484e..14008279e3 100644
--- a/nptl/sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedwrlock.S
+++ b/nptl/sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedwrlock.S
@@ -19,6 +19,7 @@
#include <sysdep.h>
#include <lowlevelrwlock.h>
#include <pthread-errnos.h>
+#include <tcb-offsets.h>
#include "lowlevel-atomic.h"
#define SYS_gettimeofday __NR_gettimeofday
@@ -154,6 +155,8 @@ pthread_rwlock_timedwrlock:
5:
mov #0, r3
stc gbr, r0
+ mov.w .Ltidoff, r1
+ mov.l @(r0,r1), r0
mov.l r0, @(WRITER,r8)
9:
#if MUTEX == 0
@@ -193,6 +196,9 @@ pthread_rwlock_timedwrlock:
nop
14:
stc gbr, r1
+ mov.w .Ltidoff, r2
+ add r2, r1
+ mov.l @r1, r1
cmp/eq r1, r0
bf 3b
bra 9b
@@ -209,6 +215,9 @@ pthread_rwlock_timedwrlock:
bra 7b
mov #0, r3
+.Ltidoff:
+ .word TID - TLS_PRE_TCB_SIZE
+
4:
/* Overflow. */
mov.l @(WRITERS_QUEUED,r8), r1