This is the mail archive of the libc-hacker@sources.redhat.com mailing list for the glibc project.
Note that libc-hacker is a closed list. You may look at the archives of this list, but subscription and posting are not open.
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
| Other format: | [Raw text] | |
Hi,
The patch below is a similar change with that for x86 and also
fixes a few silly mistakes.
Regards,
kaz
--
2004-10-21 Kaz Kojima <kkojima@rr.iij4u.or.jp>
* sysdeps/unix/sysv/linux/sh/lowlevellock.S
(__lll_mutex_timedlock_wait): If woken but cannot get the lock,
make sure 2 is stored in the futex and we looked at the old value.
Fix a few other problems to return the correct value.
diff -uprN ORIG/libc/nptl/sysdeps/unix/sysv/linux/sh/lowlevellock.S LOCAL/libc/nptl/sysdeps/unix/sysv/linux/sh/lowlevellock.S
--- ORIG/libc/nptl/sysdeps/unix/sysv/linux/sh/lowlevellock.S Sat Mar 20 15:24:28 2004
+++ LOCAL/libc/nptl/sysdeps/unix/sysv/linux/sh/lowlevellock.S Thu Oct 21 12:51:15 2004
@@ -127,13 +127,14 @@ __lll_mutex_timedlock_wait:
extu.b r3, r3
trapa #0x14
SYSCALL_INST_PAD
- mov r0, r4
+ mov r0, r5
-8:
+8:
mov #0, r3
mov #2, r4
CMPXCHG (r3, @r8, r4, r2)
- bf 7f
+ bf/s 7f
+ mov #0, r0
6:
add #8, r15
@@ -144,8 +145,14 @@ __lll_mutex_timedlock_wait:
7:
/* Check whether the time expired. */
mov #-ETIMEDOUT, r1
- cmp/eq r4, r1
+ cmp/eq r5, r1
bt 5f
+
+ /* Make sure the current holder knows we are going to sleep. */
+ XCHG (r2, @r8, r3)
+ tst r3, r3
+ bt/s 6b
+ mov #0, r0
bra 1b
nop
3:
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |