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