diff options
author | Suresh Siddha <suresh.b.siddha@intel.com> | 2008-07-29 13:29:22 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2008-07-30 13:49:26 -0400 |
commit | ab5137015fed9b948fe835a2d99a4cfbd50a0c40 (patch) | |
tree | 229771c4f5606d56945941c8ada9ae6cf08d1c80 /include/asm-x86/i387.h | |
parent | 3c1c7f101426cb2ecc79d817a8a65928965fc860 (diff) |
x86, xsave: reorganization of signal save/restore fpstate code layout
move 64bit routines that saves/restores fpstate in/from user stack from
signal_64.c to xsave.c
restore_i387_xstate() now handles the condition when user passes
NULL fpstate.
Other misc changes for prepartion of xsave/xrstor sigcontext support.
Signed-off-by: Suresh Siddha <suresh.b.siddha@intel.com>
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'include/asm-x86/i387.h')
-rw-r--r-- | include/asm-x86/i387.h | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/include/asm-x86/i387.h b/include/asm-x86/i387.h index 36dca8db1660..dc3745e8040a 100644 --- a/include/asm-x86/i387.h +++ b/include/asm-x86/i387.h | |||
@@ -34,8 +34,9 @@ extern user_regset_set_fn fpregs_set, xfpregs_set, fpregs_soft_set; | |||
34 | #ifdef CONFIG_IA32_EMULATION | 34 | #ifdef CONFIG_IA32_EMULATION |
35 | extern unsigned int sig_xstate_ia32_size; | 35 | extern unsigned int sig_xstate_ia32_size; |
36 | struct _fpstate_ia32; | 36 | struct _fpstate_ia32; |
37 | extern int save_i387_ia32(struct _fpstate_ia32 __user *buf); | 37 | struct _xstate_ia32; |
38 | extern int restore_i387_ia32(struct _fpstate_ia32 __user *buf); | 38 | extern int save_i387_xstate_ia32(void __user *buf); |
39 | extern int restore_i387_xstate_ia32(void __user *buf); | ||
39 | #endif | 40 | #endif |
40 | 41 | ||
41 | #define X87_FSW_ES (1 << 7) /* Exception Summary */ | 42 | #define X87_FSW_ES (1 << 7) /* Exception Summary */ |
@@ -249,13 +250,13 @@ end: | |||
249 | task_thread_info(tsk)->status &= ~TS_USEDFPU; | 250 | task_thread_info(tsk)->status &= ~TS_USEDFPU; |
250 | } | 251 | } |
251 | 252 | ||
253 | #endif /* CONFIG_X86_64 */ | ||
254 | |||
252 | /* | 255 | /* |
253 | * Signal frame handlers... | 256 | * Signal frame handlers... |
254 | */ | 257 | */ |
255 | extern int save_i387(struct _fpstate __user *buf); | 258 | extern int save_i387_xstate(void __user *buf); |
256 | extern int restore_i387(struct _fpstate __user *buf); | 259 | extern int restore_i387_xstate(void __user *buf); |
257 | |||
258 | #endif /* CONFIG_X86_64 */ | ||
259 | 260 | ||
260 | static inline void __unlazy_fpu(struct task_struct *tsk) | 261 | static inline void __unlazy_fpu(struct task_struct *tsk) |
261 | { | 262 | { |