powerpc gcc内联汇编函数

powerpc gcc内联汇编函数,gcc,powerpc,Gcc,Powerpc,我想将mtspr指令用于一个特殊用途寄存器,该寄存器的编号在函数中传递给我 __MTSPR(unsigned int spr, long long val) 我必须把瓦尔放在spr里 这是我徒劳的尝试 __asm__( "mtspr %[a], %[b] " : : [a]"I"(spr), [b]"r"(val) ); 我得到这个错误: ppc_gnu.c:在函数“uu MTSPR”中: ppc_gnu.c:69:2:警告:asm操作数0可能与约束不匹配

我想将mtspr指令用于一个特殊用途寄存器,该寄存器的编号在函数中传递给我

__MTSPR(unsigned int spr, long long val)
我必须把瓦尔放在spr里

这是我徒劳的尝试

    __asm__(
    "mtspr     %[a], %[b] "
    : : [a]"I"(spr), [b]"r"(val)
);  
我得到这个错误:

ppc_gnu.c:在函数“uu MTSPR”中: ppc_gnu.c:69:2:警告:asm操作数0可能与约束不匹配[默认情况下已启用] ppc_gnu.c:69:2:错误:“asm”中的不可能约束


那么如何解决这个问题,请不要使用宏。我无法修改此函数的用法或声明。

请参见此处:。(与u-boot相关的答案)。您可以在函数中使用该宏。谢谢。看起来我被宏的用法卡住了