'C' calling convention change.

From: Richard B. Johnson
Date: Wed Oct 06 2004 - 07:23:29 EST



The new Red Hat Fedora release uses the following gcc version:

gcc (GCC) 3.3.3 20040412 (Red Hat Linux 3.3.3-7)

I have many assembly-language routines that need to interface with
'C' code. The new 'C' compiler is doing something different than
gcc 3.2, previously used.

I need to know what general-purpose registers need to be saved
in the called procedure. Previously, one needed to save the
index registers only (%ebx, %edi, %esi). Apparently I need to
save others with the new compiler because, although the called
procedures work, subsequent 'C' code fails in strange ways.

Please, if somebody __knows__ (really knows), let me know. I
will have to edit over 200 assembly-language files and I want
to do it only once! I don't want to just save all the registers
used because this wastes CPU cycles and the only reason for
the assembly in the first place was to save CPU cycles.

Cheers,
Dick Johnson
Penguin : Linux version 2.6.5-1.358-noreg on an i686 machine (5570.56 BogoMips).
Note 96.31% of all statistics are fiction.

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