diff options
author | Roland McGrath <roland@gnu.org> | 2004-11-04 23:37:44 +0000 |
---|---|---|
committer | Roland McGrath <roland@gnu.org> | 2004-11-04 23:37:44 +0000 |
commit | ad146de70ec85c70a680bb4817f1d9e9f3bc7fd6 (patch) | |
tree | 0db09f890793678db298012e476526fc6016b8da /sysdeps/x86_64/fpu | |
parent | 0090226a52e0b3263fad42e1569baa3204983bb5 (diff) | |
download | glibc-ad146de70ec85c70a680bb4817f1d9e9f3bc7fd6.tar.gz glibc-ad146de70ec85c70a680bb4817f1d9e9f3bc7fd6.tar.xz glibc-ad146de70ec85c70a680bb4817f1d9e9f3bc7fd6.zip |
* sysdeps/unix/sysv/linux/x86_64/sys/procfs.h [__WORDSIZE == 32]
(elf_fpxregset_t): New type. (struct elf_prpsinfo): If __WORDSIZE == 32, change pr_[ug]id type to unsigned short int. * sysdeps/unix/sysv/linux/x86_64/sys/user.h (struct user_fpregs_struct): Fix comment. * sysdeps/i386/fpu/bits/mathdef.h (float_t, double_t): If __FLOAT_EVAL_METHOD__ is defined and 0, typedef to float resp. double. * sysdeps/x86_64/fpu/bits/mathdef.h: Include bits/wordsize.h. (float_t, double_t): If -m32 and not -mfpmath=sse, typedef to long double. * sysdeps/x86_64/fpu/bits/fenv.h: Include bits/wordsize.h. (fenv_t): Remove __mxcsr field for -m32.
Diffstat (limited to 'sysdeps/x86_64/fpu')
-rw-r--r-- | sysdeps/x86_64/fpu/bits/fenv.h | 6 | ||||
-rw-r--r-- | sysdeps/x86_64/fpu/bits/mathdef.h | 14 |
2 files changed, 18 insertions, 2 deletions
diff --git a/sysdeps/x86_64/fpu/bits/fenv.h b/sysdeps/x86_64/fpu/bits/fenv.h index 04576933f5..11859f00c8 100644 --- a/sysdeps/x86_64/fpu/bits/fenv.h +++ b/sysdeps/x86_64/fpu/bits/fenv.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1997,1998,1999,2000,2001 Free Software Foundation, Inc. +/* Copyright (C) 1997,1998,1999,2000,2001,2004 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -20,6 +20,8 @@ # error "Never use <bits/fenv.h> directly; include <fenv.h> instead." #endif +#include <bits/wordsize.h> + /* Define bits representing the exception. We use the bit positions of the appropriate bits in the FPU control word. */ @@ -80,7 +82,9 @@ typedef struct unsigned int __data_offset; unsigned short int __data_selector; unsigned short int __unused5; +#if __WORDSIZE == 64 unsigned int __mxcsr; +#endif } fenv_t; diff --git a/sysdeps/x86_64/fpu/bits/mathdef.h b/sysdeps/x86_64/fpu/bits/mathdef.h index 37665c2097..7b16189590 100644 --- a/sysdeps/x86_64/fpu/bits/mathdef.h +++ b/sysdeps/x86_64/fpu/bits/mathdef.h @@ -23,11 +23,23 @@ #if defined __USE_ISOC99 && defined _MATH_H && !defined _MATH_H_MATHDEF # define _MATH_H_MATHDEF 1 +# include <bits/wordsize.h> + +# if __WORDSIZE == 64 || (defined __FLT_EVAL_METHOD__ && __FLT_EVAL_METHOD__ == 0) /* The x86-64 architecture computes values with the precission of the - used type. */ + used type. Similarly for -m32 -mfpmath=sse. */ typedef float float_t; /* `float' expressions are evaluated as `float'. */ typedef double double_t; /* `double' expressions are evaluated as `double'. */ +# else +/* The ix87 FPUs evaluate all values in the 80 bit floating-point format + which is also available for the user as `long double'. Therefore we + define: */ +typedef long double float_t; /* `float' expressions are evaluated as + `long double'. */ +typedef long double double_t; /* `double' expressions are evaluated as + `long double'. */ +# endif /* The values returned by `ilogb' for 0 and NaN respectively. */ # define FP_ILOGB0 (-2147483647 - 1) |