From: Jan Beulich Date: Wed, 5 Mar 2008 08:35:14 +0000 (+0000) Subject: x86: fix merge mistake in i387.c X-Git-Tag: v2.6.25-rc5~14^2~3 X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=609b5297bcfb7b39b7a4137e9ec48407a8c96763;p=linux-2.6 x86: fix merge mistake in i387.c convert_fxsr_to_user() in 2.6.24's i387_32.c did this, and convert_to_fxsr() also does the inverse, so I assume it's an oversight that it is no longer being done. [ mingo@elte.hu: we encode it this way because there's no space for the 'FPU Last Instruction Opcode' (->fop) field in the legacy user_i387_ia32_struct that PTRACE_GETFPREGS/PTRACE_SETFPREGS uses. it's probably pure legacy - i'd be surprised if any user-space relied on the FPU Last Opcode in any way. But indeed we used to do it previously so the most conservative thing is to preserve that piece of information. ] Signed-off-by: Jan Beulich Signed-off-by: Ingo Molnar --- diff --git a/arch/x86/kernel/i387.c b/arch/x86/kernel/i387.c index 60fe801575..d2e39e69aa 100644 --- a/arch/x86/kernel/i387.c +++ b/arch/x86/kernel/i387.c @@ -261,7 +261,7 @@ static void convert_from_fxsr(struct user_i387_ia32_struct *env, } #else env->fip = fxsave->fip; - env->fcs = fxsave->fcs; + env->fcs = (u16) fxsave->fcs | ((u32) fxsave->fop << 16); env->foo = fxsave->foo; env->fos = fxsave->fos; #endif