diff options
Diffstat (limited to 'libc/ports/sysdeps/powerpc/powerpc32/e500')
89 files changed, 0 insertions, 2866 deletions
diff --git a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/Makefile b/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/Makefile deleted file mode 100644 index 3e7c9e92f..000000000 --- a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/Makefile +++ /dev/null @@ -1,11 +0,0 @@ -ifeq ($(subdir),stdlib) -spepim_routines = atosfix16 atosfix32 atosfix64 atoufix16 atoufix32 atoufix64 \ - strtosfix16 strtosfix32 strtosfix64 strtoufix16 strtoufix32 strtoufix64 -sysdep_routines += $(spepim_routines) -tests += tst-spepim -ifeq ($(build-shared),yes) -$(objpfx)tst-spepim: $(common-objpfx)math/libm.so$(libm.so-version) -else -$(objpfx)tst-spepim: $(common-objpfx)math/libm.a -endif -endif diff --git a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/Versions b/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/Versions deleted file mode 100644 index bd45e1dab..000000000 --- a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/Versions +++ /dev/null @@ -1,8 +0,0 @@ -libc { - GLIBC_2.3.3 { - atosfix16; atosfix32; atosfix64; - atoufix16; atoufix32; atoufix64; - strtosfix16; strtosfix32; strtosfix64; - strtoufix16; strtoufix32; strtoufix64; - } -} diff --git a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/__longjmp-common.S b/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/__longjmp-common.S deleted file mode 100644 index fbbee6023..000000000 --- a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/__longjmp-common.S +++ /dev/null @@ -1,107 +0,0 @@ -/* longjmp for PowerPC E500. - Copyright (C) 2004-2013 Free Software Foundation, Inc. - Contributed by Aldy Hernandez <aldyh@redhat.com>. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <sysdep.h> -#define _ASM -#define _SETJMP_H -#ifdef __NO_VMX__ -# include <novmxsetjmp.h> -#else -# include <jmpbuf-offsets.h> -#endif - -ENTRY (__longjmp) -#if defined PTR_DEMANGLE || defined CHECK_SP - lwz r24,(JB_GPR1*4)(r3) -# ifdef CHECK_SP -# ifdef PTR_DEMANGLE - PTR_DEMANGLE3 (r24, r24, r25) -# endif - CHECK_SP (r24) - mr r1,r24 -# endif -#else - lwz r1,(JB_GPR1*4)(r3) -#endif - lwz r0,(JB_LR*4)(r3) - /*lfd fp14,((JB_FPRS+0*2)*4)(r3)*/ - evldd r14,((JB_FPRS+0*2)*4)(r3) - lwz r14,((JB_GPRS+0)*4)(r3) - /*lfd fp15,((JB_FPRS+1*2)*4)(r3)*/ - evldd r15,((JB_FPRS+1*2)*4)(r3) - lwz r15,((JB_GPRS+1)*4)(r3) - /*lfd fp16,((JB_FPRS+2*2)*4)(r3)*/ - evldd r16,((JB_FPRS+2*2)*4)(r3) - lwz r16,((JB_GPRS+2)*4)(r3) - /*lfd fp17,((JB_FPRS+3*2)*4)(r3)*/ - evldd r17,((JB_FPRS+3*2)*4)(r3) - lwz r17,((JB_GPRS+3)*4)(r3) - /*lfd fp18,((JB_FPRS+4*2)*4)(r3)*/ - evldd r18,((JB_FPRS+4*2)*4)(r3) - lwz r18,((JB_GPRS+4)*4)(r3) - /*lfd fp19,((JB_FPRS+5*2)*4)(r3)*/ - evldd r19,((JB_FPRS+5*2)*4)(r3) - lwz r19,((JB_GPRS+5)*4)(r3) - /*lfd fp20,((JB_FPRS+6*2)*4)(r3)*/ - evldd r20,((JB_FPRS+6*2)*4)(r3) - lwz r20,((JB_GPRS+6)*4)(r3) -#ifdef PTR_DEMANGLE -# ifndef CHECK_SP - PTR_DEMANGLE3 (r1, r24, r25) -# endif - PTR_DEMANGLE2 (r0, r25) -#endif - mtlr r0 - /*lfd fp21,((JB_FPRS+7*2)*4)(r3)*/ - evldd r21,((JB_FPRS+7*2)*4)(r3) - lwz r21,((JB_GPRS+7)*4)(r3) - /*lfd fp22,((JB_FPRS+8*2)*4)(r3)*/ - evldd r22,((JB_FPRS+8*2)*4)(r3) - lwz r22,((JB_GPRS+8)*4)(r3) - lwz r0,(JB_CR*4)(r3) - /*lfd fp23,((JB_FPRS+9*2)*4)(r3)*/ - evldd r23,((JB_FPRS+9*2)*4)(r3) - lwz r23,((JB_GPRS+9)*4)(r3) - /*lfd fp24,((JB_FPRS+10*2)*4)(r3)*/ - evldd r24,((JB_FPRS+10*2)*4)(r3) - lwz r24,((JB_GPRS+10)*4)(r3) - /*lfd fp25,((JB_FPRS+11*2)*4)(r3)*/ - evldd r25,((JB_FPRS+11*2)*4)(r3) - lwz r25,((JB_GPRS+11)*4)(r3) - mtcrf 0xFF,r0 - /*lfd fp26,((JB_FPRS+12*2)*4)(r3)*/ - evldd r26,((JB_FPRS+12*2)*4)(r3) - lwz r26,((JB_GPRS+12)*4)(r3) - /*lfd fp27,((JB_FPRS+13*2)*4)(r3)*/ - evldd r27,((JB_FPRS+13*2)*4)(r3) - lwz r27,((JB_GPRS+13)*4)(r3) - /*lfd fp28,((JB_FPRS+14*2)*4)(r3)*/ - evldd r28,((JB_FPRS+14*2)*4)(r3) - lwz r28,((JB_GPRS+14)*4)(r3) - /*lfd fp29,((JB_FPRS+15*2)*4)(r3)*/ - evldd r29,((JB_FPRS+15*2)*4)(r3) - lwz r29,((JB_GPRS+15)*4)(r3) - /*lfd fp30,((JB_FPRS+16*2)*4)(r3)*/ - evldd r30,((JB_FPRS+16*2)*4)(r3) - lwz r30,((JB_GPRS+16)*4)(r3) - /*lfd fp31,((JB_FPRS+17*2)*4)(r3)*/ - evldd r31,((JB_FPRS+17*2)*4)(r3) - lwz r31,((JB_GPRS+17)*4)(r3) - mr r3,r4 - blr -END (__longjmp) diff --git a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/__longjmp.S b/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/__longjmp.S deleted file mode 100644 index 54d0c4b5a..000000000 --- a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/__longjmp.S +++ /dev/null @@ -1,38 +0,0 @@ -/* AltiVec/VMX (new) version of __longjmp for PowerPC. - Copyright (C) 1995-2013 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <libc-symbols.h> -#include <shlib-compat.h> - -#if defined NOT_IN_libc -/* Build a non-versioned object for rtld-*. */ -# include "__longjmp-common.S" - -#else /* !NOT_IN_libc */ -strong_alias (__vmx__longjmp, __longjmp); -# define __longjmp __vmx__longjmp -# include "__longjmp-common.S" - -# if defined SHARED && SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_3_4) -# define __NO_VMX__ -# undef JB_SIZE -# undef __longjmp -# define __longjmp __novmx__longjmp -# include "__longjmp-common.S" -# endif -#endif /* !NOT_IN_libc */ diff --git a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/atosfix16.c b/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/atosfix16.c deleted file mode 100644 index 112c1b303..000000000 --- a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/atosfix16.c +++ /dev/null @@ -1,27 +0,0 @@ -/* Convert string to 16-bit signed fixed point. - Copyright (C) 2006-2013 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Joseph Myers <joseph@codesourcery.com>, 2006. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <stddef.h> -#include <spe.h> - -int16_t -atosfix16 (const char *str) -{ - return strtosfix16 (str, NULL); -} diff --git a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/atosfix32.c b/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/atosfix32.c deleted file mode 100644 index 238a0f629..000000000 --- a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/atosfix32.c +++ /dev/null @@ -1,27 +0,0 @@ -/* Convert string to 32-bit signed fixed point. - Copyright (C) 2006-2013 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Joseph Myers <joseph@codesourcery.com>, 2006. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <stddef.h> -#include <spe.h> - -int32_t -atosfix32 (const char *str) -{ - return strtosfix32 (str, NULL); -} diff --git a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/atosfix64.c b/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/atosfix64.c deleted file mode 100644 index 274b642da..000000000 --- a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/atosfix64.c +++ /dev/null @@ -1,27 +0,0 @@ -/* Convert string to 64-bit signed fixed point. - Copyright (C) 2006-2013 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Joseph Myers <joseph@codesourcery.com>, 2006. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <stddef.h> -#include <spe.h> - -int64_t -atosfix64 (const char *str) -{ - return strtosfix64 (str, NULL); -} diff --git a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/atoufix16.c b/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/atoufix16.c deleted file mode 100644 index 111735485..000000000 --- a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/atoufix16.c +++ /dev/null @@ -1,27 +0,0 @@ -/* Convert string to 16-bit unsigned fixed point. - Copyright (C) 2006-2013 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Joseph Myers <joseph@codesourcery.com>, 2006. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <stddef.h> -#include <spe.h> - -uint16_t -atoufix16 (const char *str) -{ - return strtoufix16 (str, NULL); -} diff --git a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/atoufix32.c b/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/atoufix32.c deleted file mode 100644 index de0f15f08..000000000 --- a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/atoufix32.c +++ /dev/null @@ -1,27 +0,0 @@ -/* Convert string to 32-bit unsigned fixed point. - Copyright (C) 2006-2013 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Joseph Myers <joseph@codesourcery.com>, 2006. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <stddef.h> -#include <spe.h> - -uint32_t -atoufix32 (const char *str) -{ - return strtoufix32 (str, NULL); -} diff --git a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/atoufix64.c b/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/atoufix64.c deleted file mode 100644 index b4abaae0f..000000000 --- a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/atoufix64.c +++ /dev/null @@ -1,27 +0,0 @@ -/* Convert string to 64-bit unsigned fixed point. - Copyright (C) 2006-2013 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Joseph Myers <joseph@codesourcery.com>, 2006. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <stddef.h> -#include <spe.h> - -uint64_t -atoufix64 (const char *str) -{ - return strtoufix64 (str, NULL); -} diff --git a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/e_sqrt.c b/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/e_sqrt.c deleted file mode 100644 index bdbeff477..000000000 --- a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/e_sqrt.c +++ /dev/null @@ -1 +0,0 @@ -#include <sysdeps/ieee754/dbl-64/e_sqrt.c> diff --git a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/e_sqrtf.c b/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/e_sqrtf.c deleted file mode 100644 index 8b2f552e1..000000000 --- a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/e_sqrtf.c +++ /dev/null @@ -1 +0,0 @@ -#include <sysdeps/ieee754/flt-32/e_sqrtf.c> diff --git a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/fclrexcpt.c b/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/fclrexcpt.c deleted file mode 100644 index b11a64f49..000000000 --- a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/fclrexcpt.c +++ /dev/null @@ -1,47 +0,0 @@ -/* Clear given exceptions in current floating-point environment. - Copyright (C) 2004-2013 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <fenv_libc.h> - -#undef feclearexcept -int -__feclearexcept (int excepts) -{ - unsigned int fpescr; - - /* Get the current state. */ - fpescr = fegetenv_register (); - - /* Clear the relevant bits. */ - fpescr &= ~(excepts & FE_ALL_EXCEPT); - - /* Put the new state in effect. */ - fesetenv_register (fpescr); - - /* Success. */ - return 0; -} - -#include <shlib-compat.h> -#if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_2) -strong_alias (__feclearexcept, __old_feclearexcept) -compat_symbol (libm, __old_feclearexcept, feclearexcept, GLIBC_2_1); -#endif - -libm_hidden_ver (__feclearexcept, feclearexcept) -versioned_symbol (libm, __feclearexcept, feclearexcept, GLIBC_2_2); diff --git a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/fe_nomask.c b/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/fe_nomask.c deleted file mode 100644 index bf5ed73b2..000000000 --- a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/fe_nomask.c +++ /dev/null @@ -1,31 +0,0 @@ -/* Procedure definition for FE_NOMASK_ENV. - Copyright (C) 1997-2013 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <fenv.h> -#include <errno.h> - -/* This is presently a stub, until it's decided how the kernels should - support this. */ - -const fenv_t * -__fe_nomask_env(void) -{ - __set_errno (ENOSYS); - return FE_ENABLED_ENV; -} -stub_warning (__fe_nomask_env) diff --git a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/fedisblxcpt.c b/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/fedisblxcpt.c deleted file mode 100644 index 4008dec41..000000000 --- a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/fedisblxcpt.c +++ /dev/null @@ -1,59 +0,0 @@ -/* Disable floating-point exceptions. - Copyright (C) 2004-2013 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Aldy Hernandez <aldyh@redhat.com>, 2004. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <fenv_libc.h> -#include <sysdep.h> -#include <sys/prctl.h> - -int -fedisableexcept (int excepts) -{ - unsigned int result = 0, pflags, r; - INTERNAL_SYSCALL_DECL (err); - - INTERNAL_SYSCALL (prctl, err, 2, PR_GET_FPEXC, &pflags); - - /* Save old enable bits. */ - if (pflags & PR_FP_EXC_OVF) - result |= FE_OVERFLOW; - if (pflags & PR_FP_EXC_UND) - result |= FE_UNDERFLOW; - if (pflags & PR_FP_EXC_INV) - result |= FE_INVALID; - if (pflags & PR_FP_EXC_DIV) - result |= FE_DIVBYZERO; - if (pflags & PR_FP_EXC_RES) - result |= FE_INEXACT; - - if (excepts & FE_INEXACT) - pflags &= ~PR_FP_EXC_RES; - if (excepts & FE_DIVBYZERO) - pflags &= ~PR_FP_EXC_DIV; - if (excepts & FE_UNDERFLOW) - pflags &= ~PR_FP_EXC_UND; - if (excepts & FE_OVERFLOW) - pflags &= ~PR_FP_EXC_OVF; - if (excepts & FE_INVALID) - pflags &= ~PR_FP_EXC_INV; - r = INTERNAL_SYSCALL (prctl, err, 2, PR_SET_FPEXC, pflags); - if (INTERNAL_SYSCALL_ERROR_P (r, err)) - return -1; - - return result; -} diff --git a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/feenablxcpt.c b/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/feenablxcpt.c deleted file mode 100644 index f41104399..000000000 --- a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/feenablxcpt.c +++ /dev/null @@ -1,59 +0,0 @@ -/* Enable floating-point exceptions. - Copyright (C) 2004-2013 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Aldy Hernandez <aldyh@redhat.com>, 2004. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <fenv_libc.h> -#include <sysdep.h> -#include <sys/prctl.h> - -int -feenableexcept (int excepts) -{ - unsigned int result = 0, pflags, r; - INTERNAL_SYSCALL_DECL (err); - - INTERNAL_SYSCALL (prctl, err, 2, PR_GET_FPEXC, &pflags); - - /* Save old enable bits. */ - if (pflags & PR_FP_EXC_OVF) - result |= FE_OVERFLOW; - if (pflags & PR_FP_EXC_UND) - result |= FE_UNDERFLOW; - if (pflags & PR_FP_EXC_INV) - result |= FE_INVALID; - if (pflags & PR_FP_EXC_DIV) - result |= FE_DIVBYZERO; - if (pflags & PR_FP_EXC_RES) - result |= FE_INEXACT; - - if (excepts & FE_INEXACT) - pflags |= PR_FP_EXC_RES; - if (excepts & FE_DIVBYZERO) - pflags |= PR_FP_EXC_DIV; - if (excepts & FE_UNDERFLOW) - pflags |= PR_FP_EXC_UND; - if (excepts & FE_OVERFLOW) - pflags |= PR_FP_EXC_OVF; - if (excepts & FE_INVALID) - pflags |= PR_FP_EXC_INV; - r = INTERNAL_SYSCALL (prctl, err, 2, PR_SET_FPEXC, pflags); - if (INTERNAL_SYSCALL_ERROR_P (r, err)) - return -1; - - return result; -} diff --git a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/fegetenv.c b/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/fegetenv.c deleted file mode 100644 index 693121306..000000000 --- a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/fegetenv.c +++ /dev/null @@ -1,44 +0,0 @@ -/* Store current floating-point environment. - Copyright (C) 2004-2013 Free Software Foundation, Inc. - Contributed by Aldy Hernandez <aldyh@redhat.com>, 2004 - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <fenv_libc.h> -#include <sysdep.h> -#include <sys/prctl.h> - -int -__fegetenv (fenv_t *envp) -{ - fenv_union_t u; - INTERNAL_SYSCALL_DECL (err); - - INTERNAL_SYSCALL (prctl, err, 2, PR_GET_FPEXC, &u.l[0]); - u.l[1] = fegetenv_register (); - *envp = u.fenv; - - /* Success. */ - return 0; -} - -#include <shlib-compat.h> -#if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_2) -strong_alias (__fegetenv, __old_fegetenv) -compat_symbol (libm, __old_fegetenv, fegetenv, GLIBC_2_1); -#endif - -versioned_symbol (libm, __fegetenv, fegetenv, GLIBC_2_2); diff --git a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/fegetexcept.c b/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/fegetexcept.c deleted file mode 100644 index 71c1e19cb..000000000 --- a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/fegetexcept.c +++ /dev/null @@ -1,30 +0,0 @@ -/* Get floating-point exceptions. - Copyright (C) 2004-2013 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Aldy Hernandez <aldyh@redhat.com>, 2004. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <fenv_libc.h> - -int -fegetexcept (void) -{ - unsigned long fpescr; - - fpescr = fegetenv_register (); - - return fpescr & FE_ALL_EXCEPT; -} diff --git a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/fegetround.c b/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/fegetround.c deleted file mode 100644 index 68b60ad08..000000000 --- a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/fegetround.c +++ /dev/null @@ -1,30 +0,0 @@ -/* Return current rounding direction. - Copyright (C) 2004-2013 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Aldy Hernandez <aldyh@redhat.com>, 2004. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <fenv_libc.h> - -#undef fegetround -int -fegetround (void) -{ - unsigned long fpescr; - - fpescr = fegetenv_register (); - return fpescr & 3; -} diff --git a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/feholdexcpt.c b/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/feholdexcpt.c deleted file mode 100644 index b9e202d48..000000000 --- a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/feholdexcpt.c +++ /dev/null @@ -1,44 +0,0 @@ -/* Store current floating-point environment and clear exceptions. - Copyright (C) 2004-2013 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Aldy Hernandez <aldyh@redhat.com>, 2004. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <fenv_libc.h> -#include <sysdep.h> -#include <sys/prctl.h> - -int -feholdexcept (fenv_t *envp) -{ - fenv_union_t u; - INTERNAL_SYSCALL_DECL (err); - - - /* Get the current state. */ - INTERNAL_SYSCALL (prctl, err, 2, PR_GET_FPEXC, &u.l[0]); - u.l[1] = fegetenv_register (); - *envp = u.fenv; - - /* Clear everything except for the rounding mode. */ - u.l[1] &= 3; - - /* Put the new state in effect. */ - fesetenv_register (u.l[1]); - - return 0; -} -libm_hidden_def (feholdexcept) diff --git a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/fenv_const.c b/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/fenv_const.c deleted file mode 100644 index 15cf7f769..000000000 --- a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/fenv_const.c +++ /dev/null @@ -1,26 +0,0 @@ -/* Constants for fenv_bits.h. - Copyright (C) 2004-2013 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Aldy Hernandez <aldyh@redhat.com>, 2004. - - 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/>. */ - -/* If the default argument is used we use this value. */ -const unsigned long long __fe_dfl_env __attribute__ ((aligned (8))) = -0x0ULL; - -/* Floating-point environment where none of the exceptions are masked. */ -const unsigned long long __fe_enabled_env __attribute__ ((aligned (8))) = -0xF00000000ULL; diff --git a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/fenv_libc.h b/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/fenv_libc.h deleted file mode 100644 index e068ee357..000000000 --- a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/fenv_libc.h +++ /dev/null @@ -1,76 +0,0 @@ -/* Internal libc stuff for floating point environment routines. - Copyright (C) 2004-2013 Free Software Foundation, Inc. - Contributed by Aldy Hernandez <aldyh@redhat.com>, 2004 - 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_LIBC_H -#define _FENV_LIBC_H 1 - -#include <fenv.h> - -extern int __feraiseexcept_internal (int __excepts); - -/* Equivalent to fegetenv, but returns a fenv_t instead of taking a - pointer. */ -#define fegetenv_register() \ - ({ unsigned fscr; asm volatile ("mfspefscr %0" : "=r" (fscr)); fscr; }) - -/* Equivalent to fesetenv, but takes a fenv_t instead of a pointer. */ -#define fesetenv_register(fscr) \ - ({ asm volatile ("mtspefscr %0" : : "r" (fscr)); }) - -typedef union -{ - fenv_t fenv; - unsigned int l[2]; -} fenv_union_t; - -/* Definitions of all the SPEFSCR bit numbers. */ -enum { - SPEFSCR_SOVH = 0x80000000, - SPEFSCR_OVH = 0x40000000, - SPEFSCR_FGH = 0x20000000, - SPEFSCR_FXH = 0x10000000, - SPEFSCR_FINVH = 0x08000000, - SPEFSCR_FDBZH = 0x04000000, - SPEFSCR_FUNFH = 0x02000000, - SPEFSCR_FOVFH = 0x01000000, - /* 2 unused bits. */ - SPEFSCR_FINXS = 0x00200000, - SPEFSCR_FINVS = 0x00100000, - SPEFSCR_FDBZS = 0x00080000, - SPEFSCR_FUNFS = 0x00040000, - SPEFSCR_FOVFS = 0x00020000, - SPEFSCR_MODE = 0x00010000, - SPEFSCR_SOV = 0x00008000, - SPEFSCR_OV = 0x00004000, - SPEFSCR_FG = 0x00002000, - SPEFSCR_FX = 0x00001000, - SPEFSCR_FINV = 0x00000800, - SPEFSCR_FDBZ = 0x00000400, - SPEFSCR_FUNF = 0x00000200, - SPEFSCR_FOVF = 0x00000100, - /* 1 unused bit. */ - SPEFSCR_FINXE = 0x00000040, - SPEFSCR_FINVE = 0x00000020, - SPEFSCR_FDBZE = 0x00000010, - SPEFSCR_FUNFE = 0x00000008, - SPEFSCR_FOVFE = 0x00000004, - SPEFSCR_FRMC = 0x00000003 -}; - -#endif /* fenv_libc.h */ diff --git a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/fesetenv.c b/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/fesetenv.c deleted file mode 100644 index e9411a89d..000000000 --- a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/fesetenv.c +++ /dev/null @@ -1,44 +0,0 @@ -/* Install given floating-point environment. - Copyright (C) 1997-2013 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <fenv_libc.h> -#include <sysdep.h> -#include <sys/prctl.h> - -int -__fesetenv (const fenv_t *envp) -{ - fenv_union_t u; - INTERNAL_SYSCALL_DECL (err); - - u.fenv = *envp; - INTERNAL_SYSCALL (prctl, err, 2, PR_SET_FPEXC, &u.l[0]); - fesetenv_register (u.l[1]); - - /* Success. */ - return 0; -} - -#include <shlib-compat.h> -#if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_2) -strong_alias (__fesetenv, __old_fesetenv) -compat_symbol (libm, __old_fesetenv, fesetenv, GLIBC_2_1); -#endif - -libm_hidden_ver (__fesetenv, fesetenv) -versioned_symbol (libm, __fesetenv, fesetenv, GLIBC_2_2); diff --git a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/fesetround.c b/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/fesetround.c deleted file mode 100644 index 00cad37be..000000000 --- a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/fesetround.c +++ /dev/null @@ -1,36 +0,0 @@ -/* Set current rounding direction. - Copyright (C) 2004-2013 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Aldy Hernandez <aldyh@redhat.com>, 2004. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <fenv_libc.h> - -int -fesetround (int round) -{ - unsigned long fpescr; - - if ((unsigned int) round > 3) - return 1; - - fpescr = fegetenv_register (); - fpescr = (fpescr & ~SPEFSCR_FRMC) | (round & 3); - fesetenv_register (fpescr); - - return 0; -} -libm_hidden_def (fesetround) diff --git a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/feupdateenv.c b/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/feupdateenv.c deleted file mode 100644 index 534ce9def..000000000 --- a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/feupdateenv.c +++ /dev/null @@ -1,56 +0,0 @@ -/* Install given floating-point environment and raise exceptions. - Copyright (C) 2004-2013 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Aldy Hernandez <aldyh@redhat.com>, 2004. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <fenv_libc.h> -#include <sysdep.h> -#include <sys/prctl.h> - -int -__feupdateenv (const fenv_t *envp) -{ - unsigned long fpescr, old, new, pflags; - fenv_union_t u; - INTERNAL_SYSCALL_DECL (err); - - /* Save the currently set exceptions. */ - u.fenv = *envp; - new = u.l[1]; - old = fegetenv_register (); - new |= (old & FE_ALL_EXCEPT); - - INTERNAL_SYSCALL (prctl, err, 2, PR_GET_FPEXC, &pflags); - pflags |= u.l[0]; - INTERNAL_SYSCALL (prctl, err, 2, PR_SET_FPEXC, pflags); - - /* Enable and raise (if appropriate) exceptions set in `new'. */ - fesetenv_register (new); - feraiseexcept (new & FE_ALL_EXCEPT); - - /* Success. */ - return 0; -} - -#include <shlib-compat.h> -#if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_2) -strong_alias (__feupdateenv, __old_feupdateenv) -compat_symbol (libm, __old_feupdateenv, feupdateenv, GLIBC_2_1); -#endif - -libm_hidden_ver (__feupdateenv, feupdateenv) -versioned_symbol (libm, __feupdateenv, feupdateenv, GLIBC_2_2); diff --git a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/fgetexcptflg.c b/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/fgetexcptflg.c deleted file mode 100644 index f530c0231..000000000 --- a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/fgetexcptflg.c +++ /dev/null @@ -1,45 +0,0 @@ -/* Store current representation for exceptions. - Copyright (C) 2004-2013 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Aldy Hernandez <aldyh@redhat.com>, 2004. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <fenv_libc.h> - -int -__fegetexceptflag (fexcept_t *flagp, int excepts) -{ - unsigned long fpescr; - - /* Get the current state. */ - fpescr = fegetenv_register (); - - /* ?? Classic PPC doesn't do anything with `excepts', so we'll do - the same here. (We should really be ignoring exceptions in - excepts) ?? */ - *flagp = fpescr & FE_ALL_EXCEPT; - - /* Success. */ - return 0; -} - -#include <shlib-compat.h> -#if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_2) -strong_alias (__fegetexceptflag, __old_fegetexceptflag) -compat_symbol (libm, __old_fegetexceptflag, fegetexceptflag, GLIBC_2_1); -#endif - -versioned_symbol (libm, __fegetexceptflag, fegetexceptflag, GLIBC_2_2); diff --git a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/fprrest.c b/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/fprrest.c deleted file mode 100644 index 1cc893170..000000000 --- a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/fprrest.c +++ /dev/null @@ -1 +0,0 @@ -/* Not needed. */ diff --git a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/fprsave.c b/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/fprsave.c deleted file mode 100644 index 1cc893170..000000000 --- a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/fprsave.c +++ /dev/null @@ -1 +0,0 @@ -/* Not needed. */ diff --git a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/fraiseexcpt.c b/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/fraiseexcpt.c deleted file mode 100644 index 6620a9f13..000000000 --- a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/fraiseexcpt.c +++ /dev/null @@ -1,28 +0,0 @@ -/* Raise given exceptions. - Copyright (C) 2004-2013 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Aldy Hernandez <aldyh@redhat.com>, 2004. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <fenv_libc.h> - -#undef feraiseexcept - -#define __FERAISEEXCEPT_INTERNAL feraiseexcept -#include "../spe-raise.c" - -strong_alias (feraiseexcept, __feraiseexcept) -libm_hidden_def (feraiseexcept) diff --git a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/fsetexcptflg.c b/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/fsetexcptflg.c deleted file mode 100644 index 33712d8cf..000000000 --- a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/fsetexcptflg.c +++ /dev/null @@ -1,49 +0,0 @@ -/* Set floating-point environment exception handling. - Copyright (C) 1997-2013 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <fenv_libc.h> - -int -__fesetexceptflag (const fexcept_t *flagp, int excepts) -{ - unsigned long spefscr; - fexcept_t flag; - - /* Get the current state. */ - spefscr = fegetenv_register (); - - /* Ignore exceptions not listed in 'excepts'. */ - flag = *flagp & excepts; - - /* Replace the exception status */ - spefscr = (spefscr & ~(FE_ALL_EXCEPT & excepts)) | flag; - - /* Store the new status word (along with the rest of the environment). */ - fesetenv_register (spefscr); - - /* Success. */ - return 0; -} - -#include <shlib-compat.h> -#if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_2) -strong_alias (__fesetexceptflag, __old_fesetexceptflag) -compat_symbol (libm, __old_fesetexceptflag, fesetexceptflag, GLIBC_2_1); -#endif - -versioned_symbol (libm, __fesetexceptflag, fesetexceptflag, GLIBC_2_2); diff --git a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/ftestexcept.c b/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/ftestexcept.c deleted file mode 100644 index ddb8f8685..000000000 --- a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/ftestexcept.c +++ /dev/null @@ -1,32 +0,0 @@ -/* Test exception in current environment. - Copyright (C) 2004-2013 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Aldy Hernandez <aldyh@redhat.com>, 2004. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <fenv_libc.h> - -int -fetestexcept (int excepts) -{ - unsigned long f; - - /* Get the current state. */ - f = fegetenv_register (); - - return f & excepts; -} -libm_hidden_def (fetestexcept) diff --git a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/math_ldbl.h b/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/math_ldbl.h deleted file mode 100644 index e99166bfc..000000000 --- a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/math_ldbl.h +++ /dev/null @@ -1 +0,0 @@ -#include <sysdeps/ieee754/ldbl-128ibm/math_ldbl.h> diff --git a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/math_private.h b/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/math_private.h deleted file mode 100644 index 4909535f8..000000000 --- a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/math_private.h +++ /dev/null @@ -1,2 +0,0 @@ -/* Bypass sysdeps/powerpc/fpu/math_private.h and use generic header. */ -#include <../sysdeps/generic/math_private.h> diff --git a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/s_ceil.c b/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/s_ceil.c deleted file mode 100644 index f3f34216f..000000000 --- a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/s_ceil.c +++ /dev/null @@ -1 +0,0 @@ -#include <sysdeps/ieee754/dbl-64/s_ceil.c> diff --git a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/s_ceilf.c b/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/s_ceilf.c deleted file mode 100644 index 2a71fcd7c..000000000 --- a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/s_ceilf.c +++ /dev/null @@ -1 +0,0 @@ -#include <sysdeps/ieee754/flt-32/s_ceilf.c> diff --git a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/s_copysign.c b/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/s_copysign.c deleted file mode 100644 index 8616ca0bb..000000000 --- a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/s_copysign.c +++ /dev/null @@ -1 +0,0 @@ -#include <sysdeps/ieee754/dbl-64/s_copysign.c> diff --git a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/s_copysignf.c b/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/s_copysignf.c deleted file mode 100644 index 34bcb6cce..000000000 --- a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/s_copysignf.c +++ /dev/null @@ -1 +0,0 @@ -#include <sysdeps/ieee754/flt-32/s_copysignf.c> diff --git a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/s_copysignl.c b/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/s_copysignl.c deleted file mode 100644 index 29a02868f..000000000 --- a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/s_copysignl.c +++ /dev/null @@ -1 +0,0 @@ -#include <sysdeps/ieee754/ldbl-128ibm/s_copysignl.c> diff --git a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/s_fabs.c b/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/s_fabs.c deleted file mode 100644 index 2ef531d44..000000000 --- a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/s_fabs.c +++ /dev/null @@ -1 +0,0 @@ -#include <sysdeps/ieee754/dbl-64/s_fabs.c> diff --git a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/s_fabsf.S b/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/s_fabsf.S deleted file mode 100644 index 296e214c7..000000000 --- a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/s_fabsf.S +++ /dev/null @@ -1,28 +0,0 @@ -/* Floating-point absolute value. PowerPC E500 version. - Copyright (C) 2004-2013 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Aldy Hernandez <aldyh@redhat.com>, 2004. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <sysdep.h> - -ENTRY(__fabsf) -/* float [r3] fabsf (float [r3] x) ; */ - efsabs r3,r3 - blr -END(__fabsf) - -weak_alias(__fabsf,fabsf) diff --git a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/s_fabsl.c b/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/s_fabsl.c deleted file mode 100644 index 33ebe78cb..000000000 --- a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/s_fabsl.c +++ /dev/null @@ -1 +0,0 @@ -#include <sysdeps/ieee754/ldbl-128ibm/s_fabsl.c> diff --git a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/s_fdim.c b/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/s_fdim.c deleted file mode 100644 index 5fb35edb5..000000000 --- a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/s_fdim.c +++ /dev/null @@ -1 +0,0 @@ -#include <math/s_fdim.c> diff --git a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/s_fdimf.c b/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/s_fdimf.c deleted file mode 100644 index 42df1302d..000000000 --- a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/s_fdimf.c +++ /dev/null @@ -1 +0,0 @@ -#include <math/s_fdimf.c> diff --git a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/s_floor.c b/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/s_floor.c deleted file mode 100644 index 2a43c817c..000000000 --- a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/s_floor.c +++ /dev/null @@ -1 +0,0 @@ -#include <sysdeps/ieee754/dbl-64/s_floor.c> diff --git a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/s_floorf.c b/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/s_floorf.c deleted file mode 100644 index d129d378f..000000000 --- a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/s_floorf.c +++ /dev/null @@ -1 +0,0 @@ -#include <sysdeps/ieee754/flt-32/s_floorf.c> diff --git a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/s_fma.c b/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/s_fma.c deleted file mode 100644 index 2ee721413..000000000 --- a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/s_fma.c +++ /dev/null @@ -1,5 +0,0 @@ -#include <math_ldbl_opt.h> -#include <math/s_fma.c> -#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1) -compat_symbol (libm, __fma, fmal, GLIBC_2_1); -#endif diff --git a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/s_fmaf.c b/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/s_fmaf.c deleted file mode 100644 index 5b7663f9a..000000000 --- a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/s_fmaf.c +++ /dev/null @@ -1 +0,0 @@ -#include <math/s_fmaf.c> diff --git a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/s_fmax.c b/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/s_fmax.c deleted file mode 100644 index 95edd5f3d..000000000 --- a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/s_fmax.c +++ /dev/null @@ -1 +0,0 @@ -#include <math/s_fmax.c> diff --git a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/s_fmaxf.c b/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/s_fmaxf.c deleted file mode 100644 index 084fe72e9..000000000 --- a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/s_fmaxf.c +++ /dev/null @@ -1 +0,0 @@ -#include <math/s_fmaxf.c> diff --git a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/s_fmin.c b/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/s_fmin.c deleted file mode 100644 index e072a91e7..000000000 --- a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/s_fmin.c +++ /dev/null @@ -1 +0,0 @@ -#include <math/s_fmin.c> diff --git a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/s_fminf.c b/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/s_fminf.c deleted file mode 100644 index e37e4ac4e..000000000 --- a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/s_fminf.c +++ /dev/null @@ -1 +0,0 @@ -#include <math/s_fminf.c> diff --git a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/s_isnan.c b/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/s_isnan.c deleted file mode 100644 index dec5dd0bf..000000000 --- a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/s_isnan.c +++ /dev/null @@ -1 +0,0 @@ -#include <sysdeps/ieee754/dbl-64/s_isnan.c> diff --git a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/s_isnanf.c b/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/s_isnanf.c deleted file mode 100644 index 3be64a220..000000000 --- a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/s_isnanf.c +++ /dev/null @@ -1 +0,0 @@ -#include <sysdeps/ieee754/flt-32/s_isnanf.c> diff --git a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/s_llrint.c b/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/s_llrint.c deleted file mode 100644 index c8215aa17..000000000 --- a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/s_llrint.c +++ /dev/null @@ -1 +0,0 @@ -#include <sysdeps/ieee754/dbl-64/s_llrint.c> diff --git a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/s_llrintf.c b/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/s_llrintf.c deleted file mode 100644 index b74275e9c..000000000 --- a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/s_llrintf.c +++ /dev/null @@ -1 +0,0 @@ -#include <sysdeps/ieee754/flt-32/s_llrintf.c> diff --git a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/s_llround.c b/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/s_llround.c deleted file mode 100644 index 69658f335..000000000 --- a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/s_llround.c +++ /dev/null @@ -1 +0,0 @@ -#include <sysdeps/ieee754/dbl-64/s_llround.c> diff --git a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/s_llroundf.c b/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/s_llroundf.c deleted file mode 100644 index 386777ea9..000000000 --- a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/s_llroundf.c +++ /dev/null @@ -1 +0,0 @@ -#include <sysdeps/ieee754/flt-32/s_llroundf.c> diff --git a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/s_lrint.c b/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/s_lrint.c deleted file mode 100644 index 909e699a0..000000000 --- a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/s_lrint.c +++ /dev/null @@ -1 +0,0 @@ -#include <sysdeps/ieee754/dbl-64/s_lrint.c> diff --git a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/s_lrintf.S b/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/s_lrintf.S deleted file mode 100644 index 3d399a08e..000000000 --- a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/s_lrintf.S +++ /dev/null @@ -1,28 +0,0 @@ -/* Round float to long int. PowerPC E500 version. - Copyright (C) 2006-2013 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Joseph Myers <joseph@codesourcery.com>, 2006. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <sysdep.h> - -ENTRY(__lrintf) -/* long int [r3] lrintf (float [r3] x) ; */ - efsctsi r3,r3 - blr -END(__lrintf) - -weak_alias(__lrintf,lrintf) diff --git a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/s_lround.c b/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/s_lround.c deleted file mode 100644 index 83a87836b..000000000 --- a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/s_lround.c +++ /dev/null @@ -1 +0,0 @@ -#include <sysdeps/ieee754/dbl-64/s_lround.c> diff --git a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/s_lroundf.c b/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/s_lroundf.c deleted file mode 100644 index 930abb527..000000000 --- a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/s_lroundf.c +++ /dev/null @@ -1 +0,0 @@ -#include <sysdeps/ieee754/flt-32/s_lroundf.c> diff --git a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/s_nearbyint.c b/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/s_nearbyint.c deleted file mode 100644 index a8b7973ac..000000000 --- a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/s_nearbyint.c +++ /dev/null @@ -1,5 +0,0 @@ -#include <math_ldbl_opt.h> -#include <sysdeps/ieee754/dbl-64/s_nearbyint.c> -#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1) -compat_symbol (libm, __nearbyint, nearbyintl, GLIBC_2_1); -#endif diff --git a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/s_nearbyintf.c b/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/s_nearbyintf.c deleted file mode 100644 index 487742619..000000000 --- a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/s_nearbyintf.c +++ /dev/null @@ -1 +0,0 @@ -#include <sysdeps/ieee754/flt-32/s_nearbyintf.c> diff --git a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/s_rint.c b/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/s_rint.c deleted file mode 100644 index b610359d3..000000000 --- a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/s_rint.c +++ /dev/null @@ -1 +0,0 @@ -#include <sysdeps/ieee754/dbl-64/s_rint.c> diff --git a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/s_rintf.c b/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/s_rintf.c deleted file mode 100644 index 6593140fa..000000000 --- a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/s_rintf.c +++ /dev/null @@ -1 +0,0 @@ -#include <sysdeps/ieee754/flt-32/s_rintf.c> diff --git a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/s_round.c b/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/s_round.c deleted file mode 100644 index 4c006d482..000000000 --- a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/s_round.c +++ /dev/null @@ -1 +0,0 @@ -#include <sysdeps/ieee754/dbl-64/s_round.c> diff --git a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/s_roundf.c b/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/s_roundf.c deleted file mode 100644 index e82d90aa1..000000000 --- a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/s_roundf.c +++ /dev/null @@ -1 +0,0 @@ -#include <sysdeps/ieee754/flt-32/s_roundf.c> diff --git a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/s_trunc.c b/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/s_trunc.c deleted file mode 100644 index bc5ec5401..000000000 --- a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/s_trunc.c +++ /dev/null @@ -1 +0,0 @@ -#include <sysdeps/ieee754/dbl-64/s_trunc.c> diff --git a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/s_truncf.c b/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/s_truncf.c deleted file mode 100644 index b8cc5f6bc..000000000 --- a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/s_truncf.c +++ /dev/null @@ -1 +0,0 @@ -#include <sysdeps/ieee754/flt-32/s_truncf.c> diff --git a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/setjmp-common.S b/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/setjmp-common.S deleted file mode 100644 index bba304375..000000000 --- a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/setjmp-common.S +++ /dev/null @@ -1,103 +0,0 @@ -/* setjmp for PowerPC E500. - Copyright (C) 2004-2013 Free Software Foundation, Inc. - Contributed by Aldy Hernandez <aldyh@redhat.com>. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <sysdep.h> -#define _ASM -#ifdef __NO_VMX__ -# include <novmxsetjmp.h> -#else -# include <jmpbuf-offsets.h> -#endif - -ENTRY (__sigsetjmp) -#ifdef PTR_MANGLE - mr r5,r1 - PTR_MANGLE(r5, r10) - stw r5,(JB_GPR1*4)(3) -#else - stw r1,(JB_GPR1*4)(3) -#endif - mflr r0 - stw r14,((JB_GPRS+0)*4)(3) -#ifdef PTR_MANGLE - PTR_MANGLE2 (r0, r10) - li r10,0 -#endif - /*stfd fp14,((JB_FPRS+0*2)*4)(3)*/ - evstdd r14,((JB_FPRS+0*2)*4)(3) - stw r0,(JB_LR*4)(3) - stw r15,((JB_GPRS+1)*4)(3) - /*stfd fp15,((JB_FPRS+1*2)*4)(3)*/ - evstdd r15,((JB_FPRS+1*2)*4)(3) - mfcr r0 - stw r16,((JB_GPRS+2)*4)(3) - /*stfd fp16,((JB_FPRS+2*2)*4)(3)*/ - evstdd r16,((JB_FPRS+2*2)*4)(3) - stw r0,(JB_CR*4)(3) - stw r17,((JB_GPRS+3)*4)(3) - /*stfd fp17,((JB_FPRS+3*2)*4)(3)*/ - evstdd r17,((JB_FPRS+3*2)*4)(3) - stw r18,((JB_GPRS+4)*4)(3) - /*stfd fp18,((JB_FPRS+4*2)*4)(3)*/ - evstdd r18,((JB_FPRS+4*2)*4)(3) - stw r19,((JB_GPRS+5)*4)(3) - /*stfd fp19,((JB_FPRS+5*2)*4)(3)*/ - evstdd r19,((JB_FPRS+5*2)*4)(3) - stw r20,((JB_GPRS+6)*4)(3) - /*stfd fp20,((JB_FPRS+6*2)*4)(3)*/ - evstdd r20,((JB_FPRS+6*2)*4)(3) - stw r21,((JB_GPRS+7)*4)(3) - /*stfd fp21,((JB_FPRS+7*2)*4)(3)*/ - evstdd r21,((JB_FPRS+7*2)*4)(3) - stw r22,((JB_GPRS+8)*4)(3) - /*stfd fp22,((JB_FPRS+8*2)*4)(3)*/ - evstdd r22,((JB_FPRS+8*2)*4)(3) - stw r23,((JB_GPRS+9)*4)(3) - /*stfd fp23,((JB_FPRS+9*2)*4)(3)*/ - evstdd r23,((JB_FPRS+9*2)*4)(3) - stw r24,((JB_GPRS+10)*4)(3) - /*stfd fp24,((JB_FPRS+10*2)*4)(3)*/ - evstdd r24,((JB_FPRS+10*2)*4)(3) - stw r25,((JB_GPRS+11)*4)(3) - /*stfd fp25,((JB_FPRS+11*2)*4)(3)*/ - evstdd r25,((JB_FPRS+11*2)*4)(3) - stw r26,((JB_GPRS+12)*4)(3) - /*stfd fp26,((JB_FPRS+12*2)*4)(3)*/ - evstdd r26,((JB_FPRS+12*2)*4)(3) - stw r27,((JB_GPRS+13)*4)(3) - /*stfd fp27,((JB_FPRS+13*2)*4)(3)*/ - evstdd r27,((JB_FPRS+13*2)*4)(3) - stw r28,((JB_GPRS+14)*4)(3) - /*stfd fp28,((JB_FPRS+14*2)*4)(3)*/ - evstdd r28,((JB_FPRS+14*2)*4)(3) - stw r29,((JB_GPRS+15)*4)(3) - /*stfd fp29,((JB_FPRS+15*2)*4)(3)*/ - evstdd r29,((JB_FPRS+15*2)*4)(3) - stw r30,((JB_GPRS+16)*4)(3) - /*stfd fp30,((JB_FPRS+16*2)*4)(3)*/ - evstdd r30,((JB_FPRS+16*2)*4)(3) - stw r31,((JB_GPRS+17)*4)(3) - /*stfd fp31,((JB_FPRS+17*2)*4)(3)*/ - evstdd r31,((JB_FPRS+17*2)*4)(3) -#if defined NOT_IN_libc && defined IS_IN_rtld - li r3,0 - blr -#else - b __sigjmp_save@local -#endif -END (__sigsetjmp) diff --git a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/setjmp.S b/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/setjmp.S deleted file mode 100644 index 851a5b908..000000000 --- a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/setjmp.S +++ /dev/null @@ -1,43 +0,0 @@ -/* non alitivec (old) version of setjmp for PowerPC. - Copyright (C) 1995-2013 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <shlib-compat.h> -#include <libc-symbols.h> - -#if defined NOT_IN_libc -/* Build a non-versioned object for rtld-*. */ -# include "setjmp-common.S" - -#else /* !NOT_IN_libc */ -/* Build a versioned object for libc. */ -default_symbol_version (__vmx__sigsetjmp,__sigsetjmp,GLIBC_2.3.4) -# define __sigsetjmp __vmx__sigsetjmp -# define __sigjmp_save __vmx__sigjmp_save -# include "setjmp-common.S" - -# if defined SHARED && SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_3_4) -# define __NO_VMX__ -# undef __sigsetjmp -# undef __sigjmp_save -# undef JB_SIZE -symbol_version (__novmx__sigsetjmp,__sigsetjmp,GLIBC_2.0) -# define __sigsetjmp __novmx__sigsetjmp -# define __sigjmp_save __novmx__sigjmp_save -# include "setjmp-common.S" -# endif -#endif /* !NOT_IN_libc */ diff --git a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/spe.h b/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/spe.h deleted file mode 100644 index 91bca2710..000000000 --- a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/spe.h +++ /dev/null @@ -1,12 +0,0 @@ -#ifndef _SPE_H - -#include_next <spe.h> - -libc_hidden_proto (strtosfix16) -libc_hidden_proto (strtosfix32) -libc_hidden_proto (strtosfix64) -libc_hidden_proto (strtoufix16) -libc_hidden_proto (strtoufix32) -libc_hidden_proto (strtoufix64) - -#endif diff --git a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/strtofix.c b/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/strtofix.c deleted file mode 100644 index e04e5be40..000000000 --- a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/strtofix.c +++ /dev/null @@ -1,700 +0,0 @@ -/* Convert string representing a number to float value, using given locale. - Copyright (C) 1997-2013 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. - - 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/>. */ - -/* Cut down from strtod_l.c for converting to fixed-point, no locale - choice, no grouping, narrow strings only. */ - - -#include <ctype.h> -#include <errno.h> -#include <fenv_libc.h> -#include <locale/localeinfo.h> -#include <locale.h> -#include <math.h> -#include <spe.h> -#include <stdlib.h> -#include <string.h> - -/* The gmp headers need some configuration frobs. */ -#define HAVE_ALLOCA 1 - -/* Include gmp-mparam.h first, such that definitions of _SHORT_LIMB - and _LONG_LONG_LIMB in it can take effect into gmp.h. */ -#include <gmp-mparam.h> -#include <gmp.h> -#include <stdlib/gmp-impl.h> -#include <stdlib/longlong.h> -#include <stdlib/fpioconst.h> - -/*#define NDEBUG 1*/ -#include <assert.h> - -#if UNSIGNED -#define RETURN_FRAC_BITS RETURN_TYPE_BITS -#else -#define RETURN_FRAC_BITS (RETURN_TYPE_BITS - 1) -#endif - -#define RETURN(val,end) \ - do { if (endptr != NULL) *endptr = (char *) (end); \ - return val; } while (0) - -/* Definitions according to limb size used. */ -#if BITS_PER_MP_LIMB == 32 -# define MAX_DIG_PER_LIMB 9 -# define MAX_FAC_PER_LIMB 1000000000UL -#elif BITS_PER_MP_LIMB == 64 -# define MAX_DIG_PER_LIMB 19 -# define MAX_FAC_PER_LIMB 10000000000000000000ULL -#else -# error "mp_limb_t size " BITS_PER_MP_LIMB "not accounted for" -#endif - -/* Local data structure. */ -static const mp_limb_t _tens_in_limb[MAX_DIG_PER_LIMB + 1] = -{ 0, 10, 100, - 1000, 10000, 100000L, - 1000000L, 10000000L, 100000000L, - 1000000000L -#if BITS_PER_MP_LIMB > 32 - , 10000000000ULL, 100000000000ULL, - 1000000000000ULL, 10000000000000ULL, 100000000000000ULL, - 1000000000000000ULL, 10000000000000000ULL, 100000000000000000ULL, - 1000000000000000000ULL, 10000000000000000000ULL -#endif -#if BITS_PER_MP_LIMB > 64 - #error "Need to expand tens_in_limb table to" MAX_DIG_PER_LIMB -#endif -}; - -/* Define pow5 to be 5^(RETURN_FRAC_BITS + 1), shifted left so the - most significant bit is set (as required by mpn_divrem), pow5size - to be the size in limbs and pow5shift to be the shift. */ -#if RETURN_FRAC_BITS + 1 == 16 -# if BITS_PER_MP_LIMB == 32 -static const mp_limb_t pow5[] = { 0x04000000, 0x8e1bc9bf }; -# define pow5shift 26 -# define pow5size 2 -# else -static const mp_limb_t pow5[] = { 0x8e1bc9bf04000000ull }; -# define pow5shift 26 -# define pow5size 1 -# endif -#elif RETURN_FRAC_BITS + 1 == 17 -# if BITS_PER_MP_LIMB == 32 -static const mp_limb_t pow5[] = { 0xc5000000, 0xb1a2bc2e }; -# define pow5shift 24 -# define pow5size 2 -# else -static const mp_limb_t pow5[] = { 0xb1a2bc2ec5000000ull }; -# define pow5shift 24 -# define pow5size 1 -# endif -#elif RETURN_FRAC_BITS + 1 == 32 -# if BITS_PER_MP_LIMB == 32 -static const mp_limb_t pow5[] = { 0xf0200000, 0x2b70b59d, 0x9dc5ada8 }; -# define pow5shift 21 -# define pow5size 3 -# else -static const mp_limb_t pow5[] = { 0xf020000000000000ull, 0x9dc5ada82b70b59dull }; -# define pow5shift 53 -# define pow5size 2 -# endif -#elif RETURN_FRAC_BITS + 1 == 33 -# if BITS_PER_MP_LIMB == 32 -static const mp_limb_t pow5[] = { 0x6c280000, 0x364ce305, 0xc5371912 }; -# define pow5shift 19 -# define pow5size 3 -# else -static const mp_limb_t pow5[] = { 0x6c28000000000000ull, 0xc5371912364ce305ull }; -# define pow5shift 51 -# define pow5size 2 -# endif -#elif RETURN_FRAC_BITS + 1 == 64 -# if BITS_PER_MP_LIMB == 32 -static const mp_limb_t pow5[] = { 0x50f80800, 0xc76b25fb, 0x3cbf6b71, 0xffcfa6d5, 0xc2781f49 }; -# define pow5shift 11 -# define pow5size 5 -# else -static const mp_limb_t pow5[] = { 0x50f8080000000000ull, 0x3cbf6b71c76b25fbull, 0xc2781f49ffcfa6d5ull }; -# define pow5shift 43 -# define pow5size 3 -# endif -#elif RETURN_FRAC_BITS + 1 == 65 -# if BITS_PER_MP_LIMB == 32 -static const mp_limb_t pow5[] = { 0x25360a00, 0x3945ef7a, 0x8bef464e, 0x7fc3908a, 0xf316271c }; -# define pow5shift 9 -# define pow5size 5 -# else -static const mp_limb_t pow5[] = { 0x25360a0000000000ull, 8bef464e3945ef7aull, 0xf316271c7fc3908aull }; -# define pow5shift 41 -# define pow5size 3 -# endif -#else -# error "Unknown RETURN_FRAC_BITS value." -#endif - -/* Read a multi-precision integer starting at STR with exactly DIGCNT digits - into N. Return the size of the number limbs in NSIZE. */ -static void -str_to_mpn (const char *str, int digcnt, mp_limb_t *n, mp_size_t *nsize) -{ - /* Number of digits for actual limb. */ - int cnt = 0; - mp_limb_t low = 0; - mp_limb_t start; - - *nsize = 0; - assert (digcnt > 0); - do - { - if (cnt == MAX_DIG_PER_LIMB) - { - if (*nsize == 0) - { - n[0] = low; - *nsize = 1; - } - else - { - mp_limb_t cy; - cy = __mpn_mul_1 (n, n, *nsize, MAX_FAC_PER_LIMB); - cy += __mpn_add_1 (n, n, *nsize, low); - if (cy != 0) - { - n[*nsize] = cy; - ++(*nsize); - } - } - cnt = 0; - low = 0; - } - - low = low * 10 + *str++ - '0'; - ++cnt; - } - while (--digcnt > 0); - - start = _tens_in_limb[cnt]; - - if (*nsize == 0) - { - n[0] = low; - *nsize = 1; - } - else - { - mp_limb_t cy; - cy = __mpn_mul_1 (n, n, *nsize, start); - cy += __mpn_add_1 (n, n, *nsize, low); - if (cy != 0) - n[(*nsize)++] = cy; - } -} - -/* Round a fixed point number according to the current rounding mode - and set its sign. VAL is the initial part of the number - (RETURN_TYPE_BITS for unsigned, one fewer for signed; values equal - to -1.0 do not come here). SIGN is 1 for negative, 0 for positive; - this function will not be called for negative numbers in the - unsigned case. HALF is 1 if the next bit is 1; REST is 1 if any of - the subsequent bits are 1. */ -static RETURN_TYPE -round_and_set_sign (RETURN_TYPE val, int sign, int half, int rest) -{ - int incr = 0; - unsigned int mode = fegetenv_register (); - mode &= 3; - switch (mode) - { - case FE_TONEAREST: - incr = (half && (rest || (val & 1))); - break; - case FE_TOWARDZERO: - break; - case FE_UPWARD: - incr = (!sign && (half || rest)); - break; - case FE_DOWNWARD: - incr = (sign && (half || rest)); - break; - } - if (incr) - { - if (val == SAT_MAX) - { - if (sign) - val = SAT_MIN; - else - { - __set_errno (ERANGE); - return SAT_MAX; - } - } - else - { - val++; - if (sign) - val = -val; - } - } - else if (sign) - val = -val; - return val; -} - -/* Return a fixed point number with the value of the given string - NPTR, handling out-of-range numbers as described in the SPE PIM. - Set *ENDPTR to the character after the last used one. */ -RETURN_TYPE -STRTOFIX (const char *nptr, char **endptr) -{ - int negative; /* The sign of the number. */ - int exponent; /* Exponent of the number. */ - - /* Numbers starting `0X' or `0x' have to be processed with base 16. */ - int base = 10; - - /* Running pointer after the last character processed in the string. */ - const char *cp; - /* Start of significant part of the number. */ - const char *startp, *start_of_digits; - /* Points at the character following the integer and fractional digits. */ - const char *expp; - /* Total number of digit and number of digits in integer part. */ - int dig_no, int_no, lead_zero; - /* Contains the last character read. */ - char c; - - /* The radix character of the current locale. */ - const char *decimal; - size_t decimal_len; - /* Used in several places. */ - int cnt; - - decimal = _NL_CURRENT (LC_NUMERIC, DECIMAL_POINT); - decimal_len = strlen (decimal); - assert (decimal_len > 0); - - /* Prepare number representation. */ - exponent = 0; - negative = 0; - - /* Parse string to get maximal legal prefix. We need the number of - characters of the integer part, the fractional part and the exponent. */ - cp = nptr - 1; - /* Ignore leading white space. */ - do - c = *++cp; - while (isspace (c)); - - /* Get sign of the result. */ - if (c == '-') - { - negative = 1; - c = *++cp; - } - else if (c == '+') - c = *++cp; - - /* Return 0.0 if no legal string is found. - No character is used even if a sign was found. */ - for (cnt = 0; decimal[cnt] != '\0'; ++cnt) - if (cp[cnt] != decimal[cnt]) - break; - if (decimal[cnt] == '\0' && cp[cnt] >= '0' && cp[cnt] <= '9') - { - /* We accept it. This funny construct is here only to indent - the code directly. */ - } - else if (c < '0' || c > '9') - { - /* The SPE PIM says NaN and Inf are not supported. */ - /* It is really a text we do not recognize. */ - RETURN (0, nptr); - } - - /* First look whether we are faced with a hexadecimal number. */ - if (c == '0' && tolower (cp[1]) == 'x') - { - /* Okay, it is a hexa-decimal number. Remember this and skip - the characters. BTW: hexadecimal numbers must not be - grouped. */ - base = 16; - cp += 2; - c = *cp; - } - - /* Record the start of the digits, in case we will check their grouping. */ - start_of_digits = startp = cp; - - /* Ignore leading zeroes. This helps us to avoid useless computations. */ - while (c == '0') - c = *++cp; - - /* If no other digit but a '0' is found the result is 0.0. - Return current read pointer. */ - if ((c < '0' || c > '9') - && (base != 16 || (c < (char) tolower ('a') - || c > (char) tolower ('f'))) - && ({ for (cnt = 0; decimal[cnt] != '\0'; ++cnt) - if (decimal[cnt] != cp[cnt]) - break; - decimal[cnt] != '\0'; }) - && (base != 16 || (cp == start_of_digits - || (char) tolower (c) != 'p')) - && (base == 16 || (char) tolower (c) != 'e')) - { - /* If CP is at the start of the digits, there was no correctly - grouped prefix of the string; so no number found. */ - RETURN (0, cp == start_of_digits ? (base == 16 ? cp - 1 : nptr) : cp); - } - - /* Remember first significant digit and read following characters until the - decimal point, exponent character or any non-FP number character. */ - startp = cp; - dig_no = 0; - while (1) - { - if ((c >= '0' && c <= '9') - || (base == 16 && tolower (c) >= 'a' - && tolower (c) <= 'f')) - ++dig_no; - else - { - break; - } - c = *++cp; - } - - /* We have the number digits in the integer part. Whether these are all or - any is really a fractional digit will be decided later. */ - int_no = dig_no; - lead_zero = int_no == 0 ? -1 : 0; - - /* Read the fractional digits. A special case are the 'american style' - numbers like `16.' i.e. with decimal but without trailing digits. */ - if ( - ({ for (cnt = 0; decimal[cnt] != '\0'; ++cnt) - if (decimal[cnt] != cp[cnt]) - break; - decimal[cnt] == '\0'; }) - ) - { - cp += decimal_len; - c = *cp; - while ((c >= '0' && c <= '9') || - (base == 16 && tolower (c) >= 'a' && tolower (c) <= 'f')) - { - if (c != '0' && lead_zero == -1) - lead_zero = dig_no - int_no; - ++dig_no; - c = *++cp; - } - } - - /* For numbers like "0x." with no hex digits, only the "0" is valid. */ - if (base == 16 - && startp == start_of_digits - && dig_no == 0) - RETURN (0, start_of_digits - 1); - - /* Remember start of exponent (if any). */ - expp = cp; - - /* Read exponent. */ - if ((base == 16 && tolower (c) == 'p') - || (base != 16 && tolower (c) == 'e')) - { - int exp_negative = 0; - - c = *++cp; - if (c == '-') - { - exp_negative = 1; - c = *++cp; - } - else if (c == '+') - c = *++cp; - - if (c >= '0' && c <= '9') - { - int exp_limit; - - /* Get the exponent limit. */ - if (base == 16) - exp_limit = (exp_negative ? - RETURN_TYPE_BITS + 4 * int_no : - 4 - 4 * int_no + 4 * lead_zero); - else - exp_limit = (exp_negative ? - (RETURN_TYPE_BITS + 2) / 3 + int_no : - 1 - int_no + lead_zero); - - do - { - exponent *= 10; - - if (exponent > exp_limit) - /* The exponent is too large/small to represent a valid - number. */ - { - RETURN_TYPE result; - - /* Accept all following digits as part of the exponent. */ - do - ++cp; - while (*cp >= '0' && *cp <= '9'); - - /* We have to take care for special situation: a joker - might have written "0.0e100000" which is in fact - zero. */ - if (lead_zero == -1) - result = 0; -#if UNSIGNED - else if (negative) - { - /* Saturate to 0. */ - __set_errno (ERANGE); - result = SAT_MIN; - } -#endif - else if (exp_negative) - { - /* Round to either 0 or smallest value. */ - result = round_and_set_sign (0, negative, 0, 1); - } - else - { - /* Overflow. */ - __set_errno (ERANGE); - result = (negative ? SAT_MIN : SAT_MAX); - } - - RETURN (result, cp); - /* NOTREACHED */ - } - - exponent += c - '0'; - c = *++cp; - } - while (c >= '0' && c <= '9'); - - if (exp_negative) - exponent = -exponent; - } - else - cp = expp; - } - - /* We don't want to have to work with trailing zeroes after the radix. */ - if (dig_no > int_no) - { - while (expp[-1] == '0') - { - --expp; - --dig_no; - } - assert (dig_no >= int_no); - } - - if (dig_no == int_no && dig_no > 0) - do - { - while (! (base == 16 ? isxdigit (expp[-1]) : isdigit (expp[-1]))) - --expp; - - if (expp[-1] != '0') - break; - - --expp; - --dig_no; - --int_no; - exponent += (base == 16 ? 4 : 1); - } - while (dig_no > 0); - - /* The whole string is parsed. Store the address of the next character. */ - if (endptr) - *endptr = (char *) cp; - - if (dig_no == 0) - return 0; - -#if UNSIGNED - if (negative) - { - /* Saturate to 0. */ - __set_errno (ERANGE); - return SAT_MIN; - } -#endif - - if (lead_zero) - { - /* Find the decimal point */ - while (1) - { - if (*startp == decimal[0]) - { - for (cnt = 1; decimal[cnt] != '\0'; ++cnt) - if (decimal[cnt] != startp[cnt]) - break; - if (decimal[cnt] == '\0') - break; - } - ++startp; - } - startp += lead_zero + decimal_len; - exponent -= base == 16 ? 4 * lead_zero : lead_zero; - dig_no -= lead_zero; - } - - /* Normalize the exponent so that all digits can be considered to - start just after the point. */ - exponent += base == 16 ? 4 * int_no : int_no; - - if (exponent > (base == 16 ? 4 : 1)) - { - /* Overflow. */ - __set_errno (ERANGE); - return (negative ? SAT_MIN : SAT_MAX); - } - - /* Copy just the digits needed to a separate buffer. */ - int digits_needed = (base == 16 ? RETURN_TYPE_BITS / 4 + 2 : RETURN_FRAC_BITS + 1); - char buf[RETURN_TYPE_BITS + 1]; - int digits_copied = 0; - int extra = 0; - int rdigno = dig_no; - while (exponent < 0) - { - buf[digits_copied++] = '0'; - exponent += (base == 16 ? 4 : 1); - if (digits_copied == digits_needed) - return round_and_set_sign (0, negative, 0, 1); - } - while (digits_copied < digits_needed && rdigno > 0) - { - if (!(base == 16 ? isxdigit (*startp) : isdigit (*startp))) - startp += decimal_len; - buf[digits_copied++] = *startp++; - rdigno--; - } - if (rdigno) - extra = 1; - else - while (digits_copied < digits_needed) - buf[digits_copied++] = '0'; - - if (base == 10 && exponent == 1) - { - assert (buf[0] != '0'); - /* At least 1.0; see if there is overflow. */ - if (UNSIGNED - || !negative - || buf[0] > '1' - || dig_no > 1) - __set_errno (ERANGE); - return (negative ? SAT_MIN : SAT_MAX); - } - - if (base == 16 && exponent > 0) - { - int max_dig = (16 >> exponent) + '0'; - assert (buf[0] != '0'); - if (buf[0] >= max_dig) - { - /* At least 1.0; see if there is overflow. */ - if (UNSIGNED - || !negative - || buf[0] > max_dig - || dig_no > 1) - __set_errno (ERANGE); - return (negative ? SAT_MIN : SAT_MAX); - } - } - - /* Now strictly in the range (0, 1) (though rounding may yet - saturate to 1.0). */ - if (base == 10) - assert (exponent == 0); - else - assert (exponent >= 0 && exponent <= 3); - - if (base == 16) - { - RETURN_TYPE r = 0; - int half = 0; - for (int i = 0; i < digits_needed; i++) - { - RETURN_TYPE val; - int shift; - if (isdigit (buf[i])) - val = buf[i] - '0'; - else - val = 10 + tolower (buf[i]) - 'a'; - shift = RETURN_FRAC_BITS - 4 + exponent - 4 * i; - if (shift >= 0) - r |= val << shift; - else if (shift < -4) - extra |= (val != 0); - else - { - r |= val >> -shift; - half = (val & (1 << (-shift - 1))) != 0; - extra |= (val & ((1 << (-shift - 1)) - 1)) != 0; - } - } - return round_and_set_sign (r, negative, half, extra); - } - - /* Now we have RETURN_FRAC_BITS + 1 digits after the decimal point. - Interpret these as an integer and divide by 5^(RETURN_FRAC_BITS + - 1). If there is a remainder, set extra. If the result of the - division is odd, set half. Divide by 2 again, and round the - result. */ - mp_limb_t frac[8]; - mp_size_t fracsize; - str_to_mpn (buf, digits_needed, frac, &fracsize); - if (fracsize < pow5size) - return round_and_set_sign (0, negative, 0, 1); - frac[fracsize] = __mpn_lshift (frac, frac, fracsize, pow5shift); - if (frac[fracsize]) - fracsize++; - mp_limb_t quot[8]; - quot[fracsize - pow5size] = mpn_divmod (quot, frac, fracsize, pow5, pow5size); - for (int i = 0; i < pow5size; i++) - if (frac[i]) - extra = 1; - int half = quot[0] & 1; - RETURN_TYPE val = quot[0] >> 1; -#if RETURN_FRAC_BITS > BITS_PER_MP_LIMB - 1 - val |= ((RETURN_TYPE) quot[1]) << (BITS_PER_MP_LIMB - 1); -# if RETURN_FRAC_BITS > 2 * BITS_PER_MP_LIMB - 1 - val |= ((RETURN_TYPE) quot[2]) << (2 * BITS_PER_MP_LIMB - 1); -# if RETURN_FRAC_BITS > 3 * BITS_PER_MP_LIMB - 1 -# error "Too many bits." -# endif -# endif -#endif - return round_and_set_sign (val, negative, half, extra); -} - -libc_hidden_def (STRTOFIX) diff --git a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/strtosfix16.c b/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/strtosfix16.c deleted file mode 100644 index b444f826b..000000000 --- a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/strtosfix16.c +++ /dev/null @@ -1,27 +0,0 @@ -/* Convert string to 16-bit signed fixed point. - Copyright (C) 2006-2013 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Joseph Myers <joseph@codesourcery.com>, 2006. - - 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/>. */ - -#define RETURN_TYPE int16_t -#define UNSIGNED 0 -#define RETURN_TYPE_BITS 16 -#define SAT_MIN -0x8000 -#define SAT_MAX 0x7fff -#define STRTOFIX strtosfix16 - -#include "strtofix.c" diff --git a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/strtosfix32.c b/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/strtosfix32.c deleted file mode 100644 index 2b885d83f..000000000 --- a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/strtosfix32.c +++ /dev/null @@ -1,27 +0,0 @@ -/* Convert string to 32-bit signed fixed point. - Copyright (C) 2006-2013 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Joseph Myers <joseph@codesourcery.com>, 2006. - - 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/>. */ - -#define RETURN_TYPE int32_t -#define UNSIGNED 0 -#define RETURN_TYPE_BITS 32 -#define SAT_MIN 0x80000000 -#define SAT_MAX 0x7fffffff -#define STRTOFIX strtosfix32 - -#include "strtofix.c" diff --git a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/strtosfix64.c b/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/strtosfix64.c deleted file mode 100644 index 73bba1bd9..000000000 --- a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/strtosfix64.c +++ /dev/null @@ -1,27 +0,0 @@ -/* Convert string to 64-bit signed fixed point. - Copyright (C) 2006-2013 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Joseph Myers <joseph@codesourcery.com>, 2006. - - 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/>. */ - -#define RETURN_TYPE int64_t -#define UNSIGNED 0 -#define RETURN_TYPE_BITS 64 -#define SAT_MIN 0x8000000000000000LL -#define SAT_MAX 0x7fffffffffffffffLL -#define STRTOFIX strtosfix64 - -#include "strtofix.c" diff --git a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/strtoufix16.c b/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/strtoufix16.c deleted file mode 100644 index 452bc7b45..000000000 --- a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/strtoufix16.c +++ /dev/null @@ -1,27 +0,0 @@ -/* Convert string to 16-bit unsigned fixed point. - Copyright (C) 2006-2013 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Joseph Myers <joseph@codesourcery.com>, 2006. - - 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/>. */ - -#define RETURN_TYPE uint16_t -#define UNSIGNED 1 -#define RETURN_TYPE_BITS 16 -#define SAT_MIN 0 -#define SAT_MAX 0xffff -#define STRTOFIX strtoufix16 - -#include "strtofix.c" diff --git a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/strtoufix32.c b/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/strtoufix32.c deleted file mode 100644 index 8977212c8..000000000 --- a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/strtoufix32.c +++ /dev/null @@ -1,27 +0,0 @@ -/* Convert string to 32-bit unsigned fixed point. - Copyright (C) 2006-2013 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Joseph Myers <joseph@codesourcery.com>, 2006. - - 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/>. */ - -#define RETURN_TYPE uint32_t -#define UNSIGNED 1 -#define RETURN_TYPE_BITS 32 -#define SAT_MIN 0 -#define SAT_MAX 0xffffffff -#define STRTOFIX strtoufix32 - -#include "strtofix.c" diff --git a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/strtoufix64.c b/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/strtoufix64.c deleted file mode 100644 index 2ace30c2d..000000000 --- a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/strtoufix64.c +++ /dev/null @@ -1,27 +0,0 @@ -/* Convert string to 64-bit unsigned fixed point. - Copyright (C) 2006-2013 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Joseph Myers <joseph@codesourcery.com>, 2006. - - 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/>. */ - -#define RETURN_TYPE uint64_t -#define UNSIGNED 1 -#define RETURN_TYPE_BITS 64 -#define SAT_MIN 0 -#define SAT_MAX 0xffffffffffffffffLL -#define STRTOFIX strtoufix64 - -#include "strtofix.c" diff --git a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/t_sqrt.c b/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/t_sqrt.c deleted file mode 100644 index 1cc893170..000000000 --- a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/t_sqrt.c +++ /dev/null @@ -1 +0,0 @@ -/* Not needed. */ diff --git a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/tst-spepim.c b/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/tst-spepim.c deleted file mode 100644 index 220df545f..000000000 --- a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/tst-spepim.c +++ /dev/null @@ -1,493 +0,0 @@ -/* Test SPE PIM functions. - Copyright (C) 2007-2013 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Joseph Myers <joseph@codesourcery.com>, 2007. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <errno.h> -#include <fenv.h> -#include <spe.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -typedef int16_t sint16_t; -typedef int32_t sint32_t; -typedef int64_t sint64_t; - -#define SAT_MAX_U16 0xffff -#define SAT_MAX_U32 0xffffffffu -#define SAT_MAX_U64 0xffffffffffffffffull -#define SAT_MAX_S16 0x7fff -#define SAT_MAX_S32 0x7fffffff -#define SAT_MAX_S64 0x7fffffffffffffffll -#define SAT_MIN_S16 (-SAT_MAX_S16 - 1) -#define SAT_MIN_S32 (-SAT_MAX_S32 - 1) -#define SAT_MIN_S64 (-SAT_MAX_S64 - 1) - -/* Test results for a single rounding mode. For each type of result, - store the expected result and the expected errno. */ -struct res { - sint16_t s16; - int es16; - sint32_t s32; - int es32; - sint64_t s64; - int es64; - uint16_t u16; - int eu16; - uint32_t u32; - int eu32; - uint64_t u64; - int eu64; -}; - -struct testcase { - /* String to test. */ - const char *s; - /* Number of junk characters at end. */ - size_t njunk; - /* Expected results for rounding to nearest, zero, upward and - downward. */ - struct res res[4]; -}; - -/* Saturating value. */ -#define SAT(VAL) VAL, ERANGE -/* Unsaturating value. */ -#define UNSAT(VAL) VAL, 0 -/* Values saturating for both signed and unsigned. */ -#define SAT6(VAL0, VAL1, VAL2, VAL3, VAL4, VAL5) \ - { \ - SAT (VAL0), SAT (VAL1), SAT (VAL2), \ - SAT (VAL3), SAT (VAL4), SAT (VAL5) \ - } -#define SAT6_MAX \ - SAT6 (SAT_MAX_S16, SAT_MAX_S32, SAT_MAX_S64, \ - SAT_MAX_U16, SAT_MAX_U32, SAT_MAX_U64) -#define SAT6_MIN \ - SAT6 (SAT_MIN_S16, SAT_MIN_S32, SAT_MIN_S64, 0, 0, 0) -/* Values saturating for unsigned but not signed. */ -#define SATNEG(VAL0, VAL1, VAL2) \ - { \ - UNSAT (VAL0), UNSAT (VAL1), UNSAT (VAL2), \ - SAT (0), SAT (0), SAT (0) \ - } -/* Values not saturating. */ -#define UNSAT6(VAL0, VAL1, VAL2, VAL3, VAL4, VAL5) \ - { \ - UNSAT (VAL0), UNSAT (VAL1), UNSAT (VAL2), \ - UNSAT (VAL3), UNSAT (VAL4), UNSAT (VAL5) \ - } -/* Results not depending on rounding mode. */ -#define EXACT_SAT6_MAX \ - { \ - SAT6_MAX, \ - SAT6_MAX, \ - SAT6_MAX, \ - SAT6_MAX \ - } -#define EXACT_SAT6_MIN \ - { \ - SAT6_MIN, \ - SAT6_MIN, \ - SAT6_MIN, \ - SAT6_MIN \ - } -#define EXACT_SATNEG(VAL0, VAL1, VAL2) \ - { \ - SATNEG (VAL0, VAL1, VAL2), \ - SATNEG (VAL0, VAL1, VAL2), \ - SATNEG (VAL0, VAL1, VAL2), \ - SATNEG (VAL0, VAL1, VAL2) \ - } -#define EXACT_UNSAT6(VAL0, VAL1, VAL2, VAL3, VAL4, VAL5) \ - { \ - UNSAT6 (VAL0, VAL1, VAL2, VAL3, VAL4, VAL5), \ - UNSAT6 (VAL0, VAL1, VAL2, VAL3, VAL4, VAL5), \ - UNSAT6 (VAL0, VAL1, VAL2, VAL3, VAL4, VAL5), \ - UNSAT6 (VAL0, VAL1, VAL2, VAL3, VAL4, VAL5) \ - } - -static const struct testcase tests[] = { - /* Strings evaluating to 0, including INF and NaN (not supported by - SPE PIM functions). */ - { "", 0, EXACT_UNSAT6 (0, 0, 0, 0, 0, 0) }, - { "0", 0, EXACT_UNSAT6 (0, 0, 0, 0, 0, 0) }, - { "00", 0, EXACT_UNSAT6 (0, 0, 0, 0, 0, 0) }, - { "+0", 0, EXACT_UNSAT6 (0, 0, 0, 0, 0, 0) }, - { "-0", 0, EXACT_UNSAT6 (0, 0, 0, 0, 0, 0) }, - { "0.0", 0, EXACT_UNSAT6 (0, 0, 0, 0, 0, 0) }, - { ".0", 0, EXACT_UNSAT6 (0, 0, 0, 0, 0, 0) }, - { "0.", 0, EXACT_UNSAT6 (0, 0, 0, 0, 0, 0) }, - { " \n-0.", 0, EXACT_UNSAT6 (0, 0, 0, 0, 0, 0) }, - { "0e100000000000000000", 0, EXACT_UNSAT6 (0, 0, 0, 0, 0, 0) }, - { " \t 0e-100000000000000000", 0, EXACT_UNSAT6 (0, 0, 0, 0, 0, 0) }, - { "0x0", 0, EXACT_UNSAT6 (0, 0, 0, 0, 0, 0) }, - { "0x0.", 0, EXACT_UNSAT6 (0, 0, 0, 0, 0, 0) }, - { "0x.0", 0, EXACT_UNSAT6 (0, 0, 0, 0, 0, 0) }, - { "0x0.p100000000000000000", 0, EXACT_UNSAT6 (0, 0, 0, 0, 0, 0) }, - { "-0x0.p002000000000000000", 0, EXACT_UNSAT6 (0, 0, 0, 0, 0, 0) }, - { "0x.0p-100000000000000000", 0, EXACT_UNSAT6 (0, 0, 0, 0, 0, 0) }, - { "0x", 1, EXACT_UNSAT6 (0, 0, 0, 0, 0, 0) }, - { "0x.", 2, EXACT_UNSAT6 (0, 0, 0, 0, 0, 0) }, - { ".", 1, EXACT_UNSAT6 (0, 0, 0, 0, 0, 0) }, - { " .", 2, EXACT_UNSAT6 (0, 0, 0, 0, 0, 0) }, - { "+.", 2, EXACT_UNSAT6 (0, 0, 0, 0, 0, 0) }, - { " +.", 3, EXACT_UNSAT6 (0, 0, 0, 0, 0, 0) }, - { " -.", 3, EXACT_UNSAT6 (0, 0, 0, 0, 0, 0) }, - { "0xp", 2, EXACT_UNSAT6 (0, 0, 0, 0, 0, 0) }, - { "0x.p", 3, EXACT_UNSAT6 (0, 0, 0, 0, 0, 0) }, - { "+0x.p", 3, EXACT_UNSAT6 (0, 0, 0, 0, 0, 0) }, - { "-0x.p0", 4, EXACT_UNSAT6 (0, 0, 0, 0, 0, 0) }, - { "0x0q", 1, EXACT_UNSAT6 (0, 0, 0, 0, 0, 0) }, - { "INF", 3, EXACT_UNSAT6 (0, 0, 0, 0, 0, 0) }, - { "nan", 3, EXACT_UNSAT6 (0, 0, 0, 0, 0, 0) }, - /* Strings evaluating to 1.0 or greater, saturating unconditionally. */ - { "1", 0, EXACT_SAT6_MAX }, - { "1.0", 0, EXACT_SAT6_MAX }, - { "1e0", 0, EXACT_SAT6_MAX }, - { "10e-1", 0, EXACT_SAT6_MAX }, - { "0.1e1", 0, EXACT_SAT6_MAX }, - { "10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-100", 0, EXACT_SAT6_MAX }, - { "2", 0, EXACT_SAT6_MAX }, - { "0x1", 0, EXACT_SAT6_MAX }, - { "0x2p-1", 0, EXACT_SAT6_MAX }, - { "0x.8p1", 0, EXACT_SAT6_MAX }, - { "0x.40p2", 0, EXACT_SAT6_MAX }, - /* Strings evaluating to less than -1.0, saturating unconditionally. */ - { "-1.1", 0, EXACT_SAT6_MIN }, - { "-.11e1", 0, EXACT_SAT6_MIN }, - { "-11e-1", 0, EXACT_SAT6_MIN }, - { "-100", 0, EXACT_SAT6_MIN }, - { "-2", 0, EXACT_SAT6_MIN }, - { "-0x1.00000000000000000000000001", 0, EXACT_SAT6_MIN }, - { "-0x2.00000000000000000000000001p-1", 0, EXACT_SAT6_MIN }, - { "-0x0.80000000000000000000000001p1", 0, EXACT_SAT6_MIN }, - { "-1.000000000000000000000000000000000000000000000000000000000000000000000000000000001", 0, EXACT_SAT6_MIN }, - /* Strings evaluating to -1.0 exactly, saturating for unsigned but - exactly representable for signed. */ - { "-1", 0, EXACT_SATNEG (SAT_MIN_S16, SAT_MIN_S32, SAT_MIN_S64) }, - { "-1e", 1, EXACT_SATNEG (SAT_MIN_S16, SAT_MIN_S32, SAT_MIN_S64) }, - { "-1.0", 0, EXACT_SATNEG (SAT_MIN_S16, SAT_MIN_S32, SAT_MIN_S64) }, - { "-10e-1", 0, EXACT_SATNEG (SAT_MIN_S16, SAT_MIN_S32, SAT_MIN_S64) }, - { "-.1e+1", 0, EXACT_SATNEG (SAT_MIN_S16, SAT_MIN_S32, SAT_MIN_S64) }, - { "-.0000000001e+10", 0, EXACT_SATNEG (SAT_MIN_S16, SAT_MIN_S32, SAT_MIN_S64) }, - { "-10000000000e-10", 0, EXACT_SATNEG (SAT_MIN_S16, SAT_MIN_S32, SAT_MIN_S64) }, - { "-0x1", 0, EXACT_SATNEG (SAT_MIN_S16, SAT_MIN_S32, SAT_MIN_S64) }, - { "-0x1p+", 2, EXACT_SATNEG (SAT_MIN_S16, SAT_MIN_S32, SAT_MIN_S64) }, - { "-0x2p-1", 0, EXACT_SATNEG (SAT_MIN_S16, SAT_MIN_S32, SAT_MIN_S64) }, - { "-0x4.0p-2", 0, EXACT_SATNEG (SAT_MIN_S16, SAT_MIN_S32, SAT_MIN_S64) }, - { "-0x8.p-3", 0, EXACT_SATNEG (SAT_MIN_S16, SAT_MIN_S32, SAT_MIN_S64) }, - { "-0x10p-4", 0, EXACT_SATNEG (SAT_MIN_S16, SAT_MIN_S32, SAT_MIN_S64) }, - { "-0x.8p1", 0, EXACT_SATNEG (SAT_MIN_S16, SAT_MIN_S32, SAT_MIN_S64) }, - { "-0x.4p+2", 0, EXACT_SATNEG (SAT_MIN_S16, SAT_MIN_S32, SAT_MIN_S64) }, - { "-0x.2p+3", 0, EXACT_SATNEG (SAT_MIN_S16, SAT_MIN_S32, SAT_MIN_S64) }, - { "-0x.1p+4", 0, EXACT_SATNEG (SAT_MIN_S16, SAT_MIN_S32, SAT_MIN_S64) }, - { "-0x.08p5", 0, EXACT_SATNEG (SAT_MIN_S16, SAT_MIN_S32, SAT_MIN_S64) }, - /* Strings evaluating to exactly representable values between -1.0 - and 0.0, saturating for unsigned. */ - { "-0.5", 0, EXACT_SATNEG (-0x4000, -0x40000000, -0x4000000000000000ll) }, - { "-0.5e-", 2, EXACT_SATNEG (-0x4000, -0x40000000, -0x4000000000000000ll) }, - { "-05e-1", 0, EXACT_SATNEG (-0x4000, -0x40000000, -0x4000000000000000ll) }, - { "-05000000000e-10", 0, EXACT_SATNEG (-0x4000, -0x40000000, -0x4000000000000000ll) }, - { "-0.5e0", 0, EXACT_SATNEG (-0x4000, -0x40000000, -0x4000000000000000ll) }, - { "-0.00000000005e10", 0, EXACT_SATNEG (-0x4000, -0x40000000, -0x4000000000000000ll) }, - { "-0x.8", 0, EXACT_SATNEG (-0x4000, -0x40000000, -0x4000000000000000ll) }, - { "-0x1p-1", 0, EXACT_SATNEG (-0x4000, -0x40000000, -0x4000000000000000ll) }, - { "-0x.4p1", 0, EXACT_SATNEG (-0x4000, -0x40000000, -0x4000000000000000ll) }, - { "-0.25", 0, EXACT_SATNEG (-0x2000, -0x20000000, -0x2000000000000000ll) }, - { "-2.5e-1", 0, EXACT_SATNEG (-0x2000, -0x20000000, -0x2000000000000000ll) }, - { "-0.75", 0, EXACT_SATNEG (-0x6000, -0x60000000, -0x6000000000000000ll) }, - { "-0.000030517578125", 0, EXACT_SATNEG (-0x0001, -0x00010000, -0x0001000000000000ll) }, - { "-0.376739501953125", 0, EXACT_SATNEG (-12345, -12345*0x10000, -12345*0x1000000000000ll) }, - { "-0x.dcba", 0, EXACT_SATNEG (-0x6e5d, -0x6e5d0000, -0x6e5d000000000000ll) }, - { "-0xd.cbap-4", 0, EXACT_SATNEG (-0x6e5d, -0x6e5d0000, -0x6e5d000000000000ll) }, - /* Strings evaluating to exactly representable values between 0.0 - and 1.0. */ - { "0.5", 0, EXACT_UNSAT6 (0x4000, 0x40000000, 0x4000000000000000ll, 0x8000, 0x80000000u, 0x8000000000000000ull) }, - { "0.5e-", 2, EXACT_UNSAT6 (0x4000, 0x40000000, 0x4000000000000000ll, 0x8000, 0x80000000u, 0x8000000000000000ull) }, - { "05e-1", 0, EXACT_UNSAT6 (0x4000, 0x40000000, 0x4000000000000000ll, 0x8000, 0x80000000u, 0x8000000000000000ull) }, - { "05000000000e-10", 0, EXACT_UNSAT6 (0x4000, 0x40000000, 0x4000000000000000ll, 0x8000, 0x80000000u, 0x8000000000000000ull) }, - { "0.5e0", 0, EXACT_UNSAT6 (0x4000, 0x40000000, 0x4000000000000000ll, 0x8000, 0x80000000u, 0x8000000000000000ull) }, - { "0.00000000005e10", 0, EXACT_UNSAT6 (0x4000, 0x40000000, 0x4000000000000000ll, 0x8000, 0x80000000u, 0x8000000000000000ull) }, - { "0x.8", 0, EXACT_UNSAT6 (0x4000, 0x40000000, 0x4000000000000000ll, 0x8000, 0x80000000u, 0x8000000000000000ull) }, - { "0x1p-1", 0, EXACT_UNSAT6 (0x4000, 0x40000000, 0x4000000000000000ll, 0x8000, 0x80000000u, 0x8000000000000000ull) }, - { "0x.4p1", 0, EXACT_UNSAT6 (0x4000, 0x40000000, 0x4000000000000000ll, 0x8000, 0x80000000u, 0x8000000000000000ull) }, - { "0.25", 0, EXACT_UNSAT6 (0x2000, 0x20000000, 0x2000000000000000ll, 0x4000, 0x40000000u, 0x4000000000000000ull) }, - { "2.5e-1", 0, EXACT_UNSAT6 (0x2000, 0x20000000, 0x2000000000000000ll, 0x4000, 0x40000000u, 0x4000000000000000ull) }, - { "0.75", 0, EXACT_UNSAT6 (0x6000, 0x60000000, 0x6000000000000000ll, 0xc000, 0xc0000000u, 0xc000000000000000ull) }, - { "0.000030517578125", 0, EXACT_UNSAT6 (0x0001, 0x00010000, 0x0001000000000000ll, 0x0002, 0x00020000u, 0x0002000000000000ull) }, - { "0.376739501953125", 0, EXACT_UNSAT6 (12345, 12345*0x10000, 12345*0x1000000000000ll, 12345*0x2, 12345*0x20000u, 12345*0x2000000000000ull) }, - { "0x.dcba", 0, EXACT_UNSAT6 (0x6e5d, 0x6e5d0000, 0x6e5d000000000000ll, 0xdcba, 0xdcba0000u, 0xdcba000000000000ull) }, - { "0xd.cbap-4", 0, EXACT_UNSAT6 (0x6e5d, 0x6e5d0000, 0x6e5d000000000000ll, 0xdcba, 0xdcba0000u, 0xdcba000000000000ull) }, - /* Strings evaluating to values between 0.0 and 1.0, depending on - rounding mode. */ - { "0.1", 0, - { - UNSAT6 (0xccd, 0xccccccd, 0xccccccccccccccdll, 0x199a, 0x1999999au, 0x199999999999999aull), - UNSAT6 (0xccc, 0xccccccc, 0xcccccccccccccccll, 0x1999, 0x19999999u, 0x1999999999999999ull), - UNSAT6 (0xccd, 0xccccccd, 0xccccccccccccccdll, 0x199a, 0x1999999au, 0x199999999999999aull), - UNSAT6 (0xccc, 0xccccccc, 0xcccccccccccccccll, 0x1999, 0x19999999u, 0x1999999999999999ull) - } - }, - { "0.5000152587890625", 0, - { - UNSAT6 (0x4000, 0x40008000, 0x4000800000000000ll, 0x8001, 0x80010000u, 0x8001000000000000ull), - UNSAT6 (0x4000, 0x40008000, 0x4000800000000000ll, 0x8001, 0x80010000u, 0x8001000000000000ull), - UNSAT6 (0x4001, 0x40008000, 0x4000800000000000ll, 0x8001, 0x80010000u, 0x8001000000000000ull), - UNSAT6 (0x4000, 0x40008000, 0x4000800000000000ll, 0x8001, 0x80010000u, 0x8001000000000000ull) - } - }, - { "0.50001525878906250000000000000000000000000000000000000000000000000000000000001", 0, - { - UNSAT6 (0x4001, 0x40008000, 0x4000800000000000ll, 0x8001, 0x80010000u, 0x8001000000000000ull), - UNSAT6 (0x4000, 0x40008000, 0x4000800000000000ll, 0x8001, 0x80010000u, 0x8001000000000000ull), - UNSAT6 (0x4001, 0x40008001, 0x4000800000000001ll, 0x8002, 0x80010001u, 0x8001000000000001ull), - UNSAT6 (0x4000, 0x40008000, 0x4000800000000000ll, 0x8001, 0x80010000u, 0x8001000000000000ull) - } - }, - { "0.50000000000000000008131516293641283255055896006524562835693359375", 0, - { - UNSAT6 (0x4000, 0x40000000, 0x4000000000000001ll, 0x8000, 0x80000000u, 0x8000000000000002ull), - UNSAT6 (0x4000, 0x40000000, 0x4000000000000000ll, 0x8000, 0x80000000u, 0x8000000000000001ull), - UNSAT6 (0x4001, 0x40000001, 0x4000000000000001ll, 0x8001, 0x80000001u, 0x8000000000000002ull), - UNSAT6 (0x4000, 0x40000000, 0x4000000000000000ll, 0x8000, 0x80000000u, 0x8000000000000001ull) - } - }, - { "0.50000000000000000008131516293641283255055896006524562835693359376", 0, - { - UNSAT6 (0x4000, 0x40000000, 0x4000000000000001ll, 0x8000, 0x80000000u, 0x8000000000000002ull), - UNSAT6 (0x4000, 0x40000000, 0x4000000000000000ll, 0x8000, 0x80000000u, 0x8000000000000001ull), - UNSAT6 (0x4001, 0x40000001, 0x4000000000000001ll, 0x8001, 0x80000001u, 0x8000000000000002ull), - UNSAT6 (0x4000, 0x40000000, 0x4000000000000000ll, 0x8000, 0x80000000u, 0x8000000000000001ull) - } - }, - { "0.50000000000000000008131516293641283255055896006524562835693359374", 0, - { - UNSAT6 (0x4000, 0x40000000, 0x4000000000000001ll, 0x8000, 0x80000000u, 0x8000000000000001ull), - UNSAT6 (0x4000, 0x40000000, 0x4000000000000000ll, 0x8000, 0x80000000u, 0x8000000000000001ull), - UNSAT6 (0x4001, 0x40000001, 0x4000000000000001ll, 0x8001, 0x80000001u, 0x8000000000000002ull), - UNSAT6 (0x4000, 0x40000000, 0x4000000000000000ll, 0x8000, 0x80000000u, 0x8000000000000001ull) - } - }, - { "0x0.80000000000000018", 0, - { - UNSAT6 (0x4000, 0x40000000, 0x4000000000000001ll, 0x8000, 0x80000000u, 0x8000000000000002ull), - UNSAT6 (0x4000, 0x40000000, 0x4000000000000000ll, 0x8000, 0x80000000u, 0x8000000000000001ull), - UNSAT6 (0x4001, 0x40000001, 0x4000000000000001ll, 0x8001, 0x80000001u, 0x8000000000000002ull), - UNSAT6 (0x4000, 0x40000000, 0x4000000000000000ll, 0x8000, 0x80000000u, 0x8000000000000001ull) - } - }, - { "0x0.80000000000000017", 0, - { - UNSAT6 (0x4000, 0x40000000, 0x4000000000000001ll, 0x8000, 0x80000000u, 0x8000000000000001ull), - UNSAT6 (0x4000, 0x40000000, 0x4000000000000000ll, 0x8000, 0x80000000u, 0x8000000000000001ull), - UNSAT6 (0x4001, 0x40000001, 0x4000000000000001ll, 0x8001, 0x80000001u, 0x8000000000000002ull), - UNSAT6 (0x4000, 0x40000000, 0x4000000000000000ll, 0x8000, 0x80000000u, 0x8000000000000001ull) - } - }, - /* Strings evaluating to values between -1.0 and 0.0, depending on - rounding mode. */ - { "-0.1", 0, - { - SATNEG (-0xccd, -0xccccccd, -0xccccccccccccccdll), - SATNEG (-0xccc, -0xccccccc, -0xcccccccccccccccll), - SATNEG (-0xccc, -0xccccccc, -0xcccccccccccccccll), - SATNEG (-0xccd, -0xccccccd, -0xccccccccccccccdll) - } - }, - { "-0.5000000000000000001626303258728256651011179201304912567138671875", 0, - { - SATNEG (-0x4000, -0x40000000, -0x4000000000000002ll), - SATNEG (-0x4000, -0x40000000, -0x4000000000000001ll), - SATNEG (-0x4000, -0x40000000, -0x4000000000000001ll), - SATNEG (-0x4001, -0x40000001, -0x4000000000000002ll) - } - }, - { "-0.5000000000000000001626303258728256651011179201304912567138671874", 0, - { - SATNEG (-0x4000, -0x40000000, -0x4000000000000001ll), - SATNEG (-0x4000, -0x40000000, -0x4000000000000001ll), - SATNEG (-0x4000, -0x40000000, -0x4000000000000001ll), - SATNEG (-0x4001, -0x40000001, -0x4000000000000002ll) - } - }, - { "-0.5000000000000000001626303258728256651011179201304912567138671876", 0, - { - SATNEG (-0x4000, -0x40000000, -0x4000000000000002ll), - SATNEG (-0x4000, -0x40000000, -0x4000000000000001ll), - SATNEG (-0x4000, -0x40000000, -0x4000000000000001ll), - SATNEG (-0x4001, -0x40000001, -0x4000000000000002ll) - } - }, - { "-0x.8000000000000003", 0, - { - SATNEG (-0x4000, -0x40000000, -0x4000000000000002ll), - SATNEG (-0x4000, -0x40000000, -0x4000000000000001ll), - SATNEG (-0x4000, -0x40000000, -0x4000000000000001ll), - SATNEG (-0x4001, -0x40000001, -0x4000000000000002ll) - } - }, - { "-0x.8000000000000002f", 0, - { - SATNEG (-0x4000, -0x40000000, -0x4000000000000001ll), - SATNEG (-0x4000, -0x40000000, -0x4000000000000001ll), - SATNEG (-0x4000, -0x40000000, -0x4000000000000001ll), - SATNEG (-0x4001, -0x40000001, -0x4000000000000002ll) - } - }, - /* Strings evaluating very close to 1.0, saturation depending on - rounding mode. */ - { "0x.fffe1", 0, - { - { UNSAT (0x7fff), UNSAT (0x7fff0800), UNSAT (0x7fff080000000000ll), UNSAT (0xfffe), UNSAT (0xfffe1000u), UNSAT (0xfffe100000000000ull) }, - { UNSAT (0x7fff), UNSAT (0x7fff0800), UNSAT (0x7fff080000000000ll), UNSAT (0xfffe), UNSAT (0xfffe1000u), UNSAT (0xfffe100000000000ull) }, - { SAT (0x7fff), UNSAT (0x7fff0800), UNSAT (0x7fff080000000000ll), UNSAT (0xffff), UNSAT (0xfffe1000u), UNSAT (0xfffe100000000000ull) }, - { UNSAT (0x7fff), UNSAT (0x7fff0800), UNSAT (0x7fff080000000000ll), UNSAT (0xfffe), UNSAT (0xfffe1000u), UNSAT (0xfffe100000000000ull) } - } - }, - { "0x.ffff8", 0, - { - { SAT (0x7fff), UNSAT (0x7fffc000), UNSAT (0x7fffc00000000000ll), SAT (0xffff), UNSAT (0xffff8000u), UNSAT (0xffff800000000000ull) }, - { UNSAT (0x7fff), UNSAT (0x7fffc000), UNSAT (0x7fffc00000000000ll), UNSAT (0xffff), UNSAT (0xffff8000u), UNSAT (0xffff800000000000ull) }, - { SAT (0x7fff), UNSAT (0x7fffc000), UNSAT (0x7fffc00000000000ll), SAT (0xffff), UNSAT (0xffff8000u), UNSAT (0xffff800000000000ull) }, - { UNSAT (0x7fff), UNSAT (0x7fffc000), UNSAT (0x7fffc00000000000ll), UNSAT (0xffff), UNSAT (0xffff8000u), UNSAT (0xffff800000000000ull) } - } - }, - { "0x.fffffffffffffffff", 0, - { - { SAT (0x7fff), SAT (0x7fffffff), SAT (0x7fffffffffffffffll), SAT (0xffff), SAT (0xffffffffu), SAT (0xffffffffffffffffull) }, - { UNSAT (0x7fff), UNSAT (0x7fffffff), UNSAT (0x7fffffffffffffffll), UNSAT (0xffff), UNSAT (0xffffffffu), UNSAT (0xffffffffffffffffull) }, - { SAT (0x7fff), SAT (0x7fffffff), SAT (0x7fffffffffffffffll), SAT (0xffff), SAT (0xffffffffu), SAT (0xffffffffffffffffull) }, - { UNSAT (0x7fff), UNSAT (0x7fffffff), UNSAT (0x7fffffffffffffffll), UNSAT (0xffff), UNSAT (0xffffffffu), UNSAT (0xffffffffffffffffull) } - } - }, - /* Strings evaluating very close to -1.0, may round to -1 but only - saturate for unsigned. */ - { "-0x.fffe1", 0, - { - SATNEG (-0x7fff, -0x7fff0800, -0x7fff080000000000ll), - SATNEG (-0x7fff, -0x7fff0800, -0x7fff080000000000ll), - SATNEG (-0x7fff, -0x7fff0800, -0x7fff080000000000ll), - SATNEG (SAT_MIN_S16, -0x7fff0800, -0x7fff080000000000ll) - } - }, - { "-0x.ffffffffffffffff", 0, - { - SATNEG (SAT_MIN_S16, SAT_MIN_S32, SAT_MIN_S64), - SATNEG (-0x7fff, -0x7fffffff, -0x7fffffffffffffffll), - SATNEG (-0x7fff, -0x7fffffff, -0x7fffffffffffffffll), - SATNEG (SAT_MIN_S16, SAT_MIN_S32, SAT_MIN_S64) - } - } -}; - -static const int rounding_modes[4] = { - FE_TONEAREST, - FE_TOWARDZERO, - FE_UPWARD, - FE_DOWNWARD -}; - -static const char *const mode_names[4] = { - "FE_TONEAREST", - "FE_TOWARDZERO", - "FE_UPWARD", - "FE_DOWNWARD" -}; - -int -main (void) -{ - int passes = 0; - int fails = 0; - size_t i; - for (i = 0; i < sizeof (tests) / sizeof (tests[0]); i++) - { - size_t j; - for (j = 0; j < 4; j++) - { - if (fesetround (rounding_modes[j]) != 0) - { - printf ("fesetround (%s) failed.\n", mode_names[j]); - abort (); - } -#define DO_TEST(SU, SZ, PR) \ - do { \ - SU##int##SZ##_t expret = tests[i].res[j].SU##SZ; \ - int experr = tests[i].res[j].e##SU##SZ; \ - size_t explen = strlen (tests[i].s) - tests[i].njunk; \ - SU##int##SZ##_t ret0, ret1; \ - int reterr; \ - size_t retlen; \ - char *ep; \ - errno = 0; \ - ret0 = strto##SU##fix##SZ (tests[i].s, &ep); \ - reterr = errno; \ - retlen = ep - tests[i].s; \ - if (ret0 == expret) \ - passes++; \ - else \ - { \ - fails++; \ - printf ("strto"#SU"fix"#SZ" (\"%s\") in mode %s " \ - "returned %0"PR"x, expected %0"PR"x.\n", \ - tests[i].s, mode_names[j], ret0, expret); \ - } \ - if (reterr == experr) \ - passes++; \ - else \ - { \ - fails++; \ - printf ("strto"#SU"fix"#SZ" (\"%s\") in mode %s " \ - "left errno as %d, expected %d.\n", \ - tests[i].s, mode_names[j], reterr, experr); \ - } \ - if (retlen == explen) \ - passes++; \ - else \ - { \ - fails++; \ - printf ("strto"#SU"fix"#SZ" (\"%s\") in mode %s " \ - "consumed %zu characters, expected %zu.\n", \ - tests[i].s, mode_names[j], retlen, explen); \ - } \ - if (experr == 0) \ - { \ - ret1 = ato##SU##fix##SZ (tests[i].s); \ - if (ret1 == expret) \ - passes++; \ - else \ - { \ - fails++; \ - printf ("ato"#SU"fix"#SZ" (\"%s\") in mode %s " \ - "returned %0"PR"x, expected %0"PR"x.\n", \ - tests[i].s, mode_names[j], ret1, expret); \ - } \ - } \ - } while (0) - DO_TEST (s, 16, "4h"); - DO_TEST (s, 32, "8"); - DO_TEST (s, 64, "16ll"); - DO_TEST (u, 16, "4h"); - DO_TEST (u, 32, "8"); - DO_TEST (u, 64, "16ll"); - } - } - printf ("Number of passes: %d\nNumber of failures: %d\n", passes, fails); - return fails != 0; -} diff --git a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/w_sqrt.c b/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/w_sqrt.c deleted file mode 100644 index 3721f24a7..000000000 --- a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/w_sqrt.c +++ /dev/null @@ -1 +0,0 @@ -#include <math/w_sqrt.c> diff --git a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/w_sqrtf.c b/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/w_sqrtf.c deleted file mode 100644 index 7c6ca901a..000000000 --- a/libc/ports/sysdeps/powerpc/powerpc32/e500/fpu/w_sqrtf.c +++ /dev/null @@ -1 +0,0 @@ -#include <math/w_sqrtf.c> diff --git a/libc/ports/sysdeps/powerpc/powerpc32/e500/soft-fp/Makefile b/libc/ports/sysdeps/powerpc/powerpc32/e500/soft-fp/Makefile deleted file mode 100644 index 2d7d09205..000000000 --- a/libc/ports/sysdeps/powerpc/powerpc32/e500/soft-fp/Makefile +++ /dev/null @@ -1,4 +0,0 @@ -# Double precision floating point gets emulated. -ifeq ($(subdir),soft-fp) -sysdep_routines += $(gcc-double-routines) fraiseexcept-soft -endif diff --git a/libc/ports/sysdeps/powerpc/powerpc32/e500/soft-fp/Subdirs b/libc/ports/sysdeps/powerpc/powerpc32/e500/soft-fp/Subdirs deleted file mode 100644 index 87eadf302..000000000 --- a/libc/ports/sysdeps/powerpc/powerpc32/e500/soft-fp/Subdirs +++ /dev/null @@ -1 +0,0 @@ -soft-fp diff --git a/libc/ports/sysdeps/powerpc/powerpc32/e500/soft-fp/Versions b/libc/ports/sysdeps/powerpc/powerpc32/e500/soft-fp/Versions deleted file mode 100644 index f126c9a8a..000000000 --- a/libc/ports/sysdeps/powerpc/powerpc32/e500/soft-fp/Versions +++ /dev/null @@ -1,19 +0,0 @@ -libc { - GLIBC_2.3.3 { - __feraiseexcept_soft; - __adddf3; __truncdfsf2; - __divdf3; __eqdf2; - __extendsfdf2; __fixdfdi; __fixdfsi; __fixsfdi; - __fixtfdi; - __fixunsdfdi; __fixunsdfsi; - __floatdidf; __floatsidf; - __gedf2; __ledf2; __muldf3; - __negdf2; __sqrtdf2; __subdf3; - __truncdfsf2; - } - GLIBC_2.5 { - __floatundidf; __floatunsidf; - __unorddf2; __nedf2; - __gtdf2; __ltdf2; - } -} diff --git a/libc/ports/sysdeps/powerpc/powerpc32/e500/soft-fp/fraiseexcept-soft.c b/libc/ports/sysdeps/powerpc/powerpc32/e500/soft-fp/fraiseexcept-soft.c deleted file mode 100644 index d2bb5410f..000000000 --- a/libc/ports/sysdeps/powerpc/powerpc32/e500/soft-fp/fraiseexcept-soft.c +++ /dev/null @@ -1,28 +0,0 @@ -/* Raise given exceptions. - Copyright (C) 2004-2013 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Aldy Hernandez <aldyh@redhat.com>, 2004. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <fenv_libc.h> -#include <libc-symbols.h> - -int __feraiseexcept_soft (int); -libc_hidden_proto (__feraiseexcept_soft) - -#define __FERAISEEXCEPT_INTERNAL __feraiseexcept_soft -#include "../spe-raise.c" -libc_hidden_def (__feraiseexcept_soft) diff --git a/libc/ports/sysdeps/powerpc/powerpc32/e500/soft-fp/sfp-machine.h b/libc/ports/sysdeps/powerpc/powerpc32/e500/soft-fp/sfp-machine.h deleted file mode 100644 index 8b80e128b..000000000 --- a/libc/ports/sysdeps/powerpc/powerpc32/e500/soft-fp/sfp-machine.h +++ /dev/null @@ -1,65 +0,0 @@ -#ifndef _SFP_MACHINE_H_ -#define _SFP_MACHINE_H_ -#include <fenv_libc.h> -#include <libc-symbols.h> - -int __feraiseexcept_soft (int); -libc_hidden_proto (__feraiseexcept_soft) - -#define _FP_W_TYPE_SIZE 32 -#define _FP_W_TYPE unsigned long -#define _FP_WS_TYPE signed long -#define _FP_I_TYPE long - -#define _FP_MUL_MEAT_S(R,X,Y) \ - _FP_MUL_MEAT_1_wide(_FP_WFRACBITS_S,R,X,Y,umul_ppmm) -#define _FP_MUL_MEAT_D(R,X,Y) \ - _FP_MUL_MEAT_2_wide(_FP_WFRACBITS_D,R,X,Y,umul_ppmm) -#define _FP_MUL_MEAT_Q(R,X,Y) \ - _FP_MUL_MEAT_4_wide(_FP_WFRACBITS_Q,R,X,Y,umul_ppmm) - -#define _FP_DIV_MEAT_S(R,X,Y) _FP_DIV_MEAT_1_loop(S,R,X,Y) -#define _FP_DIV_MEAT_D(R,X,Y) _FP_DIV_MEAT_2_udiv(D,R,X,Y) -#define _FP_DIV_MEAT_Q(R,X,Y) _FP_DIV_MEAT_4_udiv(Q,R,X,Y) - -#define _FP_NANFRAC_S ((_FP_QNANBIT_S << 1) - 1) -#define _FP_NANFRAC_D ((_FP_QNANBIT_D << 1) - 1), -1 -#define _FP_NANFRAC_Q ((_FP_QNANBIT_Q << 1) - 1), -1, -1, -1 -#define _FP_NANSIGN_S 0 -#define _FP_NANSIGN_D 0 -#define _FP_NANSIGN_Q 0 - -#define _FP_KEEPNANFRACP 1 -#define _FP_QNANNEGATEDP 0 - -/* Someone please check this. */ -#define _FP_CHOOSENAN(fs, wc, R, X, Y, OP) \ - do { \ - if ((_FP_FRAC_HIGH_RAW_##fs(X) & _FP_QNANBIT_##fs) \ - && !(_FP_FRAC_HIGH_RAW_##fs(Y) & _FP_QNANBIT_##fs)) \ - { \ - R##_s = Y##_s; \ - _FP_FRAC_COPY_##wc(R,Y); \ - } \ - else \ - { \ - R##_s = X##_s; \ - _FP_FRAC_COPY_##wc(R,X); \ - } \ - R##_c = FP_CLS_NAN; \ - } while (0) - -/* Exception flags. We use the bit positions of the appropriate bits - in the FPEFSCR, which also correspond to the FE_* bits. This makes - everything easier ;-). */ -#define FP_EX_INEXACT (1 << (63 - 42)) -#define FP_EX_INVALID (1 << (63 - 43)) -#define FP_EX_DIVZERO (1 << (63 - 44)) -#define FP_EX_UNDERFLOW (1 << (63 - 45)) -#define FP_EX_OVERFLOW (1 << (63 - 46)) - -/* This will work inasmuch as FP_EX_* are the same as FE_*. */ -#define FP_HANDLE_EXCEPTIONS __feraiseexcept_soft (_fex) - -#define FP_ROUNDMODE (fegetenv_register() & 0x3) -#endif /* _SFP_MACHINE_H_ */ diff --git a/libc/ports/sysdeps/powerpc/powerpc32/e500/spe-raise.c b/libc/ports/sysdeps/powerpc/powerpc32/e500/spe-raise.c deleted file mode 100644 index 79398e3b1..000000000 --- a/libc/ports/sysdeps/powerpc/powerpc32/e500/spe-raise.c +++ /dev/null @@ -1,66 +0,0 @@ -/* Raise given exceptions. - Copyright (C) 1997-2013 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <fenv_libc.h> - -int -__FERAISEEXCEPT_INTERNAL (int excepts) -{ - unsigned long f; - - f = fegetenv_register (); - f |= (excepts & FE_ALL_EXCEPT); - fesetenv_register (f); - - /* Force the operations that cause the exceptions. */ - if ((FE_INVALID & excepts) != 0) - { - /* ?? Does not set sticky bit ?? */ - /* 0 / 0 */ - asm volatile ("efsdiv %0,%0,%1" : : "r" (0), "r" (0)); - } - - if ((FE_DIVBYZERO & excepts) != 0) - { - /* 1.0 / 0.0 */ - asm volatile ("efsdiv %0,%0,%1" : : "r" (1.0F), "r" (0)); - } - - if ((FE_OVERFLOW & excepts) != 0) - { - /* ?? Does not set sticky bit ?? */ - /* Largest normalized number plus itself. */ - asm volatile ("efsadd %0,%0,%1" : : "r" (0x7f7fffff), "r" (0x7f7fffff)); - } - - if ((FE_UNDERFLOW & excepts) != 0) - { - /* ?? Does not set sticky bit ?? */ - /* Smallest normalized number times itself. */ - asm volatile ("efsmul %0,%0,%1" : : "r" (0x800000), "r" (0x800000)); - } - - if ((FE_INEXACT & excepts) != 0) - { - /* Smallest normalized minus 1.0 raises the inexact flag. */ - asm volatile ("efssub %0,%0,%1" : : "r" (0x00800000), "r" (1.0F)); - } - - /* Success. */ - return 0; -} |