On Dec 12, 2006, at 11:42 AM, David Edelsohn wrote:

Joslwah  writes:

Joslwah> Looking at the Linux 32bit PowerPC ABI spec, it appears to me that Joslwah> floats in excess of those that are passed in registers are supposed to Joslwah> be promoted to doubles and passed on the stack. Examing the resulting Joslwah> stack from a gcc generated C call it appears they are passed as
Joslwah> floats.

Joslwah> Can someone confirm/refute this, or else point me to an ABI that says
Joslwah> that they should be passed as floats.

        I have not been able to find any motivation for promoting floats
passed ont the stack. Does this provide some form of compatibility with
SPARC?

It may have been intended to allow the callee to be a K&R-style or varargs function, where all float args get promoted to double. In particular, printf was often called without being declared in K&R- era code. This is one way to make that code work in a C90 environment.

Reply via email to