hrev53730 adds 1 changeset to branch 'master'
old head: bef15852170481c535a85443c64129e4b6a32af6
new head: f19586ee86fa01c76044879ac905c196c63444e4
overview:
https://git.haiku-os.org/haiku/log/?qt=range&q=f19586ee86fa+%5Ebef158521704
----------------------------------------------------------------------------
f19586ee86fa: libroot: Drop a lot of glibc-internal headers that are not needed.
No functional change intended.
[ Augustin Cavalier <waddlesplash@xxxxxxxxx> ]
----------------------------------------------------------------------------
Revision: hrev53730
Commit: f19586ee86fa01c76044879ac905c196c63444e4
URL: https://git.haiku-os.org/haiku/commit/?id=f19586ee86fa
Author: Augustin Cavalier <waddlesplash@xxxxxxxxx>
Date: Sun Jan 19 00:17:43 2020 UTC
----------------------------------------------------------------------------
27 files changed, 6454 deletions(-)
.../libroot/posix/glibc/arch/generic/dla.h | 174 ---
.../glibc/include/arch/arm/bits/fenvinline.h | 0
.../glibc/include/arch/arm/bits/mathinline.h | 1 -
.../posix/glibc/include/arch/arm/fenv_private.h | 251 ----
.../posix/glibc/include/arch/arm/fpu_control.h | 75 --
.../glibc/include/arch/arm64/bits/mathinline.h | 1 -
.../include/arch/generic/bits/floatn-common.h | 329 -----
.../posix/glibc/include/arch/generic/dla.h | 183 ---
.../include/arch/generic/libm-alias-ldouble.h | 65 -
.../glibc/include/arch/generic/math-underflow.h | 79 --
.../posix/glibc/include/arch/generic/memcopy.h | 150 ---
.../include/arch/generic/nan-high-order-bit.h | 27 -
.../glibc/include/arch/m68k/bits/mathinline.h | 463 -------
.../glibc/include/arch/ppc/bits/mathinline.h | 101 --
.../posix/glibc/include/arch/ppc/fenv_libc.h | 106 --
.../glibc/include/arch/riscv64/bits/floatn.h | 97 --
.../glibc/include/arch/riscv64/bits/mathinline.h | 22 -
.../posix/glibc/include/arch/sparc/bits/floatn.h | 97 --
.../glibc/include/arch/sparc/bits/mathinline.h | 22 -
.../glibc/include/arch/sparc/fenv_private.h | 172 ---
.../posix/glibc/include/arch/x86/bits/floatn.h | 121 --
.../glibc/include/arch/x86/bits/mathinline.h | 714 ----------
.../posix/glibc/include/arch/x86/bits/string.h | 922 -------------
.../glibc/include/arch/x86_64/bits/mathinline.h | 970 --------------
.../posix/glibc/include/bits/long-double.h | 39 -
src/system/libroot/posix/glibc/math/math.h | 6 -
.../libroot/posix/glibc/string/bits/string2.h | 1267 ------------------
----------------------------------------------------------------------------
diff --git a/src/system/libroot/posix/glibc/arch/generic/dla.h
b/src/system/libroot/posix/glibc/arch/generic/dla.h
deleted file mode 100644
index bf73fa902e..0000000000
--- a/src/system/libroot/posix/glibc/arch/generic/dla.h
+++ /dev/null
@@ -1,174 +0,0 @@
-/*
- * IBM Accurate Mathematical Library
- * Written by International Business Machines Corp.
- * Copyright (C) 2001 Free Software Foundation, Inc.
- *
- * This program 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.
- *
- * This program 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 this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- */
-
-/***********************************************************************/
-/*MODULE_NAME: dla.h */
-/* */
-/* This file holds C language macros for 'Double Length Floating Point */
-/* Arithmetic'. The macros are based on the paper: */
-/* T.J.Dekker, "A floating-point Technique for extending the */
-/* Available Precision", Number. Math. 18, 224-242 (1971). */
-/* A Double-Length number is defined by a pair (r,s), of IEEE double */
-/* precision floating point numbers that satisfy, */
-/* */
-/* abs(s) <= abs(r+s)*2**(-53)/(1+2**(-53)). */
-/* */
-/* The computer arithmetic assumed is IEEE double precision in */
-/* round to nearest mode. All variables in the macros must be of type */
-/* IEEE double. */
-/***********************************************************************/
-
-/* CN = 1+2**27 = '41a0000002000000' IEEE double format */
-#define CN 134217729.0
-
-
-/* Exact addition of two single-length floating point numbers, Dekker. */
-/* The macro produces a double-length number (z,zz) that satisfies */
-/* z+zz = x+y exactly. */
-
-#define EADD(x,y,z,zz) \
- z=(x)+(y); zz=(ABS(x)>ABS(y)) ? (((x)-(z))+(y)) : (((y)-(z))+(x));
-
-
-/* Exact subtraction of two single-length floating point numbers, Dekker. */
-/* The macro produces a double-length number (z,zz) that satisfies */
-/* z+zz = x-y exactly. */
-
-#define ESUB(x,y,z,zz) \
- z=(x)-(y); zz=(ABS(x)>ABS(y)) ? (((x)-(z))-(y)) : ((x)-((y)+(z)));
-
-
-/* Exact multiplication of two single-length floating point numbers, */
-/* Veltkamp. The macro produces a double-length number (z,zz) that */
-/* satisfies z+zz = x*y exactly. p,hx,tx,hy,ty are temporary */
-/* storage variables of type double. */
-
-#define EMULV(x,y,z,zz,p,hx,tx,hy,ty) \
- p=CN*(x); hx=((x)-p)+p; tx=(x)-hx; \
- p=CN*(y); hy=((y)-p)+p; ty=(y)-hy; \
- z=(x)*(y); zz=(((hx*hy-z)+hx*ty)+tx*hy)+tx*ty;
-
-
-/* Exact multiplication of two single-length floating point numbers, Dekker. */
-/* The macro produces a nearly double-length number (z,zz) (see Dekker) */
-/* that satisfies z+zz = x*y exactly. p,hx,tx,hy,ty,q are temporary */
-/* storage variables of type double. */
-
-#define MUL12(x,y,z,zz,p,hx,tx,hy,ty,q) \
- p=CN*(x); hx=((x)-p)+p; tx=(x)-hx; \
- p=CN*(y); hy=((y)-p)+p; ty=(y)-hy; \
- p=hx*hy; q=hx*ty+tx*hy; z=p+q; zz=((p-z)+q)+tx*ty;
-
-
-/* Double-length addition, Dekker. The macro produces a double-length */
-/* number (z,zz) which satisfies approximately z+zz = x+xx + y+yy. */
-/* An error bound: (abs(x+xx)+abs(y+yy))*4.94e-32. (x,xx), (y,yy) */
-/* are assumed to be double-length numbers. r,s are temporary */
-/* storage variables of type double. */
-
-#define ADD2(x,xx,y,yy,z,zz,r,s) \
- r=(x)+(y); s=(ABS(x)>ABS(y)) ? \
- (((((x)-r)+(y))+(yy))+(xx)) : \
- (((((y)-r)+(x))+(xx))+(yy)); \
- z=r+s; zz=(r-z)+s;
-
-
-/* Double-length subtraction, Dekker. The macro produces a double-length */
-/* number (z,zz) which satisfies approximately z+zz = x+xx - (y+yy). */
-/* An error bound: (abs(x+xx)+abs(y+yy))*4.94e-32. (x,xx), (y,yy) */
-/* are assumed to be double-length numbers. r,s are temporary */
-/* storage variables of type double. */
-
-#define SUB2(x,xx,y,yy,z,zz,r,s) \
- r=(x)-(y); s=(ABS(x)>ABS(y)) ? \
- (((((x)-r)-(y))-(yy))+(xx)) : \
- ((((x)-((y)+r))+(xx))-(yy)); \
- z=r+s; zz=(r-z)+s;
-
-
-/* Double-length multiplication, Dekker. The macro produces a double-length */
-/* number (z,zz) which satisfies approximately z+zz = (x+xx)*(y+yy). */
-/* An error bound: abs((x+xx)*(y+yy))*1.24e-31. (x,xx), (y,yy) */
-/* are assumed to be double-length numbers. p,hx,tx,hy,ty,q,c,cc are */
-/* temporary storage variables of type double. */
-
-#define MUL2(x,xx,y,yy,z,zz,p,hx,tx,hy,ty,q,c,cc) \
- MUL12(x,y,c,cc,p,hx,tx,hy,ty,q) \
- cc=((x)*(yy)+(xx)*(y))+cc; z=c+cc; zz=(c-z)+cc;
-
-
-/* Double-length division, Dekker. The macro produces a double-length */
-/* number (z,zz) which satisfies approximately z+zz = (x+xx)/(y+yy). */
-/* An error bound: abs((x+xx)/(y+yy))*1.50e-31. (x,xx), (y,yy) */
-/* are assumed to be double-length numbers. p,hx,tx,hy,ty,q,c,cc,u,uu */
-/* are temporary storage variables of type double. */
-
-#define DIV2(x,xx,y,yy,z,zz,p,hx,tx,hy,ty,q,c,cc,u,uu) \
- c=(x)/(y); MUL12(c,y,u,uu,p,hx,tx,hy,ty,q) \
- cc=(((((x)-u)-uu)+(xx))-c*(yy))/(y); z=c+cc; zz=(c-z)+cc;
-
-
-/* Double-length addition, slower but more accurate than ADD2. */
-/* The macro produces a double-length */
-/* number (z,zz) which satisfies approximately z+zz = (x+xx)+(y+yy). */
-/* An error bound: abs(x+xx + y+yy)*1.50e-31. (x,xx), (y,yy) */
-/* are assumed to be double-length numbers. r,rr,s,ss,u,uu,w */
-/* are temporary storage variables of type double. */
-
-#define ADD2A(x,xx,y,yy,z,zz,r,rr,s,ss,u,uu,w) \
- r=(x)+(y); \
- if (ABS(x)>ABS(y)) { rr=((x)-r)+(y); s=(rr+(yy))+(xx); } \
- else { rr=((y)-r)+(x); s=(rr+(xx))+(yy); } \
- if (rr!=0.0) { \
- z=r+s; zz=(r-z)+s; } \
- else { \
- ss=(ABS(xx)>ABS(yy)) ? (((xx)-s)+(yy)) : (((yy)-s)+(xx)); \
- u=r+s; \
- uu=(ABS(r)>ABS(s)) ? ((r-u)+s) : ((s-u)+r) ; \
- w=uu+ss; z=u+w; \
- zz=(ABS(u)>ABS(w)) ? ((u-z)+w) : ((w-z)+u) ; }
-
-
-/* Double-length subtraction, slower but more accurate than SUB2. */
-/* The macro produces a double-length */
-/* number (z,zz) which satisfies approximately z+zz = (x+xx)-(y+yy). */
-/* An error bound: abs(x+xx - (y+yy))*1.50e-31. (x,xx), (y,yy) */
-/* are assumed to be double-length numbers. r,rr,s,ss,u,uu,w */
-/* are temporary storage variables of type double. */
-
-#define SUB2A(x,xx,y,yy,z,zz,r,rr,s,ss,u,uu,w) \
- r=(x)-(y); \
- if (ABS(x)>ABS(y)) { rr=((x)-r)-(y); s=(rr-(yy))+(xx); } \
- else { rr=(x)-((y)+r); s=(rr+(xx))-(yy); } \
- if (rr!=0.0) { \
- z=r+s; zz=(r-z)+s; } \
- else { \
- ss=(ABS(xx)>ABS(yy)) ? (((xx)-s)-(yy)) : ((xx)-((yy)+s)); \
- u=r+s; \
- uu=(ABS(r)>ABS(s)) ? ((r-u)+s) : ((s-u)+r) ; \
- w=uu+ss; z=u+w; \
- zz=(ABS(u)>ABS(w)) ? ((u-z)+w) : ((w-z)+u) ; }
-
-
-
-
-
-
-
diff --git a/src/system/libroot/posix/glibc/include/arch/arm/bits/fenvinline.h
b/src/system/libroot/posix/glibc/include/arch/arm/bits/fenvinline.h
deleted file mode 100644
index e69de29bb2..0000000000
diff --git a/src/system/libroot/posix/glibc/include/arch/arm/bits/mathinline.h
b/src/system/libroot/posix/glibc/include/arch/arm/bits/mathinline.h
deleted file mode 100644
index 248e6cf600..0000000000
--- a/src/system/libroot/posix/glibc/include/arch/arm/bits/mathinline.h
+++ /dev/null
@@ -1 +0,0 @@
-#warning ARM: check mathinline.h
diff --git a/src/system/libroot/posix/glibc/include/arch/arm/fenv_private.h
b/src/system/libroot/posix/glibc/include/arch/arm/fenv_private.h
deleted file mode 100644
index a60d676b0c..0000000000
--- a/src/system/libroot/posix/glibc/include/arch/arm/fenv_private.h
+++ /dev/null
@@ -1,251 +0,0 @@
-/* Private floating point rounding and exceptions handling. ARM VFP version.
- Copyright (C) 2014-2018 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 FENV_PRIVATE_H
-#define FENV_PRIVATE_H 1
-
-#include <fenv.h>
-#include <fpu_control.h>
-
-# define __glibc_unlikely(x) __builtin_expect ((x), 0)
-
-static __always_inline void
-libc_feholdexcept_vfp (fenv_t *envp)
-{
- fpu_control_t fpscr;
-
- _FPU_GETCW (fpscr);
- envp->__cw = fpscr;
-
- /* Clear exception flags and set all exceptions to non-stop. */
- fpscr &= ~_FPU_MASK_EXCEPT;
- _FPU_SETCW (fpscr);
-}
-
-static __always_inline void
-libc_fesetround_vfp (int round)
-{
- fpu_control_t fpscr;
-
- _FPU_GETCW (fpscr);
-
- /* Set new rounding mode if different. */
- if (__glibc_unlikely ((fpscr & _FPU_MASK_RM) != round))
- _FPU_SETCW ((fpscr & ~_FPU_MASK_RM) | round);
-}
-
-static __always_inline void
-libc_feholdexcept_setround_vfp (fenv_t *envp, int round)
-{
- fpu_control_t fpscr;
-
- _FPU_GETCW (fpscr);
- envp->__cw = fpscr;
-
- /* Clear exception flags, set all exceptions to non-stop,
- and set new rounding mode. */
- fpscr &= ~(_FPU_MASK_EXCEPT | _FPU_MASK_RM);
- _FPU_SETCW (fpscr | round);
-}
-
-static __always_inline void
-libc_feholdsetround_vfp (fenv_t *envp, int round)
-{
- fpu_control_t fpscr;
-
- _FPU_GETCW (fpscr);
- envp->__cw = fpscr;
-
- /* Set new rounding mode if different. */
- if (__glibc_unlikely ((fpscr & _FPU_MASK_RM) != round))
- _FPU_SETCW ((fpscr & ~_FPU_MASK_RM) | round);
-}
-
-static __always_inline void
-libc_feresetround_vfp (fenv_t *envp)
-{
- fpu_control_t fpscr, round;
-
- _FPU_GETCW (fpscr);
-
- /* Check whether rounding modes are different. */
- round = (envp->__cw ^ fpscr) & _FPU_MASK_RM;
-
- /* Restore the rounding mode if it was changed. */
- if (__glibc_unlikely (round != 0))
- _FPU_SETCW (fpscr ^ round);
-}
-
-static __always_inline int
-libc_fetestexcept_vfp (int ex)
-{
- fpu_control_t fpscr;
-
- _FPU_GETCW (fpscr);
- return fpscr & ex & FE_ALL_EXCEPT;
-}
-
-static __always_inline void
-libc_fesetenv_vfp (const fenv_t *envp)
-{
- fpu_control_t fpscr, new_fpscr;
-
- _FPU_GETCW (fpscr);
- new_fpscr = envp->__cw;
-
- /* Write new FPSCR if different (ignoring NZCV flags). */
- if (__glibc_unlikely (((fpscr ^ new_fpscr) & ~_FPU_MASK_NZCV) != 0))
- _FPU_SETCW (new_fpscr);
-}
-
-static __always_inline int
-libc_feupdateenv_test_vfp (const fenv_t *envp, int ex)
-{
- fpu_control_t fpscr, new_fpscr;
- int excepts;
-
- _FPU_GETCW (fpscr);
-
- /* Merge current exception flags with the saved fenv. */
- excepts = fpscr & FE_ALL_EXCEPT;
- new_fpscr = envp->__cw | excepts;
-
- /* Write new FPSCR if different (ignoring NZCV flags). */
- if (__glibc_unlikely (((fpscr ^ new_fpscr) & ~_FPU_MASK_NZCV) != 0))
- _FPU_SETCW (new_fpscr);
-
- /* Raise the exceptions if enabled in the new FP state. */
- if (__glibc_unlikely (excepts & (new_fpscr >> FE_EXCEPT_SHIFT)))
- __feraiseexcept (excepts);
-
- return excepts & ex;
-}
-
-static __always_inline void
-libc_feupdateenv_vfp (const fenv_t *envp)
-{
- libc_feupdateenv_test_vfp (envp, 0);
-}
-
-static __always_inline void
-libc_feholdsetround_vfp_ctx (struct rm_ctx *ctx, int r)
-{
- fpu_control_t fpscr, round;
-
- _FPU_GETCW (fpscr);
- ctx->updated_status = false;
- ctx->env.__cw = fpscr;
-
- /* Check whether rounding modes are different. */
- round = (fpscr ^ r) & _FPU_MASK_RM;
-
- /* Set the rounding mode if changed. */
- if (__glibc_unlikely (round != 0))
- {
- ctx->updated_status = true;
- _FPU_SETCW (fpscr ^ round);
- }
-}
-
-static __always_inline void
-libc_feresetround_vfp_ctx (struct rm_ctx *ctx)
-{
- /* Restore the rounding mode if updated. */
- if (__glibc_unlikely (ctx->updated_status))
- {
- fpu_control_t fpscr;
-
- _FPU_GETCW (fpscr);
- fpscr = (fpscr & ~_FPU_MASK_RM) | (ctx->env.__cw & _FPU_MASK_RM);
- _FPU_SETCW (fpscr);
- }
-}
-
-static __always_inline void
-libc_fesetenv_vfp_ctx (struct rm_ctx *ctx)
-{
- fpu_control_t fpscr, new_fpscr;
-
- _FPU_GETCW (fpscr);
- new_fpscr = ctx->env.__cw;
-
- /* Write new FPSCR if different (ignoring NZCV flags). */
- if (__glibc_unlikely (((fpscr ^ new_fpscr) & ~_FPU_MASK_NZCV) != 0))
- _FPU_SETCW (new_fpscr);
-}
-
-#ifndef __SOFTFP__
-
-# define libc_feholdexcept libc_feholdexcept_vfp
-# define libc_feholdexceptf libc_feholdexcept_vfp
-# define libc_feholdexceptl libc_feholdexcept_vfp
-
-# define libc_fesetround libc_fesetround_vfp
-# define libc_fesetroundf libc_fesetround_vfp
-# define libc_fesetroundl libc_fesetround_vfp
-
-# define libc_feresetround libc_feresetround_vfp
-# define libc_feresetroundf libc_feresetround_vfp
-# define libc_feresetroundl libc_feresetround_vfp
-
-# define libc_feresetround_noex libc_fesetenv_vfp
-# define libc_feresetround_noexf libc_fesetenv_vfp
-# define libc_feresetround_noexl libc_fesetenv_vfp
-
-# define libc_feholdexcept_setround libc_feholdexcept_setround_vfp
-# define libc_feholdexcept_setroundf libc_feholdexcept_setround_vfp
-# define libc_feholdexcept_setroundl libc_feholdexcept_setround_vfp
-
-# define libc_feholdsetround libc_feholdsetround_vfp
-# define libc_feholdsetroundf libc_feholdsetround_vfp
-# define libc_feholdsetroundl libc_feholdsetround_vfp
-
-# define libc_fetestexcept libc_fetestexcept_vfp
-# define libc_fetestexceptf libc_fetestexcept_vfp
-# define libc_fetestexceptl libc_fetestexcept_vfp
-
-# define libc_fesetenv libc_fesetenv_vfp
-# define libc_fesetenvf libc_fesetenv_vfp
-# define libc_fesetenvl libc_fesetenv_vfp
-
-# define libc_feupdateenv libc_feupdateenv_vfp
-# define libc_feupdateenvf libc_feupdateenv_vfp
-# define libc_feupdateenvl libc_feupdateenv_vfp
-
-# define libc_feupdateenv_test libc_feupdateenv_test_vfp
-# define libc_feupdateenv_testf libc_feupdateenv_test_vfp
-# define libc_feupdateenv_testl libc_feupdateenv_test_vfp
-
-/* We have support for rounding mode context. */
-#define HAVE_RM_CTX 1
-
-# define libc_feholdsetround_ctx libc_feholdsetround_vfp_ctx
-# define libc_feresetround_ctx libc_feresetround_vfp_ctx
-# define libc_feresetround_noex_ctx libc_fesetenv_vfp_ctx
-
-# define libc_feholdsetroundf_ctx libc_feholdsetround_vfp_ctx
-# define libc_feresetroundf_ctx libc_feresetround_vfp_ctx
-# define libc_feresetround_noexf_ctx libc_fesetenv_vfp_ctx
-
-# define libc_feholdsetroundl_ctx libc_feholdsetround_vfp_ctx
-# define libc_feresetroundl_ctx libc_feresetround_vfp_ctx
-# define libc_feresetround_noexl_ctx libc_fesetenv_vfp_ctx
-
-#endif
-
-#endif /* FENV_PRIVATE_H */
diff --git a/src/system/libroot/posix/glibc/include/arch/arm/fpu_control.h
b/src/system/libroot/posix/glibc/include/arch/arm/fpu_control.h
deleted file mode 100644
index 6b1b176eae..0000000000
--- a/src/system/libroot/posix/glibc/include/arch/arm/fpu_control.h
+++ /dev/null
@@ -1,75 +0,0 @@
-/* FPU control word definitions. ARM VFP version.
- Copyright (C) 2004-2018 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 _FPU_CONTROL_H
-#define _FPU_CONTROL_H
-
-#if !(defined(_LIBC) && !defined(_LIBC_TEST)) && defined(__SOFTFP__)
-
-#define _FPU_RESERVED 0xffffffff
-#define _FPU_DEFAULT 0x00000000
-typedef unsigned int fpu_control_t;
-#define _FPU_GETCW(cw) (cw) = 0
-#define _FPU_SETCW(cw) (void) (cw)
-extern fpu_control_t __fpu_control;
-
-#else
-
-/* masking of interrupts */
-#define _FPU_MASK_IM 0x00000100 /* invalid operation */
-#define _FPU_MASK_ZM 0x00000200 /* divide by zero */
-#define _FPU_MASK_OM 0x00000400 /* overflow */
-#define _FPU_MASK_UM 0x00000800 /* underflow */
-#define _FPU_MASK_PM 0x00001000 /* inexact */
-
-#define _FPU_MASK_NZCV 0xf0000000 /* NZCV flags */
-#define _FPU_MASK_RM 0x00c00000 /* rounding mode */
-#define _FPU_MASK_EXCEPT 0x00001f1f /* all exception flags */
-
-/* Some bits in the FPSCR are not yet defined. They must be preserved when
- modifying the contents. */
-#define _FPU_RESERVED 0x00086060
-#define _FPU_DEFAULT 0x00000000
-
-/* Default + exceptions enabled. */
-#define _FPU_IEEE (_FPU_DEFAULT | 0x00001f00)
-
-/* Type of the control word. */
-typedef unsigned int fpu_control_t;
-
-/* Macros for accessing the hardware control word. */
-#ifdef __SOFTFP__
-/* This is fmrx %0, fpscr. */
-# define _FPU_GETCW(cw) \
- __asm__ __volatile__ ("mrc p10, 7, %0, cr1, cr0, 0" : "=r" (cw))
-/* This is fmxr fpscr, %0. */
-# define _FPU_SETCW(cw) \
- __asm__ __volatile__ ("mcr p10, 7, %0, cr1, cr0, 0" : : "r" (cw))
-#else
-# define _FPU_GETCW(cw) \
- __asm__ __volatile__ ("vmrs %0, fpscr" : "=r" (cw))
-# define _FPU_SETCW(cw) \
- __asm__ __volatile__ ("vmsr fpscr, %0" : : "r" (cw))
-#endif
-
-/* Default control word set at startup. */
-extern fpu_control_t __fpu_control;
-
-#endif /* __SOFTFP__ */
-
-#endif /* _FPU_CONTROL_H */
diff --git
a/src/system/libroot/posix/glibc/include/arch/arm64/bits/mathinline.h
b/src/system/libroot/posix/glibc/include/arch/arm64/bits/mathinline.h
deleted file mode 100644
index 05ad341d80..0000000000
--- a/src/system/libroot/posix/glibc/include/arch/arm64/bits/mathinline.h
+++ /dev/null
@@ -1 +0,0 @@
-#warning ARM64: check mathinline.h
diff --git
a/src/system/libroot/posix/glibc/include/arch/generic/bits/floatn-common.h
b/src/system/libroot/posix/glibc/include/arch/generic/bits/floatn-common.h
deleted file mode 100644
index 980bfdaf89..0000000000
--- a/src/system/libroot/posix/glibc/include/arch/generic/bits/floatn-common.h
+++ /dev/null
@@ -1,329 +0,0 @@
-/* Macros to control TS 18661-3 glibc features where the same
- definitions are appropriate for all platforms.
- Copyright (C) 2017-2019 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 _BITS_FLOATN_COMMON_H
-#define _BITS_FLOATN_COMMON_H
-
-#include <features.h>
-#include <bits/long-double.h>
-
-/* This header should be included at the bottom of each bits/floatn.h.
- It defines the following macros for each _FloatN and _FloatNx type,
- where the same definitions, or definitions based only on the macros
- in bits/floatn.h, are appropriate for all glibc configurations. */
-
-/* Defined to 1 if the current compiler invocation provides a
- floating-point type with the right format for this type, and this
- glibc includes corresponding *fN or *fNx interfaces for it. */
-#define __HAVE_FLOAT16 0
-#define __HAVE_FLOAT32 1
-#define __HAVE_FLOAT64 1
-#define __HAVE_FLOAT32X 1
-#define __HAVE_FLOAT128X 0
-
-/* Defined to 1 if the corresponding __HAVE_<type> macro is 1 and the
- type is the first with its format in the sequence of (the default
- choices for) float, double, long double, _Float16, _Float32,
- _Float64, _Float128, _Float32x, _Float64x, _Float128x for this
- glibc; that is, if functions present once per floating-point format
- rather than once per type are present for this type.
-
- All configurations supported by glibc have _Float32 the same format
- as float, _Float64 and _Float32x the same format as double, the
- _Float64x the same format as either long double or _Float128. No
- configurations support _Float128x or, as of GCC 7, have compiler
- support for a type meeting the requirements for _Float128x. */
-#define __HAVE_DISTINCT_FLOAT16 __HAVE_FLOAT16
-#define __HAVE_DISTINCT_FLOAT32 0
-#define __HAVE_DISTINCT_FLOAT64 0
-#define __HAVE_DISTINCT_FLOAT32X 0
-#define __HAVE_DISTINCT_FLOAT64X 0
-#define __HAVE_DISTINCT_FLOAT128X __HAVE_FLOAT128X
-
-/* Defined to 1 if the corresponding _FloatN type is not binary compatible
- with the corresponding ISO C type in the current compilation unit as
- opposed to __HAVE_DISTINCT_FLOATN, which indicates the default types built
- in glibc. */
-#define __HAVE_FLOAT128_UNLIKE_LDBL (__HAVE_DISTINCT_FLOAT128 \
- && __LDBL_MANT_DIG__ != 113)
-
-/* Defined to 1 if any _FloatN or _FloatNx types that are not
- ABI-distinct are however distinct types at the C language level (so
- for the purposes of __builtin_types_compatible_p and _Generic). */
-#if __GNUC_PREREQ (7, 0) && !defined __cplusplus
-# define __HAVE_FLOATN_NOT_TYPEDEF 1
-#else
-# define __HAVE_FLOATN_NOT_TYPEDEF 0
-#endif
-
-#ifndef __ASSEMBLER__
-
-/* Defined to concatenate the literal suffix to be used with _FloatN
- or _FloatNx types, if __HAVE_<type> is 1. The corresponding
- literal suffixes exist since GCC 7, for C only. */
-# if __HAVE_FLOAT16
-# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
-/* No corresponding suffix available for this type. */
-# define __f16(x) ((_Float16) x##f)
-# else
-# define __f16(x) x##f16
-# endif
-# endif
-
-# if __HAVE_FLOAT32
-# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
-# define __f32(x) x##f
-# else
-# define __f32(x) x##f32
-# endif
-# endif
-
-# if __HAVE_FLOAT64
-# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
-# ifdef __NO_LONG_DOUBLE_MATH
-# define __f64(x) x##l
-# else
-# define __f64(x) x
-# endif
-# else
-# define __f64(x) x##f64
-# endif
-# endif
-
-# if __HAVE_FLOAT32X
-# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
-# define __f32x(x) x
-# else
-# define __f32x(x) x##f32x
-# endif
-# endif
-
-# if __HAVE_FLOAT64X
-# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
-# if __HAVE_FLOAT64X_LONG_DOUBLE
-# define __f64x(x) x##l
-# else
-# define __f64x(x) __f128 (x)
-# endif
-# else
-# define __f64x(x) x##f64x
-# endif
-# endif
-
-# if __HAVE_FLOAT128X
-# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
-# error "_Float128X supported but no constant suffix"
-# else
-# define __f128x(x) x##f128x
-# endif
-# endif
-
-/* Defined to a complex type if __HAVE_<type> is 1. */
-# if __HAVE_FLOAT16
-# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
-typedef _Complex float __cfloat16 __attribute__ ((__mode__ (__HC__)));
-# define __CFLOAT16 __cfloat16
-# else
-# define __CFLOAT16 _Complex _Float16
-# endif
-# endif
-
-# if __HAVE_FLOAT32
-# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
-# define __CFLOAT32 _Complex float
-# else
-# define __CFLOAT32 _Complex _Float32
-# endif
-# endif
-
-# if __HAVE_FLOAT64
-# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
-# ifdef __NO_LONG_DOUBLE_MATH
-# define __CFLOAT64 _Complex long double
-# else
-# define __CFLOAT64 _Complex double
-# endif
-# else
-# define __CFLOAT64 _Complex _Float64
-# endif
-# endif
-
-# if __HAVE_FLOAT32X
-# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
-# define __CFLOAT32X _Complex double
-# else
-# define __CFLOAT32X _Complex _Float32x
-# endif
-# endif
-
-# if __HAVE_FLOAT64X
-# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
-# if __HAVE_FLOAT64X_LONG_DOUBLE
-# define __CFLOAT64X _Complex long double
-# else
-# define __CFLOAT64X __CFLOAT128
-# endif
-# else
-# define __CFLOAT64X _Complex _Float64x
-# endif
-# endif
-
-# if __HAVE_FLOAT128X
-# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
-# error "_Float128X supported but no complex type"
-# else
-# define __CFLOAT128X _Complex _Float128x
-# endif
-# endif
-
-/* The remaining of this file provides support for older compilers. */
-# if __HAVE_FLOAT16
-
-# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
-typedef float _Float16 __attribute__ ((__mode__ (__HF__)));
-# endif
-
-# if !__GNUC_PREREQ (7, 0)
-# define __builtin_huge_valf16() ((_Float16) __builtin_huge_val ())
-# define __builtin_inff16() ((_Float16) __builtin_inf ())
-# define __builtin_nanf16(x) ((_Float16) __builtin_nan (x))
-# define __builtin_nansf16(x) ((_Float16) __builtin_nans (x))
-# endif
-
-# endif
-
-# if __HAVE_FLOAT32
-
-# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
-typedef float _Float32;
-# endif
-
-# if !__GNUC_PREREQ (7, 0)
-# define __builtin_huge_valf32() (__builtin_huge_valf ())
-# define __builtin_inff32() (__builtin_inff ())
-# define __builtin_nanf32(x) (__builtin_nanf (x))
-# define __builtin_nansf32(x) (__builtin_nansf (x))
-# endif
-
-# endif
-
-# if __HAVE_FLOAT64
-
-/* If double, long double and _Float64 all have the same set of
- values, TS 18661-3 requires the usual arithmetic conversions on
- long double and _Float64 to produce _Float64. For this to be the
- case when building with a compiler without a distinct _Float64
- type, _Float64 must be a typedef for long double, not for
- double. */
-
-# ifdef __NO_LONG_DOUBLE_MATH
-
-# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
-typedef long double _Float64;
-# endif
-
-# if !__GNUC_PREREQ (7, 0)
-# define __builtin_huge_valf64() (__builtin_huge_vall ())
-# define __builtin_inff64() (__builtin_infl ())
-# define __builtin_nanf64(x) (__builtin_nanl (x))
-# define __builtin_nansf64(x) (__builtin_nansl (x))
-# endif
-
-# else
-
-# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
-typedef double _Float64;
-# endif
-
-# if !__GNUC_PREREQ (7, 0)
-# define __builtin_huge_valf64() (__builtin_huge_val ())
-# define __builtin_inff64() (__builtin_inf ())
-# define __builtin_nanf64(x) (__builtin_nan (x))
-# define __builtin_nansf64(x) (__builtin_nans (x))
-# endif
-
-# endif
-
-# endif
-
-# if __HAVE_FLOAT32X
-
-# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
-typedef double _Float32x;
-# endif
-
-# if !__GNUC_PREREQ (7, 0)
-# define __builtin_huge_valf32x() (__builtin_huge_val ())
-# define __builtin_inff32x() (__builtin_inf ())
-# define __builtin_nanf32x(x) (__builtin_nan (x))
-# define __builtin_nansf32x(x) (__builtin_nans (x))
-# endif
-
-# endif
-
-# if __HAVE_FLOAT64X
-
-# if __HAVE_FLOAT64X_LONG_DOUBLE
-
-# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
-typedef long double _Float64x;
-# endif
-
-# if !__GNUC_PREREQ (7, 0)
-# define __builtin_huge_valf64x() (__builtin_huge_vall ())
-# define __builtin_inff64x() (__builtin_infl ())
-# define __builtin_nanf64x(x) (__builtin_nanl (x))
-# define __builtin_nansf64x(x) (__builtin_nansl (x))
-# endif
-
-# else
-
-# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
-typedef _Float128 _Float64x;
-# endif
-
-# if !__GNUC_PREREQ (7, 0)
-# define __builtin_huge_valf64x() (__builtin_huge_valf128 ())
-# define __builtin_inff64x() (__builtin_inff128 ())
-# define __builtin_nanf64x(x) (__builtin_nanf128 (x))
-# define __builtin_nansf64x(x) (__builtin_nansf128 (x))
-# endif
-
-# endif
-
-# endif
-
-# if __HAVE_FLOAT128X
-
-# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
-# error "_Float128x supported but no type"
-# endif
-
-# if !__GNUC_PREREQ (7, 0)
-# define __builtin_huge_valf128x() ((_Float128x) __builtin_huge_val ())
-# define __builtin_inff128x() ((_Float128x) __builtin_inf ())
-# define __builtin_nanf128x(x) ((_Float128x) __builtin_nan (x))
-# define __builtin_nansf128x(x) ((_Float128x) __builtin_nans (x))
-# endif
-
-# endif
-
-#endif /* !__ASSEMBLER__. */
-
-#endif /* _BITS_FLOATN_COMMON_H */
diff --git a/src/system/libroot/posix/glibc/include/arch/generic/dla.h
b/src/system/libroot/posix/glibc/include/arch/generic/dla.h
deleted file mode 100644
index d64bb1e246..0000000000
--- a/src/system/libroot/posix/glibc/include/arch/generic/dla.h
+++ /dev/null
@@ -1,183 +0,0 @@
-/*
- * IBM Accurate Mathematical Library
- * Written by International Business Machines Corp.
- * Copyright (C) 2001-2019 Free Software Foundation, Inc.
- *
- * This program 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.
- *
- * This program 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 this program; if not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <math.h>
-
-/***********************************************************************/
-/*MODULE_NAME: dla.h */
-/* */
-/* This file holds C language macros for 'Double Length Floating Point */
-/* Arithmetic'. The macros are based on the paper: */
-/* T.J.Dekker, "A floating-point Technique for extending the */
-/* Available Precision", Number. Math. 18, 224-242 (1971). */
-/* A Double-Length number is defined by a pair (r,s), of IEEE double */
-/* precision floating point numbers that satisfy, */
-/* */
-/* abs(s) <= abs(r+s)*2**(-53)/(1+2**(-53)). */
-/* */
-/* The computer arithmetic assumed is IEEE double precision in */
-/* round to nearest mode. All variables in the macros must be of type */
-/* IEEE double. */
-/***********************************************************************/
-
-/* CN = 1+2**27 = '41a0000002000000' IEEE double format. Use it to split a
- double for better accuracy. */
-#define CN 134217729.0
-
-
-/* Exact addition of two single-length floating point numbers, Dekker. */
-/* The macro produces a double-length number (z,zz) that satisfies */
-/* z+zz = x+y exactly. */
-
-#define EADD(x,y,z,zz) \
- z=(x)+(y); zz=(fabs(x)>fabs(y)) ? (((x)-(z))+(y)) : (((y)-(z))+(x));
-
-
-/* Exact subtraction of two single-length floating point numbers, Dekker. */
-/* The macro produces a double-length number (z,zz) that satisfies */
-/* z+zz = x-y exactly. */
-
-#define ESUB(x,y,z,zz) \
- z=(x)-(y); zz=(fabs(x)>fabs(y)) ? (((x)-(z))-(y)) : ((x)-((y)+(z)));
-
-
-#ifdef __FP_FAST_FMA
-# define DLA_FMS(x, y, z) __builtin_fma (x, y, -(z))
-#endif
-
-/* Exact multiplication of two single-length floating point numbers, */
-/* Veltkamp. The macro produces a double-length number (z,zz) that */
-/* satisfies z+zz = x*y exactly. p,hx,tx,hy,ty are temporary */
-/* storage variables of type double. */
-
-#ifdef DLA_FMS
-# define EMULV(x, y, z, zz, p, hx, tx, hy, ty) \
- z = x * y; zz = DLA_FMS (x, y, z);
-#else
-# define EMULV(x, y, z, zz, p, hx, tx, hy, ty) \
- p = CN * (x); hx = ((x) - p) + p; tx = (x) - hx; \
- p = CN * (y); hy = ((y) - p) + p; ty = (y) - hy; \
- z = (x) * (y); zz = (((hx * hy - z) + hx * ty) + tx * hy) + tx * ty;
-#endif
-
-
-/* Exact multiplication of two single-length floating point numbers, Dekker. */
-/* The macro produces a nearly double-length number (z,zz) (see Dekker) */
-/* that satisfies z+zz = x*y exactly. p,hx,tx,hy,ty,q are temporary */
-/* storage variables of type double. */
-
-#ifdef DLA_FMS
-# define MUL12(x,y,z,zz,p,hx,tx,hy,ty,q) \
- EMULV(x,y,z,zz,p,hx,tx,hy,ty)
-#else
-# define MUL12(x,y,z,zz,p,hx,tx,hy,ty,q) \
- p=CN*(x); hx=((x)-p)+p; tx=(x)-hx; \
- p=CN*(y); hy=((y)-p)+p; ty=(y)-hy; \
- p=hx*hy; q=hx*ty+tx*hy; z=p+q; zz=((p-z)+q)+tx*ty;
-#endif
-
-
-/* Double-length addition, Dekker. The macro produces a double-length */
-/* number (z,zz) which satisfies approximately z+zz = x+xx + y+yy. */
-/* An error bound: (abs(x+xx)+abs(y+yy))*4.94e-32. (x,xx), (y,yy) */
-/* are assumed to be double-length numbers. r,s are temporary */
-/* storage variables of type double. */
-
-#define ADD2(x, xx, y, yy, z, zz, r, s) \
- r = (x) + (y); s = (fabs (x) > fabs (y)) ? \
- (((((x) - r) + (y)) + (yy)) + (xx)) : \
- (((((y) - r) + (x)) + (xx)) + (yy)); \
- z = r + s; zz = (r - z) + s;
-
-
-/* Double-length subtraction, Dekker. The macro produces a double-length */
-/* number (z,zz) which satisfies approximately z+zz = x+xx - (y+yy). */
-/* An error bound: (abs(x+xx)+abs(y+yy))*4.94e-32. (x,xx), (y,yy) */
-/* are assumed to be double-length numbers. r,s are temporary */
-/* storage variables of type double. */
-
-#define SUB2(x, xx, y, yy, z, zz, r, s) \
- r = (x) - (y); s = (fabs (x) > fabs (y)) ? \
- (((((x) - r) - (y)) - (yy)) + (xx)) : \
- ((((x) - ((y) + r)) + (xx)) - (yy)); \
- z = r + s; zz = (r - z) + s;
-
-
-/* Double-length multiplication, Dekker. The macro produces a double-length */
-/* number (z,zz) which satisfies approximately z+zz = (x+xx)*(y+yy). */
-/* An error bound: abs((x+xx)*(y+yy))*1.24e-31. (x,xx), (y,yy) */
-/* are assumed to be double-length numbers. p,hx,tx,hy,ty,q,c,cc are */
-/* temporary storage variables of type double. */
-
-#define MUL2(x, xx, y, yy, z, zz, p, hx, tx, hy, ty, q, c, cc) \
- MUL12 (x, y, c, cc, p, hx, tx, hy, ty, q) \
- cc = ((x) * (yy) + (xx) * (y)) + cc; z = c + cc; zz = (c - z) + cc;
-
-
-/* Double-length division, Dekker. The macro produces a double-length */
-/* number (z,zz) which satisfies approximately z+zz = (x+xx)/(y+yy). */
-/* An error bound: abs((x+xx)/(y+yy))*1.50e-31. (x,xx), (y,yy) */
-/* are assumed to be double-length numbers. p,hx,tx,hy,ty,q,c,cc,u,uu */
-/* are temporary storage variables of type double. */
-
-#define DIV2(x,xx,y,yy,z,zz,p,hx,tx,hy,ty,q,c,cc,u,uu) \
- c=(x)/(y); MUL12(c,y,u,uu,p,hx,tx,hy,ty,q) \
- cc=(((((x)-u)-uu)+(xx))-c*(yy))/(y); z=c+cc; zz=(c-z)+cc;
-
-
-/* Double-length addition, slower but more accurate than ADD2. */
-/* The macro produces a double-length */
-/* number (z,zz) which satisfies approximately z+zz = (x+xx)+(y+yy). */
-/* An error bound: abs(x+xx + y+yy)*1.50e-31. (x,xx), (y,yy) */
-/* are assumed to be double-length numbers. r,rr,s,ss,u,uu,w */
-/* are temporary storage variables of type double. */
-
-#define ADD2A(x, xx, y, yy, z, zz, r, rr, s, ss, u, uu, w) \
- r = (x) + (y); \
- if (fabs (x) > fabs (y)) { rr = ((x) - r) + (y); s = (rr + (yy)) + (xx); } \
- else { rr = ((y) - r) + (x); s = (rr + (xx)) + (yy); } \
- if (rr != 0.0) { \
- z = r + s; zz = (r - z) + s; } \
- else { \
- ss = (fabs (xx) > fabs (yy)) ? (((xx) - s) + (yy)) : (((yy) - s) +
(xx));\
- u = r + s; \
- uu = (fabs (r) > fabs (s)) ? ((r - u) + s) : ((s - u) + r); \
- w = uu + ss; z = u + w; \
- zz = (fabs (u) > fabs (w)) ? ((u - z) + w) : ((w - z) + u); }
-
-
-/* Double-length subtraction, slower but more accurate than SUB2. */
-/* The macro produces a double-length */
-/* number (z,zz) which satisfies approximately z+zz = (x+xx)-(y+yy). */
-/* An error bound: abs(x+xx - (y+yy))*1.50e-31. (x,xx), (y,yy) */
-/* are assumed to be double-length numbers. r,rr,s,ss,u,uu,w */
-/* are temporary storage variables of type double. */
-
-#define SUB2A(x, xx, y, yy, z, zz, r, rr, s, ss, u, uu, w) \
- r = (x) - (y); \
- if (fabs (x) > fabs (y)) { rr = ((x) - r) - (y); s = (rr - (yy)) + (xx); }
\
- else { rr = (x) - ((y) + r); s = (rr + (xx)) - (yy); } \
- if (rr != 0.0) { \
- z = r + s; zz = (r - z) + s; } \
- else { \
- ss = (fabs (xx) > fabs (yy)) ? (((xx) - s) - (yy)) : ((xx) - ((yy) +
s)); \
- u = r + s; \
- uu = (fabs (r) > fabs (s)) ? ((r - u) + s) : ((s - u) + r);
\
- w = uu + ss; z = u + w; \
- zz = (fabs (u) > fabs (w)) ? ((u - z) + w) : ((w - z) + u); }
diff --git
a/src/system/libroot/posix/glibc/include/arch/generic/libm-alias-ldouble.h
b/src/system/libroot/posix/glibc/include/arch/generic/libm-alias-ldouble.h
deleted file mode 100644
index 4d5246fef7..0000000000
--- a/src/system/libroot/posix/glibc/include/arch/generic/libm-alias-ldouble.h
+++ /dev/null
@@ -1,65 +0,0 @@
-/* Define aliases for libm long double functions.
- Copyright (C) 2017-2019 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 _LIBM_ALIAS_LDOUBLE_H
-#define _LIBM_ALIAS_LDOUBLE_H
-
-#include <bits/floatn.h>
-
-#if __HAVE_FLOAT128 && !__HAVE_DISTINCT_FLOAT128
-# define libm_alias_ldouble_other_r_f128(from, to, r) \
- weak_alias (from ## l ## r, to ## f128 ## r)
-#else
-# define libm_alias_ldouble_other_r_f128(from, to, r)
-#endif
-
-#if __HAVE_FLOAT64X_LONG_DOUBLE
-# define libm_alias_ldouble_other_r_f64x(from, to, r) \
- weak_alias (from ## l ## r, to ## f64x ## r)
-#else
-# define libm_alias_ldouble_other_r_f64x(from, to, r)
-#endif
-
-/* Define _FloatN / _FloatNx aliases for a long double libm function
- that has internal name FROM ## l ## R and public names TO ## suffix
- ## R for each suffix of a supported _FloatN / _FloatNx
- floating-point type with the same format as long double. */
-#define libm_alias_ldouble_other_r(from, to, r) \
- libm_alias_ldouble_other_r_f128 (from, to, r); \
- libm_alias_ldouble_other_r_f64x (from, to, r)
-
-/* Likewise, but without the R suffix. */
-#define libm_alias_ldouble_other(from, to) \
- libm_alias_ldouble_other_r (from, to, )
-
-/* Define aliases for a long double libm function that has internal
- name FROM ## l ## R and public names TO ## suffix ## R for each
- suffix of a supported floating-point type with the same format as
- long double. This should only be used for functions where such
- public names exist for _FloatN types, not for
- implementation-namespace exported names (where there is one name
- per format, not per type) or for obsolescent functions not provided
- for _FloatN types. */
-#define libm_alias_ldouble_r(from, to, r) \
- weak_alias (from ## l ## r, to ## l ## r); \
- libm_alias_ldouble_other_r (from, to, r)
-
-/* Likewise, but without the R suffix. */
-#define libm_alias_ldouble(from, to) libm_alias_ldouble_r (from, to, )
-
-#endif
diff --git
a/src/system/libroot/posix/glibc/include/arch/generic/math-underflow.h
b/src/system/libroot/posix/glibc/include/arch/generic/math-underflow.h
deleted file mode 100644
index c5e5c79768..0000000000
--- a/src/system/libroot/posix/glibc/include/arch/generic/math-underflow.h
+++ /dev/null
@@ -1,79 +0,0 @@
-/* Check for underflow and force underflow exceptions.
- Copyright (C) 2015-2018 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 _MATH_UNDERFLOW_H
-#define _MATH_UNDERFLOW_H 1
-
-#include <float.h>
-#include <math.h>
-
-#include <math-barriers.h>
-
-#define fabs_tg(x) __MATH_TG ((x), (__typeof (x)) __builtin_fabs, (x))
-
-/* These must be function-like macros because some __MATH_TG
- implementations macro-expand the function-name argument before
- concatenating a suffix to it. */
-#define min_of_type_f() FLT_MIN
-#define min_of_type_() DBL_MIN
-#define min_of_type_l() LDBL_MIN
-#define min_of_type_f128() FLT128_MIN
-
-#define min_of_type(x) __MATH_TG ((x), (__typeof (x)) min_of_type_, ())
-
-/* If X (which is not a NaN) is subnormal, force an underflow
- exception. */
-#define math_check_force_underflow(x) \
- do \
- { \
- __typeof (x) force_underflow_tmp = (x); \
- if (fabs_tg (force_underflow_tmp) \
- < min_of_type (force_underflow_tmp)) \
- { \
- __typeof (force_underflow_tmp) force_underflow_tmp2 \
- = force_underflow_tmp * force_underflow_tmp; \
- math_force_eval (force_underflow_tmp2); \
- } \
- } \
- while (0)
-/* Likewise, but X is also known to be nonnegative. */
-#define math_check_force_underflow_nonneg(x) \
- do \
- { \
- __typeof (x) force_underflow_tmp = (x); \
- if (force_underflow_tmp \
- < min_of_type (force_underflow_tmp)) \
- { \
- __typeof (force_underflow_tmp) force_underflow_tmp2 \
- = force_underflow_tmp * force_underflow_tmp; \
- math_force_eval (force_underflow_tmp2); \
- } \
- } \
- while (0)
-/* Likewise, for both real and imaginary parts of a complex
- result. */
-#define math_check_force_underflow_complex(x) \
- do \
- { \
- __typeof (x) force_underflow_complex_tmp = (x); \
- math_check_force_underflow (__real__ force_underflow_complex_tmp); \
- math_check_force_underflow (__imag__ force_underflow_complex_tmp); \
- } \
- while (0)
-
-#endif /* math-underflow.h */
diff --git a/src/system/libroot/posix/glibc/include/arch/generic/memcopy.h
b/src/system/libroot/posix/glibc/include/arch/generic/memcopy.h
deleted file mode 100644
index bc5c18d4a5..0000000000
--- a/src/system/libroot/posix/glibc/include/arch/generic/memcopy.h
+++ /dev/null
@@ -1,150 +0,0 @@
-/* memcopy.h -- definitions for memory copy functions. Generic C version.
- Copyright (C) 1991, 1992, 1993, 1997, 2004 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Torbjorn Granlund (tege@xxxxxxx).
-
- 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. */
-
-/* The strategy of the memory functions is:
-
- 1. Copy bytes until the destination pointer is aligned.
-
- 2. Copy words in unrolled loops. If the source and destination
- are not aligned in the same way, use word memory operations,
- but shift and merge two read words before writing.
-
- 3. Copy the few remaining bytes.
-
- This is fast on processors that have at least 10 registers for
- allocation by GCC, and that can access memory at reg+const in one
- instruction.
-
- I made an "exhaustive" test of this memmove when I wrote it,
- exhaustive in the sense that I tried all alignment and length
- combinations, with and without overlap. */
-
-#include <sys/cdefs.h>
-#include <endian.h>
-
-/* The macros defined in this file are:
-
- BYTE_COPY_FWD(dst_beg_ptr, src_beg_ptr, nbytes_to_copy)
-
- BYTE_COPY_BWD(dst_end_ptr, src_end_ptr, nbytes_to_copy)
-
- WORD_COPY_FWD(dst_beg_ptr, src_beg_ptr, nbytes_remaining, nbytes_to_copy)
-
- WORD_COPY_BWD(dst_end_ptr, src_end_ptr, nbytes_remaining, nbytes_to_copy)
-
- MERGE(old_word, sh_1, new_word, sh_2)
- [I fail to understand. I feel stupid. --roland]
-*/
-
-/* Type to use for aligned memory operations.
- This should normally be the biggest type supported by a single load
- and store. */
-#define op_t unsigned long int
-#define OPSIZ (sizeof(op_t))
-
-/* Type to use for unaligned operations. */
-typedef unsigned char byte;
-
-/* Optimal type for storing bytes in registers. */
-#define reg_char char
-
-#if __BYTE_ORDER == __LITTLE_ENDIAN
-#define MERGE(w0, sh_1, w1, sh_2) (((w0) >> (sh_1)) | ((w1) << (sh_2)))
-#endif
-#if __BYTE_ORDER == __BIG_ENDIAN
-#define MERGE(w0, sh_1, w1, sh_2) (((w0) << (sh_1)) | ((w1) >> (sh_2)))
-#endif
-
-/* Copy exactly NBYTES bytes from SRC_BP to DST_BP,
- without any assumptions about alignment of the pointers. */
-#define BYTE_COPY_FWD(dst_bp, src_bp, nbytes) \
- do \
- { \
- size_t __nbytes = (nbytes); \
- while (__nbytes > 0) \
- { \
- byte __x = ((byte *) src_bp)[0]; \
- src_bp += 1; \
- __nbytes -= 1; \
- ((byte *) dst_bp)[0] = __x; \
- dst_bp += 1; \
- } \
- } while (0)
-
-/* Copy exactly NBYTES_TO_COPY bytes from SRC_END_PTR to DST_END_PTR,
- beginning at the bytes right before the pointers and continuing towards
- smaller addresses. Don't assume anything about alignment of the
- pointers. */
-#define BYTE_COPY_BWD(dst_ep, src_ep, nbytes) \
- do \
- { \
- size_t __nbytes = (nbytes); \
- while (__nbytes > 0) \
- { \
- byte __x; \
- src_ep -= 1; \
- __x = ((byte *) src_ep)[0]; \
- dst_ep -= 1; \
- __nbytes -= 1; \
- ((byte *) dst_ep)[0] = __x; \
- } \
- } while (0)
-
-/* Copy *up to* NBYTES bytes from SRC_BP to DST_BP, with
- the assumption that DST_BP is aligned on an OPSIZ multiple. If
- not all bytes could be easily copied, store remaining number of bytes
- in NBYTES_LEFT, otherwise store 0. */
-extern void _wordcopy_fwd_aligned (long int, long int, size_t) __THROW;
-extern void _wordcopy_fwd_dest_aligned (long int, long int, size_t) __THROW;
-#define WORD_COPY_FWD(dst_bp, src_bp, nbytes_left, nbytes) \
- do \
- { \
- if (src_bp % OPSIZ == 0) \
- _wordcopy_fwd_aligned (dst_bp, src_bp, (nbytes) / OPSIZ); \
- else \
- _wordcopy_fwd_dest_aligned (dst_bp, src_bp, (nbytes) / OPSIZ); \
- src_bp += (nbytes) & -OPSIZ; \
- dst_bp += (nbytes) & -OPSIZ; \
- (nbytes_left) = (nbytes) % OPSIZ;
\
- } while (0)
-
-/* Copy *up to* NBYTES_TO_COPY bytes from SRC_END_PTR to DST_END_PTR,
- beginning at the words (of type op_t) right before the pointers and
- continuing towards smaller addresses. May take advantage of that
- DST_END_PTR is aligned on an OPSIZ multiple. If not all bytes could be
- easily copied, store remaining number of bytes in NBYTES_REMAINING,
- otherwise store 0. */
-extern void _wordcopy_bwd_aligned (long int, long int, size_t) __THROW;
-extern void _wordcopy_bwd_dest_aligned (long int, long int, size_t) __THROW;
-#define WORD_COPY_BWD(dst_ep, src_ep, nbytes_left, nbytes) \
- do \
- { \
- if (src_ep % OPSIZ == 0) \
- _wordcopy_bwd_aligned (dst_ep, src_ep, (nbytes) / OPSIZ); \
- else \
- _wordcopy_bwd_dest_aligned (dst_ep, src_ep, (nbytes) / OPSIZ); \
- src_ep -= (nbytes) & -OPSIZ; \
- dst_ep -= (nbytes) & -OPSIZ; \
- (nbytes_left) = (nbytes) % OPSIZ;
\
- } while (0)
-
-
-/* Threshold value for when to enter the unrolled loops. */
-#define OP_T_THRES 16
diff --git
a/src/system/libroot/posix/glibc/include/arch/generic/nan-high-order-bit.h
b/src/system/libroot/posix/glibc/include/arch/generic/nan-high-order-bit.h
deleted file mode 100644
index f3a87f0316..0000000000
--- a/src/system/libroot/posix/glibc/include/arch/generic/nan-high-order-bit.h
+++ /dev/null
@@ -1,27 +0,0 @@
-/* Specify NaN high-order bit conventions. Generic version.
- Copyright (C) 2016-2019 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 NAN_HIGH_ORDER_BIT_H
-#define NAN_HIGH_ORDER_BIT_H 1
-
-/* Define this macro to 1 if the high-order bit of a NaN's mantissa is
- set for signaling NaNs and clear for quiet NaNs, 0 otherwise (the
- preferred IEEE convention). */
-#define HIGH_ORDER_BIT_IS_SET_FOR_SNAN 0
-
-#endif /* nan-high-order-bit.h */
diff --git a/src/system/libroot/posix/glibc/include/arch/m68k/bits/mathinline.h
b/src/system/libroot/posix/glibc/include/arch/m68k/bits/mathinline.h
deleted file mode 100644
index 1cadb9ebb6..0000000000
--- a/src/system/libroot/posix/glibc/include/arch/m68k/bits/mathinline.h
+++ /dev/null
@@ -1,463 +0,0 @@
-/* Definitions of inline math functions implemented by the m68881/2.
- Copyright (C) 1991,92,93,94,96,97,98,99,2000,2002, 2003, 2004
- 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. */
-
-#ifdef __GNUC__
-
-#ifdef __USE_ISOC99
-/* GCC 3.1 and up have builtins that actually can be used. */
-# if !__GNUC_PREREQ (3,1)
-/* ISO C99 defines some macros to perform unordered comparisons. The
- m68k FPU supports this with special opcodes and we should use them.
- These must not be inline functions since we have to be able to handle
- all floating-point types. */
-# undef isgreater
-# undef isgreaterequal
-# undef isless
-# undef islessequal
-# undef islessgreater
-# undef isunordered
-# define isgreater(x, y) \
- __extension__ \
- ({ char __result; \
- __asm__ ("fcmp%.x %2,%1; fsogt %0" \
- : "=dm" (__result) : "f" (x), "f" (y)); \
- __result != 0; })
-
-# define isgreaterequal(x, y) \
- __extension__ \
- ({ char __result; \
- __asm__ ("fcmp%.x %2,%1; fsoge %0" \
- : "=dm" (__result) : "f" (x), "f" (y)); \
- __result != 0; })
-
-# define isless(x, y) \
- __extension__ \
- ({ char __result; \
- __asm__ ("fcmp%.x %2,%1; fsolt %0" \
- : "=dm" (__result) : "f" (x), "f" (y)); \
- __result != 0; })
-
-# define islessequal(x, y) \
- __extension__ \
- ({ char __result; \
- __asm__ ("fcmp%.x %2,%1; fsole %0" \
- : "=dm" (__result) : "f" (x), "f" (y)); \
- __result != 0; })
-
-# define islessgreater(x, y) \
- __extension__ \
- ({ char __result; \
- __asm__ ("fcmp%.x %2,%1; fsogl %0" \
- : "=dm" (__result) : "f" (x), "f" (y)); \
- __result != 0; })
-
-# define isunordered(x, y) \
- __extension__ \
- ({ char __result; \
- __asm__ ("fcmp%.x %2,%1; fsun %0" \
- : "=dm" (__result) : "f" (x), "f" (y)); \
- __result != 0; })
-# endif /* GCC 3.1 */
-#endif
-
-
-#if (!defined __NO_MATH_INLINES && defined __OPTIMIZE__) \
- || defined __LIBC_INTERNAL_MATH_INLINES
-
-#ifdef __LIBC_INTERNAL_MATH_INLINES
-/* This is used when defining the functions themselves. Define them with
- __ names, and with `static inline' instead of `extern inline' so the
- bodies will always be used, never an external function call. */
-# define __m81_u(x) __CONCAT(__,x)
-# define __m81_inline static __inline
-#else
-# define __m81_u(x) x
-# ifdef __cplusplus
-# define __m81_inline __inline
-# else
-# define __m81_inline extern __inline
-# endif
-# define __M81_MATH_INLINES 1
-#endif
-
-/* Define a const math function. */
-#define __m81_defun(rettype, func, args) \
- __m81_inline rettype __attribute__((__const__)) \
- __m81_u(func) args
-
-/* Define the three variants of a math function that has a direct
- implementation in the m68k fpu. FUNC is the name for C (which will be
- suffixed with f and l for the float and long double version, resp). OP
- is the name of the fpu operation (without leading f). */
-
-#if defined __USE_MISC || defined __USE_ISOC99
-#ifndef NO_LONG_DOUBLE
-# define __inline_mathop(func, op) \
- __inline_mathop1(double, func, op) \
- __inline_mathop1(float, __CONCAT(func,f), op) \
- __inline_mathop1(long double, __CONCAT(func,l), op)
-#else
-# define __inline_mathop(func, op) \
- __inline_mathop1(double, func, op) \
- __inline_mathop1(float, __CONCAT(func,f), op)
-#endif
-#else
-# define __inline_mathop(func, op) \
- __inline_mathop1(double, func, op)
-#endif
-
-#define __inline_mathop1(float_type,func, op) \
- __m81_defun (float_type, func, (float_type __mathop_x)) \
- { \
- float_type __result; \
- __asm("f" __STRING(op) "%.x %1, %0" : "=f" (__result) : "f" (__mathop_x));\
- return __result; \
- }
-
-__inline_mathop(__atan, atan)
-__inline_mathop(__cos, cos)
-__inline_mathop(__sin, sin)
-__inline_mathop(__tan, tan)
-__inline_mathop(__tanh, tanh)
-__inline_mathop(__fabs, abs)
-
-#if defined __USE_MISC || defined __USE_XOPEN_EXTENDED || defined __USE_ISOC99
-__inline_mathop(__rint, int)
-__inline_mathop(__expm1, etoxm1)
-__inline_mathop(__log1p, lognp1)
-#endif
-
-#ifdef __USE_MISC
-__inline_mathop(__significand, getman)
-#endif
-
-#ifdef __USE_ISOC99
-__inline_mathop(__trunc, intrz)
-#endif
-
-#if !defined __NO_MATH_INLINES && defined __OPTIMIZE__
-
-__inline_mathop(atan, atan)
-__inline_mathop(cos, cos)
-__inline_mathop(sin, sin)
-__inline_mathop(tan, tan)
-__inline_mathop(tanh, tanh)
-
-# if defined __USE_MISC || defined __USE_XOPEN_EXTENDED || defined __USE_ISOC99
-__inline_mathop(rint, int)
-__inline_mathop(expm1, etoxm1)
-__inline_mathop(log1p, lognp1)
-# endif
-
-# ifdef __USE_MISC
-__inline_mathop(significand, getman)
-# endif
-
-# ifdef __USE_ISOC99
-__inline_mathop(trunc, intrz)
-# endif
-
-#endif /* !__NO_MATH_INLINES && __OPTIMIZE__ */
-
-/* This macro contains the definition for the rest of the inline
- functions, using FLOAT_TYPE as the domain type and S as the suffix
- for the function names. */
-
-#define __inline_functions(float_type, s) \
-__m81_defun (float_type, __CONCAT(__floor,s), (float_type __x)) \
-{ \
- float_type __result; \
- unsigned long int __ctrl_reg;
\
- __asm __volatile__ ("fmove%.l %!, %0" : "=dm" (__ctrl_reg)); \
- /* Set rounding towards negative infinity. */ \
- __asm __volatile__ ("fmove%.l %0, %!" : /* No outputs. */ \
- : "dmi" ((__ctrl_reg & ~0x10) | 0x20)); \
- /* Convert X to an integer, using -Inf rounding. */ \
- __asm __volatile__ ("fint%.x %1, %0" : "=f" (__result) : "f" (__x)); \
- /* Restore the previous rounding mode. */ \
- __asm __volatile__ ("fmove%.l %0, %!" : /* No outputs. */ \
- : "dmi" (__ctrl_reg)); \
- return __result; \
-} \
- \
-__m81_defun (float_type, __CONCAT(__ceil,s), (float_type __x)) \
-{ \
- float_type __result; \
- unsigned long int __ctrl_reg;
\
- __asm __volatile__ ("fmove%.l %!, %0" : "=dm" (__ctrl_reg)); \
- /* Set rounding towards positive infinity. */ \
- __asm __volatile__ ("fmove%.l %0, %!" : /* No outputs. */ \
- : "dmi" (__ctrl_reg | 0x30)); \
- /* Convert X to an integer, using +Inf rounding. */ \
- __asm __volatile__ ("fint%.x %1, %0" : "=f" (__result) : "f" (__x)); \
- /* Restore the previous rounding mode. */ \
- __asm __volatile__ ("fmove%.l %0, %!" : /* No outputs. */ \
- : "dmi" (__ctrl_reg)); \
- return __result; \
-}
-
-__inline_functions(double,)
-#if defined __USE_MISC || defined __USE_ISOC99
-__inline_functions(float,f)
-#ifndef NO_LONG_DOUBLE
-__inline_functions(long double,l)
-#endif
-#endif
-#undef __inline_functions
-
-#ifdef __USE_MISC
-
-# define __inline_functions(float_type, s) \
-__m81_defun (int, __CONCAT(__isinf,s), (float_type __value)) \
-{ \
- /* There is no branch-condition for infinity,
\
- so we must extract and examine the condition codes manually. */ \
- unsigned long int __fpsr; \
- __asm("ftst%.x %1\n" \
- "fmove%.l %/fpsr, %0" : "=dm" (__fpsr) : "f" (__value)); \
- return (__fpsr & (2 << 24)) ? (__fpsr & (8 << 24) ? -1 : 1) : 0; \
-} \
- \
-__m81_defun (int, __CONCAT(__finite,s), (float_type __value)) \
-{ \
- /* There is no branch-condition for infinity, so we must extract and \
- examine the condition codes manually. */ \
- unsigned long int __fpsr; \
- __asm ("ftst%.x %1\n"
\
- "fmove%.l %/fpsr, %0" : "=dm" (__fpsr) : "f" (__value)); \
- return (__fpsr & (3 << 24)) == 0; \
-} \
- \
-__m81_defun (float_type, __CONCAT(__scalbn,s), \
- (float_type __x, int __n)) \
-{ \
- float_type __result; \
- __asm ("fscale%.l %1, %0" : "=f" (__result) : "dmi" (__n), "0" (__x)); \
- return __result; \
-}
-
-__inline_functions(double,)
-__inline_functions(float,f)
-#ifndef NO_LONG_DOUBLE
-__inline_functions(long double,l)
-#endif
-# undef __inline_functions
-
-#endif /* Use misc. */
-
-#if defined __USE_MISC || defined __USE_XOPEN
-
-# define __inline_functions(float_type, s) \
-__m81_defun (int, __CONCAT(__isnan,s), (float_type __value)) \
-{ \
- char __result; \
- __asm("ftst%.x %1\n" \
- "fsun %0" : "=dm" (__result) : "f" (__value)); \
- return __result; \
-}
-
-__inline_functions(double,)
-# ifdef __USE_MISC
-__inline_functions(float,f)
-#ifndef NO_LONG_DOUBLE
-__inline_functions(long double,l)
-#endif
-# endif
-# undef __inline_functions
-
-#endif
-
-#ifdef __USE_ISOC99
-
-# define __inline_functions(float_type, s) \
-__m81_defun (int, __CONCAT(__signbit,s), (float_type __value)) \
-{ \
- /* There is no branch-condition for the sign bit, so we must extract \
- and examine the condition codes manually. */ \
- unsigned long int __fpsr; \
- __asm ("ftst%.x %1\n"
\
- "fmove%.l %/fpsr, %0" : "=dm" (__fpsr) : "f" (__value)); \
- return (__fpsr >> 27) & 1; \
-} \
- \
- __m81_defun (float_type, __CONCAT(__scalbln,s), \
- (float_type __x, long int __n)) \
-{ \
- return __CONCAT(__scalbn,s) (__x, __n); \
-} \
- \
-__m81_defun (float_type, __CONCAT(__nearbyint,s), (float_type __x)) \
-{ \
- float_type __result; \
- unsigned long int __ctrl_reg;
\
- __asm __volatile__ ("fmove%.l %!, %0" : "=dm" (__ctrl_reg)); \
- /* Temporarily disable the inexact exception. */ \
- __asm __volatile__ ("fmove%.l %0, %!" : /* No outputs. */ \
- : "dmi" (__ctrl_reg & ~0x200)); \
- __asm __volatile__ ("fint%.x %1, %0" : "=f" (__result) : "f" (__x)); \
- __asm __volatile__ ("fmove%.l %0, %!" : /* No outputs. */ \
- : "dmi" (__ctrl_reg)); \
- return __result; \
-} \
- \
-__m81_defun (long int, __CONCAT(__lrint,s), (float_type __x)) \
-{ \
- long int __result; \
- __asm ("fmove%.l %1, %0" : "=dm" (__result) : "f" (__x)); \
- return __result; \
-} \
- \
-__m81_inline float_type
\
-__m81_u(__CONCAT(__fma,s))(float_type __x, float_type __y, \
- float_type __z) \
-{ \
- return (__x * __y) + __z; \
-}
-
-__inline_functions (double,)
-__inline_functions (float,f)
-#ifndef NO_LONG_DOUBLE
-__inline_functions (long double,l)
-#endif
-# undef __inline_functions
-
-#endif /* Use ISO C9x */
-
-#ifdef __USE_GNU
-
-# define __inline_functions(float_type, s) \
-__m81_inline void \
-__m81_u(__CONCAT(__sincos,s))(float_type __x, float_type *__sinx, \
- float_type *__cosx) \
-{ \
- __asm ("fsincos%.x %2,%1:%0" \
- : "=f" (*__sinx), "=f" (*__cosx) : "f" (__x)); \
-}
-
-__inline_functions (double,)
-__inline_functions (float,f)
-#ifndef NO_LONG_DOUBLE
-__inline_functions (long double,l)
-#endif
-# undef __inline_functions
-
-#endif
-
-#if !defined __NO_MATH_INLINES && defined __OPTIMIZE__
-
-/* Define inline versions of the user visible functions. */
-
-/* Note that there must be no whitespace before the argument passed for
- NAME, to make token pasting work correctly with -traditional. */
-# define __inline_forward_c(rettype, name, args1, args2) \
-extern __inline rettype __attribute__((__const__)) \
- name args1 \
-{ \
- return __CONCAT(__,name) args2; \
-}
-
-# define __inline_forward(rettype, name, args1, args2) \
-extern __inline rettype name args1 \
-{ \
- return __CONCAT(__,name) args2; \
-}
-
-__inline_forward_c(double,floor, (double __x), (__x))
-__inline_forward_c(double,ceil, (double __x), (__x))
-# ifdef __USE_MISC
-# ifndef __USE_ISOC99 /* Conflict with macro of same name. */
-__inline_forward_c(int,isinf, (double __value), (__value))
-# endif
-__inline_forward_c(int,finite, (double __value), (__value))
-__inline_forward_c(double,scalbn, (double __x, int __n), (__x, __n))
-# endif
-# if defined __USE_MISC || defined __USE_XOPEN
-# ifndef __USE_ISOC99 /* Conflict with macro of same name. */
-__inline_forward_c(int,isnan, (double __value), (__value))
-# endif
-# endif
-# ifdef __USE_ISOC99
-__inline_forward_c(double,scalbln, (double __x, long int __n), (__x, __n))
-__inline_forward_c(double,nearbyint, (double __value), (__value))
-__inline_forward_c(long int,lrint, (double __value), (__value))
-__inline_forward_c(double,fma, (double __x, double __y, double __z),
- (__x, __y, __z))
-# endif
-# ifdef __USE_GNU
-__inline_forward(void,sincos, (double __x, double *__sinx, double *__cosx),
- (__x, __sinx, __cosx))
-# endif
-
-# if defined __USE_MISC || defined __USE_ISOC99
-
-__inline_forward_c(float,floorf, (float __x), (__x))
-__inline_forward_c(float,ceilf, (float __x), (__x))
-# ifdef __USE_MISC
-__inline_forward_c(int,isinff, (float __value), (__value))
-__inline_forward_c(int,finitef, (float __value), (__value))
-__inline_forward_c(float,scalbnf, (float __x, int __n), (__x, __n))
-__inline_forward_c(int,isnanf, (float __value), (__value))
-# endif
-# ifdef __USE_ISOC99
-__inline_forward_c(float,scalblnf, (float __x, long int __n), (__x, __n))
-__inline_forward_c(float,nearbyintf, (float __value), (__value))
-__inline_forward_c(long int,lrintf, (float __value), (__value))
-__inline_forward_c(float,fmaf, (float __x, float __y, float __z),
- (__x, __y, __z))
-# endif
-# ifdef __USE_GNU
-__inline_forward(void,sincosf, (float __x, float *__sinx, float *__cosx),
- (__x, __sinx, __cosx))
-# endif
-
-# ifndef NO_LONG_DOUBLE
-__inline_forward_c(long double,floorl, (long double __x), (__x))
-__inline_forward_c(long double,ceill, (long double __x), (__x))
-# ifdef __USE_MISC
-__inline_forward_c(int,isinfl, (long double __value), (__value))
-__inline_forward_c(int,finitel, (long double __value), (__value))
-__inline_forward_c(long double,scalbnl, (long double __x, int __n), (__x, __n))
-__inline_forward_c(int,isnanl, (long double __value), (__value))
-# endif
-# ifdef __USE_ISOC99
-__inline_forward_c(long double,scalblnl, (long double __x, long int __n),
- (__x, __n))
-__inline_forward_c(long double,nearbyintl, (long double __value), (__value))
-__inline_forward_c(long int,lrintl, (long double __value), (__value))
-__inline_forward_c(long double,fmal,
- (long double __x, long double __y, long double __z),
- (__x, __y, __z))
-# endif
-# ifdef __USE_GNU
-__inline_forward(void,sincosl,
- (long double __x, long double *__sinx, long double *__cosx),
- (__x, __sinx, __cosx))
-# endif
-# endif
-
-#endif /* Use misc or ISO C99 */
-
-#undef __inline_forward
-#undef __inline_forward_c
-
-#endif /* !__NO_MATH_INLINES && __OPTIMIZE__ */
-
-#endif
-#endif /* GCC. */
diff --git a/src/system/libroot/posix/glibc/include/arch/ppc/bits/mathinline.h
b/src/system/libroot/posix/glibc/include/arch/ppc/bits/mathinline.h
deleted file mode 100644
index e0435516ef..0000000000
--- a/src/system/libroot/posix/glibc/include/arch/ppc/bits/mathinline.h
+++ /dev/null
@@ -1,101 +0,0 @@
-/* Inline math functions for powerpc.
- Copyright (C) 1995,1996,1997,1998,1999,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 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. */
-
-#if defined __GNUC__ && !defined _SOFT_FLOAT
-
-#ifdef __USE_ISOC99
-# if __GNUC_PREREQ (2,96)
-
-# define isgreater(x, y) __builtin_isgreater (x, y)
-# define isgreaterequal(x, y) __builtin_isgreaterequal (x, y)
-# define isless(x, y) __builtin_isless (x, y)
-# define islessequal(x, y) __builtin_islessequal (x, y)
-# define islessgreater(x, y) __builtin_islessgreater (x, y)
-# define isunordered(x, y) __builtin_isunordered (x, y)
-
-# else
-
-# define __unordered_cmp(x, y) \
- (__extension__ \
- ({ __typeof__(x) __x = (x); __typeof__(y) __y = (y);
\
- unsigned __r; \
- __asm__("fcmpu 7,%1,%2 ; mfcr %0" : "=r" (__r) : "f" (__x), "f"(__y) \
- : "cr7"); \
- __r; }))
-
-# define isgreater(x, y) (__unordered_cmp (x, y) >> 2 & 1)
-# define isgreaterequal(x, y) ((__unordered_cmp (x, y) & 6) != 0)
-# define isless(x, y) (__unordered_cmp (x, y) >> 3 & 1)
-# define islessequal(x, y) ((__unordered_cmp (x, y) & 0xA) != 0)
-# define islessgreater(x, y) ((__unordered_cmp (x, y) & 0xC) != 0)
-# define isunordered(x, y) (__unordered_cmp (x, y) & 1)
-
-# endif /* __GNUC_PREREQ (2,97) */
-#endif /* __USE_ISOC99 */
-
-#if !defined __NO_MATH_INLINES && defined __OPTIMIZE__
-
-#ifndef __extern_always_inline
-# define __MATH_INLINE __inline
-#else
-# define __MATH_INLINE __extern_always_inline
-#endif /* __cplusplus */
-
-#ifdef __USE_ISOC99
-__MATH_INLINE long int lrint (double __x) __THROW;
-__MATH_INLINE long int
-lrint (double __x) __THROW
-{
- union {
- double __d;
- int __ll[2];
- } __u;
- __asm__ ("fctiw %0,%1" : "=f"(__u.__d) : "f"(__x));
- return __u.__ll[1];
-}
-
-__MATH_INLINE long int lrintf (float __x) __THROW;
-__MATH_INLINE long int
-lrintf (float __x) __THROW
-{
- union {
- double __d;
- int __ll[2];
- } __u;
- __asm__ ("fctiw %0,%1" : "=f"(__u.__d) : "f"(__x));
- return __u.__ll[1];
-}
-
-__MATH_INLINE double fdim (double __x, double __y) __THROW;
-__MATH_INLINE double
-fdim (double __x, double __y) __THROW
-{
- return __x < __y ? 0 : __x - __y;
-}
-
-__MATH_INLINE float fdimf (float __x, float __y) __THROW;
-__MATH_INLINE float
-fdimf (float __x, float __y) __THROW
-{
- return __x < __y ? 0 : __x - __y;
-}
-
-#endif /* __USE_ISOC99 */
-#endif /* !__NO_MATH_INLINES && __OPTIMIZE__ */
-#endif /* __GNUC__ && !_SOFT_FLOAT */
diff --git a/src/system/libroot/posix/glibc/include/arch/ppc/fenv_libc.h
b/src/system/libroot/posix/glibc/include/arch/ppc/fenv_libc.h
deleted file mode 100644
index 7ae12a7d2b..0000000000
--- a/src/system/libroot/posix/glibc/include/arch/ppc/fenv_libc.h
+++ /dev/null
@@ -1,106 +0,0 @@
-/* Internal libc stuff for floating point environment routines.
- Copyright (C) 1997 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. */
-
-#ifndef _FENV_LIBC_H
-#define _FENV_LIBC_H 1
-
-#include <fenv.h>
-
-/* The sticky bits in the FPSCR indicating exceptions have occurred. */
-#define FPSCR_STICKY_BITS ((FE_ALL_EXCEPT | FE_ALL_INVALID) & ~FE_INVALID)
-
-/* Equivalent to fegetenv, but returns a fenv_t instead of taking a
- pointer. */
-#define fegetenv_register() \
- ({ fenv_t env; asm volatile ("mffs %0" : "=f" (env)); env; })
-
-/* Equivalent to fesetenv, but takes a fenv_t instead of a pointer. */
-#define fesetenv_register(env) \
- ({ double d = (env); asm volatile ("mtfsf 0xff,%0" : : "f" (d)); })
-
-/* This very handy macro:
- - Sets the rounding mode to 'round to nearest';
- - Sets the processor into IEEE mode; and
- - Prevents exceptions from being raised for inexact results.
- These things happen to be exactly what you need for typical elementary
- functions. */
-#define relax_fenv_state() asm ("mtfsfi 7,0")
-
-/* Set/clear a particular FPSCR bit (for instance,
- reset_fpscr_bit(FPSCR_VE);
- prevents INVALID exceptions from being raised). */
-#define set_fpscr_bit(x) asm volatile ("mtfsb1 %0" : : "i"(x))
-#define reset_fpscr_bit(x) asm volatile ("mtfsb0 %0" : : "i"(x))
-
-typedef union
-{
- fenv_t fenv;
- unsigned int l[2];
-} fenv_union_t;
-
-/* Definitions of all the FPSCR bit numbers */
-enum {
- FPSCR_FX = 0, /* exception summary */
- FPSCR_FEX, /* enabled exception summary */
- FPSCR_VX, /* invalid operation summary */
- FPSCR_OX, /* overflow */
- FPSCR_UX, /* underflow */
- FPSCR_ZX, /* zero divide */
- FPSCR_XX, /* inexact */
- FPSCR_VXSNAN, /* invalid operation for SNaN */
- FPSCR_VXISI, /* invalid operation for Inf-Inf */
- FPSCR_VXIDI, /* invalid operation for Inf/Inf */
- FPSCR_VXZDZ, /* invalid operation for 0/0 */
- FPSCR_VXIMZ, /* invalid operation for Inf*0 */
- FPSCR_VXVC, /* invalid operation for invalid compare */
- FPSCR_FR, /* fraction rounded [fraction was incremented by round] */
- FPSCR_FI, /* fraction inexact */
- FPSCR_FPRF_C, /* result class descriptor */
- FPSCR_FPRF_FL, /* result less than (usually, less than 0) */
- FPSCR_FPRF_FG, /* result greater than */
- FPSCR_FPRF_FE, /* result equal to */
- FPSCR_FPRF_FU, /* result unordered */
- FPSCR_20, /* reserved */
- FPSCR_VXSOFT, /* invalid operation set by software */
- FPSCR_VXSQRT, /* invalid operation for square root */
- FPSCR_VXCVI, /* invalid operation for invalid integer convert */
- FPSCR_VE, /* invalid operation exception enable */
- FPSCR_OE, /* overflow exception enable */
- FPSCR_UE, /* underflow exception enable */
- FPSCR_ZE, /* zero divide exception enable */
- FPSCR_XE, /* inexact exception enable */
- FPSCR_NI /* non-IEEE mode (typically, no denormalised numbers) */
- /* the remaining two least-significant bits keep the rounding mode */
-};
-
-/* This operation (i) sets the appropriate FPSCR bits for its
- parameter, (ii) converts SNaN to the corresponding NaN, and (iii)
- otherwise passes its parameter through unchanged (in particular, -0
- and +0 stay as they were). The `obvious' way to do this is optimised
- out by gcc. */
-#define f_wash(x) \
- ({ double d; asm volatile ("fmul %0,%1,%2" \
- : "=f"(d) \
- : "f" (x), "f"((float)1.0)); d; })
-#define f_washf(x) \
- ({ float f; asm volatile ("fmuls %0,%1,%2" \
- : "=f"(f) \
- : "f" (x), "f"((float)1.0)); f; })
-
-#endif /* fenv_libc.h */
diff --git a/src/system/libroot/posix/glibc/include/arch/riscv64/bits/floatn.h
b/src/system/libroot/posix/glibc/include/arch/riscv64/bits/floatn.h
deleted file mode 100644
index fb31be29e6..0000000000
--- a/src/system/libroot/posix/glibc/include/arch/riscv64/bits/floatn.h
+++ /dev/null
@@ -1,97 +0,0 @@
-/* Macros to control TS 18661-3 glibc features on ldbl-128 platforms.
- Copyright (C) 2017-2019 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 _BITS_FLOATN_H
-#define _BITS_FLOATN_H
-
-#include <features.h>
-#include <bits/long-double.h>
-
-/* Defined to 1 if the current compiler invocation provides a
- floating-point type with the IEEE 754 binary128 format, and this
- glibc includes corresponding *f128 interfaces for it. */
-#ifndef __NO_LONG_DOUBLE_MATH
-# define __HAVE_FLOAT128 1
-#else
-/* glibc does not support _Float128 for platforms where long double is
- normally binary128 when building with long double as binary64.
- GCC's default for supported scalar modes does not support it either
- in that case. */
-# define __HAVE_FLOAT128 0
-#endif
-
-/* Defined to 1 if __HAVE_FLOAT128 is 1 and the type is ABI-distinct
- from the default float, double and long double types in this glibc. */
-#define __HAVE_DISTINCT_FLOAT128 0
-
-/* Defined to 1 if the current compiler invocation provides a
- floating-point type with the right format for _Float64x, and this
- glibc includes corresponding *f64x interfaces for it. */
-#define __HAVE_FLOAT64X __HAVE_FLOAT128
-
-/* Defined to 1 if __HAVE_FLOAT64X is 1 and _Float64x has the format
- of long double. Otherwise, if __HAVE_FLOAT64X is 1, _Float64x has
- the format of _Float128, which must be different from that of long
- double. */
-#define __HAVE_FLOAT64X_LONG_DOUBLE __HAVE_FLOAT128
-
-#ifndef __ASSEMBLER__
-
-/* Defined to concatenate the literal suffix to be used with _Float128
- types, if __HAVE_FLOAT128 is 1. */
-# if __HAVE_FLOAT128
-# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
-/* The literal suffix f128 exists only since GCC 7.0. */
-# define __f128(x) x##l
-# else
-# define __f128(x) x##f128
-# endif
-# endif
-
-/* Defined to a complex binary128 type if __HAVE_FLOAT128 is 1. */
-# if __HAVE_FLOAT128
-# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
-# define __CFLOAT128 _Complex long double
-# else
-# define __CFLOAT128 _Complex _Float128
-# endif
-# endif
-
-/* The remaining of this file provides support for older compilers. */
-# if __HAVE_FLOAT128
-
-/* The type _Float128 exists only since GCC 7.0. */
-# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
-typedef long double _Float128;
-# endif
-
-/* Various built-in functions do not exist before GCC 7.0. */
-# if !__GNUC_PREREQ (7, 0)
-# define __builtin_huge_valf128() (__builtin_huge_vall ())
-# define __builtin_inff128() (__builtin_infl ())
-# define __builtin_nanf128(x) (__builtin_nanl (x))
-# define __builtin_nansf128(x) (__builtin_nansl (x))
-# endif
-
-# endif
-
-#endif /* !__ASSEMBLER__. */
-
-#include <bits/floatn-common.h>
-
-#endif /* _BITS_FLOATN_H */
diff --git
a/src/system/libroot/posix/glibc/include/arch/riscv64/bits/mathinline.h
b/src/system/libroot/posix/glibc/include/arch/riscv64/bits/mathinline.h
deleted file mode 100644
index b9b3f6efab..0000000000
--- a/src/system/libroot/posix/glibc/include/arch/riscv64/bits/mathinline.h
+++ /dev/null
@@ -1,22 +0,0 @@
-#ifndef _MATH_H
-# error "Never use <bits/mathinline.h> directly; include <math.h> instead."
-#endif
-
-#define __NTH(fct) __attribute__ ((__nothrow__)) fct
-
-#ifndef __extern_always_inline
-# define __MATH_INLINE __inline
-#else
-# define __MATH_INLINE __extern_always_inline
-#endif
-
-#if defined __USE_ISOC99
-
-# define isgreater(x, y) __builtin_isgreater (x, y)
-# define isgreaterequal(x, y) __builtin_isgreaterequal (x, y)
-# define isless(x, y) __builtin_isless (x, y)
-# define islessequal(x, y) __builtin_islessequal (x, y)
-# define islessgreater(x, y) __builtin_islessgreater (x, y)
-# define isunordered(x, y) __builtin_isunordered (x, y)
-
-#endif
diff --git a/src/system/libroot/posix/glibc/include/arch/sparc/bits/floatn.h
b/src/system/libroot/posix/glibc/include/arch/sparc/bits/floatn.h
deleted file mode 100644
index fb31be29e6..0000000000
--- a/src/system/libroot/posix/glibc/include/arch/sparc/bits/floatn.h
+++ /dev/null
@@ -1,97 +0,0 @@
-/* Macros to control TS 18661-3 glibc features on ldbl-128 platforms.
- Copyright (C) 2017-2019 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 _BITS_FLOATN_H
-#define _BITS_FLOATN_H
-
-#include <features.h>
-#include <bits/long-double.h>
-
-/* Defined to 1 if the current compiler invocation provides a
- floating-point type with the IEEE 754 binary128 format, and this
- glibc includes corresponding *f128 interfaces for it. */
-#ifndef __NO_LONG_DOUBLE_MATH
-# define __HAVE_FLOAT128 1
-#else
-/* glibc does not support _Float128 for platforms where long double is
- normally binary128 when building with long double as binary64.
- GCC's default for supported scalar modes does not support it either
- in that case. */
-# define __HAVE_FLOAT128 0
-#endif
-
-/* Defined to 1 if __HAVE_FLOAT128 is 1 and the type is ABI-distinct
- from the default float, double and long double types in this glibc. */
-#define __HAVE_DISTINCT_FLOAT128 0
-
-/* Defined to 1 if the current compiler invocation provides a
- floating-point type with the right format for _Float64x, and this
- glibc includes corresponding *f64x interfaces for it. */
-#define __HAVE_FLOAT64X __HAVE_FLOAT128
-
-/* Defined to 1 if __HAVE_FLOAT64X is 1 and _Float64x has the format
- of long double. Otherwise, if __HAVE_FLOAT64X is 1, _Float64x has
- the format of _Float128, which must be different from that of long
- double. */
-#define __HAVE_FLOAT64X_LONG_DOUBLE __HAVE_FLOAT128
-
-#ifndef __ASSEMBLER__
-
-/* Defined to concatenate the literal suffix to be used with _Float128
- types, if __HAVE_FLOAT128 is 1. */
-# if __HAVE_FLOAT128
-# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
-/* The literal suffix f128 exists only since GCC 7.0. */
-# define __f128(x) x##l
-# else
-# define __f128(x) x##f128
-# endif
-# endif
-
-/* Defined to a complex binary128 type if __HAVE_FLOAT128 is 1. */
-# if __HAVE_FLOAT128
-# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
-# define __CFLOAT128 _Complex long double
-# else
-# define __CFLOAT128 _Complex _Float128
-# endif
-# endif
-
-/* The remaining of this file provides support for older compilers. */
-# if __HAVE_FLOAT128
-
-/* The type _Float128 exists only since GCC 7.0. */
-# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
-typedef long double _Float128;
-# endif
-
-/* Various built-in functions do not exist before GCC 7.0. */
-# if !__GNUC_PREREQ (7, 0)
-# define __builtin_huge_valf128() (__builtin_huge_vall ())
-# define __builtin_inff128() (__builtin_infl ())
-# define __builtin_nanf128(x) (__builtin_nanl (x))
-# define __builtin_nansf128(x) (__builtin_nansl (x))
-# endif
-
-# endif
-
-#endif /* !__ASSEMBLER__. */
-
-#include <bits/floatn-common.h>
-
-#endif /* _BITS_FLOATN_H */
diff --git
a/src/system/libroot/posix/glibc/include/arch/sparc/bits/mathinline.h
b/src/system/libroot/posix/glibc/include/arch/sparc/bits/mathinline.h
deleted file mode 100644
index b9b3f6efab..0000000000
--- a/src/system/libroot/posix/glibc/include/arch/sparc/bits/mathinline.h
+++ /dev/null
@@ -1,22 +0,0 @@
-#ifndef _MATH_H
-# error "Never use <bits/mathinline.h> directly; include <math.h> instead."
-#endif
-
-#define __NTH(fct) __attribute__ ((__nothrow__)) fct
-
-#ifndef __extern_always_inline
-# define __MATH_INLINE __inline
-#else
-# define __MATH_INLINE __extern_always_inline
-#endif
-
-#if defined __USE_ISOC99
-
-# define isgreater(x, y) __builtin_isgreater (x, y)
-# define isgreaterequal(x, y) __builtin_isgreaterequal (x, y)
-# define isless(x, y) __builtin_isless (x, y)
-# define islessequal(x, y) __builtin_islessequal (x, y)
-# define islessgreater(x, y) __builtin_islessgreater (x, y)
-# define isunordered(x, y) __builtin_isunordered (x, y)
-
-#endif
diff --git a/src/system/libroot/posix/glibc/include/arch/sparc/fenv_private.h
b/src/system/libroot/posix/glibc/include/arch/sparc/fenv_private.h
deleted file mode 100644
index 634ca6668d..0000000000
--- a/src/system/libroot/posix/glibc/include/arch/sparc/fenv_private.h
+++ /dev/null
@@ -1,172 +0,0 @@
-#ifndef FENV_PRIVATE_H
-#define FENV_PRIVATE_H 1
-
-#include <fenv.h>
-
-static __always_inline void
-libc_fesetround (int r)
-{
- fenv_t etmp;
- __fenv_stfsr(etmp);
- etmp = (etmp & ~__FE_ROUND_MASK) | (r);
- __fenv_ldfsr(etmp);
-}
-
-static __always_inline void
-libc_feholdexcept_setround (fenv_t *e, int r)
-{
- fenv_t etmp;
- __fenv_stfsr(etmp);
- *(e) = etmp;
- etmp = etmp & ~((0x1f << 23) | FE_ALL_EXCEPT);
- etmp = (etmp & ~__FE_ROUND_MASK) | (r);
- __fenv_ldfsr(etmp);
-}
-
-static __always_inline int
-libc_fetestexcept (int e)
-{
- fenv_t etmp;
- __fenv_stfsr(etmp);
- return etmp & (e) & FE_ALL_EXCEPT;
-}
-
-static __always_inline void
-libc_fesetenv (fenv_t *e)
-{
- __fenv_ldfsr(*e);
-}
-
-static __always_inline int
-libc_feupdateenv_test (fenv_t *e, int ex)
-{
- fenv_t etmp;
-
- __fenv_stfsr(etmp);
- etmp &= FE_ALL_EXCEPT;
-
- __fenv_ldfsr(*e);
-
- __feraiseexcept (etmp);
-
- return etmp & ex;
-}
-
-static __always_inline void
-libc_feupdateenv (fenv_t *e)
-{
- libc_feupdateenv_test (e, 0);
-}
-
-static __always_inline void
-libc_feholdsetround (fenv_t *e, int r)
-{
- fenv_t etmp;
- __fenv_stfsr(etmp);
- *(e) = etmp;
- etmp = (etmp & ~__FE_ROUND_MASK) | (r);
- __fenv_ldfsr(etmp);
-}
-
-static __always_inline void
-libc_feresetround (fenv_t *e)
-{
- fenv_t etmp;
- __fenv_stfsr(etmp);
- etmp = (etmp & ~__FE_ROUND_MASK) | (*e & __FE_ROUND_MASK);
- __fenv_ldfsr(etmp);
-}
-
-#define libc_feholdexceptf libc_feholdexcept
-#define libc_fesetroundf libc_fesetround
-#define libc_feholdexcept_setroundf libc_feholdexcept_setround
-#define libc_fetestexceptf libc_fetestexcept
-#define libc_fesetenvf libc_fesetenv
-#define libc_feupdateenv_testf libc_feupdateenv_test
-#define libc_feupdateenvf libc_feupdateenv
-#define libc_feholdsetroundf libc_feholdsetround
-#define libc_feresetroundf libc_feresetround
-#define libc_feholdexcept libc_feholdexcept
-#define libc_fesetround libc_fesetround
-#define libc_feholdexcept_setround libc_feholdexcept_setround
-#define libc_fetestexcept libc_fetestexcept
-#define libc_fesetenv libc_fesetenv
-#define libc_feupdateenv_test libc_feupdateenv_test
-#define libc_feupdateenv libc_feupdateenv
-#define libc_feholdsetround libc_feholdsetround
-#define libc_feresetround libc_feresetround
-#define libc_feholdexceptl libc_feholdexcept
-#define libc_fesetroundl libc_fesetround
-#define libc_feholdexcept_setroundl libc_feholdexcept_setround
-#define libc_fetestexceptl libc_fetestexcept
-#define libc_fesetenvl libc_fesetenv
-#define libc_feupdateenv_testl libc_feupdateenv_test
-#define libc_feupdateenvl libc_feupdateenv
-#define libc_feholdsetroundl libc_feholdsetround
-#define libc_feresetroundl libc_feresetround
-
-/* We have support for rounding mode context. */
-#define HAVE_RM_CTX 1
-
-static __always_inline void
-libc_feholdexcept_setround_sparc_ctx (struct rm_ctx *ctx, int round)
-{
- fenv_t new;
-
- __fenv_stfsr(ctx->env);
- new = ctx->env & ~((0x1f << 23) | FE_ALL_EXCEPT);
- new = (new & ~__FE_ROUND_MASK) | round;
- if (__glibc_unlikely (new != ctx->env))
- {
- __fenv_ldfsr(new);
- ctx->updated_status = true;
- }
- else
- ctx->updated_status = false;
-}
-
-static __always_inline void
-libc_fesetenv_sparc_ctx (struct rm_ctx *ctx)
-{
- libc_fesetenv(&ctx->env);
-}
-
-static __always_inline void
-libc_feupdateenv_sparc_ctx (struct rm_ctx *ctx)
-{
- if (__glibc_unlikely (ctx->updated_status))
- libc_feupdateenv_test (&ctx->env, 0);
-}
-
[ *** diff truncated: 4118 lines dropped *** ]