ARM float ordering

Richard Earnshaw rearnsha@arm.com
Fri Jun 20 18:16:00 GMT 2003


> I was looking at xscale-elf.h this morning, and noticed this:
> 
> #define SUBTARGET_EXTRA_ASM_SPEC "%{!mcpu=*:-mcpu=xscale} \
>   %{mhard-float:-mfpu=fpa} \
>   %{!mhard-float: %{msoft-float:-mfpu=softfpa;:-mfpu=softvfp}}"
> 
> This comes from:
> revision 1.6 date: 2003/04/09 15:14:23;  author: nickc;  state: Exp;  lines: +24 -1
> * doc/install.texi: Note that ARM toolchains need binutils 2.13 or newer.
> * config/arm/elf.h (SUBTARGET_ASM_FLOAT_SPEC): Pass -mfpu=softfpa instead of -mno-fpu.
> * config/arm/semi.h (ASM_SPEC): Likewise.
> * config/arm/xscale-elf.h (SUBTARGET_EXTRA_ASM_SPEC): Likewise,
>   but only if -msoft-float is specified pass.  Otherwise pass -mfpu=softvfp.
> 
> 
> So, if -mhard-float we specify -mfpu=fpa; for -msoft-float we specify
> -mfpu=softfpa; and for neither we specify -mfpu=softvfp.  However, nowhere
> that I can find does this set a flag for the compiler.  This never triggers
> TARGET_VFP, so arm_float_words_big_endian will always be wrong for
> little-endian Xscale with default options.
> 
> Am I missing something?
> 

Not really, the patch that makes softvfp available as a user-selectable 
option hasn't been contributed yet...  I want to kill (well, deprecate) 
the -msoft/hard-float options and replace them with a -mfpu= option which 
behaves the same way as the assembler flag of the same name.  
Unfortunately, my ideas for implementing this were complicated somewhat by 
the contribution of the Cirrus Maverick code, where the separation of 
floating point from other features of the Maverick co-processor are 
blurred -- I haven't had time recently to sort the issues out.  I suspect 
I shall want to separate the Maverick features into two distinct parts: 
floating point and non-fp.

R.



More information about the Gcc mailing list