diff options
author | Vineet Gupta <vgupta@synopsys.com> | 2020-01-17 16:00:41 -0800 |
---|---|---|
committer | Vineet Gupta <vgupta@synopsys.com> | 2020-01-17 16:53:38 -0800 |
commit | f05523aa7a1e63bfada5e222c0a57e02dbd4fcfa (patch) | |
tree | cd56e4c8e5dbc2f85ee94065191052088a2863c1 /arch/arc | |
parent | bd71c453db91ecb464405411f2821d040f2a0d44 (diff) | |
download | lwn-f05523aa7a1e63bfada5e222c0a57e02dbd4fcfa.tar.gz lwn-f05523aa7a1e63bfada5e222c0a57e02dbd4fcfa.zip |
ARC: fpu: declutter code, move bits out into fpu.h
Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
Diffstat (limited to 'arch/arc')
-rw-r--r-- | arch/arc/include/asm/fpu.h | 29 | ||||
-rw-r--r-- | arch/arc/include/asm/processor.h | 10 | ||||
-rw-r--r-- | arch/arc/include/asm/switch_to.h | 17 | ||||
-rw-r--r-- | arch/arc/kernel/fpu.c | 2 |
4 files changed, 33 insertions, 25 deletions
diff --git a/arch/arc/include/asm/fpu.h b/arch/arc/include/asm/fpu.h new file mode 100644 index 000000000000..de467423d99b --- /dev/null +++ b/arch/arc/include/asm/fpu.h @@ -0,0 +1,29 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ +/* + * Copyright (C) 2020 Synopsys, Inc. (www.synopsys.com) + * + */ + +#ifndef _ASM_ARC_FPU_H +#define _ASM_ARC_FPU_H + +#ifdef CONFIG_ARC_FPU_SAVE_RESTORE + +#include <asm/ptrace.h> + +/* These DPFP regs need to be saved/restored across ctx-sw */ +struct arc_fpu { + struct { + unsigned int l, h; + } aux_dpfp[2]; +}; + +extern void fpu_save_restore(struct task_struct *p, struct task_struct *n); + +#else + +#define fpu_save_restore(p, n) + +#endif /* CONFIG_ARC_FPU_SAVE_RESTORE */ + +#endif /* _ASM_ARC_FPU_H */ diff --git a/arch/arc/include/asm/processor.h b/arch/arc/include/asm/processor.h index 706edeaa5583..ec532d1e0725 100644 --- a/arch/arc/include/asm/processor.h +++ b/arch/arc/include/asm/processor.h @@ -14,15 +14,7 @@ #ifndef __ASSEMBLY__ #include <asm/ptrace.h> - -#ifdef CONFIG_ARC_FPU_SAVE_RESTORE -/* These DPFP regs need to be saved/restored across ctx-sw */ -struct arc_fpu { - struct { - unsigned int l, h; - } aux_dpfp[2]; -}; -#endif +#include <asm/fpu.h> #ifdef CONFIG_ARC_PLAT_EZNPS struct eznps_dp { diff --git a/arch/arc/include/asm/switch_to.h b/arch/arc/include/asm/switch_to.h index 77f123385e96..aadf65b2b56c 100644 --- a/arch/arc/include/asm/switch_to.h +++ b/arch/arc/include/asm/switch_to.h @@ -9,19 +9,7 @@ #ifndef __ASSEMBLY__ #include <linux/sched.h> - -#ifdef CONFIG_ARC_FPU_SAVE_RESTORE - -extern void fpu_save_restore(struct task_struct *p, struct task_struct *n); -#define ARC_FPU_PREV(p, n) fpu_save_restore(p, n) -#define ARC_FPU_NEXT(t) - -#else - -#define ARC_FPU_PREV(p, n) -#define ARC_FPU_NEXT(n) - -#endif /* !CONFIG_ARC_FPU_SAVE_RESTORE */ +#include <asm/fpu.h> #ifdef CONFIG_ARC_PLAT_EZNPS extern void dp_save_restore(struct task_struct *p, struct task_struct *n); @@ -36,9 +24,8 @@ struct task_struct *__switch_to(struct task_struct *p, struct task_struct *n); #define switch_to(prev, next, last) \ do { \ ARC_EZNPS_DP_PREV(prev, next); \ - ARC_FPU_PREV(prev, next); \ + fpu_save_restore(prev, next); \ last = __switch_to(prev, next);\ - ARC_FPU_NEXT(next); \ mb(); \ } while (0) diff --git a/arch/arc/kernel/fpu.c b/arch/arc/kernel/fpu.c index 07e22b563fbb..7a3b56ce56bb 100644 --- a/arch/arc/kernel/fpu.c +++ b/arch/arc/kernel/fpu.c @@ -6,7 +6,7 @@ */ #include <linux/sched.h> -#include <asm/switch_to.h> +#include <asm/fpu.h> /* * To save/restore FPU regs, simplest scheme would use LR/SR insns. |