0
votes

I am working on a Frescale's iMX6quad Arm Cortex A9 CPU. OS is Linux. Its runtime libraries have been compiled for armv5 architecture with -mfloat-abi=softfp I want to run an application that i can compile for armv7-a arch, and even enable hard float options during compile time (-mfloat-abi=hard).

Should I expect that the application will run fine on the ARM ? obviously i don't expect the accesses to runtime libraries to be carried out in 'hard'-ware, but my bits of the code with work with 'hard' floating fine?

Also the opposite is possible? That is, if the libraries are compiled for the specific processor with all hardware acceleration possible, can I (then) compile a simple application with softfp ABI and expect it to run fine on the ARM development board?

Thank you for your help

1

1 Answers

1
votes

ARM float ABIs as its acronym suggests are binary interfaces. If you have two binaries, for example an executable and a shared object (dynamic library) they need to have same ABI, otherwise they can't communicate properly.

Down in the details, binary interfaces define how functions expect their parameters to be passed, which registers they need to preserve.

For example difference between hard and softfp ABIs is with softfp functions expect their floating point parameters in regular registers while in hard convention functions expect floating point parameters in floating point registers.