lkml.org 
[lkml]   [2009]   [Nov]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: i686 quirk for AMD Geode
    On 11/07/2009 03:11 AM, Matteo Croce wrote:
    > --- /dev/null 1970-01-01 00:00:00.000000000 +0000
    > +++ b/arch/x86/kernel/nopl_emu.c 2009-11-07 11:59:17.667748571 +0100
    > @@ -0,0 +1,103 @@
    > +/*
    > + * linux/arch/x86/kernel/nopl_emu.c
    > + *
    > + * Copyright (C) 2002 Willy Tarreau
    > + * Copyright (C) 2009 Matteo Croce
    > + */
    > +
    > +#include <linux/linkage.h>
    > +#include <asm/math_emu.h>
    > +#include <asm/traps.h>
    > +
    > +/* This code can be used to allow the AMD Geode to hopefully correctly execute
    > + * some code which was originally compiled for an i686, by emulating NOPL,
    > + * the only missing i686 instruction in the CPU
    > + *
    > + * Willy Tarreau <willy@meta-x.org>
    > + * Matteo Croce <technoboy85@gmail.com>
    > + */
    > +

    If we're doing to introduce a missed-instruction interpreter (which is
    what this is) in the kernel, it needs to handle all the subtleties of
    x86 execution correctly; in particular I believe it needs to check the
    code segment limits, permissions, and mode. Things it doesn't
    understand it can SIGILL (or, if more appropriate, SIGSEGV) on, of course.

    Personally I think the easiest is to verify that the code segment is
    flat 32 bits or even more specifically CS == USER_CS, and SIGILL otherwise.

    -hpa

    --
    H. Peter Anvin, Intel Open Source Technology Center
    I work for Intel. I don't speak on their behalf.



    \
     
     \ /
      Last update: 2009-11-08 03:17    [W:0.019 / U:94.284 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site