lkml.org 
[lkml]   [2003]   [Sep]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: -mregparm=3 (was Re: [PATCH] i386 do_machine_check() is redundant.
    On Mon, Sep 29, 2003 at 11:36:06PM +0200, Mikulas Patocka wrote:
    >
    >
    > On Mon, 29 Sep 2003, Daniel Jacobowitz wrote:
    >
    > > On Mon, Sep 29, 2003 at 10:20:45PM +0200, Mikulas Patocka wrote:
    > > > > > > Use machine_check_vector in the entry code instead.
    > > > > >
    > > > > > This is wrong. You just lost the "asmlinkage" thing, which means that it
    > > > > > breaks when asmlinkage matters.
    > > > > >
    > > > > > And yes, asmlinkage _can_ matter, even on x86. It disasbles regparm, for
    > > > > > one thing, so it makes a huge difference if the kernel is compiled with
    > > > > > -mregparm=3 (which used to work, and which I'd love to do, but gcc has
    > > > > > often been a tad fragile).
    > > > >
    > > > > gcc 3.2 and later are supposed to be ok (eg during 3.2 development a
    > > > > long standing bug with regparm was fixed and now is believed to work)...
    > > > > since our makefiles check gcc version already... this can be made gcc
    > > > > version dependent as well for sure..
    > > >
    > > > They are still buggy. gcc 3.3.1 miscompiles itself with -mregparm=3
    > > > (without -O or -O2 it works). (I am too lazy to spend several days trying
    > > > to find exactly which function in gcc was miscompiled, maybe I do it one
    > > > day). gcc 2.95.3 compiles gcc 3.3.1 with -mregparm=3 -O2 correctly.
    > > > gcc 3.4 doesn't seem to be better.
    > > >
    > > > gcc 2.7.2.3 has totally broken -mregparm=3, even quite simple programs
    > > > fail.
    > >
    > > You can't build GCC with -mregparm=3. It changes the interface to
    > > system functions. So unless your libc happened to be built with
    > > -mregparm=3, and extensively hacked to expect arguments in registers to
    > > the assembly stubs, it can't work.
    >
    > Of course I linked it with libc compiled with regparm=3.

    Did you also hack all the syscall wrappers and hand-coded assembly
    routines? For instance, mmap won't work.

    --
    Daniel Jacobowitz
    MontaVista Software Debian GNU/Linux Developer
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2005-03-22 13:49    [W:2.230 / U:0.040 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site