diff options
author | Jakub Jelinek <jakub@redhat.com> | 2007-08-15 20:47:43 +0000 |
---|---|---|
committer | Jakub Jelinek <jakub@redhat.com> | 2007-08-15 20:47:43 +0000 |
commit | e4720b0e594f4599d0256dfb713ddd4d2281ddbc (patch) | |
tree | 361c259b576fbbda177da526e1f248e0c6830749 /nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sem_trywait.c | |
parent | d13f4a43865051177cb6bb084f64dbc5b62c97c7 (diff) |
* sysdeps/sparc/fpu/fraiseexcpt.c (__feraiseexcept): Fix raising cvs/fedora-glibc-20070815T2049
FE_UNDERFLOW on Niagara CPUs.
* sysdeps/sparc/fpu/feholdexcpt.c (feholdexcept): Clear all
exceptions.
* sysdeps/unix/sysv/linux/sparc/internaltypes.h (sparc_new_sem,
sparc_old_sem): New structs.
* sysdeps/unix/sysv/linux/sparc/sparc32/sem_wait.c
(__sem_wait_cleanup): New function.
(__new_sem_wait): Use sparc_new_sem structure. Bump and afterwards
decrease nwaiters. Register __sem_wait_cleanup as cleanup handler.
Pass isem->private ^ FUTEX_PRIVATE_FLAG as last argument to
lll_futex_wait.
(__old_sem_wait): New function.
* sysdeps/unix/sysv/linux/sparc/sparc32/sparcv9/sem_wait.c: Include
nptl/sysdeps/unix/sysv/linux/sparc version.
* sysdeps/unix/sysv/linux/sparc/sparc32/sparcv9/sem_timedwait.c:
Likewise.
* sysdeps/unix/sysv/linux/sparc/sparc32/sparcv9/sem_post.c: Likewise.
* sysdeps/unix/sysv/linux/sparc/sparc32/sem_trywait.c
(__new_sem_trywait): Use sparc_old_sem structure.
* sysdeps/unix/sysv/linux/sparc/sparc32/sem_timedwait.c
(sem_timedwait): Use sparc_new_sem structure. Bump and afterwards
decrease nwaiters. Register __sem_wait_cleanup as cleanup handler.
Pass isem->private ^ FUTEX_PRIVATE_FLAG as last argument to
lll_futex_timed_wait.
* sysdeps/unix/sysv/linux/sparc/sparc32/sem_post.c (__new_sem_post):
Use sparc_new_sem structure. Only wake if nwaiters > 0. Pass
isem->private ^ FUTEX_PRIVATE_FLAG as last argument to
lll_futex_wake.
(__old_sem_post): New function.
* sysdeps/unix/sysv/linux/sparc/sem_wait.c: New file.
* sysdeps/unix/sysv/linux/sparc/sem_init.c: New file.
* sysdeps/unix/sysv/linux/sparc/sem_timedwait.c: New file.
* sysdeps/unix/sysv/linux/sparc/sem_post.c: New file.
* sysdeps/unix/sysv/linux/sparc/sparc32/sparcv9/sem_init.c: Remove.
* sysdeps/unix/sysv/linux/sparc/sparc32/sem_init.c: Remove.
2007-08-15 Jakub Jelinek <jakub@redhat.com>
* sysdeps/sparc/fpu/fraiseexcpt.c (__feraiseexcept): Fix raising
FE_UNDERFLOW on Niagara CPUs.
* sysdeps/sparc/fpu/feholdexcpt.c (feholdexcept): Clear all
exceptions.
Diffstat (limited to 'nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sem_trywait.c')
-rw-r--r-- | nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sem_trywait.c | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sem_trywait.c b/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sem_trywait.c index 429494e257..4db89727a7 100644 --- a/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sem_trywait.c +++ b/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sem_trywait.c @@ -1,5 +1,5 @@ /* sem_trywait -- wait on a semaphore. SPARC version. - Copyright (C) 2003, 2006 Free Software Foundation, Inc. + Copyright (C) 2003, 2006, 2007 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Paul Mackerras <paulus@au.ibm.com>, 2003. @@ -30,20 +30,20 @@ int __new_sem_trywait (sem_t *sem) { - int *futex = (int *) sem; + struct sparc_old_sem *isem = (struct sparc_old_sem *) sem; int val; - if (*futex > 0) + if (isem->value > 0) { if (__atomic_is_v9) - val = atomic_decrement_if_positive (futex); + val = atomic_decrement_if_positive (&isem->value); else { - __sparc32_atomic_do_lock24 (futex + 1); - val = *futex; + __sparc32_atomic_do_lock24 (&isem->lock); + val = isem->value; if (val > 0) - *futex = val - 1; - __sparc32_atomic_do_unlock24 (futex + 1); + isem->value = val - 1; + __sparc32_atomic_do_unlock24 (&isem->lock); } if (val > 0) return 0; |