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 10int fpu_libc_helper(struct pt_regs *regs); 11void fpu_fpe(struct pt_regs *regs); 12 13static inline void init_fpu(void) { mtcr("cr<1, 2>", 0); } 14 15void save_to_user_fp(struct user_fp *user_fp); 16void 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