Kernel build parameter CONFIG_REGPARAM breaks binary modules
Earle Robert Nietzel
nietzel at rhinobox.org
Wed Mar 17 23:34:36 UTC 2004
On Wed, 2004-03-17 at 09:38 -0500, Alan Cox wrote:
> On Wed, Mar 17, 2004 at 12:47:13AM +0100, Earle Robert Nietzel wrote:
> > Come to find out that in "arch/i386/Makefile":
> >
> > CFLAGS += -pipe -mregparm=3 -msoft-float -fno-builtin-sprintf -fno-
> > builtin-log2 -fno-builtin-puts
> >
> > You'll notice "-mregparm=3"?
> >
> > After removing this compiler flag my binary modules began to load
> > correctly.
> >
> > Anyone care to comment on this?
>
> Your binary modules need to match the kernel. -mregparm=3 tells the
> kernel to try and use registers for some of the argument passing, and
> thus be more efficient
I patched the ATI fglrx driver so that it compiles with -mregparm=3 and
the performance difference is noticably faster.
I understand the reason for using fastcalls but could you explain the
syntax implementation?
For example I know GCC uses a __attribute__((cdecl)) but the actual
details behind this are not obvious to me.
Thanks for your time and patience!
More information about the fedora-devel-list
mailing list