Оказывается, __ARM_PCS_VFP не совсем подходит.
Дело в том, вариантов всего не три, а четыре:
- -mcpu=cortex-m3
- -mcpu=cortex-m4
- -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard
- -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=softfp
Как я понял, червёртый вариант тоже использует сопроцессор, и отличается от -mfloat-abi=hard соглашениями о вызовах.
Вот что определено для каждого из этих вариантов:
- __SOFTFP__, __ARM_PCS
- __SOFTFP__, __ARM_PCS
- __ARM_PCS_VFP
- __ARM_PCS
Таким образом, чтобы определить вариант с использованием сопроцессора нужна следующая конструкция:
Код
#if (!defined __SOFTFP__)
Если бы я знал, что такое электричество...