summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordas <das@FreeBSD.org>2011-10-21 06:41:46 +0000
committerdas <das@FreeBSD.org>2011-10-21 06:41:46 +0000
commit28e8dea25892d12660b01d59590e5a8e70ae3880 (patch)
tree4864c165434b2f4d41bd1dcd9710d5f86fe98dcc
parent9373f7b9c4f30f6577adcbbba17be55d53f114b6 (diff)
downloadFreeBSD-src-28e8dea25892d12660b01d59590e5a8e70ae3880.zip
FreeBSD-src-28e8dea25892d12660b01d59590e5a8e70ae3880.tar.gz
People porting FreeBSD to new architectures ought not have to
implement a deprecated FPU control interface in addition to the standard one. To make this clearer, further deprecate ieeefp.h by not declaring the function prototypes except on architectures that implement them already. Currently i386 and amd64 implement the ieeefp.h interface for compatibility, and for fp[gs]etprec(), which doesn't exist on most other hardware. Powerpc, sparc64, and ia64 partially implement it and probably shouldn't, and other architectures don't implement it at all.
-rw-r--r--include/ieeefp.h11
-rw-r--r--sys/amd64/include/ieeefp.h11
-rw-r--r--sys/arm/include/ieeefp.h2
-rw-r--r--sys/i386/include/ieeefp.h5
-rw-r--r--sys/ia64/include/ieeefp.h9
-rw-r--r--sys/mips/include/ieeefp.h2
-rw-r--r--sys/powerpc/include/ieeefp.h10
-rw-r--r--sys/sparc64/include/ieeefp.h11
8 files changed, 44 insertions, 17 deletions
diff --git a/include/ieeefp.h b/include/ieeefp.h
index e4f943d..3f64555 100644
--- a/include/ieeefp.h
+++ b/include/ieeefp.h
@@ -12,15 +12,4 @@
#include <sys/cdefs.h>
#include <machine/ieeefp.h>
-#if !defined(_IEEEFP_INLINED_)
-__BEGIN_DECLS
-extern fp_rnd_t fpgetround(void);
-extern fp_rnd_t fpsetround(fp_rnd_t);
-extern fp_except_t fpgetmask(void);
-extern fp_except_t fpsetmask(fp_except_t);
-extern fp_except_t fpgetsticky(void);
-extern fp_except_t fpsetsticky(fp_except_t);
-__END_DECLS
-#endif /* !_IEEEFP_INLINED_ */
-
#endif /* _IEEEFP_H_ */
diff --git a/sys/amd64/include/ieeefp.h b/sys/amd64/include/ieeefp.h
index 1244492..a403660 100644
--- a/sys/amd64/include/ieeefp.h
+++ b/sys/amd64/include/ieeefp.h
@@ -39,6 +39,8 @@
#define _MACHINE_IEEEFP_H_
/*
+ * Deprecated historical FPU control interface
+ *
* IEEE floating point type, constant and function definitions.
* XXX: {FP,SSE}*FLD and {FP,SSE}*OFF are undocumented pollution.
*/
@@ -287,13 +289,16 @@ __fpgetsticky(void)
#define fpsetprec(m) __fpsetprec(m)
#define fpsetround(m) __fpsetround(m)
-/* Suppress prototypes in the MI header. */
-#define _IEEEFP_INLINED_ 1
-
#else /* !(!__IEEEFP_NOINLINES__ && __GNUCLIKE_ASM) */
/* Augment the userland declarations. */
__BEGIN_DECLS
+extern fp_rnd_t fpgetround(void);
+extern fp_rnd_t fpsetround(fp_rnd_t);
+extern fp_except_t fpgetmask(void);
+extern fp_except_t fpsetmask(fp_except_t);
+extern fp_except_t fpgetsticky(void);
+extern fp_except_t fpsetsticky(fp_except_t);
fp_prec_t fpgetprec(void);
fp_prec_t fpsetprec(fp_prec_t);
__END_DECLS
diff --git a/sys/arm/include/ieeefp.h b/sys/arm/include/ieeefp.h
index 8fc9811..0b61744 100644
--- a/sys/arm/include/ieeefp.h
+++ b/sys/arm/include/ieeefp.h
@@ -8,6 +8,8 @@
#ifndef _MACHINE_IEEEFP_H_
#define _MACHINE_IEEEFP_H_
+/* Deprecated historical FPU control interface */
+
/* FP exception codes */
#define FP_EXCEPT_INV 0
#define FP_EXCEPT_DZ 1
diff --git a/sys/i386/include/ieeefp.h b/sys/i386/include/ieeefp.h
index 65502ac..c676c45 100644
--- a/sys/i386/include/ieeefp.h
+++ b/sys/i386/include/ieeefp.h
@@ -39,6 +39,8 @@
#define _MACHINE_IEEEFP_H_
/*
+ * Deprecated historical FPU control interface
+ *
* IEEE floating point type, constant and function definitions.
* XXX: FP*FLD and FP*OFF are undocumented pollution.
*/
@@ -253,7 +255,4 @@ fpresetsticky(fp_except_t _m)
#endif /* __GNUCLIKE_ASM */
-/* Suppress prototypes in the MI header. */
-#define _IEEEFP_INLINED_ 1
-
#endif /* !_MACHINE_IEEEFP_H_ */
diff --git a/sys/ia64/include/ieeefp.h b/sys/ia64/include/ieeefp.h
index 3b0cd4b..7cde91b 100644
--- a/sys/ia64/include/ieeefp.h
+++ b/sys/ia64/include/ieeefp.h
@@ -29,6 +29,8 @@
#ifndef _MACHINE_IEEEFP_H_
#define _MACHINE_IEEEFP_H_
+/* Deprecated historical FPU control interface */
+
#include <machine/fpu.h>
typedef int fp_except_t;
@@ -45,4 +47,11 @@ typedef enum {
FP_RZ /* round toward zero */
} fp_rnd_t;
+__BEGIN_DECLS
+extern fp_rnd_t fpgetround(void);
+extern fp_rnd_t fpsetround(fp_rnd_t);
+extern fp_except_t fpgetmask(void);
+extern fp_except_t fpsetmask(fp_except_t);
+__END_DECLS
+
#endif /* !_MACHINE_IEEEFP_H_ */
diff --git a/sys/mips/include/ieeefp.h b/sys/mips/include/ieeefp.h
index c7d9244..fb6c21a 100644
--- a/sys/mips/include/ieeefp.h
+++ b/sys/mips/include/ieeefp.h
@@ -11,6 +11,8 @@
#ifndef _MACHINE_IEEEFP_H_
#define _MACHINE_IEEEFP_H_
+/* Deprecated historical FPU control interface */
+
typedef int fp_except;
typedef int fp_except_t;
diff --git a/sys/powerpc/include/ieeefp.h b/sys/powerpc/include/ieeefp.h
index 820fffe..58a4fe8 100644
--- a/sys/powerpc/include/ieeefp.h
+++ b/sys/powerpc/include/ieeefp.h
@@ -8,6 +8,8 @@
#ifndef _MACHINE_IEEEFP_H_
#define _MACHINE_IEEEFP_H_
+/* Deprecated historical FPU control interface */
+
typedef int fp_except_t;
#define FP_X_IMP 0x01 /* imprecise (loss of precision) */
#define FP_X_DZ 0x02 /* divide-by-zero exception */
@@ -22,4 +24,12 @@ typedef enum {
FP_RM=3 /* round toward negative infinity */
} fp_rnd_t;
+__BEGIN_DECLS
+extern fp_rnd_t fpgetround(void);
+extern fp_rnd_t fpsetround(fp_rnd_t);
+extern fp_except_t fpgetmask(void);
+extern fp_except_t fpsetmask(fp_except_t);
+extern fp_except_t fpgetsticky(void);
+__END_DECLS
+
#endif /* _MACHINE_IEEEFP_H_ */
diff --git a/sys/sparc64/include/ieeefp.h b/sys/sparc64/include/ieeefp.h
index 1126494..bb07737 100644
--- a/sys/sparc64/include/ieeefp.h
+++ b/sys/sparc64/include/ieeefp.h
@@ -7,6 +7,8 @@
#ifndef _MACHINE_IEEEFP_H_
#define _MACHINE_IEEEFP_H_
+/* Deprecated FPU control interface */
+
#include <machine/fsr.h>
typedef int fp_except_t;
@@ -23,4 +25,13 @@ typedef enum {
FP_RM = FSR_RD_NINF /* round toward negative infinity */
} fp_rnd_t;
+__BEGIN_DECLS
+extern fp_rnd_t fpgetround(void);
+extern fp_rnd_t fpsetround(fp_rnd_t);
+extern fp_except_t fpgetmask(void);
+extern fp_except_t fpsetmask(fp_except_t);
+extern fp_except_t fpgetsticky(void);
+__END_DECLS
+
+
#endif /* _MACHINE_IEEEFP_H_ */
OpenPOWER on IntegriCloud