diff options
author | Ulrich Drepper <drepper@redhat.com> | 2000-09-28 23:11:33 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2000-09-28 23:11:33 +0000 |
commit | c0ac34e4472e5f3b5fdf1557480e2b2c1cc72aed (patch) | |
tree | 428164e4a1b3ba35e5469c2d21aeb5c84afa8003 /sysdeps | |
parent | 8cab1d380a9a9743ed825533f389e0edb7b777d0 (diff) | |
download | glibc-c0ac34e4472e5f3b5fdf1557480e2b2c1cc72aed.zip glibc-c0ac34e4472e5f3b5fdf1557480e2b2c1cc72aed.tar.gz glibc-c0ac34e4472e5f3b5fdf1557480e2b2c1cc72aed.tar.bz2 |
Update.
* mutex.c (__pthread_mutex_unlock): For PTHREAD_MUTEX_RECURSIVE_NP
test for owner first.
Patch by Kaz Kylheku <kaz@ashi.footprints.net>.
Diffstat (limited to 'sysdeps')
-rw-r--r-- | sysdeps/generic/gccframe.h | 30 | ||||
-rw-r--r-- | sysdeps/gnu/errlist.c | 2 | ||||
-rw-r--r-- | sysdeps/ia64/bits/fenv.h | 4 | ||||
-rw-r--r-- | sysdeps/ia64/fpu/fclrexcpt.c | 2 | ||||
-rw-r--r-- | sysdeps/ia64/fpu/fedisblxcpt.c | 2 | ||||
-rw-r--r-- | sysdeps/ia64/fpu/feenablxcpt.c | 3 | ||||
-rw-r--r-- | sysdeps/ia64/fpu/fesetenv.c | 4 | ||||
-rw-r--r-- | sysdeps/ia64/fpu/fesetround.c | 4 | ||||
-rw-r--r-- | sysdeps/ia64/fpu/fgetexcptflg.c | 2 | ||||
-rw-r--r-- | sysdeps/ia64/fpu/fsetexcptflg.c | 7 | ||||
-rw-r--r-- | sysdeps/ia64/gccframe.h | 32 |
11 files changed, 75 insertions, 17 deletions
diff --git a/sysdeps/generic/gccframe.h b/sysdeps/generic/gccframe.h new file mode 100644 index 0000000..6ed9320 --- /dev/null +++ b/sysdeps/generic/gccframe.h @@ -0,0 +1,30 @@ +/* Definition of object in frame unwind info. Generic version. + Copyright (C) 2000 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 + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +/* This must match what's in frame.h in gcc. */ + +struct object +{ + void *pc_begin; + void *pc_end; + void *fde_begin; + void *fde_array; + __SIZE_TYPE__ count; + struct object *next; +}; diff --git a/sysdeps/gnu/errlist.c b/sysdeps/gnu/errlist.c index 4c635d2..1b15c5e 100644 --- a/sysdeps/gnu/errlist.c +++ b/sysdeps/gnu/errlist.c @@ -59,7 +59,7 @@ TRANS represented by a file you specified, and it couldn't find the device. TRANS This can mean that the device file was installed incorrectly, or that TRANS the physical device is missing or not correctly attached to the TRANS computer. */ - [ERR_REMAP (ENXIO)] = N_("Device not configured"), + [ERR_REMAP (ENXIO)] = N_("No such device or address"), #endif #ifdef E2BIG /* diff --git a/sysdeps/ia64/bits/fenv.h b/sysdeps/ia64/bits/fenv.h index 9c3bd47..783fc9b 100644 --- a/sysdeps/ia64/bits/fenv.h +++ b/sysdeps/ia64/bits/fenv.h @@ -67,10 +67,10 @@ enum /* Type representing exception flags. */ -typedef unsigned long fexcept_t; +typedef unsigned long int fexcept_t; /* Type representing floating-point environment. */ -typedef unsigned long fenv_t; +typedef unsigned long int fenv_t; /* If the default argument is used we use this value. */ #define FE_DFL_ENV ((__const fenv_t *) 0xc009804c0270033fUL) diff --git a/sysdeps/ia64/fpu/fclrexcpt.c b/sysdeps/ia64/fpu/fclrexcpt.c index fbd93ce..40ba179 100644 --- a/sysdeps/ia64/fpu/fclrexcpt.c +++ b/sysdeps/ia64/fpu/fclrexcpt.c @@ -30,7 +30,7 @@ feclearexcept (int excepts) __asm__ __volatile__ ("mov.m %0=ar.fpsr" : "=r" (fpsr)); /* Clear the relevant bits. */ - fpsr &= ~(((unsigned long int) ((excepts & FE_ALL_EXCEPT) << 13))); + fpsr &= ~(((fenv_t) ((excepts & FE_ALL_EXCEPT) << 13))); /* Put the new state in effect. */ __asm__ __volatile__ ("mov.m ar.fpsr=%0" :: "r" (fpsr) : "memory"); diff --git a/sysdeps/ia64/fpu/fedisblxcpt.c b/sysdeps/ia64/fpu/fedisblxcpt.c index fceedc2..1006e03 100644 --- a/sysdeps/ia64/fpu/fedisblxcpt.c +++ b/sysdeps/ia64/fpu/fedisblxcpt.c @@ -29,7 +29,7 @@ fedisableexcept (int excepts) /* Get the current fpsr. */ __asm__ __volatile__ ("mov.m %0=ar.fpsr" : "=r" (old_fpsr)); - new_fpsr = old_fpsr |= FE_ALL_EXCEPT; + new_fpsr = old_fpsr | ((fenv_t) excepts & FE_ALL_EXCEPT); __asm__ __volatile__ ("mov.m ar.fpsr=%0" :: "r" (new_fpsr) : "memory"); diff --git a/sysdeps/ia64/fpu/feenablxcpt.c b/sysdeps/ia64/fpu/feenablxcpt.c index 2c54476..686b750 100644 --- a/sysdeps/ia64/fpu/feenablxcpt.c +++ b/sysdeps/ia64/fpu/feenablxcpt.c @@ -29,8 +29,7 @@ feenableexcept (int excepts) /* Get the current fpsr. */ __asm__ __volatile__ ("mov.m %0=ar.fpsr" : "=r " (old_fpsr)); - new_fpsr = ((old_fpsr & FE_ALL_EXCEPT) - | (old_fpsr & ((unsigned long int) excepts ^ FE_ALL_EXCEPT))); + new_fpsr = old_fpsr & ~((fenv_t) excepts & FE_ALL_EXCEPT); __asm__ __volatile__ ("mov.m ar.fpsr=%0" :: "r" (new_fpsr) : "memory"); diff --git a/sysdeps/ia64/fpu/fesetenv.c b/sysdeps/ia64/fpu/fesetenv.c index b1209ca..79651ea 100644 --- a/sysdeps/ia64/fpu/fesetenv.c +++ b/sysdeps/ia64/fpu/fesetenv.c @@ -30,8 +30,8 @@ fesetenv (const fenv_t *envp) Magic encoding of default values: bit 62+63 set (which will never happen for a user-space address) means it's not indirect. */ - if (((unsigned long int) envp >> 62) == 0x03) - env = (unsigned long int) envp & 0x3fffffffffffffff; + if (((fenv_t) envp >> 62) == 0x03) + env = (fenv_t) envp & 0x3fffffffffffffff; else env = *envp; diff --git a/sysdeps/ia64/fpu/fesetround.c b/sysdeps/ia64/fpu/fesetround.c index 66d7f89..7738eb2 100644 --- a/sysdeps/ia64/fpu/fesetround.c +++ b/sysdeps/ia64/fpu/fesetround.c @@ -23,7 +23,7 @@ int fesetround (int round) { - unsigned long int fpsr; + fenv_t fpsr; if (round & ~3) return 0; @@ -32,7 +32,7 @@ fesetround (int round) __asm__ __volatile__ ("mov.m %0=ar.fpsr" : "=r" (fpsr)); /* Set the relevant bits. */ - fpsr = (fpsr & ~(3UL << 10)) | ((unsigned long int) round << 10); + fpsr = (fpsr & ~(3UL << 10)) | ((fenv_t) round << 10); /* Put the new state in effect. */ __asm__ __volatile__ ("mov.m ar.fpsr=%0" :: "r" (fpsr) : "memory"); diff --git a/sysdeps/ia64/fpu/fgetexcptflg.c b/sysdeps/ia64/fpu/fgetexcptflg.c index 5555307..46a04e3 100644 --- a/sysdeps/ia64/fpu/fgetexcptflg.c +++ b/sysdeps/ia64/fpu/fgetexcptflg.c @@ -28,7 +28,7 @@ fegetexceptflag (fexcept_t *flagp, int excepts) /* Get the current exceptions. */ __asm__ __volatile__ ("mov.m %0=ar.fpsr" : "=r" (fpsr)); - *flagp = (fpsr ^ FE_ALL_EXCEPT) & excepts & FE_ALL_EXCEPT; + *flagp = (fexcept_t) ((fpsr >> 13) & excepts & FE_ALL_EXCEPT); /* Success. */ return 0; diff --git a/sysdeps/ia64/fpu/fsetexcptflg.c b/sysdeps/ia64/fpu/fsetexcptflg.c index 5e04041..6964363 100644 --- a/sysdeps/ia64/fpu/fsetexcptflg.c +++ b/sysdeps/ia64/fpu/fsetexcptflg.c @@ -19,7 +19,6 @@ Boston, MA 02111-1307, USA. */ #include <fenv.h> -#include <math.h> int fesetexceptflag (const fexcept_t *flagp, int excepts) @@ -29,12 +28,10 @@ fesetexceptflag (const fexcept_t *flagp, int excepts) /* Get the current exception state. */ __asm__ __volatile__ ("mov.m %0=ar.fpsr" : "=r" (fpsr)); - /* Get the reverse bits so we can enable the exceptions flagged - rather than disable them. */ - excepts ^= FE_ALL_EXCEPT; + fpsr &= ~(((fenv_t) excepts & FE_ALL_EXCEPT) << 13); /* Set all the bits that were called for. */ - fpsr = (fpsr & ~FE_ALL_EXCEPT) | (*flagp & excepts & FE_ALL_EXCEPT); + fpsr |= ((*flagp & excepts & FE_ALL_EXCEPT) << 13); /* And store it back. */ __asm__ __volatile__ ("mov.m ar.fpsr=%0" :: "r" (fpsr) : "memory"); diff --git a/sysdeps/ia64/gccframe.h b/sysdeps/ia64/gccframe.h new file mode 100644 index 0000000..606bec6 --- /dev/null +++ b/sysdeps/ia64/gccframe.h @@ -0,0 +1,32 @@ +/* Definition of object in frame unwind info. ia64 version. + Copyright (C) 2000 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 + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +/* This must match what's in frame.h in gcc. */ + +struct object +{ + void *pc_base; /* This field will be set by find_fde. */ + void *pc_begin; + void *pc_end; + void *fde_begin; + void *fde_end; + void *fde_array; + __SIZE_TYPE__ count; + struct object *next; +}; |