mirror of
git://sourceware.org/git/glibc.git
synced 2024-11-27 03:41:23 +08:00
* sysdeps/unix/sysv/linux/sh/lowlevellock.S (__lll_timedlock_wait):
Store 2 before returning ETIMEDOUT.
This commit is contained in:
parent
da0ff4ae5b
commit
191ec77f9b
@ -1,3 +1,8 @@
|
||||
2007-12-04 Kaz Kojima <kkojima@rr.iij4u.or.jp>
|
||||
|
||||
* sysdeps/unix/sysv/linux/sh/lowlevellock.S (__lll_timedlock_wait):
|
||||
Store 2 before returning ETIMEDOUT.
|
||||
|
||||
2007-11-23 Ulrich Drepper <drepper@redhat.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/x86_64/lowlevellock.S (__lll_timedlock_wait):
|
||||
|
@ -225,6 +225,12 @@ __lll_timedlock_wait:
|
||||
add #-8, r15
|
||||
cfi_adjust_cfa_offset(8)
|
||||
|
||||
mov #2, r2
|
||||
XCHG (r2, @r8, r3)
|
||||
|
||||
tst r3, r3
|
||||
bt 6f
|
||||
|
||||
1:
|
||||
/* Get current time. */
|
||||
mov r15, r4
|
||||
@ -250,17 +256,11 @@ __lll_timedlock_wait:
|
||||
add #-1, r2
|
||||
4:
|
||||
cmp/pz r2
|
||||
bf 5f /* Time is already up. */
|
||||
bf 2f /* Time is already up. */
|
||||
|
||||
mov.l r2, @r15 /* Store relative timeout. */
|
||||
mov.l r3, @(4,r15)
|
||||
|
||||
mov #1, r3
|
||||
mov #2, r4
|
||||
CMPXCHG (r3, @r8, r4, r2)
|
||||
tst r2, r2
|
||||
bt 8f
|
||||
|
||||
mov r8, r4
|
||||
mov r11, r5
|
||||
LOAD_FUTEX_WAIT (r5, r0, r1)
|
||||
@ -272,39 +272,29 @@ __lll_timedlock_wait:
|
||||
SYSCALL_INST_PAD
|
||||
mov r0, r5
|
||||
|
||||
8:
|
||||
mov #0, r3
|
||||
mov #2, r4
|
||||
CMPXCHG (r3, @r8, r4, r2)
|
||||
bf/s 7f
|
||||
mov #0, r0
|
||||
mov #2, r2
|
||||
XCHG (r2, @r8, r3)
|
||||
|
||||
tst r3, r3
|
||||
bt/s 6f
|
||||
mov #-ETIMEDOUT, r1
|
||||
cmp/eq r5, r1
|
||||
bf 1b
|
||||
|
||||
2: mov #ETIMEDOUT, r3
|
||||
|
||||
6:
|
||||
mov r3, r0
|
||||
add #8, r15
|
||||
mov.l @r15+, r8
|
||||
mov.l @r15+, r9
|
||||
mov.l @r15+, r10
|
||||
rts
|
||||
mov.l @r15+, r11
|
||||
7:
|
||||
/* Check whether the time expired. */
|
||||
mov #-ETIMEDOUT, 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:
|
||||
rts
|
||||
mov #EINVAL, r0
|
||||
5:
|
||||
bra 6b
|
||||
mov #ETIMEDOUT, r0
|
||||
cfi_endproc
|
||||
|
||||
.L1k:
|
||||
|
Loading…
Reference in New Issue
Block a user