我想从ARM上运行的linux内核代码中打印出几个寄存器的值。特别是我在linux中有以下程序集 -
e3c52007 bic r2, r5, #7 ; 0x7
e1520003 cmp r2, r3
0a000003 beq c011fa60 <smem_find+0x40>
如何以kmsg打印出r2,r3和r5的值?我不想使用变量名,并希望从寄存器中获取值。
答案 0 :(得分:1)
我不熟悉内核开发和简单的调试方法,但我认为这样就可以了。
size_t r2, r3, r5;
asm ("str r2, %[r2]\n"
"str r3, %[r3]\n"
"str r5, %[r5]\n"
: [r2]"=m" (r2), [r3]"=m" (r3), [r5]"=m" (r5));
printk("r2=%u r3=%u r4=%u\n", r2, r3, r5);
编辑:现在使用ARM程序集而不是x86:p
答案 1 :(得分:0)
您可以致电show_regs(struct pt_regs * regs)
。此函数将在pt_regs结构上显示所有注册器。