There's a warning in the man pages for gcc that says that you have to
compile all the functions (including libraries) with the same
setting.
It says that in the description of -mregparm, not of the function
attribute "regparm", and it is slightly misleading: -mregparm
specifies the default for any function without an explicit attribute,
so you better use the same -mregparm option for any file that contains
functions (or calls functions) without explicit attribute; but you _can_
have multiple regparm settings in total.
biosint is only called from assembly, so it really doesn't matter. The
issue is that the assembly that calls biosint is written
with as "regparm=0", from long ago, and the rules got changed when we
set regparm=3.
Again, only functions called from assembly for vm86 mode need to be
compiled with regparm=0.
Whatever calling sequence you choose, please put the required attribute
for any function that needs something specific in the declaration for
that function (in a header file). This includes any function
implemented
in assembler (except those without arguments at all).
This will save you a lot of headaches ;-)
Segher
--
coreboot mailing list: [email protected]
http://www.coreboot.org/mailman/listinfo/coreboot