From 6b0383969c1cfd9eb1aa74fc60e59f39a95074d1 Mon Sep 17 00:00:00 2001 From: Peter Avalos Date: Mon, 31 Jan 2011 21:06:52 -1000 Subject: [PATCH] fenv: Explicitly specify sizes for control and status words. Obtained-from: FreeBSD --- lib/libm/arch/i386/fenv.c | 11 ++++++----- lib/libm/arch/i386/fenv.h | 8 ++++---- lib/libm/arch/x86_64/fenv.c | 7 ++++--- lib/libm/arch/x86_64/fenv.h | 4 ++-- 4 files changed, 16 insertions(+), 14 deletions(-) diff --git a/lib/libm/arch/i386/fenv.c b/lib/libm/arch/i386/fenv.c index f272224192..cc1125097b 100644 --- a/lib/libm/arch/i386/fenv.c +++ b/lib/libm/arch/i386/fenv.c @@ -23,7 +23,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/lib/msun/i387/fenv.c,v 1.3 2007/01/05 07:15:26 das Exp $ + * $FreeBSD: src/lib/msun/i387/fenv.c,v 1.4 2010/02/03 20:23:47 kib Exp $ */ #include @@ -86,7 +86,7 @@ int fesetexceptflag(const fexcept_t *flagp, int excepts) { fenv_t env; - int mxcsr; + __uint32_t mxcsr; __fnstenv(&env); env.__status &= ~excepts; @@ -116,7 +116,7 @@ feraiseexcept(int excepts) int fegetenv(fenv_t *envp) { - int mxcsr; + __uint32_t mxcsr; __fnstenv(envp); /* @@ -134,7 +134,7 @@ fegetenv(fenv_t *envp) int feholdexcept(fenv_t *envp) { - int mxcsr; + __uint32_t mxcsr; __fnstenv(envp); __fnclex(); @@ -167,7 +167,8 @@ feupdateenv(const fenv_t *envp) int __feenableexcept(int mask) { - int mxcsr, control, omask; + __uint32_t mxcsr, omask; + __uint16_t control; mask &= FE_ALL_EXCEPT; __fnstcw(&control); diff --git a/lib/libm/arch/i386/fenv.h b/lib/libm/arch/i386/fenv.h index 1bfe0a1035..2186895b4e 100644 --- a/lib/libm/arch/i386/fenv.h +++ b/lib/libm/arch/i386/fenv.h @@ -23,7 +23,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/lib/msun/i387/fenv.h,v 1.6 2007/01/06 21:46:23 das Exp $ + * $FreeBSD: src/lib/msun/i387/fenv.h,v 1.7 2010/02/03 20:23:47 kib Exp $ */ #ifndef _FENV_H_ @@ -106,7 +106,7 @@ static __inline int feclearexcept(int __excepts) { fenv_t __env; - int __mxcsr; + __uint32_t __mxcsr; if (__excepts == FE_ALL_EXCEPT) { __fnclex(); @@ -158,7 +158,7 @@ fetestexcept(int __excepts) static __inline int fegetround(void) { - int __control; + __uint16_t __control; /* * We assume that the x87 and the SSE unit agree on the @@ -201,7 +201,7 @@ static __inline int fesetenv(const fenv_t *__envp) { fenv_t __env = *__envp; - int __mxcsr; + __uint32_t __mxcsr; __mxcsr = __env.__mxcsr; __env.__mxcsr = 0xffffffff; diff --git a/lib/libm/arch/x86_64/fenv.c b/lib/libm/arch/x86_64/fenv.c index 6c9f6d656a..0f91f56bcb 100644 --- a/lib/libm/arch/x86_64/fenv.c +++ b/lib/libm/arch/x86_64/fenv.c @@ -23,7 +23,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/lib/msun/amd64/fenv.c,v 1.4 2007/01/05 07:15:26 das Exp $ + * $FreeBSD: src/lib/msun/amd64/fenv.c,v 1.5 2010/02/03 20:23:47 kib Exp $ */ #include @@ -86,7 +86,7 @@ fegetenv(fenv_t *envp) int feholdexcept(fenv_t *envp) { - int mxcsr; + __uint32_t mxcsr; __stmxcsr(&mxcsr); __fnstenv(&envp->__x87); @@ -114,7 +114,8 @@ feupdateenv(const fenv_t *envp) int __feenableexcept(int mask) { - int mxcsr, control, omask; + __uint32_t mxcsr, omask; + __uint16_t control; mask &= FE_ALL_EXCEPT; __fnstcw(&control); diff --git a/lib/libm/arch/x86_64/fenv.h b/lib/libm/arch/x86_64/fenv.h index 13945481f9..807971a4f4 100644 --- a/lib/libm/arch/x86_64/fenv.h +++ b/lib/libm/arch/x86_64/fenv.h @@ -23,7 +23,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/lib/msun/amd64/fenv.h,v 1.6 2007/01/06 21:46:23 das Exp $ + * $FreeBSD: src/lib/msun/amd64/fenv.h,v 1.7 2010/02/03 20:23:47 kib Exp $ */ #ifndef _FENV_H_ @@ -136,7 +136,7 @@ fetestexcept(int __excepts) static __inline int fegetround(void) { - int __control; + __uint16_t __control; /* * We assume that the x87 and the SSE unit agree on the -- 2.41.0