This is the mail archive of the crossgcc@sources.redhat.com mailing list for the crossgcc project.

See the CrossGCC FAQ for lots more information.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: problem with crosstool 0.28-pre28 supplied patch for gcc 3.3.[23] softfloat on ARM


On 2004-08-08 at 21:50:51 Lennert Buytenhek wrote:

> This is what I understand of float-on-arm in general:
> - FPA is big endian float word ordering, even on little endian platforms.
> - VFP is native endian float word ordering.

Yes.


> This is what I understood of Nicolas' intention:
> - -mhard-float would give the same behaviour as before the patch
> - -msoft-float would give FPA behaviour
> - no option would give VFP

Yes again.  However, the patch he posted doesn't actually have that
effect. :)  Please read the comments I added to:
http://www.andric.com/cross/patches/gcc-3.3.2-arm-softfloat.patch.bz2
for more information.  Dan already included part of this patch in
crosstool, but not the -m* options behaviour.


> -%{mapcs-float:-mfloat} %{msoft-float:-mno-fpu}"
> +%{mapcs-float:-mfloat} %{msoft-float:-mfpu=softfpa -mfpu=softvfp}"
[...]
> But it didn't seem right to me -- it would seem that when -msoft-float
> is specified, it evaluates to "-mfpu=softfpa -mfpu=softvfp" (essentially
> specifying two conflicting options) and otherwise to "", no?

Indeed this patch doesn't work, because then the assembler will get
passed 2 different fpu options, and will NOT complain, but only the
latter (softvfp) will take effect.


> In any case, binaries generated with crosstool 0.28-rc28's
> arm-softfloat-linux gcc 3.3.3 are not marked softfloat at all.
> So I changed the abovementioned hunk to this:

I encourage you to try the above patch. :)


>> 2) does gcc-3.4.x have a similar problem?

Yep, it already includes the ieee*.S files, but not the specific
fpa/softfpa/softvfp behaviour we're talking about.  For that, you need
to apply:

http://www.andric.com/cross/patches/gcc-3.4.0-arm-softfloat.patch.bz2


> No mention of VFP.  So I guess that FPA is the official cast-in-stone-now
> standard float ordering format on Linux/ARM.  And perhaps crosstool should
> indeed generate FPA binaries, if only because of backward compatibility and
> ABI stuff.  I guess I should have used FPA also from the start.

That entirely depends on which ARM platform you're targeting.  If you
want to target some generic distro, it's probably best to simply use
hardfloat, and let the kernel's FPU emulator handle it, if necessary.

But if you want maximum floating point performance on a target without
an FPU, use softvfp.  If you have an existing distro using softfpa,
use that.

Attachment: pgp00000.pgp
Description: PGP signature


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]