1/*-
 2 * Based on sys/sparc64/include/ieeefp.h
 3 * Public domain.
 4 */
 5
 6#ifdef __arm__
 7#include <arm/ieeefp.h>
 8#else /* !__arm__ */
 9
10#ifndef _MACHINE_IEEEFP_H_
11#define	_MACHINE_IEEEFP_H_
12
13/* Deprecated FPU control interface */
14
15/* FP exception codes */
16#define	FP_EXCEPT_INV	8
17#define	FP_EXCEPT_DZ	9
18#define	FP_EXCEPT_OFL	10
19#define	FP_EXCEPT_UFL	11
20#define	FP_EXCEPT_IMP	12
21#define	FP_EXCEPT_DNML	15
22
23typedef int fp_except_t;
24
25#define	FP_X_INV	(1 << FP_EXCEPT_INV)	/* invalid operation exception */
26#define	FP_X_DZ		(1 << FP_EXCEPT_DZ)	/* divide-by-zero exception */
27#define	FP_X_OFL	(1 << FP_EXCEPT_OFL)	/* overflow exception */
28#define	FP_X_UFL	(1 << FP_EXCEPT_UFL)	/* underflow exception */
29#define	FP_X_IMP	(1 << FP_EXCEPT_IMP)	/* imprecise (loss of precision) */
30#define	FP_X_DNML	(1 << FP_EXCEPT_DNML)	/* denormal exception */
31
32typedef enum {
33	FP_RN = (0 << 22),	/* round to nearest representable number */
34	FP_RP = (1 << 22),	/* round toward positive infinity */
35	FP_RM = (2 << 22),	/* round toward negative infinity */
36	FP_RZ = (3 << 22)	/* round to zero (truncate) */
37} fp_rnd_t;
38
39__BEGIN_DECLS
40extern fp_rnd_t    fpgetround(void);
41extern fp_rnd_t    fpsetround(fp_rnd_t);
42extern fp_except_t fpgetmask(void);
43extern fp_except_t fpsetmask(fp_except_t);
44__END_DECLS
45
46#endif /* _MACHINE_IEEEFP_H_ */
47
48#endif /* !__arm__ */