Merge "Remove <fenv.h> inlines for obsolete API levels."
This commit is contained in:
commit
59d90262ed
6 changed files with 112 additions and 268 deletions
26
libc/NOTICE
26
libc/NOTICE
|
@ -3459,32 +3459,6 @@ Materiel Command, USAF, under agreement number F39502-99-1-0512.
|
|||
|
||||
-------------------------------------------------------------------
|
||||
|
||||
Copyright (c) 2004 David Schultz <das@FreeBSD.ORG>
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions
|
||||
are met:
|
||||
1. Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
2. Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
|
||||
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
SUCH DAMAGE.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
|
||||
Copyright (c) 2004 by Internet Systems Consortium, Inc. ("ISC")
|
||||
Copyright (c) 1995,1999 by Internet Software Consortium.
|
||||
|
||||
|
|
|
@ -1,43 +0,0 @@
|
|||
/*
|
||||
* Copyright (C) 2018 The Android Open Source Project
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in
|
||||
* the documentation and/or other materials provided with the
|
||||
* distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
||||
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
||||
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
|
||||
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
|
||||
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
|
||||
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
/**
|
||||
* @file legacy_fenv_inlines_arm.h
|
||||
* @brief Inline ARM-specific definitions of fenv for old API levels.
|
||||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
|
||||
#if __ANDROID_API__ < 21 && defined(__arm__)
|
||||
|
||||
#define __BIONIC_FENV_INLINE static __inline
|
||||
#include <bits/fenv_inlines_arm.h>
|
||||
|
||||
#endif
|
|
@ -1,142 +0,0 @@
|
|||
/*-
|
||||
* Copyright (c) 2004 David Schultz <das@FreeBSD.ORG>
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $FreeBSD: src/lib/msun/arm/fenv.c,v 1.1 2004/06/06 10:03:59 das Exp $
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
|
||||
#if defined(__arm__)
|
||||
|
||||
#if !defined(__BIONIC_FENV_INLINE)
|
||||
#define __BIONIC_FENV_INLINE static __inline
|
||||
#endif
|
||||
|
||||
#include <bits/fenv_arm.h>
|
||||
|
||||
__BEGIN_DECLS
|
||||
|
||||
#define FPSCR_RMODE_SHIFT 22
|
||||
|
||||
__BIONIC_FENV_INLINE int fegetenv(fenv_t* __envp) {
|
||||
fenv_t _fpscr;
|
||||
__asm__ __volatile__("vmrs %0,fpscr" : "=r" (_fpscr));
|
||||
*__envp = _fpscr;
|
||||
return 0;
|
||||
}
|
||||
|
||||
__BIONIC_FENV_INLINE int fesetenv(const fenv_t* __envp) {
|
||||
fenv_t _fpscr = *__envp;
|
||||
__asm__ __volatile__("vmsr fpscr,%0" : :"ri" (_fpscr));
|
||||
return 0;
|
||||
}
|
||||
|
||||
__BIONIC_FENV_INLINE int feclearexcept(int __excepts) {
|
||||
fexcept_t __fpscr;
|
||||
fegetenv(&__fpscr);
|
||||
__fpscr &= ~__excepts;
|
||||
fesetenv(&__fpscr);
|
||||
return 0;
|
||||
}
|
||||
|
||||
__BIONIC_FENV_INLINE int fegetexceptflag(fexcept_t* __flagp, int __excepts) {
|
||||
fexcept_t __fpscr;
|
||||
fegetenv(&__fpscr);
|
||||
*__flagp = __fpscr & __excepts;
|
||||
return 0;
|
||||
}
|
||||
|
||||
__BIONIC_FENV_INLINE int fesetexceptflag(const fexcept_t* __flagp, int __excepts) {
|
||||
fexcept_t __fpscr;
|
||||
fegetenv(&__fpscr);
|
||||
__fpscr &= ~__excepts;
|
||||
__fpscr |= *__flagp & __excepts;
|
||||
fesetenv(&__fpscr);
|
||||
return 0;
|
||||
}
|
||||
|
||||
__BIONIC_FENV_INLINE int feraiseexcept(int __excepts) {
|
||||
fexcept_t __ex = __excepts;
|
||||
fesetexceptflag(&__ex, __excepts);
|
||||
return 0;
|
||||
}
|
||||
|
||||
__BIONIC_FENV_INLINE int fetestexcept(int __excepts) {
|
||||
fexcept_t __fpscr;
|
||||
fegetenv(&__fpscr);
|
||||
return (__fpscr & __excepts);
|
||||
}
|
||||
|
||||
__BIONIC_FENV_INLINE int fegetround(void) {
|
||||
fenv_t _fpscr;
|
||||
fegetenv(&_fpscr);
|
||||
return ((_fpscr >> FPSCR_RMODE_SHIFT) & 0x3);
|
||||
}
|
||||
|
||||
__BIONIC_FENV_INLINE int fesetround(int __round) {
|
||||
fenv_t _fpscr;
|
||||
fegetenv(&_fpscr);
|
||||
_fpscr &= ~(0x3 << FPSCR_RMODE_SHIFT);
|
||||
_fpscr |= (__round << FPSCR_RMODE_SHIFT);
|
||||
fesetenv(&_fpscr);
|
||||
return 0;
|
||||
}
|
||||
|
||||
__BIONIC_FENV_INLINE int feholdexcept(fenv_t* __envp) {
|
||||
fenv_t __env;
|
||||
fegetenv(&__env);
|
||||
*__envp = __env;
|
||||
__env &= ~FE_ALL_EXCEPT;
|
||||
fesetenv(&__env);
|
||||
return 0;
|
||||
}
|
||||
|
||||
__BIONIC_FENV_INLINE int feupdateenv(const fenv_t* __envp) {
|
||||
fexcept_t __fpscr;
|
||||
fegetenv(&__fpscr);
|
||||
fesetenv(__envp);
|
||||
feraiseexcept(__fpscr & FE_ALL_EXCEPT);
|
||||
return 0;
|
||||
}
|
||||
|
||||
__BIONIC_FENV_INLINE int feenableexcept(int __mask __unused) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
__BIONIC_FENV_INLINE int fedisableexcept(int __mask __unused) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
__BIONIC_FENV_INLINE int fegetexcept(void) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
#undef FPSCR_RMODE_SHIFT
|
||||
|
||||
__END_DECLS
|
||||
|
||||
#endif
|
|
@ -43,8 +43,6 @@
|
|||
|
||||
__BEGIN_DECLS
|
||||
|
||||
// fenv was always available on x86.
|
||||
#if __ANDROID_API__ >= 21 || defined(__i386__)
|
||||
int feclearexcept(int __exceptions) __INTRODUCED_IN_ARM(21) __INTRODUCED_IN_X86(9);
|
||||
int fegetexceptflag(fexcept_t* _Nonnull __flag_ptr, int __exceptions) __INTRODUCED_IN_ARM(21) __INTRODUCED_IN_X86(9);
|
||||
int feraiseexcept(int __exceptions) __INTRODUCED_IN_ARM(21) __INTRODUCED_IN_X86(9);
|
||||
|
@ -62,9 +60,6 @@ int feupdateenv(const fenv_t* _Nonnull __env) __INTRODUCED_IN_ARM(21) __INTRODUC
|
|||
int feenableexcept(int __exceptions) __INTRODUCED_IN_ARM(21) __INTRODUCED_IN_X86(9);
|
||||
int fedisableexcept(int __exceptions) __INTRODUCED_IN_ARM(21) __INTRODUCED_IN_X86(9);
|
||||
int fegetexcept(void) __INTRODUCED_IN_ARM(21) __INTRODUCED_IN_X86(9);
|
||||
#else
|
||||
/* Defined as inlines for pre-21 ARM. */
|
||||
#endif
|
||||
|
||||
/*
|
||||
* The following constant represents the default floating-point environment
|
||||
|
@ -78,7 +73,3 @@ extern const fenv_t __fe_dfl_env;
|
|||
#define FE_DFL_ENV (&__fe_dfl_env)
|
||||
|
||||
__END_DECLS
|
||||
|
||||
#if defined(__arm__)
|
||||
#include <android/legacy_fenv_inlines_arm.h>
|
||||
#endif
|
||||
|
|
28
libm/NOTICE
28
libm/NOTICE
|
@ -253,34 +253,6 @@ SUCH DAMAGE.
|
|||
|
||||
-------------------------------------------------------------------
|
||||
|
||||
Copyright (C) 2018 The Android Open Source Project
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions
|
||||
are met:
|
||||
* Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
* Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in
|
||||
the documentation and/or other materials provided with the
|
||||
distribution.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
||||
FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
||||
COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||
BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
|
||||
OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
|
||||
AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
|
||||
OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
SUCH DAMAGE.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
|
||||
Copyright (C) 2021 The Android Open Source Project
|
||||
All rights reserved.
|
||||
|
||||
|
|
132
libm/arm/fenv.c
132
libm/arm/fenv.c
|
@ -1,34 +1,126 @@
|
|||
/*
|
||||
* Copyright (C) 2018 The Android Open Source Project
|
||||
/*-
|
||||
* Copyright (c) 2004 David Schultz <das@FreeBSD.ORG>
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in
|
||||
* the documentation and/or other materials provided with the
|
||||
* distribution.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
||||
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
||||
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
|
||||
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
|
||||
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
|
||||
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $FreeBSD: src/lib/msun/arm/fenv.c,v 1.1 2004/06/06 10:03:59 das Exp $
|
||||
*/
|
||||
|
||||
#include <fenv.h>
|
||||
|
||||
#define __BIONIC_FENV_INLINE /* Out of line. */
|
||||
#include <bits/fenv_inlines_arm.h>
|
||||
#define FPSCR_RMODE_SHIFT 22
|
||||
|
||||
const fenv_t __fe_dfl_env = 0;
|
||||
|
||||
int fegetenv(fenv_t* __envp) {
|
||||
fenv_t _fpscr;
|
||||
__asm__ __volatile__("vmrs %0,fpscr" : "=r"(_fpscr));
|
||||
*__envp = _fpscr;
|
||||
return 0;
|
||||
}
|
||||
|
||||
int fesetenv(const fenv_t* __envp) {
|
||||
fenv_t _fpscr = *__envp;
|
||||
__asm__ __volatile__("vmsr fpscr,%0" : : "ri"(_fpscr));
|
||||
return 0;
|
||||
}
|
||||
|
||||
int feclearexcept(int __excepts) {
|
||||
fexcept_t __fpscr;
|
||||
fegetenv(&__fpscr);
|
||||
__fpscr &= ~__excepts;
|
||||
fesetenv(&__fpscr);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int fegetexceptflag(fexcept_t* __flagp, int __excepts) {
|
||||
fexcept_t __fpscr;
|
||||
fegetenv(&__fpscr);
|
||||
*__flagp = __fpscr & __excepts;
|
||||
return 0;
|
||||
}
|
||||
|
||||
int fesetexceptflag(const fexcept_t* __flagp, int __excepts) {
|
||||
fexcept_t __fpscr;
|
||||
fegetenv(&__fpscr);
|
||||
__fpscr &= ~__excepts;
|
||||
__fpscr |= *__flagp & __excepts;
|
||||
fesetenv(&__fpscr);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int feraiseexcept(int __excepts) {
|
||||
fexcept_t __ex = __excepts;
|
||||
fesetexceptflag(&__ex, __excepts);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int fetestexcept(int __excepts) {
|
||||
fexcept_t __fpscr;
|
||||
fegetenv(&__fpscr);
|
||||
return (__fpscr & __excepts);
|
||||
}
|
||||
|
||||
int fegetround(void) {
|
||||
fenv_t _fpscr;
|
||||
fegetenv(&_fpscr);
|
||||
return ((_fpscr >> FPSCR_RMODE_SHIFT) & 0x3);
|
||||
}
|
||||
|
||||
int fesetround(int __round) {
|
||||
fenv_t _fpscr;
|
||||
fegetenv(&_fpscr);
|
||||
_fpscr &= ~(0x3 << FPSCR_RMODE_SHIFT);
|
||||
_fpscr |= (__round << FPSCR_RMODE_SHIFT);
|
||||
fesetenv(&_fpscr);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int feholdexcept(fenv_t* __envp) {
|
||||
fenv_t __env;
|
||||
fegetenv(&__env);
|
||||
*__envp = __env;
|
||||
__env &= ~FE_ALL_EXCEPT;
|
||||
fesetenv(&__env);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int feupdateenv(const fenv_t* __envp) {
|
||||
fexcept_t __fpscr;
|
||||
fegetenv(&__fpscr);
|
||||
fesetenv(__envp);
|
||||
feraiseexcept(__fpscr & FE_ALL_EXCEPT);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int feenableexcept(int __mask __unused) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
int fedisableexcept(int __mask __unused) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
int fegetexcept(void) {
|
||||
return 0;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue