Мне нужно преобразовать некоторый код, скомпилированный с помощью ARMASM, в gcc (исходный код GCC-4.6.2 eabi).Я использую ARM7TDMI, и мои аргументы компиляции
arm-none-eabi-gcc -c -march=armv4t -mcpu=arm7tdmi -mlittle-endian -g -O1
(я пропустил аргументы -I и -D ...)
В одном из моих файлов у меня есть этот код, который выиграл 't compile:
extern inline void ngEnable( void)
{
int tmp;
asm volatile(
"msr %[tmp], CPSR\n\t"
"bic %[tmp], %[tmp], #0xC0\n\t"
"msr CPSR_c, %[tmp]"
: [tmp] "+r" (tmp)
);
}
Я получаю эту ошибку:
C:\DOCUME~1\MALLAR~1.ISC\LOCALS~1\Temp\ccA9cCgQ.s: Assembler messages:
C:\DOCUME~1\MALLAR~1.ISC\LOCALS~1\Temp\ccA9cCgQ.s:267: Error: selected processor does not support requested special purpose register -- `msr r3,CPSR'
make: *** [cdbini.o] Error 1
согласно этому сообщению Re: проблема сборки linux-linaro-3.0-2011.08-0 (Я строю на Windows, но проблема может быть та же?) Я уже использую обходной путь не использования -march = all ...
Есть идеи, что моя проблема?