aboutsummaryrefslogtreecommitdiffstats
path: root/main/libc0.9.32/0004-libm-x86_64-implement-some-fenv-functions.patch
diff options
context:
space:
mode:
Diffstat (limited to 'main/libc0.9.32/0004-libm-x86_64-implement-some-fenv-functions.patch')
-rw-r--r--main/libc0.9.32/0004-libm-x86_64-implement-some-fenv-functions.patch288
1 files changed, 0 insertions, 288 deletions
diff --git a/main/libc0.9.32/0004-libm-x86_64-implement-some-fenv-functions.patch b/main/libc0.9.32/0004-libm-x86_64-implement-some-fenv-functions.patch
deleted file mode 100644
index bcdbe2940c..0000000000
--- a/main/libc0.9.32/0004-libm-x86_64-implement-some-fenv-functions.patch
+++ /dev/null
@@ -1,288 +0,0 @@
-From fce995147f17b47ade2bebbf8d49553132a29227 Mon Sep 17 00:00:00 2001
-From: Natanael Copa <natanael.copa@gmail.com>
-Date: Sun, 28 Nov 2010 12:43:33 +0000
-Subject: [PATCH 4/8] libm/x86_64: implement some fenv functions
-
-from glibc
-
-Posted to uclibc:
-http://lists.busybox.net/pipermail/uclibc/2010-December/044523.html
-
-Signed-off-by: Natanael Copa <ncopa@alpinelinux.org>
----
- libm/x86_64/Makefile.arch | 24 ++++++++++++++++++++
- libm/x86_64/fclrexcpt.c | 52 ++++++++++++++++++++++++++++++++++++++++++++
- libm/x86_64/fegetexcept.c | 32 +++++++++++++++++++++++++++
- libm/x86_64/fesetround.c | 46 ++++++++++++++++++++++++++++++++++++++
- libm/x86_64/fgetexcptflg.c | 36 ++++++++++++++++++++++++++++++
- libm/x86_64/ftestexcept.c | 33 +++++++++++++++++++++++++++
- 6 files changed, 223 insertions(+), 0 deletions(-)
- create mode 100644 libm/x86_64/Makefile.arch
- create mode 100644 libm/x86_64/fclrexcpt.c
- create mode 100644 libm/x86_64/fegetexcept.c
- create mode 100644 libm/x86_64/fesetround.c
- create mode 100644 libm/x86_64/fgetexcptflg.c
- create mode 100644 libm/x86_64/ftestexcept.c
-
-diff --git a/libm/x86_64/Makefile.arch b/libm/x86_64/Makefile.arch
-new file mode 100644
-index 0000000..e1be961
---- /dev/null
-+++ b/libm/x86_64/Makefile.arch
-@@ -0,0 +1,24 @@
-+# Makefile for uClibc
-+#
-+# Copyright (C) 2000-2008 Erik Andersen <andersen@uclibc.org>
-+#
-+# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
-+#
-+# The routines included in this math library are derived from
-+# glibc's libm.
-+#
-+
-+ifeq ($(UCLIBC_HAS_FENV),y)
-+libm_ARCH_SRC:=$(wildcard $(libm_ARCH_DIR)/*.c)
-+libm_ARCH_OBJ:=$(patsubst $(libm_ARCH_DIR)/%.c,$(libm_ARCH_OUT)/%.o,$(libm_ARCH_SRC))
-+endif
-+
-+libm_ARCH_OBJS:=$(libm_ARCH_OBJ)
-+
-+ifeq ($(DOPIC),y)
-+libm-a-y+=$(libm_ARCH_OBJS:.o=.os)
-+else
-+libm-a-y+=$(libm_ARCH_OBJS)
-+endif
-+libm-so-y+=$(libm_ARCH_OBJS:.o=.os)
-+
-diff --git a/libm/x86_64/fclrexcpt.c b/libm/x86_64/fclrexcpt.c
-new file mode 100644
-index 0000000..4fc3bfb
---- /dev/null
-+++ b/libm/x86_64/fclrexcpt.c
-@@ -0,0 +1,52 @@
-+/* Clear given exceptions in current floating-point environment.
-+ Copyright (C) 2001 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, write to the Free
-+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-+ 02111-1307 USA. */
-+
-+#include <fenv.h>
-+
-+int
-+feclearexcept (int excepts)
-+{
-+ fenv_t temp;
-+ unsigned int mxcsr;
-+
-+ /* Mask out unsupported bits/exceptions. */
-+ excepts &= FE_ALL_EXCEPT;
-+
-+ /* Bah, we have to clear selected exceptions. Since there is no
-+ `fldsw' instruction we have to do it the hard way. */
-+ __asm__ ("fnstenv %0" : "=m" (*&temp));
-+
-+ /* Clear the relevant bits. */
-+ temp.__status_word &= excepts ^ FE_ALL_EXCEPT;
-+
-+ /* Put the new data in effect. */
-+ __asm__ ("fldenv %0" : : "m" (*&temp));
-+
-+ /* And the same procedure for SSE. */
-+ __asm__ ("stmxcsr %0" : "=m" (*&mxcsr));
-+
-+ /* Clear the relevant bits. */
-+ mxcsr &= ~excepts;
-+
-+ /* And put them into effect. */
-+ __asm__ ("ldmxcsr %0" : : "m" (*&mxcsr));
-+
-+ /* Success. */
-+ return 0;
-+}
-diff --git a/libm/x86_64/fegetexcept.c b/libm/x86_64/fegetexcept.c
-new file mode 100644
-index 0000000..04df4b6
---- /dev/null
-+++ b/libm/x86_64/fegetexcept.c
-@@ -0,0 +1,32 @@
-+/* Get enabled floating-point exceptions.
-+ Copyright (C) 2001 Free Software Foundation, Inc.
-+ This file is part of the GNU C Library.
-+ Contributed by Andreas Jaeger <aj@suse.de>, 2001.
-+
-+ 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, write to the Free
-+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-+ 02111-1307 USA. */
-+
-+#include <fenv.h>
-+
-+int
-+fegetexcept (void)
-+{
-+ unsigned short int exc;
-+
-+ /* Get the current control word. */
-+ __asm__ ("fstcw %0" : "=m" (*&exc));
-+
-+ return (~exc) & FE_ALL_EXCEPT;
-+}
-diff --git a/libm/x86_64/fesetround.c b/libm/x86_64/fesetround.c
-new file mode 100644
-index 0000000..3d2ef4c
---- /dev/null
-+++ b/libm/x86_64/fesetround.c
-@@ -0,0 +1,46 @@
-+/* Set current rounding direction.
-+ Copyright (C) 2001, 2005 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, write to the Free
-+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-+ 02111-1307 USA. */
-+
-+#include <fenv.h>
-+
-+int
-+fesetround (int round)
-+{
-+ unsigned short int cw;
-+ int mxcsr;
-+
-+ if ((round & ~0xc00) != 0)
-+ /* ROUND is no valid rounding mode. */
-+ return 1;
-+
-+ /* First set the x87 FPU. */
-+ __asm__ ("fnstcw %0" : "=m" (*&cw));
-+ cw &= ~0xc00;
-+ cw |= round;
-+ __asm__ ("fldcw %0" : : "m" (*&cw));
-+
-+ /* And now the MSCSR register for SSE, the precision is at different bit
-+ positions in the different units, we need to shift it 3 bits. */
-+ __asm__ ("stmxcsr %0" : "=m" (*&mxcsr));
-+ mxcsr &= ~ 0x6000;
-+ mxcsr |= round << 3;
-+ __asm__ ("ldmxcsr %0" : : "m" (*&mxcsr));
-+
-+ return 0;
-+}
-diff --git a/libm/x86_64/fgetexcptflg.c b/libm/x86_64/fgetexcptflg.c
-new file mode 100644
-index 0000000..f0681dc
---- /dev/null
-+++ b/libm/x86_64/fgetexcptflg.c
-@@ -0,0 +1,36 @@
-+/* Store current representation for exceptions.
-+ Copyright (C) 2001 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, write to the Free
-+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-+ 02111-1307 USA. */
-+
-+#include <fenv.h>
-+
-+int
-+fegetexceptflag (fexcept_t *flagp, int excepts)
-+{
-+ fexcept_t temp;
-+ unsigned int mxscr;
-+
-+ /* Get the current exceptions for the x87 FPU and SSE unit. */
-+ __asm__ ("fnstsw %0\n"
-+ "stmxcsr %1" : "=m" (*&temp), "=m" (*&mxscr));
-+
-+ *flagp = (temp | mxscr) & FE_ALL_EXCEPT & excepts;
-+
-+ /* Success. */
-+ return 0;
-+}
-diff --git a/libm/x86_64/ftestexcept.c b/libm/x86_64/ftestexcept.c
-new file mode 100644
-index 0000000..091c251
---- /dev/null
-+++ b/libm/x86_64/ftestexcept.c
-@@ -0,0 +1,33 @@
-+/* Test exception in current environment.
-+ Copyright (C) 2001 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, write to the Free
-+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-+ 02111-1307 USA. */
-+
-+#include <fenv.h>
-+
-+int
-+fetestexcept (int excepts)
-+{
-+ int temp;
-+ unsigned int mxscr;
-+
-+ /* Get current exceptions. */
-+ __asm__ ("fnstsw %0\n"
-+ "stmxcsr %1" : "=m" (*&temp), "=m" (*&mxscr));
-+
-+ return (temp | mxscr) & excepts & FE_ALL_EXCEPT;
-+}
---
-1.7.8.4
-