# Use register arguments

## Quitch

What's this exactly?  I can't seem to find any information on it.

----------

## moocha

It basically causes kernel functions to use a different, more efficient, calling convention than the standard C one - internally, and when interacting with modules. While that may look like a Good Thing (and in theory it is), it causes binary only modules (such as the NVidia or ATi drivers) to malfunction badly. Only turn this on if you're sure you won't use binary only modules.

----------

## Quitch

I take it it causes them problems regardless of whether they're loaded into the kernel before or after this option?

----------

## moocha

It causes problems because if you use this option, you have to compile *all* modules with this option - and the manufacturers / driver suppliers rarely if ever provide modules compiled with -mregparm=3.

----------

## schachti

Will it improve performance (especially on a router / firewall server)?

----------

## Leffe

 *schachti wrote:*   

> Will it improve performance (especially on a router / firewall server)?

 

Probably, go benchmark with different values for -mregparm=x (max is 3) and without it. It's possible that this option is only supported on x86, GCC should warn though.

----------

