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?