lkml.org 
[lkml]   [2015]   [Sep]   [18]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCH 1/2] x86/math-emu: Add support for FCMOVcc and F[U]COMI[P] insns

* Denys Vlasenko <dvlasenk@redhat.com> wrote:

> Run-tested by booting with "no387 nofxsr" and running test programs:
>
> # ./test_FCMOV
> [RUN] Testing fcmovCC instructions
> [OK] fcmovCC
> # ./test_FCOMI
> [RUN] Testing f[u]comi[p] instructions
> [OK] f[u]comi[p]
>
> Signed-off-by: Denys Vlasenko <dvlasenk@redhat.com>
> CC: Ingo Molnar <mingo@kernel.org>
> CC: Borislav Petkov <bp@alien8.de>
> CC: "H. Peter Anvin" <hpa@zytor.com>
> CC: Andy Lutomirski <luto@amacapital.net>
> CC: Kees Cook <keescook@chromium.org>
> CC: x86@kernel.org
> CC: linux-kernel@vger.kernel.org
> ---
>
> The patches did not change since last submission.
> The difference, now they are run-tested.
>
> arch/x86/math-emu/fpu_aux.c | 70 ++++++++++++++++++++++
> arch/x86/math-emu/fpu_entry.c | 49 +++++++++------
> arch/x86/math-emu/fpu_proto.h | 12 ++++
> arch/x86/math-emu/reg_compare.c | 128 ++++++++++++++++++++++++++++++++++++++++
> 4 files changed, 241 insertions(+), 18 deletions(-)

I wanted to apply this patch, but noticed the following problem: why are two
instruction families added in a single patch?

Note that regressing math-emu for real is a real concern here: we start
interpreting real instructions. If anything breaks, and the failure isn't right at
the instruction that is buggy (but some time later), it would be nice which new
instruction causes the problem and make it all bisectable ...

So we should be finegrained and only add a single (family) of instructions in a
single patch. Please split this patch into two:

> +extern void fcmovb(void);
> +extern void fcmove(void);
> +extern void fcmovbe(void);
> +extern void fcmovu(void);
> +extern void fcmovnb(void);
> +extern void fcmovne(void);
> +extern void fcmovnbe(void);
> +extern void fcmovnu(void);
> extern void ffree_(void);
> extern void ffreep(void);
> extern void fst_i_(void);
> @@ -108,6 +116,10 @@ extern void fcompp(void);
> extern void fucom_(void);
> extern void fucomp(void);
> extern void fucompp(void);
> +extern void fcomi_(void);
> +extern void fcomip(void);
> +extern void fucomi_(void);
> +extern void fucomip(void);

Thanks,

Ingo


\
 
 \ /
  Last update: 2015-09-18 10:01    [W:0.111 / U:0.276 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site