[fpc-devel] How to get FPC to generate floating point instructions for ARM?
Jeppe Johansen
jepjoh2 at es.aau.dk
Tue Mar 15 11:55:08 CET 2011
Den 15-03-2011 11:32, michael skrev:
> I am trying to understand how to work with the various floating point options
> available for FPC when running on ARM under Linux. I'm not to familiar with
> all this so please bear with me.
>
> Specifically I have a system comprising an TI OMAP3530: ARM CORTEX A8 running
> Linaro. /proc/cpuinfo reports it as:
>
> Processor : ARMv7 Processor rev 2 (v7l)
> Features : swp half thumb fastmult vfp edsp neon vfpv3
>
> I notice that when compiling for ARM GCC, by default, generates floating point
> instructions like "fmuls s3, s11, s3" however if the -msoft-float option is
> given then GCC generates calls to software floating point routines like "bl
> __aeabi_fmul".
>
> The former is somewhat faster and of course what I would like to achieve under
> FPC.
>
> So far I have managed to build, using the lazarus_first_time script, an FPC
> cross compiler for ARM running on my PC, version 2.5.1.
> Additionally I have built a native compiler on the ARM board from subversion
> sources. Compiled using the ppcarm created on the PC.
>
> I built the native compiler with a command like:
>
> $make clean all PP=/path/to/ppcarm PREFIX="/opt/fpc-svn"
> OPT="-dFPC_ARMEL -O- -dFPC_ABI_EABI"
>
> The resulting compiler works on the target but it generates software floating
> point instructions like "bl float64_mul".
>
> Here I get stuck. I cannot get FPC to generate floating point instructions.
>
> Adding any floating point options to FPC when compiling my application,
> like -CfVFPV3, results in errors like:
>
> PPU Loading /opt/fpc-svn/lib/fpc/2.5.1/units/arm-linux/rtl/system.ppu
> Trying to use a unit which was compiled with a different FPU mode
>
> Trying to rebuild my native compiler on the target with -CfVFPV3 in the
> options fails with errors about "selected CPU does not support ARM
> mode:....." for all of the floating point instructions generated.
>
> Is there anyway to get FPC to generate floating point code similar to that
> produced by GCC by default?
>
> Is there a way to rebuild just the units such that they are in the same FPU
> mode?
>
> Thanks for any help.
> _______________________________________________
> fpc-devel maillist - fpc-devel at lists.freepascal.org
> http://lists.freepascal.org/mailman/listinfo/fpc-devel
I think that it should work if you do it like:
make clean all PP=/path/to/ppcarm PREFIX="/opt/fpc-svn" OPT="-dFPC_ARMEL -O- -dFPC_ABI_EABI -CfVFPv3"
It could be that there are simply some options missing to gas. It should
generate assembler files. You could try to call the assembler manually
and see what options it takes. I think some versions need
"-march=armv7+vfp3" or something like that
More information about the fpc-devel
mailing list