diff options
author | Roland McGrath <roland@hack.frob.com> | 2012-08-09 10:04:56 -0700 |
---|---|---|
committer | Roland McGrath <roland@hack.frob.com> | 2012-08-09 10:04:56 -0700 |
commit | a4ca51951804c14a5a8e331747649ca767bd8524 (patch) | |
tree | 76447f78f204b8b3f6e2ee21b10b00c2e224835c | |
parent | 33b4a91e5b7935d68c50047f37b55056e5545b09 (diff) | |
download | glibc-a4ca51951804c14a5a8e331747649ca767bd8524.tar glibc-a4ca51951804c14a5a8e331747649ca767bd8524.tar.gz glibc-a4ca51951804c14a5a8e331747649ca767bd8524.tar.bz2 glibc-a4ca51951804c14a5a8e331747649ca767bd8524.zip |
Don't check HWCAP_ARM_VFP in OS-generic code.
Presume VFP if compiled without __SOFTFP__ defined.
-rw-r--r-- | ports/ChangeLog.arm | 20 | ||||
-rw-r--r-- | ports/sysdeps/arm/arm-features.h | 34 | ||||
-rw-r--r-- | ports/sysdeps/arm/fclrexcpt.c | 9 | ||||
-rw-r--r-- | ports/sysdeps/arm/fedisblxcpt.c | 9 | ||||
-rw-r--r-- | ports/sysdeps/arm/feenablxcpt.c | 9 | ||||
-rw-r--r-- | ports/sysdeps/arm/fegetenv.c | 9 | ||||
-rw-r--r-- | ports/sysdeps/arm/fegetexcept.c | 9 | ||||
-rw-r--r-- | ports/sysdeps/arm/fegetround.c | 9 | ||||
-rw-r--r-- | ports/sysdeps/arm/feholdexcpt.c | 9 | ||||
-rw-r--r-- | ports/sysdeps/arm/fesetenv.c | 9 | ||||
-rw-r--r-- | ports/sysdeps/arm/fesetround.c | 9 | ||||
-rw-r--r-- | ports/sysdeps/arm/feupdateenv.c | 9 | ||||
-rw-r--r-- | ports/sysdeps/arm/fgetexcptflg.c | 9 | ||||
-rw-r--r-- | ports/sysdeps/arm/fraiseexcpt.c | 9 | ||||
-rw-r--r-- | ports/sysdeps/arm/fsetexcptflg.c | 9 | ||||
-rw-r--r-- | ports/sysdeps/arm/ftestexcept.c | 9 | ||||
-rw-r--r-- | ports/sysdeps/arm/setfpucw.c | 9 | ||||
-rw-r--r-- | ports/sysdeps/unix/sysv/linux/arm/arm-features.h | 30 |
18 files changed, 129 insertions, 90 deletions
diff --git a/ports/ChangeLog.arm b/ports/ChangeLog.arm index 2c5bb04f95..08020e9211 100644 --- a/ports/ChangeLog.arm +++ b/ports/ChangeLog.arm @@ -1,3 +1,23 @@ +2012-08-09 Roland McGrath <roland@hack.frob.com> + + * sysdeps/arm/arm-features.h: New file. + * sysdeps/unix/sysv/linux/arm/arm-features.h: New file. + * sysdeps/arm/fclrexcpt.c: Use ARM_HAVE_VFP instead of hwcap bits. + * sysdeps/arm/fedisblxcpt.c: Likewise. + * sysdeps/arm/feenablxcpt.c: Likewise. + * sysdeps/arm/fegetenv.c: Likewise. + * sysdeps/arm/fegetexcept.c: Likewise. + * sysdeps/arm/fegetround.c: Likewise. + * sysdeps/arm/feholdexcpt.c: Likewise. + * sysdeps/arm/fesetenv.c: Likewise. + * sysdeps/arm/fesetround.c: Likewise. + * sysdeps/arm/feupdateenv.c: Likewise. + * sysdeps/arm/fgetexcptflg.c: Likewise. + * sysdeps/arm/fraiseexcpt.c: Likewise. + * sysdeps/arm/fsetexcptflg.c: Likewise. + * sysdeps/arm/ftestexcept.c: Likewise. + * sysdeps/arm/setfpucw.c: Likewise. + 2012-08-08 Roland McGrath <roland@hack.frob.com> * sysdeps/arm/sotruss-lib.c: New file. diff --git a/ports/sysdeps/arm/arm-features.h b/ports/sysdeps/arm/arm-features.h new file mode 100644 index 0000000000..0f99b3ab81 --- /dev/null +++ b/ports/sysdeps/arm/arm-features.h @@ -0,0 +1,34 @@ +/* Macros to test for CPU features on ARM. Generic ARM version. + Copyright (C) 2012 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 Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + <http://www.gnu.org/licenses/>. */ + +#ifndef _ARM_ARM_FEATURES_H +#define _ARM_ARM_FEATURES_H 1 + +/* An OS-specific arm-features.h file should define ARM_HAVE_VFP to + an appropriate expression for testing at runtime whether the VFP + hardware is present. We'll then redefine it to a constant if we + know at compile time that we can assume VFP. */ + +#ifndef __SOFTFP__ +/* The compiler is generating VFP instructions, so we're already + assuming the hardware exists. */ +# undef ARM_HAVE_VFP +# define ARM_HAVE_VFP 1 +#endif + +#endif /* arm-features.h */ diff --git a/ports/sysdeps/arm/fclrexcpt.c b/ports/sysdeps/arm/fclrexcpt.c index ddedc3573c..23435fba78 100644 --- a/ports/sysdeps/arm/fclrexcpt.c +++ b/ports/sysdeps/arm/fclrexcpt.c @@ -1,5 +1,5 @@ /* Clear given exceptions in current floating-point environment. - Copyright (C) 1997,98,99,2000,01,05,11 Free Software Foundation, Inc. + Copyright (C) 1997-2012 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 @@ -18,16 +18,13 @@ #include <fenv.h> #include <fpu_control.h> +#include <arm-features.h> -#include <unistd.h> -#include <ldsodefs.h> -#include <dl-procinfo.h> -#include <sysdep.h> int __feclearexcept (int excepts) { - if (GLRO (dl_hwcap) & HWCAP_ARM_VFP) + if (ARM_HAVE_VFP) { unsigned long int temp; diff --git a/ports/sysdeps/arm/fedisblxcpt.c b/ports/sysdeps/arm/fedisblxcpt.c index c9c62a48ef..5b63d9a2e8 100644 --- a/ports/sysdeps/arm/fedisblxcpt.c +++ b/ports/sysdeps/arm/fedisblxcpt.c @@ -1,5 +1,5 @@ /* Disable floating-point exceptions. - Copyright (C) 2001, 2005 Free Software Foundation, Inc. + Copyright (C) 2001-2012 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Philip Blundell <philb@gnu.org>, 2001. @@ -19,16 +19,13 @@ #include <fenv.h> #include <fpu_control.h> +#include <arm-features.h> -#include <unistd.h> -#include <ldsodefs.h> -#include <dl-procinfo.h> -#include <sysdep.h> int fedisableexcept (int excepts) { - if (GLRO (dl_hwcap) & HWCAP_ARM_VFP) + if (ARM_HAVE_VFP) { unsigned long int new_exc, old_exc; diff --git a/ports/sysdeps/arm/feenablxcpt.c b/ports/sysdeps/arm/feenablxcpt.c index 3b2b934f57..c5f0630066 100644 --- a/ports/sysdeps/arm/feenablxcpt.c +++ b/ports/sysdeps/arm/feenablxcpt.c @@ -1,5 +1,5 @@ /* Enable floating-point exceptions. - Copyright (C) 2001, 2005 Free Software Foundation, Inc. + Copyright (C) 2001-2012 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Philip Blundell <philb@gnu.org>, 2001. @@ -19,16 +19,13 @@ #include <fenv.h> #include <fpu_control.h> +#include <arm-features.h> -#include <unistd.h> -#include <ldsodefs.h> -#include <dl-procinfo.h> -#include <sysdep.h> int feenableexcept (int excepts) { - if (GLRO (dl_hwcap) & HWCAP_ARM_VFP) + if (ARM_HAVE_VFP) { unsigned long int new_exc, old_exc; diff --git a/ports/sysdeps/arm/fegetenv.c b/ports/sysdeps/arm/fegetenv.c index c638635df4..1e8063ca82 100644 --- a/ports/sysdeps/arm/fegetenv.c +++ b/ports/sysdeps/arm/fegetenv.c @@ -1,5 +1,5 @@ /* Store current floating-point environment. - Copyright (C) 1997,98,99,2000,01,05,10 Free Software Foundation, Inc. + Copyright (C) 1997-2012 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 @@ -18,16 +18,13 @@ #include <fenv.h> #include <fpu_control.h> +#include <arm-features.h> -#include <unistd.h> -#include <ldsodefs.h> -#include <dl-procinfo.h> -#include <sysdep.h> int __fegetenv (fenv_t *envp) { - if (GLRO (dl_hwcap) & HWCAP_ARM_VFP) + if (ARM_HAVE_VFP) { unsigned long int temp; _FPU_GETCW (temp); diff --git a/ports/sysdeps/arm/fegetexcept.c b/ports/sysdeps/arm/fegetexcept.c index 929d6c5cfa..a71e7dad6c 100644 --- a/ports/sysdeps/arm/fegetexcept.c +++ b/ports/sysdeps/arm/fegetexcept.c @@ -1,5 +1,5 @@ /* Get floating-point exceptions. - Copyright (C) 2001, 2005 Free Software Foundation, Inc. + Copyright (C) 2001-2012 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Philip Blundell <philb@gnu.org>, 2001 @@ -19,16 +19,13 @@ #include <fenv.h> #include <fpu_control.h> +#include <arm-features.h> -#include <unistd.h> -#include <ldsodefs.h> -#include <dl-procinfo.h> -#include <sysdep.h> int fegetexcept (void) { - if (GLRO (dl_hwcap) & HWCAP_ARM_VFP) + if (ARM_HAVE_VFP) { unsigned long temp; diff --git a/ports/sysdeps/arm/fegetround.c b/ports/sysdeps/arm/fegetround.c index df1049706b..0ed3dc996d 100644 --- a/ports/sysdeps/arm/fegetround.c +++ b/ports/sysdeps/arm/fegetround.c @@ -1,5 +1,5 @@ /* Return current rounding direction. - Copyright (C) 2004, 2005 Free Software Foundation, Inc. + Copyright (C) 2004-2012 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 @@ -18,16 +18,13 @@ #include <fenv.h> #include <fpu_control.h> +#include <arm-features.h> -#include <unistd.h> -#include <ldsodefs.h> -#include <dl-procinfo.h> -#include <sysdep.h> int fegetround (void) { - if (GLRO (dl_hwcap) & HWCAP_ARM_VFP) + if (ARM_HAVE_VFP) { unsigned int temp; diff --git a/ports/sysdeps/arm/feholdexcpt.c b/ports/sysdeps/arm/feholdexcpt.c index 4aed48bb39..cfa11d7321 100644 --- a/ports/sysdeps/arm/feholdexcpt.c +++ b/ports/sysdeps/arm/feholdexcpt.c @@ -1,5 +1,5 @@ /* Store current floating-point environment and clear exceptions. - Copyright (C) 1997, 1998, 1999, 2005 Free Software Foundation, Inc. + Copyright (C) 1997-2012 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 @@ -18,16 +18,13 @@ #include <fenv.h> #include <fpu_control.h> +#include <arm-features.h> -#include <unistd.h> -#include <ldsodefs.h> -#include <dl-procinfo.h> -#include <sysdep.h> int feholdexcept (fenv_t *envp) { - if (GLRO (dl_hwcap) & HWCAP_ARM_VFP) + if (ARM_HAVE_VFP) { unsigned long int temp; diff --git a/ports/sysdeps/arm/fesetenv.c b/ports/sysdeps/arm/fesetenv.c index 61370325e2..2fad61da1a 100644 --- a/ports/sysdeps/arm/fesetenv.c +++ b/ports/sysdeps/arm/fesetenv.c @@ -1,5 +1,5 @@ /* Install given floating-point environment. - Copyright (C) 2004, 2005 Free Software Foundation, Inc. + Copyright (C) 2004-2012 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 @@ -18,16 +18,13 @@ #include <fenv.h> #include <fpu_control.h> +#include <arm-features.h> -#include <unistd.h> -#include <ldsodefs.h> -#include <dl-procinfo.h> -#include <sysdep.h> int __fesetenv (const fenv_t *envp) { - if (GLRO (dl_hwcap) & HWCAP_ARM_VFP) + if (ARM_HAVE_VFP) { unsigned int temp; diff --git a/ports/sysdeps/arm/fesetround.c b/ports/sysdeps/arm/fesetround.c index 997bd98f5a..6de1644a7a 100644 --- a/ports/sysdeps/arm/fesetround.c +++ b/ports/sysdeps/arm/fesetround.c @@ -1,5 +1,5 @@ /* Set current rounding direction. - Copyright (C) 2004, 2005 Free Software Foundation, Inc. + Copyright (C) 2004-2012 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 @@ -18,16 +18,13 @@ #include <fenv.h> #include <fpu_control.h> +#include <arm-features.h> -#include <unistd.h> -#include <ldsodefs.h> -#include <dl-procinfo.h> -#include <sysdep.h> int fesetround (int round) { - if (GLRO (dl_hwcap) & HWCAP_ARM_VFP) + if (ARM_HAVE_VFP) { fpu_control_t temp; diff --git a/ports/sysdeps/arm/feupdateenv.c b/ports/sysdeps/arm/feupdateenv.c index 98f265432c..c0ed06e32e 100644 --- a/ports/sysdeps/arm/feupdateenv.c +++ b/ports/sysdeps/arm/feupdateenv.c @@ -1,5 +1,5 @@ /* Install given floating-point environment and raise exceptions. - Copyright (C) 1997, 1999, 2000, 2008, 2010 Free Software Foundation, Inc. + Copyright (C) 1997-2012 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. @@ -19,16 +19,13 @@ #include <fenv.h> #include <fpu_control.h> +#include <arm-features.h> -#include <unistd.h> -#include <ldsodefs.h> -#include <dl-procinfo.h> -#include <sysdep.h> int __feupdateenv (const fenv_t *envp) { - if (GLRO (dl_hwcap) & HWCAP_ARM_VFP) + if (ARM_HAVE_VFP) { unsigned int temp; diff --git a/ports/sysdeps/arm/fgetexcptflg.c b/ports/sysdeps/arm/fgetexcptflg.c index 41661a2e29..7b6d66961a 100644 --- a/ports/sysdeps/arm/fgetexcptflg.c +++ b/ports/sysdeps/arm/fgetexcptflg.c @@ -1,5 +1,5 @@ /* Store current representation for exceptions. - Copyright (C) 1997, 1999, 2000, 2008 Free Software Foundation, Inc. + Copyright (C) 1997-2012 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. @@ -19,16 +19,13 @@ #include <fenv.h> #include <fpu_control.h> +#include <arm-features.h> -#include <unistd.h> -#include <ldsodefs.h> -#include <dl-procinfo.h> -#include <sysdep.h> int __fegetexceptflag (fexcept_t *flagp, int excepts) { - if (GLRO (dl_hwcap) & HWCAP_ARM_VFP) + if (ARM_HAVE_VFP) { unsigned long temp; diff --git a/ports/sysdeps/arm/fraiseexcpt.c b/ports/sysdeps/arm/fraiseexcpt.c index 0a4368839f..cb0f75cf9e 100644 --- a/ports/sysdeps/arm/fraiseexcpt.c +++ b/ports/sysdeps/arm/fraiseexcpt.c @@ -1,5 +1,5 @@ /* Raise given exceptions. - Copyright (C) 2004, 2005, 2011 Free Software Foundation, Inc. + Copyright (C) 2004-2012 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 @@ -19,16 +19,13 @@ #include <fpu_control.h> #include <fenv.h> #include <float.h> +#include <arm-features.h> -#include <unistd.h> -#include <ldsodefs.h> -#include <dl-procinfo.h> -#include <sysdep.h> int feraiseexcept (int excepts) { - if (GLRO (dl_hwcap) & HWCAP_ARM_VFP) + if (ARM_HAVE_VFP) { int fpscr; const float fp_zero = 0.0, fp_one = 1.0, fp_max = FLT_MAX, diff --git a/ports/sysdeps/arm/fsetexcptflg.c b/ports/sysdeps/arm/fsetexcptflg.c index bee51a96a2..f26268da6d 100644 --- a/ports/sysdeps/arm/fsetexcptflg.c +++ b/ports/sysdeps/arm/fsetexcptflg.c @@ -1,5 +1,5 @@ /* Set floating-point environment exception handling. - Copyright (C) 1997,98,99,2000,01,05,08,11 Free Software Foundation, Inc. + Copyright (C) 1997-2012 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 @@ -19,16 +19,13 @@ #include <fenv.h> #include <math.h> #include <fpu_control.h> +#include <arm-features.h> -#include <unistd.h> -#include <ldsodefs.h> -#include <dl-procinfo.h> -#include <sysdep.h> int __fesetexceptflag (const fexcept_t *flagp, int excepts) { - if (GLRO (dl_hwcap) & HWCAP_ARM_VFP) + if (ARM_HAVE_VFP) { fexcept_t temp; diff --git a/ports/sysdeps/arm/ftestexcept.c b/ports/sysdeps/arm/ftestexcept.c index 06817d2fe0..8e37db10b7 100644 --- a/ports/sysdeps/arm/ftestexcept.c +++ b/ports/sysdeps/arm/ftestexcept.c @@ -1,5 +1,5 @@ /* Test exception in current environment. - Copyright (C) 1997, 1998, 2005, 2010 Free Software Foundation, Inc. + Copyright (C) 1997-2012 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 @@ -18,16 +18,13 @@ #include <fenv.h> #include <fpu_control.h> +#include <arm-features.h> -#include <unistd.h> -#include <ldsodefs.h> -#include <dl-procinfo.h> -#include <sysdep.h> int fetestexcept (int excepts) { - if (GLRO (dl_hwcap) & HWCAP_ARM_VFP) + if (ARM_HAVE_VFP) { fexcept_t temp; diff --git a/ports/sysdeps/arm/setfpucw.c b/ports/sysdeps/arm/setfpucw.c index d0cea32b9d..0947e273d0 100644 --- a/ports/sysdeps/arm/setfpucw.c +++ b/ports/sysdeps/arm/setfpucw.c @@ -1,5 +1,5 @@ /* Set the FPU control word. - Copyright (C) 1996, 1997, 1999, 2005 Free Software Foundation, Inc. + Copyright (C) 1996-2012 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 @@ -18,16 +18,13 @@ #include <math.h> #include <fpu_control.h> +#include <arm-features.h> -#include <unistd.h> -#include <ldsodefs.h> -#include <dl-procinfo.h> -#include <sysdep.h> void __setfpucw (fpu_control_t set) { - if (GLRO (dl_hwcap) & HWCAP_ARM_VFP) + if (ARM_HAVE_VFP) { fpu_control_t cw; diff --git a/ports/sysdeps/unix/sysv/linux/arm/arm-features.h b/ports/sysdeps/unix/sysv/linux/arm/arm-features.h new file mode 100644 index 0000000000..f20a705564 --- /dev/null +++ b/ports/sysdeps/unix/sysv/linux/arm/arm-features.h @@ -0,0 +1,30 @@ +/* Macros to test for CPU features on ARM. Linux version. + Copyright (C) 2012 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 Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + <http://www.gnu.org/licenses/>. */ + +#ifndef _LINUX_ARM_FEATURES_H +#define _LINUX_ARM_FEATURES_H 1 + +#ifndef __ASSEMBLER__ +# include <ldsodefs.h> + +# define ARM_HAVE_VFP (GLRO (dl_hwcap) & HWCAP_ARM_VFP) +#endif + +#include_next <arm-features.h> + +#endif /* arm-features.h */ |