在PowerPc上解码此程序集内联代码段

时间:2014-09-01 12:46:08

标签: c assembly inline-assembly powerpc

我在PowerPc的内核源代码片段中有以下代码片段

#define SPRN_IVOR32     0x210   /* Interrupt Vector Offset Register 32 */

unsigned long ivor[3];
ivor[0] = mfspr(SPRN_IVOR32);

#define __stringify_1(x)        #x
#define __stringify(x)          __stringify_1(x)

#define mfspr(rn)       ({unsigned long rval; \
                    asm volatile("mfspr %0," __stringify(rn) \
                            : "=r" (rval)); rval; })

另外,上面的练习是关于在PowerPc中模拟MSR寄存器的位吗?

有谁可以帮助我确切地说我们在这做什么?

1 个答案:

答案 0 :(得分:6)

mfspr宏生成一个asm指令mfspr,它将给定的专用寄存器读入编译器选择的寄存器中,然后将其分配给rval,从而成为返回值表达。

正如评论所说,SPRN_IVOR32Interrupt Vector Offset Register 32,其内容因此被提取到ivor[0]