about summary refs log tree commit diff
path: root/nptl/sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedwrlock.S
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2003-10-12 23:05:45 +0000
committerUlrich Drepper <drepper@redhat.com>2003-10-12 23:05:45 +0000
commitfa3cbe3d5d0c6e6b4de642de8693f9f58347d18c (patch)
treeb9a8b9759bffa3a9514409d3c7ca3bf462b41241 /nptl/sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedwrlock.S
parentcc0af5f451b47358315c9c180b9bf908aed61b89 (diff)
downloadglibc-fa3cbe3d5d0c6e6b4de642de8693f9f58347d18c.tar.gz
glibc-fa3cbe3d5d0c6e6b4de642de8693f9f58347d18c.tar.xz
glibc-fa3cbe3d5d0c6e6b4de642de8693f9f58347d18c.zip
Update.
2003-10-09  Kaz Kojima  <kkojima@rr.iij4u.or.jp>

	* sysdeps/unix/sysv/linux/sh/syscalls.list: Add waitpid.
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.S17
1 files changed, 8 insertions, 9 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 14008279e3..29e29b6f65 100644
--- a/nptl/sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedwrlock.S
+++ b/nptl/sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedwrlock.S
@@ -44,13 +44,13 @@ pthread_rwlock_timedwrlock:
 	mov	r5, r9
 
 	/* Get the lock.  */
-	mov	#1, r3
+	mov	#0, r3
+	mov	#1, r4
 #if MUTEX == 0
-	XADD	(r3, @r4, r2)
+	CMPXCHG (r3, @r8, r4, r2)
 #else
-	XADD	(r3, @(MUTEX,r4), r2)
+	CMPXCHG (r3, @(MUTEX,r8), r4, r2)
 #endif
-	tst	r2, r2
 	bf	1f
 2:
 	mov.l	@(WRITER,r8), r0
@@ -126,14 +126,13 @@ pthread_rwlock_timedwrlock:
 
 17:
 	/* Reget the lock.  */
-	mov	r8, r4
-	mov	#1, r5
+	mov	#0, r5
+	mov	#1, r4
 #if MUTEX == 0
-	XADD	(r5, @r4, r2)
+	CMPXCHG (r5, @r8, r4, r2)
 #else
-	XADD	(r5, @(MUTEX,r4), r2)
+	CMPXCHG (r5, @(MUTEX,r8), r4, r2)
 #endif
-	tst	r2, r2
 	bf	12f
 
 13: