summaryrefslogtreecommitdiff
path: root/arch/arc/include/asm/fpu.h
diff options
context:
space:
mode:
authorVineet Gupta <vgupta@synopsys.com>2020-01-17 15:04:03 -0800
committerVineet Gupta <vgupta@synopsys.com>2020-01-17 16:53:44 -0800
commitf45ba2bd6da0dc8000aa7ea7a3858fb51608f766 (patch)
tree3be8113cb45459531bc5ffee5bbbb1de38d5d234 /arch/arc/include/asm/fpu.h
parentf05523aa7a1e63bfada5e222c0a57e02dbd4fcfa (diff)
ARCv2: fpu: preserve userspace fpu state
Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
Diffstat (limited to 'arch/arc/include/asm/fpu.h')
-rw-r--r--arch/arc/include/asm/fpu.h28
1 files changed, 27 insertions, 1 deletions
diff --git a/arch/arc/include/asm/fpu.h b/arch/arc/include/asm/fpu.h
index de467423d99b..64347250fdf5 100644
--- a/arch/arc/include/asm/fpu.h
+++ b/arch/arc/include/asm/fpu.h
@@ -11,6 +11,8 @@
#include <asm/ptrace.h>
+#ifdef CONFIG_ISA_ARCOMPACT
+
/* These DPFP regs need to be saved/restored across ctx-sw */
struct arc_fpu {
struct {
@@ -18,11 +20,35 @@ struct arc_fpu {
} aux_dpfp[2];
};
-extern void fpu_save_restore(struct task_struct *p, struct task_struct *n);
+#define fpu_init_task(regs)
#else
+/*
+ * ARCv2 FPU Control aux register
+ * - bits to enable Traps on Exceptions
+ * - Rounding mode
+ *
+ * ARCv2 FPU Status aux register
+ * - FPU exceptions flags (Inv, Div-by-Zero, overflow, underflow, inexact)
+ * - Flag Write Enable to clear flags explicitly (vs. by fpu instructions
+ * only
+ */
+
+struct arc_fpu {
+ unsigned int ctrl, status;
+};
+
+extern void fpu_init_task(struct pt_regs *regs);
+
+#endif /* !CONFIG_ISA_ARCOMPACT */
+
+extern void fpu_save_restore(struct task_struct *p, struct task_struct *n);
+
+#else /* !CONFIG_ARC_FPU_SAVE_RESTORE */
+
#define fpu_save_restore(p, n)
+#define fpu_init_task(regs)
#endif /* CONFIG_ARC_FPU_SAVE_RESTORE */