我需要将一些用ARMASM编译的代码转换为gcc(code sourcery GCC-4.6.2 eabi)格式。我使用的是ARM7TDMI,我的编译参数如下:
arm-none-eabi-gcc -c -march=armv4t -mcpu=arm7tdmi -mlittle-endian -g -O1
我省略了-I和-D参数...
在我的一个文件中,有这段无法编译的代码:
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
根据这篇帖子的内容(我是在Windows上构建的,但问题可能相同?),我已经使用了不使用-march=all的解决方法...
你有什么想法吗?