Re: [PATCH] i386: fix merge mistake in i387.c

From: Ingo Molnar
Date: Wed Mar 05 2008 - 09:37:25 EST



* Jan Beulich <jbeulich@xxxxxxxxxx> wrote:

> 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.

thanks Jan, applied.

> - env->fcs = fxsave->fcs;
> + env->fcs = (u16) fxsave->fcs | ((u32) fxsave->fop << 16);

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 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.

FXRESTORE ignores the FOP field so the "restore" direction is
meaningless:

fxsave->fop = (u16) ((u32) env->fcs >> 16);

Ingo
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/