fenv.h 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. /*
  2. * Copyright (C) 2017 Hangzhou C-SKY Microsystems co.,ltd.
  3. *
  4. * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB
  5. * in this tarball.
  6. */
  7. #ifndef _FENV_H
  8. # error "Never use <bits/fenv.h> directly; include <fenv.h> instead."
  9. #endif
  10. /* Define bits representing the exception. We use the bit positions of
  11. the appropriate bits in the FPSR Accrued Exception Byte. */
  12. enum
  13. {
  14. FE_INEXACT = 1 << 3,
  15. #define FE_INEXACT FE_INEXACT
  16. FE_DIVBYZERO = 1 << 4,
  17. #define FE_DIVBYZERO FE_DIVBYZERO
  18. FE_UNDERFLOW = 1 << 5,
  19. #define FE_UNDERFLOW FE_UNDERFLOW
  20. FE_OVERFLOW = 1 << 6,
  21. #define FE_OVERFLOW FE_OVERFLOW
  22. FE_INVALID = 1 << 7
  23. #define FE_INVALID FE_INVALID
  24. };
  25. #define FE_ALL_EXCEPT \
  26. (FE_INEXACT | FE_DIVBYZERO | FE_UNDERFLOW | FE_OVERFLOW | FE_INVALID)
  27. /* The csky FPU supports all of the four defined rounding modes. We use
  28. the bit positions in the FPCR Mode Control Byte as the values for the
  29. appropriate macros. */
  30. enum
  31. {
  32. FE_TONEAREST = 0,
  33. #define FE_TONEAREST FE_TONEAREST
  34. FE_TOWARDZERO = 1 << 4,
  35. #define FE_TOWARDZERO FE_TOWARDZERO
  36. FE_DOWNWARD = 2 << 4,
  37. #define FE_DOWNWARD FE_DOWNWARD
  38. FE_UPWARD = 3 << 4
  39. #define FE_UPWARD FE_UPWARD
  40. };
  41. /* Type representing exception flags. */
  42. typedef unsigned int fexcept_t;
  43. /* Type representing floating-point environment. This structure
  44. corresponds to the layout of the block written by `fmovem'. */
  45. typedef struct
  46. {
  47. unsigned int __control_register;
  48. unsigned int __status_register;
  49. unsigned int __instruction_address;
  50. }
  51. fenv_t;
  52. /* If the default argument is used we use this value. */
  53. #define FE_DFL_ENV ((__const fenv_t *) -1)
  54. #ifdef __USE_GNU
  55. /* Floating-point environment where none of the exceptions are masked. */
  56. # define FE_NOMASK_ENV ((__const fenv_t *) -2)
  57. #endif