fpu.h 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. /* SPDX-License-Identifier: GPL-2.0 */
  2. #ifndef __ASM_CSKY_FPU_H
  3. #define __ASM_CSKY_FPU_H
  4. #include <asm/sigcontext.h>
  5. #include <asm/ptrace.h>
  6. int fpu_libc_helper(struct pt_regs *regs);
  7. void fpu_fpe(struct pt_regs *regs);
  8. static inline void init_fpu(void) { mtcr("cr<1, 2>", 0); }
  9. void save_to_user_fp(struct user_fp *user_fp);
  10. void restore_from_user_fp(struct user_fp *user_fp);
  11. /*
  12. * Define the fesr bit for fpe handle.
  13. */
  14. #define FPE_ILLE (1 << 16) /* Illegal instruction */
  15. #define FPE_FEC (1 << 7) /* Input float-point arithmetic exception */
  16. #define FPE_IDC (1 << 5) /* Input denormalized exception */
  17. #define FPE_IXC (1 << 4) /* Inexact exception */
  18. #define FPE_UFC (1 << 3) /* Underflow exception */
  19. #define FPE_OFC (1 << 2) /* Overflow exception */
  20. #define FPE_DZC (1 << 1) /* Divide by zero exception */
  21. #define FPE_IOC (1 << 0) /* Invalid operation exception */
  22. #define FPE_REGULAR_EXCEPTION (FPE_IXC | FPE_UFC | FPE_OFC | FPE_DZC | FPE_IOC)
  23. #ifdef CONFIG_OPEN_FPU_IDE
  24. #define IDE_STAT (1 << 5)
  25. #else
  26. #define IDE_STAT 0
  27. #endif
  28. #ifdef CONFIG_OPEN_FPU_IXE
  29. #define IXE_STAT (1 << 4)
  30. #else
  31. #define IXE_STAT 0
  32. #endif
  33. #ifdef CONFIG_OPEN_FPU_UFE
  34. #define UFE_STAT (1 << 3)
  35. #else
  36. #define UFE_STAT 0
  37. #endif
  38. #ifdef CONFIG_OPEN_FPU_OFE
  39. #define OFE_STAT (1 << 2)
  40. #else
  41. #define OFE_STAT 0
  42. #endif
  43. #ifdef CONFIG_OPEN_FPU_DZE
  44. #define DZE_STAT (1 << 1)
  45. #else
  46. #define DZE_STAT 0
  47. #endif
  48. #ifdef CONFIG_OPEN_FPU_IOE
  49. #define IOE_STAT (1 << 0)
  50. #else
  51. #define IOE_STAT 0
  52. #endif
  53. #endif /* __ASM_CSKY_FPU_H */