Я пытаюсь скомпилировать программу для Raspberry Pi 2B (ARMv7/Neon), но я получаю сообщение об ошибке с кодом встроенного ассемблера:Gcc жалуется на vstmia - почему?
Error: VFP single precision register expected -- `vstmia.64 r9,{d16-d31}'
Код является:
asm volatile (
"vstmia.64 %[reg]!, {d0 - d15} @ read all regs\n\t"
"vstmia.64 %[reg], {d16 - d31} @ read all regs\n\t"
::[reg] "r" (&vregs):
);
Забавный Дело в том, что он не жалуется на первый vstmia
. Сначала я попытался с одним {d0 - d32}
, и я подумал, что, возможно, слишком много 64-битных регистров, но это, очевидно, не проблема. vregs
- это 8-байтовая выровненная память.
Я использую нарукавный Linux-gnueabihf-GCC 4.8.3, с этой командной строкой:
arm-linux-gnueabihf-gcc -mcpu=cortex-a7 -marm -O2 -g -std=gnu11 -MMD -MP -MF"ARM_decode_table.d" -MT"ARM_decode_table.o" -c -o "ARM_decode_table.o" "../ARM_decode_table.c"
Что вы хотите передать? -mfpu = '? – Notlikethat
arm-linux-gnueabihf-gcc -mcpu = cortex-a7 -marm -O2 -g -std = gnu11 -MMD -MP -MF "ARM_decode_table.d" -MT "ARM_decode_table.o" -c -o "ARM_decode_table.o "" ../ARM_decode_table.c " – turboscrew
ОК, если вы не укажете FPU, вы получите все настройки, заданные компилятором по умолчанию (вы можете проверить конфигурацию GCC на' -v'). Я собираюсь выкинуть дикую догадку, что это будет 'vfpv3-d16';) – Notlikethat