1412042e2SAndrew Turner /*- 2412042e2SAndrew Turner * Based on sys/sparc64/include/ieeefp.h 3412042e2SAndrew Turner * Public domain. 4412042e2SAndrew Turner */ 5412042e2SAndrew Turner 6*d5d97bedSMike Karels #ifdef __arm__ 7*d5d97bedSMike Karels #include <arm/ieeefp.h> 8*d5d97bedSMike Karels #else /* !__arm__ */ 9*d5d97bedSMike Karels 10412042e2SAndrew Turner #ifndef _MACHINE_IEEEFP_H_ 11412042e2SAndrew Turner #define _MACHINE_IEEEFP_H_ 12412042e2SAndrew Turner 13412042e2SAndrew Turner /* Deprecated FPU control interface */ 14412042e2SAndrew Turner 15412042e2SAndrew Turner /* FP exception codes */ 16e2def8eaSAndrew Turner #define FP_EXCEPT_INV 8 17e2def8eaSAndrew Turner #define FP_EXCEPT_DZ 9 18e2def8eaSAndrew Turner #define FP_EXCEPT_OFL 10 19e2def8eaSAndrew Turner #define FP_EXCEPT_UFL 11 20e2def8eaSAndrew Turner #define FP_EXCEPT_IMP 12 21e2def8eaSAndrew Turner #define FP_EXCEPT_DNML 15 22412042e2SAndrew Turner 23412042e2SAndrew Turner typedef int fp_except_t; 24412042e2SAndrew Turner 25412042e2SAndrew Turner #define FP_X_INV (1 << FP_EXCEPT_INV) /* invalid operation exception */ 26412042e2SAndrew Turner #define FP_X_DZ (1 << FP_EXCEPT_DZ) /* divide-by-zero exception */ 27412042e2SAndrew Turner #define FP_X_OFL (1 << FP_EXCEPT_OFL) /* overflow exception */ 28412042e2SAndrew Turner #define FP_X_UFL (1 << FP_EXCEPT_UFL) /* underflow exception */ 29412042e2SAndrew Turner #define FP_X_IMP (1 << FP_EXCEPT_IMP) /* imprecise (loss of precision) */ 30412042e2SAndrew Turner #define FP_X_DNML (1 << FP_EXCEPT_DNML) /* denormal exception */ 31412042e2SAndrew Turner 32412042e2SAndrew Turner typedef enum { 33412042e2SAndrew Turner FP_RN = (0 << 22), /* round to nearest representable number */ 34412042e2SAndrew Turner FP_RP = (1 << 22), /* round toward positive infinity */ 35412042e2SAndrew Turner FP_RM = (2 << 22), /* round toward negative infinity */ 36412042e2SAndrew Turner FP_RZ = (3 << 22) /* round to zero (truncate) */ 37412042e2SAndrew Turner } fp_rnd_t; 38412042e2SAndrew Turner 39412042e2SAndrew Turner __BEGIN_DECLS 40412042e2SAndrew Turner extern fp_rnd_t fpgetround(void); 41412042e2SAndrew Turner extern fp_rnd_t fpsetround(fp_rnd_t); 42412042e2SAndrew Turner extern fp_except_t fpgetmask(void); 43412042e2SAndrew Turner extern fp_except_t fpsetmask(fp_except_t); 44412042e2SAndrew Turner __END_DECLS 45412042e2SAndrew Turner 46412042e2SAndrew Turner #endif /* _MACHINE_IEEEFP_H_ */ 47*d5d97bedSMike Karels 48*d5d97bedSMike Karels #endif /* !__arm__ */ 49