about summary refs log tree commit diff
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2003-03-17 10:11:31 +0000
committerUlrich Drepper <drepper@redhat.com>2003-03-17 10:11:31 +0000
commit46a32546c924213322a0d0d5b6d636d2f58094c0 (patch)
tree2266b13e8fd91a2595fc1cadf0bef12cce712589
parentfb2ee178fa1e50dd1ec4b8ff5300f13afbbb1dd9 (diff)
downloadglibc-46a32546c924213322a0d0d5b6d636d2f58094c0.tar.gz
glibc-46a32546c924213322a0d0d5b6d636d2f58094c0.tar.xz
glibc-46a32546c924213322a0d0d5b6d636d2f58094c0.zip
Update.
2003-03-17  Ulrich Drepper  <drepper@redhat.com>

	* localedata/en_ZA: hanged %x for LC_TIME to use dd/mm/ccyy.
	Added ^ to LC_MESSAGES regex "^[yY].*".
	Confirmed LC_PAPER adn LC_MEASUREMENT settings.
	Added country and language names to LC_ADDRESS.
	Added missing info for LC_TELEPHONE.
	Patch by Dwayne Bailey <dwayne@obsidian.co.za>.
-rw-r--r--localedata/ChangeLog9
-rw-r--r--localedata/locales/en_ZA63
-rw-r--r--nptl/sysdeps/pthread/pthread_cond_timedwait.c3
-rw-r--r--nptl/sysdeps/pthread/pthread_cond_wait.c6
-rw-r--r--nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S6
-rw-r--r--nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S6
-rw-r--r--nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_rdlock.S4
-rw-r--r--nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_wrlock.S4
-rw-r--r--nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.h19
-rw-r--r--nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S10
-rw-r--r--nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S4
-rw-r--r--nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_rdlock.S8
-rw-r--r--nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_unlock.S18
-rw-r--r--nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_wrlock.S6
14 files changed, 89 insertions, 77 deletions
diff --git a/localedata/ChangeLog b/localedata/ChangeLog
index 8016801a77..2c19c8385a 100644
--- a/localedata/ChangeLog
+++ b/localedata/ChangeLog
@@ -1,3 +1,12 @@
+2003-03-17  Ulrich Drepper  <drepper@redhat.com>
+
+	* localedata/en_ZA: hanged %x for LC_TIME to use dd/mm/ccyy.
+	Added ^ to LC_MESSAGES regex "^[yY].*".
+	Confirmed LC_PAPER adn LC_MEASUREMENT settings.
+	Added country and language names to LC_ADDRESS.
+	Added missing info for LC_TELEPHONE.
+	Patch by Dwayne Bailey <dwayne@obsidian.co.za>.
+
 2003-03-14  Ulrich Drepper  <drepper@redhat.com>
 
 	* localedata/mn_MN: New file.
diff --git a/localedata/locales/en_ZA b/localedata/locales/en_ZA
index abcd738725..b944d35111 100644
--- a/localedata/locales/en_ZA
+++ b/localedata/locales/en_ZA
@@ -2,44 +2,54 @@ escape_char  /
 comment_char  %
 
 % English language locale for South Africa
-% Source: RAP
-% Email: nic@sig.co.za
-% Tel: +27 83 7659503
-% Fax: +27 12 3478098
+% Source: Zuza Software Foundation
+% Email: dwayne@translate.org.za
+% Tel: +27 21 4487827
+% Fax: +27 21 4489574
 % Language: en
 % Territory: ZA
-% Revision: 1.0
-% Date: 1999-03-28
+% Revision: 1.1
+% Date: 2003-03-14
 % Users: general
 % Repertoiremap: mnemonic,ds
 % Charset: ISO-8859-1
 % Distribution and use is free, also
 % for commercial purposes.
+%
+% Changelog
+% 1.1 (2003-03-14):
+%   - Updated maintainer to Zuza Sofware Foundation
+%   - Changed %x for LC_TIME to use dd/mm/ccyy
+%   - Added ^ to LC_MESSAGES regex "^[yY].*"
+%   - Confirmed LC_PAPER and LC_MEASUREMENT settings
+%   - Added country and language names to LC_ADDRESS
+%   - Added missing info for LC_TELEPHONE
 
 LC_IDENTIFICATION
 title      "English locale for South Africa"
-source     "RAP"
-address    ""
-contact    ""
-email      "bug-glibc@gnu.org"
-tel        ""
-fax        ""
+source     "Zuza Software Foundation"
+address    "Box 13412, Mowbray, 7701, South Africa"
+contact    "Dwayne Bailey"
+email      "dwayne@translate.org.za"
+tel        "+27 21 448 7827"
+fax        "+27 21 448 9574"
 language   "English"
 territory  "South Africa"
-revision   "1.0"
-date       "2000-06-29"
+revision   "1.1"
+date       "2003-03-14"
 %
-category  "en_ZA:2000";LC_IDENTIFICATION
+category  "en_ZA:2003";LC_IDENTIFICATION
 category  "en_ZA:2000";LC_CTYPE
 category  "en_ZA:2000";LC_COLLATE
-category  "en_ZA:2000";LC_TIME
+category  "en_ZA:2003";LC_TIME
 category  "en_ZA:2000";LC_NUMERIC
 category  "en_ZA:2000";LC_MONETARY
-category  "en_ZA:2000";LC_MESSAGES
+category  "en_ZA:2003";LC_MESSAGES
 category  "en_ZA:2000";LC_PAPER
+category  "en_ZA:2000";LC_MEASUREMENT
 category  "en_ZA:2000";LC_NAME
-category  "en_ZA:2000";LC_ADDRESS
-category  "en_ZA:2000";LC_TELEPHONE
+category  "en_ZA:2003";LC_ADDRESS
+category  "en_ZA:2003";LC_TELEPHONE
 
 END LC_IDENTIFICATION
 
@@ -106,7 +116,7 @@ mon         "<U004A><U0061><U006E><U0075><U0061><U0072><U0079>";/
             "<U004E><U006F><U0076><U0065><U006D><U0062><U0065><U0072>";/
             "<U0044><U0065><U0063><U0065><U006D><U0062><U0065><U0072>"
 d_t_fmt     "<U0025><U0061><U0020><U0025><U0064><U0020><U0025><U0062><U0020><U0025><U0059><U0020><U0025><U0054><U0020><U0025><U005A>"
-d_fmt       "<U0025><U0064><U002F><U0025><U006D><U002F><U0025><U0079>"
+d_fmt       "<U0025><U0064><U002F><U0025><U006D><U002F><U0025><U0059>"
 t_fmt       "<U0025><U0054>"
 am_pm       "";""
 t_fmt_ampm  ""
@@ -116,25 +126,25 @@ date_fmt	"<U0025><U0061><U0020><U0025><U0062><U0020><U0025><U0065>/
 END LC_TIME
 
 LC_MESSAGES
-yesexpr     "<U005B><U0079><U0059><U005D><U002E><U002A>"
-noexpr      "<U005B><U006E><U004E><U005D><U002E><U002A>"
+yesexpr     "<U005E><U005B><U0079><U0059><U005D><U002E><U002A>"
+noexpr      "<U005E><U005B><U006E><U004E><U005D><U002E><U002A>"
 END LC_MESSAGES
 
 LC_PAPER
-% FIXME
 height   297
-% FIXME
 width    210
 END LC_PAPER
 
 LC_TELEPHONE
 tel_int_fmt    "<U002B><U0025><U0063><U0020><U0025><U0061><U0020><U0025>/
 <U006C>"
+tel_dom_fmt    "<U0028><U0025><U0041><U0029><U0020><U0025><U006C>"
+int_select     "<U0030><U0039>"
 int_prefix     "<U0032><U0037>"
+
 END LC_TELEPHONE
 
 LC_MEASUREMENT
-% FIXME
 measurement    1
 END LC_MEASUREMENT
 
@@ -149,4 +159,7 @@ postal_fmt    "<U0025><U0066><U0025><U004E><U0025><U0061><U0025><U004E>/
 <U0020><U0025><U0068><U0020><U0025><U0065><U0020><U0025><U0072><U0025>/
 <U004E><U0025><U0025><U007A><U0020><U0025><U0054><U0025>/
 <U004E><U0025><U0063><U0025><U004E>"
+country_name  "<U0053><U006F><U0075><U0074><U0068><U0020>/
+<U0041><U0066><U0072><U0069><U0063><U0061>"
+lang_name     "<U0045><U006E><U0067><U006C><U0069><U0073><U0068>"
 END LC_ADDRESS
diff --git a/nptl/sysdeps/pthread/pthread_cond_timedwait.c b/nptl/sysdeps/pthread/pthread_cond_timedwait.c
index 0635e6ed93..af9929c500 100644
--- a/nptl/sysdeps/pthread/pthread_cond_timedwait.c
+++ b/nptl/sysdeps/pthread/pthread_cond_timedwait.c
@@ -134,8 +134,7 @@ __pthread_cond_timedwait (cond, mutex, abstime)
 
       /* Check whether we are eligible for wakeup.  */
       val = cond->__data.__wakeup_seq;
-      if (cond->__data.__woken_seq >= seq
-	  && cond->__data.__woken_seq < val)
+      if (val > seq && cond->__data.__woken_seq < val)
 	break;
 
       /* Not woken yet.  Maybe the time expired?  */
diff --git a/nptl/sysdeps/pthread/pthread_cond_wait.c b/nptl/sysdeps/pthread/pthread_cond_wait.c
index b681ef26fd..412bca9c25 100644
--- a/nptl/sysdeps/pthread/pthread_cond_wait.c
+++ b/nptl/sysdeps/pthread/pthread_cond_wait.c
@@ -117,7 +117,7 @@ __pthread_cond_wait (cond, mutex)
 # error "No valid byte order"
 #endif
 
-  while (1)
+  do
     {
       /* Prepare to wait.  Release the condvar futex.  */
       lll_mutex_unlock (cond->__data.__lock);
@@ -137,10 +137,8 @@ __pthread_cond_wait (cond, mutex)
 
       /* Check whether we are eligible for wakeup.  */
       val = cond->__data.__wakeup_seq;
-      if (cond->__data.__woken_seq >= seq
-	  && cond->__data.__woken_seq < val)
-	break;
     }
+  while (! (val > seq && cond->__data.__woken_seq < val));
 
   /* Another thread woken up.  */
   ++cond->__data.__woken_seq;
diff --git a/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S b/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S
index 9082fd5f4f..c1ce3bec17 100644
--- a/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S
+++ b/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S
@@ -164,11 +164,11 @@ __pthread_cond_timedwait:
 	movl	wakeup_seq(%ebx), %edi
 	movl	wakeup_seq+4(%ebx), %edx
 
-	cmpl	24(%esp), %ecx
+	cmpl	24(%esp), %edx
 	ja	7f
 	jb	15f
-	cmpl	20(%esp), %eax
-	jb	15f
+	cmpl	20(%esp), %edi
+	jbe	15f
 
 7:	cmpl	%ecx, %edx
 	ja	9f
diff --git a/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S b/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S
index c13c38290e..68ce35e8d6 100644
--- a/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S
+++ b/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S
@@ -195,11 +195,11 @@ __pthread_cond_wait:
 	movl	wakeup_seq(%ebx), %edi
 	movl	wakeup_seq+4(%ebx), %edx
 
-	cmpl	16(%esp), %ecx
+	cmpl	16(%esp), %edx
 	ja	7f
 	jb	8b
-	cmpl	12(%esp), %eax
-	jb	8b
+	cmpl	12(%esp), %edi
+	jbe	8b
 
 7:	cmpl	%ecx, %edx
 	ja	9f
diff --git a/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_rdlock.S b/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_rdlock.S
index 30a2e2c092..6c8dca55a2 100644
--- a/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_rdlock.S
+++ b/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_rdlock.S
@@ -77,12 +77,12 @@ __pthread_rwlock_rdlock:
 #endif
 	jne	10f
 
-11:	addl	$READERS_WAKEUP-MUTEX, %ebx
+11:	addl	$READERS_WAKEUP, %ebx
 	movl	%esi, %ecx	/* movl $FUTEX_WAIT, %ecx */
 	movl	$SYS_futex, %eax
 	ENTER_KERNEL
 
-	subl	$READERS_WAKEUP-MUTEX, %ebx
+	subl	$READERS_WAKEUP, %ebx
 
 	/* Reget the lock.  */
 	movl	$1, %eax
diff --git a/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_wrlock.S b/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_wrlock.S
index 10b176edce..0b1cc28986 100644
--- a/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_wrlock.S
+++ b/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_wrlock.S
@@ -75,12 +75,12 @@ __pthread_rwlock_wrlock:
 #endif
 	jne	10f
 
-11:	addl	$WRITERS_WAKEUP-MUTEX, %ebx
+11:	addl	$WRITERS_WAKEUP, %ebx
 	movl	%esi, %ecx	/* movl $FUTEX_WAIT, %ecx */
 	movl	$SYS_futex, %eax
 	ENTER_KERNEL
 
-	subl	$WRITERS_WAKEUP-MUTEX, %ebx
+	subl	$WRITERS_WAKEUP, %ebx
 
 	/* Reget the lock.  */
 	movl	$1, %eax
diff --git a/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.h b/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.h
index c593f6ac66..daece67eab 100644
--- a/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.h
+++ b/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.h
@@ -66,7 +66,7 @@ extern int __lll_mutex_unlock_wait (int *__futex) attribute_hidden;
 			      "testl %0, %0\n\t"			      \
 			      "jne 1f\n\t"				      \
 			      ".subsection 1\n"				      \
-			      "1:\tleaq %2, %%rsi\n\t"			      \
+			      "1:\tleaq %2, %%rdi\n\t"			      \
 			      "subq $128, %%rsp\n\t"			      \
 			      "callq __lll_mutex_lock_wait\n\t"		      \
 			      "addq $128, %%rsp\n\t"			      \
@@ -75,8 +75,7 @@ extern int __lll_mutex_unlock_wait (int *__futex) attribute_hidden;
 			      "2:"					      \
 			      : "=S" (ignore1), "=&D" (ignore2), "=m" (futex) \
 			      : "0" (1), "2" (futex)			      \
-			      : "memory"); })
-
+			      : "cx", "r11", "cc", "memory"); })
 
 #define lll_mutex_timedlock(futex, timeout) \
   ({ int result, ignore1, ignore2, ignore3;				      \
@@ -95,7 +94,7 @@ extern int __lll_mutex_unlock_wait (int *__futex) attribute_hidden;
 		       : "=a" (result), "=&D" (ignore1), "=&S" (ignore2),     \
 			 "=&d" (ignore3), "=m" (futex)			      \
 		       : "0" (1), "4" (futex), "m" (timeout)		      \
-		       : "memory", "cx", "cc", "r10");			      \
+		       : "memory", "cx", "cc", "r10", "r11");		      \
      result; })
 
 
@@ -113,7 +112,7 @@ extern int __lll_mutex_unlock_wait (int *__futex) attribute_hidden;
 			      "2:"					      \
 			      : "=m" (futex), "=&D" (ignore)		      \
 			      : "0" (futex)				      \
-			      : "memory"); })
+			      : "cx", "r11", "cc", "memory"); })
 
 
 #define lll_mutex_islocked(futex) \
@@ -166,7 +165,7 @@ extern int lll_unlock_wake_cb (int *__futex) attribute_hidden;
 			      "2:"					      \
 			      : "=S" (ignore1), "=&D" (ignore2), "=m" (futex) \
 			      : "0" (-1), "2" (futex)			      \
-			      : "memory"); })
+			      : "cx", "r11", "cc", "memory"); })
 
 
 # define lll_unlock(futex) \
@@ -183,7 +182,7 @@ extern int lll_unlock_wake_cb (int *__futex) attribute_hidden;
 			      "2:"					      \
 			      : "=m" (futex), "=&D" (ignore)		      \
 			      : "0" (futex)				      \
-			      : "memory"); })
+			      : "cx", "r11", "cc", "memory"); })
 #else
 /* Special versions of the macros for use in libc itself.  They avoid
    the lock prefix when the thread library is not used.
@@ -219,7 +218,7 @@ extern int lll_unlock_wake_cb (int *__futex) attribute_hidden;
 			      "2:"					      \
 			      : "=S" (ignore1), "=&D" (ignore2), "=m" (futex) \
 			      : "0" (-1), "2" (futex)			      \
-			      : "memory"); })
+			      : "cx", "r11", "cc", "memory"); })
 
 
 # define lll_unlock(futex) \
@@ -239,7 +238,7 @@ extern int lll_unlock_wake_cb (int *__futex) attribute_hidden;
 			      "2:"					      \
 			      : "=m" (futex), "=&D" (ignore)		      \
 			      : "0" (futex)				      \
-			      : "memory"); })
+			      : "cx", "r11", "cc", "memory"); })
 #endif
 
 
@@ -259,7 +258,7 @@ extern int lll_unlock_wake_cb (int *__futex) attribute_hidden;
     register __typeof (tid) _tid asm ("edx") = (tid);			      \
     if (_tid != 0)							      \
       __asm __volatile ("xorq %%r10, %%r10\n\t"				      \
-			"1:\tmovq %3, %%rax\n\t"			      \
+			"1:\tmovq %2, %%rax\n\t"			      \
 			"syscall\n\t"					      \
 			"cmpl $0, (%%rdi)\n\t"				      \
 			"jne 1b"					      \
diff --git a/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S b/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S
index 3c8acc1c25..9da9af8d01 100644
--- a/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S
+++ b/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S
@@ -171,8 +171,8 @@ __pthread_cond_timedwait:
 
 	movq	wakeup_seq(%rdi), %r12
 
-	cmpq	40(%rsp), %rax
-	jb	15f
+	cmpq	40(%rsp), %r12
+	jbe	15f
 
 	cmpq	%rax, %r12
 	ja	9f
@@ -181,10 +181,10 @@ __pthread_cond_timedwait:
 	jne	8b
 
 13:	incq	wakeup_seq(%rdi)
-	movq	$ETIMEDOUT, %rsi
+	movq	$ETIMEDOUT, %r14
 	jmp	14f
 
-9:	xorq	%rsi, %rsi
+9:	xorq	%r14, %r14
 14:	incq	woken_seq(%rdi)
 
 	LOCK
@@ -203,7 +203,7 @@ __pthread_cond_timedwait:
 	callq	__pthread_mutex_lock_internal
 
 	testq	%rax, %rax
-	cmoveq	%rsi, %rax
+	cmoveq	%r14, %rax
 
 18:	addq	$80, %rsp
 	popq	%r14
diff --git a/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S b/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S
index 4a0e3cce55..835486a8a1 100644
--- a/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S
+++ b/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S
@@ -198,8 +198,8 @@ __pthread_cond_wait:
 
 	movq	wakeup_seq(%rdi), %r12
 
-	cmpq	24(%rsp), %rax
-	jb	8b
+	cmpq	24(%rsp), %r12
+	jbe	8b
 
 	cmpq	%rax, %r12
 	jna	8b
diff --git a/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_rdlock.S b/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_rdlock.S
index e31d4bb705..0b0ccf7027 100644
--- a/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_rdlock.S
+++ b/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_rdlock.S
@@ -67,18 +67,18 @@ __pthread_rwlock_rdlock:
 
 	LOCK
 #if MUTEX == 0
-	incl	(%rdi)
+	decl	(%rdi)
 #else
-	incl	MUTEX(%rdi)
+	decl	MUTEX(%rdi)
 #endif
 	jne	10f
 
-11:	addq	$READERS_WAKEUP-MUTEX, %rdi
+11:	addq	$READERS_WAKEUP, %rdi
 	movq	%r10, %rsi	/* movq $FUTEX_WAIT, %rsi */
 	movq	$SYS_futex, %rax
 	syscall
 
-	subq	$READERS_WAKEUP-MUTEX, %rdi
+	subq	$READERS_WAKEUP, %rdi
 
 	/* Reget the lock.  */
 	movl	$1, %esi
diff --git a/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_unlock.S b/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_unlock.S
index 4f487fb8df..a3d2351b68 100644
--- a/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_unlock.S
+++ b/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_unlock.S
@@ -21,7 +21,7 @@
 #include <lowlevelrwlock.h>
 
 
-#define SYS_futex		240
+#define SYS_futex		202
 #define FUTEX_WAIT		0
 #define FUTEX_WAKE		1
 
@@ -57,7 +57,7 @@ __pthread_rwlock_unlock:
 5:	movq	$0, WRITER(%rdi)
 
 	movq	$1, %rsi
-	leaq	WRITERS_WAKEUP(%rdi), %r11
+	leaq	WRITERS_WAKEUP(%rdi), %r10
 	movq	%rsi, %rdx
 	cmpl	$0, WRITERS_QUEUED(%rdi)
 	jne	0f
@@ -66,10 +66,10 @@ __pthread_rwlock_unlock:
 	cmpl	$0, READERS_QUEUED(%rdi)
 	je	6f
 
-	movq	$0x7fffffff, %rdx
-	leaq	READERS_WAKEUP(%rdi), %r11
+	movl	$0x7fffffff, %edx
+	leaq	READERS_WAKEUP(%rdi), %r10
 
-0:	incl	(%r11)
+0:	incl	(%r10)
 	LOCK
 #if MUTEX == 0
 	decl	(%rdi)
@@ -79,7 +79,7 @@ __pthread_rwlock_unlock:
 	jne	7f
 
 8:	movq	$SYS_futex, %rax
-	movq	%r11, %rdi
+	movq	%r10, %rdi
 	syscall
 
 	xorq	%rax, %rax
@@ -112,9 +112,6 @@ __pthread_rwlock_unlock:
 	addq	$MUTEX, %rdi
 #endif
 	callq	__lll_mutex_unlock_wake
-#if MUTEX != 0
-	subq	$MUTEX, %rdi
-#endif
 	jmp	4b
 
 7:
@@ -122,9 +119,6 @@ __pthread_rwlock_unlock:
 	addq	$MUTEX, %rdi
 #endif
 	callq	__lll_mutex_unlock_wake
-#if MUTEX != 0
-	subq	$MUTEX, %rdi
-#endif
 	jmp	8b
 
 	.size	__pthread_rwlock_unlock,.-__pthread_rwlock_unlock
diff --git a/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_wrlock.S b/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_wrlock.S
index 0afe46a246..9e7336b20e 100644
--- a/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_wrlock.S
+++ b/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_wrlock.S
@@ -71,12 +71,12 @@ __pthread_rwlock_wrlock:
 #endif
 	jne	10f
 
-11:	addq	$WRITERS_WAKEUP-MUTEX, %rdi
+11:	addq	$WRITERS_WAKEUP, %rdi
 	movq	%r10, %rsi	/* movq $FUTEX_WAIT, %rsi */
 	movq	$SYS_futex, %rax
 	syscall
 
-	subq	$WRITERS_WAKEUP-MUTEX, %rdi
+	subq	$WRITERS_WAKEUP, %rdi
 
 	/* Reget the lock.  */
 	movl	$1, %esi
@@ -99,7 +99,7 @@ __pthread_rwlock_wrlock:
 #if MUTEX == 0
 	decl	(%rdi)
 #else
-	decl	$MUTEX(%rdi)
+	decl	MUTEX(%rdi)
 #endif
 	jne	6f
 7: