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