softfp seems to use software floating point code
I am using arm-none-eabi-gcc 4.8_2014q2. I have a project for the STM32F4 processor (which has hardware fp) -- cortex M4f. I am compiling and linking with --mfpu-fpv4-sp-d16 -mfloat-abi=softfp. The documentation says this will use software calling conventions but hardware fp within the functions it calls. That is exactly the trade-off I am hoping for.
In looking at the disassembly, the r registers are loaded with the values to be divided or multiplied, as expected, and then __aeabi_fdiv or __mulsf3 are being called. So far so good. However, if I follow the trace further, it turns out that those functions, even in lib/gcc/
In libgcc.a, I see that there /are/ functions that use hardware fp. Just not the ones gcc is choosing to do the multiply and divide. Is there some trick to tell the system, "no, really, use floating point hardware"? Or was the "hardware fp with software calling conventions" not what it sounds like?
Thanks!
Question information
- Language:
- English Edit question
- Status:
- Answered
- Assignee:
- No assignee Edit question
- Last query:
- Last reply:
Can you help with this problem?
Provide an answer of your own, or ask Isaac Charles for more information if necessary.