* sysdeps/unix/sysv/linux/sh/sysdep.h (INTERNAL_SYSCALL):

Add "t" to clobber list.
	(INTERNAL_SYSCALL_NCS): Likewise.
This commit is contained in:
Ulrich Drepper 2009-01-28 16:11:36 +00:00
parent 1dd757696b
commit a7bd183ffe
6 changed files with 132 additions and 6 deletions

View File

@ -1,3 +1,9 @@
2009-01-14 Kaz Kojima <kkojima@rr.iij4u.or.jp>
* sysdeps/unix/sysv/linux/sh/sysdep.h (INTERNAL_SYSCALL):
Add "t" to clobber list.
(INTERNAL_SYSCALL_NCS): Likewise.
2009-01-28 Ulrich Drepper <drepper@redhat.com>
* nss/getent.c (print_networks): Don't print comma between aliases.

View File

@ -1,3 +1,12 @@
2009-01-28 Ulrich Drepper <drepper@redhat.com>
* locales/as_IN: Break circular include loops introduced in last patch.
* locales/bn_BD: Likewise.
* locales/bn_IN: Likewise.
* locales/hi_IN: Likewise.
* locales/mr_IN: Likewise.
Patch by Pravin Satpute <psatpute@redhat.com>.
2009-01-08 Ulrich Drepper <drepper@redhat.com>
[BZ #9701]

View File

@ -1,3 +1,11 @@
2009-01-14 Kaz Kojima <kkojima@rr.iij4u.or.jp>
* sysdeps/unix/sysv/linux/sh/lowlevellock.S
(__lll_timedlock_wait): Use FUTEX_WAIT_BITSET|FUTEX_CLOCK_REALTIME
instead of computing relative timeout.
* sysdeps/unix/sysv/linux/sh/lowlevellock.h: Define
FUTEX_CLOCK_REALTIME and FUTEX_BITSET_MATCH_ANY.
2009-01-25 Ulrich Drepper <drepper@redhat.com>
* pthread_mutex_lock.c (__pthread_mutex_lock): Remove unused label out.

View File

@ -1,4 +1,4 @@
/* Copyright (C) 2003, 2004, 2005, 2007, 2008
/* Copyright (C) 2003, 2004, 2005, 2007, 2008, 2009
Free Software Foundation, Inc.
This file is part of the GNU C Library.
@ -36,6 +36,13 @@
mov #(FUTEX_WAIT | FUTEX_PRIVATE_FLAG), tmp; \
extu.b tmp, tmp; \
xor tmp, reg
# define LOAD_FUTEX_WAIT_ABS(reg,tmp,tmp2) \
mov #(FUTEX_WAIT_BITSET | FUTEX_PRIVATE_FLAG), tmp; \
extu.b tmp, tmp; \
mov #(FUTEX_CLOCK_REALTIME >> 8), tmp2; \
swap.b tmp2, tmp2; \
or tmp2, tmp; \
xor tmp, reg
# define LOAD_FUTEX_WAKE(reg,tmp,tmp2) \
mov #(FUTEX_WAKE | FUTEX_PRIVATE_FLAG), tmp; \
extu.b tmp, tmp; \
@ -96,6 +103,22 @@
and tmp2, reg ; \
mov #FUTEX_WAIT, tmp ; \
or tmp, reg
# define LOAD_FUTEX_WAIT_ABS(reg,tmp,tmp2) \
stc gbr, tmp ; \
mov.w 99f, tmp2 ; \
add tmp2, tmp ; \
mov.l @tmp, tmp2 ; \
bra 98f ; \
mov #FUTEX_PRIVATE_FLAG, tmp ; \
99: .word PRIVATE_FUTEX - TLS_PRE_TCB_SIZE ; \
98: extu.b tmp, tmp ; \
xor tmp, reg ; \
and tmp2, reg ; \
mov #FUTEX_WAIT_BITSET, tmp ; \
mov #(FUTEX_CLOCK_REALTIME >> 8), tmp2; \
swap.b tmp2, tmp2; \
or tmp2, tmp; \
or tmp, reg
# endif
# define LOAD_FUTEX_WAKE(reg,tmp,tmp2) \
stc gbr, tmp ; \
@ -193,12 +216,85 @@ __lll_lock_wait:
cfi_endproc
.size __lll_lock_wait,.-__lll_lock_wait
/* r5 (r8): futex
r7 (r11): flags
r6 (r9): timeout
r4 (r10): futex value
*/
.globl __lll_timedlock_wait
.type __lll_timedlock_wait,@function
.hidden __lll_timedlock_wait
.align 5
cfi_startproc
__lll_timedlock_wait:
mov.l r12, @-r15
cfi_adjust_cfa_offset(4)
cfi_rel_offset (r12, 0)
# ifndef __ASSUME_FUTEX_CLOCK_REALTIME
mov.l .Lhave, r1
# ifdef PIC
mova .Lgot, r0
mov.l .Lgot, r12
add r0, r12
add r12, r1
# endif
mov.l @r1, r0
tst r0, r0
bt .Lreltmo
# endif
mov r4, r2
mov r5, r4
mov r7, r5
mov r6, r7
LOAD_FUTEX_WAIT_ABS (r5, r0, r1)
mov #2, r6
cmp/eq r6, r2
bf/s 2f
mov r2, r6
1:
mov #2, r6
mov #-1, r1
mov #SYS_futex, r3
extu.b r3, r3
trapa #0x16
SYSCALL_INST_PAD
mov r0, r6
2:
XCHG (r2, @r4, r3) /* NB: lock is implied */
tst r3, r3
bt/s 3f
mov r6, r0
cmp/eq #-ETIMEDOUT, r0
bt 4f
cmp/eq #-EINVAL, r0
bf 1b
4:
neg r0, r3
3:
mov r3, r0
rts
mov.l @r15+, r12
.align 2
# ifdef PIC
.Lgot:
.long _GLOBAL_OFFSET_TABLE_
.Lhave:
.long __have_futex_clock_realtime@GOTOFF
# else
.Lhave:
.long __have_futex_clock_realtime
# endif
# ifndef __ASSUME_FUTEX_CLOCK_REALTIME
.Lreltmo:
/* Check for a valid timeout value. */
mov.l @(4,r6), r1
mov.l .L1g, r0
@ -290,12 +386,15 @@ __lll_timedlock_wait:
mov.l @r15+, r8
mov.l @r15+, r9
mov.l @r15+, r10
mov.l @r15+, r11
rts
mov.l @r15+, r11
mov.l @r15+, r12
3:
mov.l @r15+, r12
rts
mov #EINVAL, r0
# endif
cfi_endproc
.L1k:

View File

@ -1,4 +1,5 @@
/* Copyright (C) 2003, 2004, 2006, 2007, 2008 Free Software Foundation, Inc.
/* Copyright (C) 2003, 2004, 2006, 2007, 2008, 2009
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
@ -37,6 +38,9 @@
#define FUTEX_WAIT_BITSET 9
#define FUTEX_WAKE_BITSET 10
#define FUTEX_PRIVATE_FLAG 128
#define FUTEX_CLOCK_REALTIME 256
#define FUTEX_BITSET_MATCH_ANY 0xffffffff
#define FUTEX_OP_CLEAR_WAKE_IF_GT_ONE ((4 << 24) | 1)

View File

@ -1,5 +1,5 @@
/* Copyright (C) 1992,1993,1995,1996,1997,1998,1999,2000,2002,2003,2004,
2005,2006 Free Software Foundation, Inc.
2005,2006,2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper, <drepper@gnu.ai.mit.edu>, August 1995.
Changed by Kaz Kojima, <kkojima@rr.iij4u.or.jp>.
@ -339,7 +339,7 @@
asm volatile (SYSCALL_INST_STR##nr SYSCALL_INST_PAD \
: "=z" (resultvar) \
: "r" (r3) ASMFMT_##nr \
: "memory"); \
: "memory", "t"); \
\
(int) resultvar; })
@ -353,7 +353,7 @@
asm volatile (SYSCALL_INST_STR##nr SYSCALL_INST_PAD \
: "=z" (resultvar) \
: "r" (r3) ASMFMT_##nr \
: "memory"); \
: "memory", "t"); \
\
(int) resultvar; })