1/* SPDX-License-Identifier: GPL-2.0-only */ 2/* 3 * Copyright (C) 2020 Synopsys, Inc. (www.synopsys.com) 4 * 5 */ 6 7#ifndef _ASM_ARC_FPU_H 8#define _ASM_ARC_FPU_H 9 10#ifdef CONFIG_ARC_FPU_SAVE_RESTORE 11 12#include <asm/ptrace.h> 13 14#ifdef CONFIG_ISA_ARCOMPACT 15 16/* These DPFP regs need to be saved/restored across ctx-sw */ 17struct arc_fpu { 18 struct { 19 unsigned int l, h; 20 } aux_dpfp[2]; 21}; 22 23#define fpu_init_task(regs) 24 25#else 26 27/* 28 * ARCv2 FPU Control aux register 29 * - bits to enable Traps on Exceptions 30 * - Rounding mode 31 * 32 * ARCv2 FPU Status aux register 33 * - FPU exceptions flags (Inv, Div-by-Zero, overflow, underflow, inexact) 34 * - Flag Write Enable to clear flags explicitly (vs. by fpu instructions 35 * only 36 */ 37 38struct arc_fpu { 39 unsigned int ctrl, status; 40}; 41 42extern void fpu_init_task(struct pt_regs *regs); 43 44#endif /* !CONFIG_ISA_ARCOMPACT */ 45 46struct task_struct; 47 48extern void fpu_save_restore(struct task_struct *p, struct task_struct *n); 49 50#else /* !CONFIG_ARC_FPU_SAVE_RESTORE */ 51 52#define fpu_save_restore(p, n) 53#define fpu_init_task(regs) 54 55#endif /* CONFIG_ARC_FPU_SAVE_RESTORE */ 56 57#endif /* _ASM_ARC_FPU_H */ 58