ARM中的WFE指令处理

use*_*251 3 arm

WFE指令如何工作?我读到的是它使处理器等待IRQ / FIQ / event /。

但是,当您收到IRQ时,会在获取中断或执行WFE之后的指令时执行irq_fault_handler向量吗?

Gil*_*il' 7

WFE在概念上等同于

while (!event_has_occurred) /*do nothing*/;
Run Code Online (Sandbox Code Playgroud)

除了它关闭CPU而不是运行紧密循环外。

可以中断WFE的几件事情,不仅包括中断,还包括来自另一个CPU(在多核处理器中)的显式唤醒事件。

如果在WFE期间发生中断,则通常会发生。处理器切换到IRQ或FIQ模式,跳转到IRQ或FIQ处理程序,并将WFE指令的地址(加上通常的偏移量8)放入lr

如果CPU被显式的唤醒事件唤醒,则执行WFE之后的下一条指令。

将WFE视为一个很长的NOP,它仅在某些外部事件发生时才完成。