diff options
Diffstat (limited to 'sysdeps')
29 files changed, 116 insertions, 0 deletions
diff --git a/sysdeps/i386/fpu/fesetexcept.c b/sysdeps/i386/fpu/fesetexcept.c new file mode 100644 index 0000000000..eeb0c7f90b --- /dev/null +++ b/sysdeps/i386/fpu/fesetexcept.c @@ -0,0 +1,31 @@ +/* Set given exception flags. i386 version. + Copyright (C) 2016 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/>. */ + +#include <fenv.h> + +int +fesetexcept (int excepts) +{ + fenv_t temp; + + __asm__ ("fnstenv %0" : "=m" (*&temp)); + temp.__status_word |= excepts & FE_ALL_EXCEPT; + __asm__ ("fldenv %0" : : "m" (*&temp)); + + return 0; +} diff --git a/sysdeps/nacl/libm.abilist b/sysdeps/nacl/libm.abilist index 838fedeacf..b50f029843 100644 --- a/sysdeps/nacl/libm.abilist +++ b/sysdeps/nacl/libm.abilist @@ -379,3 +379,5 @@ GLIBC_2.24 nextdownl F GLIBC_2.24 nextup F GLIBC_2.24 nextupf F GLIBC_2.24 nextupl F +GLIBC_2.25 GLIBC_2.25 A +GLIBC_2.25 fesetexcept F diff --git a/sysdeps/unix/sysv/linux/aarch64/libm.abilist b/sysdeps/unix/sysv/linux/aarch64/libm.abilist index 781d2d3571..01b01b72b3 100644 --- a/sysdeps/unix/sysv/linux/aarch64/libm.abilist +++ b/sysdeps/unix/sysv/linux/aarch64/libm.abilist @@ -410,3 +410,5 @@ GLIBC_2.24 nextdownl F GLIBC_2.24 nextup F GLIBC_2.24 nextupf F GLIBC_2.24 nextupl F +GLIBC_2.25 GLIBC_2.25 A +GLIBC_2.25 fesetexcept F diff --git a/sysdeps/unix/sysv/linux/alpha/libm.abilist b/sysdeps/unix/sysv/linux/alpha/libm.abilist index f342c6b1da..9ba817d5ee 100644 --- a/sysdeps/unix/sysv/linux/alpha/libm.abilist +++ b/sysdeps/unix/sysv/linux/alpha/libm.abilist @@ -420,6 +420,8 @@ GLIBC_2.24 nextdownl F GLIBC_2.24 nextup F GLIBC_2.24 nextupf F GLIBC_2.24 nextupl F +GLIBC_2.25 GLIBC_2.25 A +GLIBC_2.25 fesetexcept F GLIBC_2.3.4 GLIBC_2.3.4 A GLIBC_2.3.4 __c1_cabsf F GLIBC_2.3.4 __c1_cacosf F diff --git a/sysdeps/unix/sysv/linux/arm/libm.abilist b/sysdeps/unix/sysv/linux/arm/libm.abilist index 7a02fb1726..d9a6f6f9aa 100644 --- a/sysdeps/unix/sysv/linux/arm/libm.abilist +++ b/sysdeps/unix/sysv/linux/arm/libm.abilist @@ -68,6 +68,8 @@ GLIBC_2.24 nextdownl F GLIBC_2.24 nextup F GLIBC_2.24 nextupf F GLIBC_2.24 nextupl F +GLIBC_2.25 GLIBC_2.25 A +GLIBC_2.25 fesetexcept F GLIBC_2.4 GLIBC_2.4 A GLIBC_2.4 _LIB_VERSION D 0x4 GLIBC_2.4 __clog10 F diff --git a/sysdeps/unix/sysv/linux/hppa/libm.abilist b/sysdeps/unix/sysv/linux/hppa/libm.abilist index bf40ddf929..75d4797084 100644 --- a/sysdeps/unix/sysv/linux/hppa/libm.abilist +++ b/sysdeps/unix/sysv/linux/hppa/libm.abilist @@ -380,5 +380,7 @@ GLIBC_2.24 nextdownl F GLIBC_2.24 nextup F GLIBC_2.24 nextupf F GLIBC_2.24 nextupl F +GLIBC_2.25 GLIBC_2.25 A +GLIBC_2.25 fesetexcept F GLIBC_2.4 GLIBC_2.4 A GLIBC_2.4 exp2l F diff --git a/sysdeps/unix/sysv/linux/i386/libm.abilist b/sysdeps/unix/sysv/linux/i386/libm.abilist index 92e94022c7..17b6d6d1ee 100644 --- a/sysdeps/unix/sysv/linux/i386/libm.abilist +++ b/sysdeps/unix/sysv/linux/i386/libm.abilist @@ -422,4 +422,6 @@ GLIBC_2.24 nextdownl F GLIBC_2.24 nextup F GLIBC_2.24 nextupf F GLIBC_2.24 nextupl F +GLIBC_2.25 GLIBC_2.25 A +GLIBC_2.25 fesetexcept F GLIBC_2.4 GLIBC_2.4 A diff --git a/sysdeps/unix/sysv/linux/ia64/libm.abilist b/sysdeps/unix/sysv/linux/ia64/libm.abilist index e2737a2ba9..d2d89785fe 100644 --- a/sysdeps/unix/sysv/linux/ia64/libm.abilist +++ b/sysdeps/unix/sysv/linux/ia64/libm.abilist @@ -351,4 +351,6 @@ GLIBC_2.24 nextdownl F GLIBC_2.24 nextup F GLIBC_2.24 nextupf F GLIBC_2.24 nextupl F +GLIBC_2.25 GLIBC_2.25 A +GLIBC_2.25 fesetexcept F GLIBC_2.4 GLIBC_2.4 A diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist index 7a02fb1726..d9a6f6f9aa 100644 --- a/sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist @@ -68,6 +68,8 @@ GLIBC_2.24 nextdownl F GLIBC_2.24 nextup F GLIBC_2.24 nextupf F GLIBC_2.24 nextupl F +GLIBC_2.25 GLIBC_2.25 A +GLIBC_2.25 fesetexcept F GLIBC_2.4 GLIBC_2.4 A GLIBC_2.4 _LIB_VERSION D 0x4 GLIBC_2.4 __clog10 F diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist index 9af59d7d90..3edf8ae305 100644 --- a/sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist @@ -420,4 +420,6 @@ GLIBC_2.24 nextdownl F GLIBC_2.24 nextup F GLIBC_2.24 nextupf F GLIBC_2.24 nextupl F +GLIBC_2.25 GLIBC_2.25 A +GLIBC_2.25 fesetexcept F GLIBC_2.4 GLIBC_2.4 A diff --git a/sysdeps/unix/sysv/linux/microblaze/libm.abilist b/sysdeps/unix/sysv/linux/microblaze/libm.abilist index 0b1f1360e0..e93410186d 100644 --- a/sysdeps/unix/sysv/linux/microblaze/libm.abilist +++ b/sysdeps/unix/sysv/linux/microblaze/libm.abilist @@ -379,3 +379,5 @@ GLIBC_2.24 nextdownl F GLIBC_2.24 nextup F GLIBC_2.24 nextupf F GLIBC_2.24 nextupl F +GLIBC_2.25 GLIBC_2.25 A +GLIBC_2.25 fesetexcept F diff --git a/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist b/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist index 2e2bb00738..88cd724c67 100644 --- a/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist +++ b/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist @@ -381,6 +381,8 @@ GLIBC_2.24 nextdownl F GLIBC_2.24 nextup F GLIBC_2.24 nextupf F GLIBC_2.24 nextupl F +GLIBC_2.25 GLIBC_2.25 A +GLIBC_2.25 fesetexcept F GLIBC_2.4 GLIBC_2.4 A GLIBC_2.4 exp2l F _gp_disp _gp_disp A diff --git a/sysdeps/unix/sysv/linux/mips/mips64/libm.abilist b/sysdeps/unix/sysv/linux/mips/mips64/libm.abilist index 7daa595282..52d5cb306d 100644 --- a/sysdeps/unix/sysv/linux/mips/mips64/libm.abilist +++ b/sysdeps/unix/sysv/linux/mips/mips64/libm.abilist @@ -412,4 +412,6 @@ GLIBC_2.24 nextdownl F GLIBC_2.24 nextup F GLIBC_2.24 nextupf F GLIBC_2.24 nextupl F +GLIBC_2.25 GLIBC_2.25 A +GLIBC_2.25 fesetexcept F GLIBC_2.4 GLIBC_2.4 A diff --git a/sysdeps/unix/sysv/linux/nios2/libm.abilist b/sysdeps/unix/sysv/linux/nios2/libm.abilist index a36e2f32fc..37f7a88210 100644 --- a/sysdeps/unix/sysv/linux/nios2/libm.abilist +++ b/sysdeps/unix/sysv/linux/nios2/libm.abilist @@ -379,3 +379,5 @@ GLIBC_2.24 nextdownl F GLIBC_2.24 nextup F GLIBC_2.24 nextupf F GLIBC_2.24 nextupl F +GLIBC_2.25 GLIBC_2.25 A +GLIBC_2.25 fesetexcept F diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist index abe8c5d8a8..ad61a97f93 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist @@ -421,6 +421,8 @@ GLIBC_2.24 nextdownl F GLIBC_2.24 nextup F GLIBC_2.24 nextupf F GLIBC_2.24 nextupl F +GLIBC_2.25 GLIBC_2.25 A +GLIBC_2.25 fesetexcept F GLIBC_2.4 GLIBC_2.4 A GLIBC_2.4 __clog10l F GLIBC_2.4 __finitel F diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist index 1c25f56c4c..85422382f6 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist @@ -420,6 +420,8 @@ GLIBC_2.24 nextdownl F GLIBC_2.24 nextup F GLIBC_2.24 nextupf F GLIBC_2.24 nextupl F +GLIBC_2.25 GLIBC_2.25 A +GLIBC_2.25 fesetexcept F GLIBC_2.4 GLIBC_2.4 A GLIBC_2.4 __clog10l F GLIBC_2.4 __finitel F diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/libm-le.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/libm-le.abilist index 9d19474c34..b2f06083db 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/libm-le.abilist +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/libm-le.abilist @@ -415,3 +415,5 @@ GLIBC_2.24 nextdownl F GLIBC_2.24 nextup F GLIBC_2.24 nextupf F GLIBC_2.24 nextupl F +GLIBC_2.25 GLIBC_2.25 A +GLIBC_2.25 fesetexcept F diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/libm.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/libm.abilist index cedb18945c..e5d36a1707 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/libm.abilist +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/libm.abilist @@ -96,6 +96,8 @@ GLIBC_2.24 nextdownl F GLIBC_2.24 nextup F GLIBC_2.24 nextupf F GLIBC_2.24 nextupl F +GLIBC_2.25 GLIBC_2.25 A +GLIBC_2.25 fesetexcept F GLIBC_2.3 GLIBC_2.3 A GLIBC_2.3 _LIB_VERSION D 0x4 GLIBC_2.3 __clog10 F diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist index 9b567c6356..457aa719c3 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist +++ b/sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist @@ -410,6 +410,8 @@ GLIBC_2.24 nextdownl F GLIBC_2.24 nextup F GLIBC_2.24 nextupf F GLIBC_2.24 nextupl F +GLIBC_2.25 GLIBC_2.25 A +GLIBC_2.25 fesetexcept F GLIBC_2.4 GLIBC_2.4 A GLIBC_2.4 __clog10l F GLIBC_2.4 __finitel F diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist index 78a82fbd71..217d76b2b5 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist +++ b/sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist @@ -408,6 +408,8 @@ GLIBC_2.24 nextdownl F GLIBC_2.24 nextup F GLIBC_2.24 nextupf F GLIBC_2.24 nextupl F +GLIBC_2.25 GLIBC_2.25 A +GLIBC_2.25 fesetexcept F GLIBC_2.4 GLIBC_2.4 A GLIBC_2.4 __clog10l F GLIBC_2.4 __finitel F diff --git a/sysdeps/unix/sysv/linux/sh/libm.abilist b/sysdeps/unix/sysv/linux/sh/libm.abilist index f98ade7642..d1da0df347 100644 --- a/sysdeps/unix/sysv/linux/sh/libm.abilist +++ b/sysdeps/unix/sysv/linux/sh/libm.abilist @@ -380,5 +380,7 @@ GLIBC_2.24 nextdownl F GLIBC_2.24 nextup F GLIBC_2.24 nextupf F GLIBC_2.24 nextupl F +GLIBC_2.25 GLIBC_2.25 A +GLIBC_2.25 fesetexcept F GLIBC_2.4 GLIBC_2.4 A GLIBC_2.4 exp2l F diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist index d2e8421967..1c582558b8 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist @@ -413,6 +413,8 @@ GLIBC_2.24 nextdownl F GLIBC_2.24 nextup F GLIBC_2.24 nextupf F GLIBC_2.24 nextupl F +GLIBC_2.25 GLIBC_2.25 A +GLIBC_2.25 fesetexcept F GLIBC_2.4 GLIBC_2.4 A GLIBC_2.4 __clog10l F GLIBC_2.4 __finitel F diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist index e000221432..6915c872d0 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist @@ -411,4 +411,6 @@ GLIBC_2.24 nextdownl F GLIBC_2.24 nextup F GLIBC_2.24 nextupf F GLIBC_2.24 nextupl F +GLIBC_2.25 GLIBC_2.25 A +GLIBC_2.25 fesetexcept F GLIBC_2.4 GLIBC_2.4 A diff --git a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/libm.abilist b/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/libm.abilist index 00e82c1425..6ebaa0f163 100644 --- a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/libm.abilist +++ b/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/libm.abilist @@ -380,3 +380,5 @@ GLIBC_2.24 nextdownl F GLIBC_2.24 nextup F GLIBC_2.24 nextupf F GLIBC_2.24 nextupl F +GLIBC_2.25 GLIBC_2.25 A +GLIBC_2.25 fesetexcept F diff --git a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libm.abilist b/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libm.abilist index 00e82c1425..6ebaa0f163 100644 --- a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libm.abilist +++ b/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libm.abilist @@ -380,3 +380,5 @@ GLIBC_2.24 nextdownl F GLIBC_2.24 nextup F GLIBC_2.24 nextupf F GLIBC_2.24 nextupl F +GLIBC_2.25 GLIBC_2.25 A +GLIBC_2.25 fesetexcept F diff --git a/sysdeps/unix/sysv/linux/tile/tilepro/libm.abilist b/sysdeps/unix/sysv/linux/tile/tilepro/libm.abilist index 00e82c1425..6ebaa0f163 100644 --- a/sysdeps/unix/sysv/linux/tile/tilepro/libm.abilist +++ b/sysdeps/unix/sysv/linux/tile/tilepro/libm.abilist @@ -380,3 +380,5 @@ GLIBC_2.24 nextdownl F GLIBC_2.24 nextup F GLIBC_2.24 nextupf F GLIBC_2.24 nextupl F +GLIBC_2.25 GLIBC_2.25 A +GLIBC_2.25 fesetexcept F diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist index 65b470817c..2e77c3db96 100644 --- a/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist +++ b/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist @@ -411,4 +411,6 @@ GLIBC_2.24 nextdownl F GLIBC_2.24 nextup F GLIBC_2.24 nextupf F GLIBC_2.24 nextupl F +GLIBC_2.25 GLIBC_2.25 A +GLIBC_2.25 fesetexcept F GLIBC_2.4 GLIBC_2.4 A diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist index d35e9f0207..b9ccb1af65 100644 --- a/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist +++ b/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist @@ -410,3 +410,5 @@ GLIBC_2.24 nextdownl F GLIBC_2.24 nextup F GLIBC_2.24 nextupf F GLIBC_2.24 nextupl F +GLIBC_2.25 GLIBC_2.25 A +GLIBC_2.25 fesetexcept F diff --git a/sysdeps/x86_64/fpu/fesetexcept.c b/sysdeps/x86_64/fpu/fesetexcept.c new file mode 100644 index 0000000000..805f769f13 --- /dev/null +++ b/sysdeps/x86_64/fpu/fesetexcept.c @@ -0,0 +1,31 @@ +/* Set given exception flags. x86_64 version. + Copyright (C) 2016 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/>. */ + +#include <fenv.h> + +int +fesetexcept (int excepts) +{ + unsigned int mxcsr; + + __asm__ ("stmxcsr %0" : "=m" (*&mxcsr)); + mxcsr |= excepts & FE_ALL_EXCEPT; + __asm__ ("ldmxcsr %0" : : "m" (*&mxcsr)); + + return 0; +} |