diff options
author | Ingo Molnar <mingo@kernel.org> | 2015-04-30 10:29:38 +0300 |
---|---|---|
committer | Ingo Molnar <mingo@kernel.org> | 2015-05-19 16:48:06 +0300 |
commit | e1cebad49c54e0241e101ebf63d5238fe1137749 (patch) | |
tree | 8896836c0c576ff4ea58ff11cb509b4e32498751 /arch/x86/include/asm/fpu | |
parent | acd58a3ad0ed5875fb88bbb078309a3d7ee147a0 (diff) | |
download | linux-e1cebad49c54e0241e101ebf63d5238fe1137749.tar.xz |
x86/fpu: Factor out the exception error code handling code
Factor out the FPU error code handling code from traps.c and fpu/internal.h
and move them close to each other.
Also convert the helper functions to 'struct fpu *', which further simplifies
them.
Cc: Andy Lutomirski <luto@amacapital.net>
Cc: Borislav Petkov <bp@alien8.de>
Cc: Dave Hansen <dave.hansen@linux.intel.com>
Cc: Fenghua Yu <fenghua.yu@intel.com>
Cc: H. Peter Anvin <hpa@zytor.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Oleg Nesterov <oleg@redhat.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'arch/x86/include/asm/fpu')
-rw-r--r-- | arch/x86/include/asm/fpu/internal.h | 33 |
1 files changed, 2 insertions, 31 deletions
diff --git a/arch/x86/include/asm/fpu/internal.h b/arch/x86/include/asm/fpu/internal.h index 7b62d9032623..dfdafea6e56f 100644 --- a/arch/x86/include/asm/fpu/internal.h +++ b/arch/x86/include/asm/fpu/internal.h @@ -30,7 +30,8 @@ extern void fpu__init_system(struct cpuinfo_x86 *c); extern void fpu__activate_curr(struct fpu *fpu); extern void fpstate_init(struct fpu *fpu); -extern int dump_fpu(struct pt_regs *, struct user_i387_struct *); +extern int dump_fpu(struct pt_regs *, struct user_i387_struct *); +extern int fpu__exception_code(struct fpu *fpu, int trap_nr); /* * High level FPU state handling functions: @@ -467,34 +468,4 @@ static inline void user_fpu_begin(void) preempt_enable(); } -/* - * i387 state interaction - */ -static inline unsigned short get_fpu_cwd(struct task_struct *tsk) -{ - if (cpu_has_fxsr) { - return tsk->thread.fpu.state.fxsave.cwd; - } else { - return (unsigned short)tsk->thread.fpu.state.fsave.cwd; - } -} - -static inline unsigned short get_fpu_swd(struct task_struct *tsk) -{ - if (cpu_has_fxsr) { - return tsk->thread.fpu.state.fxsave.swd; - } else { - return (unsigned short)tsk->thread.fpu.state.fsave.swd; - } -} - -static inline unsigned short get_fpu_mxcsr(struct task_struct *tsk) -{ - if (cpu_has_xmm) { - return tsk->thread.fpu.state.fxsave.mxcsr; - } else { - return MXCSR_DEFAULT; - } -} - #endif /* _ASM_X86_FPU_INTERNAL_H */ |