aboutsummaryrefslogtreecommitdiff
path: root/nptl
diff options
context:
space:
mode:
Diffstat (limited to 'nptl')
-rw-r--r--nptl/ChangeLog3
-rw-r--r--nptl/sysdeps/unix/sysv/linux/sh/sem_timedwait.S9
2 files changed, 8 insertions, 4 deletions
diff --git a/nptl/ChangeLog b/nptl/ChangeLog
index 6cf6b3fed9..cd70329abb 100644
--- a/nptl/ChangeLog
+++ b/nptl/ChangeLog
@@ -1,5 +1,8 @@
2012-03-08 Thomas Schwinge <thomas@codesourcery.com>
+ * sysdeps/unix/sysv/linux/sh/sem_timedwait.S (sem_timedwait): Fix
+ updating nwaiters.
+
* tst-sem13.c (do_test): Add another test case.
* sysdeps/unix/sysv/linux/i386/i486/sem_timedwait.S (sem_timedwait):
Fix updating nwaiters.
diff --git a/nptl/sysdeps/unix/sysv/linux/sh/sem_timedwait.S b/nptl/sysdeps/unix/sysv/linux/sh/sem_timedwait.S
index d47362fc68..c26e5aa4cb 100644
--- a/nptl/sysdeps/unix/sysv/linux/sh/sem_timedwait.S
+++ b/nptl/sysdeps/unix/sysv/linux/sh/sem_timedwait.S
@@ -1,4 +1,4 @@
-/* Copyright (C) 2003, 2004, 2007, 2011 Free Software Foundation, Inc.
+/* Copyright (C) 2003-2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -69,8 +69,8 @@ sem_timedwait:
mov.l @(4,r9), r0
mov.l .L1g, r1
cmp/hs r1, r0
- bt/s 6f
- mov #EINVAL, r0
+ bt/s .Lerrno_exit
+ mov #EINVAL, r10
INC (@(NWAITERS,r8),r2)
7:
@@ -168,6 +168,8 @@ sem_timedwait:
neg r0, r0
6:
mov r0, r10
+ DEC (@(NWAITERS,r8), r2)
+.Lerrno_exit:
mova .Lgot2, r0
mov.l .Lgot2, r12
add r0, r12
@@ -182,7 +184,6 @@ sem_timedwait:
.long errno@GOTTPOFF
.Lexit:
mov.l r10, @r0
- DEC (@(NWAITERS,r8), r2)
bra 10b
mov #-1, r0