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