Re: [arm-gnu] Float register passing
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [arm-gnu] Float register passing




--- Paul Brook <paul@xxxxxxxxxxxxxxxx> wrote:

> On Wednesday 22 February 2006 17:45, Joe Foster
> wrote:
> > Hello,
> >
> > When passing values to asm coded functions,
> > the ARM compiler (armcc, not gcc) expects and
> places
> > floating point values into the floating point
> > registers.  GCC for ARM 3.4.4 does not.  It places
> > parameters in the general purpose registers
> > R0...Is this correct?
> 
> The ARM EABI specifies that floating point values
> should be passed in core 
> registers.
> 
> You need to tell armcc to use the standard EABI
> calling convention, not the 
> modified hard-float VFP calling convention.
> 
> Paul
> 
Thanks Paul,
I went out to the ARM web site looking for the latest
ABI documentation. The latest Procedure Call Standard
was dated 10/07/2005. Is this the EABI specification
you are referring to? 

This specification defines the ?Base Procedure Call
Standard? in chapter 5. This chapter details a ?core
registers only? calling standard which is defined for
systems where there is no floating point hardware.
Chapter 6 defines the ?Standard Variants? which alters
the way floats are passed when VFP coprocessor
hardware exists (use of s0/d0 regs for example).
Assuming this is the correct specification, are you
saying GCC does not implement the more performance
minded ?Standard Variant? portion of the EABI? Do you
have any plans to support this variant? I?m concerned
about the performance degradation associated with
passing  float arguments in GPRs when a particular
processor supports the VFP register set spelled out in
the ?Standard Variant?. Thanks for your insights. 

JF 

__________________________________________________
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around 
http://mail.yahoo.com