我想知道如何使用 iabr 寄存器来设置断点。该手册说了一些关于 isync 指令的内容,但这似乎不起作用。有人可以帮忙吗?
我正在使用的代码:
asm ("isync");
asm volatile ("mtspr 1010,%0;" : : "r"(val));
asm ("isync");
asm ("isync");
我想知道如何使用 iabr 寄存器来设置断点。该手册说了一些关于 isync 指令的内容,但这似乎不起作用。有人可以帮忙吗?
我正在使用的代码:
asm ("isync");
asm volatile ("mtspr 1010,%0;" : : "r"(val));
asm ("isync");
asm ("isync");
MPC604给出提示:
当 IABR 中的地址(位 0 到 29)与完成单元中要完成的下一条指令匹配,并且 IABR 启用位(位 30)设置为 1 时,会发生指令地址断点异常。
如果你要中断的指令的地址是addr
,你需要做val = addr | 2
。我不知道第 31 位是做什么的。