Toolchain for Maverick Crunch FPU

Kai Ruottu karuottu@mbnet.fi
Thu Apr 12 11:07:00 GMT 2007


Claudio Scordino wrote:
> Kai Ruottu wrote:
>> Claudio Scordino wrote:
>>>   I'm looking for a toolchain capable of compiling floating point 
>>> operations for the Maverick Crunch Math engine of Cirrus EP93xx 
>>> processors.
>>>
>>> Cirrus provides some scripts to build a gcc-3.4 toolchain with such 
>>> support, but unfortunately they don't work.
>>>
>>> I heard that gcc 4 has the support for such FPU as well. Is it true ?
>> A quick look at the current gcc-4.1.2 sources told that there is  
>> support for Maverick as the FPU in ARM...
>
> Good!
>
>>> Does it work ?
>> Don't know how well it works...
>
> That remains my main concern...

Things seem to be that the '-mcpu=ep9312 -mhard-float' combination will 
crash the GCC build in both gcc-4.1.2 and gcc-4.2.0-20070316 prerelease 
like :

/data1/home/src/gcc-4.2.0-20070316/build/./gcc/xgcc 
-B/data1/home/src/gcc-4.2.0-20070316/build/./gcc/ 
-B/usr/local/arm-elf/bin/ -B/usr/local/arm-elf/lib/ -isystem 
/usr/local/arm-elf/include -isystem /usr/local/arm-elf/sys-include -O2  
-O2 -Os  -DIN_GCC -DCROSS_COMPILE   -W -Wall -Wwrite-strings 
-Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition  
-isystem ./include  -fno-inline -g  -DIN_LIBGCC2 
-D__GCC_FLOAT_NOT_NEEDED -Dinhibit_libc -I. -I. -I../../gcc 
-I../../gcc/. -I../../gcc/../include -I../../gcc/../libcpp/include  
-I../../gcc/../libdecnumber -I../libdecnumber -mcpu=ep9312 -mhard-float 
-DL_addsubdf3 -xassembler-with-cpp -c ../../gcc/config/arm/lib1funcs.asm 
-o libgcc/ep9312/fpu/_addsubdf3.o
../../gcc/config/arm/ieee754-df.S: Assembler messages:
../../gcc/config/arm/ieee754-df.S:454: Error: selected processor does 
not support `mvfeqd f0,#0.0'
../../gcc/config/arm/ieee754-df.S:476: Error: selected processor does 
not support `mvfeqd f0,#0.0'
../../gcc/config/arm/ieee754-df.S:530: Error: selected processor does 
not support `ldfd f0,[sp],#8'
make[3]: *** [libgcc/ep9312/fpu/_addsubdf3.o] Error 1
make[3]: Leaving directory `/data1/home/src/gcc-4.2.0-20070316/build/gcc'

when enabling the mhard-float/msoft-float multilibs additionally with 
the 'mcpu=ep9312' ones in the
'gcc/config/arm/t-arm-elf' Makefile-fragment....  Without the 
'-mhard-float' those fp-bit/dp-bit based
soft-float routines will be generated into the 'ep9312/libgcc.a', so the 
bare '-mcpu=ep9312' will mean
"use this CPU with soft-float as default", which would sound being the 
same as generating soft-float
always for 'i586', 'i686' etc. which always have that built-in 'i587', 
'i687' etc.  Assuming that those 'ep93xx'
series  members always that "Maverick FPU"....

 Producing GCC with only that '-mcpu=ep9312' addition and then having 
only soft-float routines for it
in the used 'libgcc.a' may or may not work with self-built objects 
produced with both '-mcpu=ep9312'
and '-mhard-float'.  But using  '-mcpu=ep9312 -mfpu=maverick' DOESN'T 
generate  any  "Maverick
specific" FPU instructions :-(

 So could someone tell if the '-mcpu=ep9312' should work in gcc-4.1 and 
gcc-4.2 and how it should
work so that using the Maverick FPU could be possible?  Or is the FPU 
itself somehow broken and
people shouldn't try to use it at all?


 



More information about the Gcc-help mailing list