Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0 */
0002 
0003 #ifndef __ASM_CSKY_FPU_H
0004 #define __ASM_CSKY_FPU_H
0005 
0006 #include <asm/sigcontext.h>
0007 #include <asm/ptrace.h>
0008 
0009 int fpu_libc_helper(struct pt_regs *regs);
0010 void fpu_fpe(struct pt_regs *regs);
0011 
0012 static inline void init_fpu(void) { mtcr("cr<1, 2>", 0); }
0013 
0014 void save_to_user_fp(struct user_fp *user_fp);
0015 void restore_from_user_fp(struct user_fp *user_fp);
0016 
0017 /*
0018  * Define the fesr bit for fpe handle.
0019  */
0020 #define  FPE_ILLE  (1 << 16)    /* Illegal instruction  */
0021 #define  FPE_FEC   (1 << 7)     /* Input float-point arithmetic exception */
0022 #define  FPE_IDC   (1 << 5)     /* Input denormalized exception */
0023 #define  FPE_IXC   (1 << 4)     /* Inexact exception */
0024 #define  FPE_UFC   (1 << 3)     /* Underflow exception */
0025 #define  FPE_OFC   (1 << 2)     /* Overflow exception */
0026 #define  FPE_DZC   (1 << 1)     /* Divide by zero exception */
0027 #define  FPE_IOC   (1 << 0)     /* Invalid operation exception */
0028 #define  FPE_REGULAR_EXCEPTION (FPE_IXC | FPE_UFC | FPE_OFC | FPE_DZC | FPE_IOC)
0029 
0030 #ifdef CONFIG_OPEN_FPU_IDE
0031 #define IDE_STAT   (1 << 5)
0032 #else
0033 #define IDE_STAT   0
0034 #endif
0035 
0036 #ifdef CONFIG_OPEN_FPU_IXE
0037 #define IXE_STAT   (1 << 4)
0038 #else
0039 #define IXE_STAT   0
0040 #endif
0041 
0042 #ifdef CONFIG_OPEN_FPU_UFE
0043 #define UFE_STAT   (1 << 3)
0044 #else
0045 #define UFE_STAT   0
0046 #endif
0047 
0048 #ifdef CONFIG_OPEN_FPU_OFE
0049 #define OFE_STAT   (1 << 2)
0050 #else
0051 #define OFE_STAT   0
0052 #endif
0053 
0054 #ifdef CONFIG_OPEN_FPU_DZE
0055 #define DZE_STAT   (1 << 1)
0056 #else
0057 #define DZE_STAT   0
0058 #endif
0059 
0060 #ifdef CONFIG_OPEN_FPU_IOE
0061 #define IOE_STAT   (1 << 0)
0062 #else
0063 #define IOE_STAT   0
0064 #endif
0065 
0066 #endif /* __ASM_CSKY_FPU_H */