[英]AArch64 ESR Trapped WFI or WFE instruction execution
I am confused by the following entry in the ARM documentation for ESR_EL1:我对 ESR_EL1 的 ARM 文档中的以下条目感到困惑:
EC, bits [31:26] 0b000001 Trapped WFI or WFE instruction execution. EC,位 [31:26] 0b000001 被捕获的 WFI 或 WFE 指令执行。
What does it really mean that WFI or WFE were trapped? WFI 或 WFE 被困是什么意思? What is the meaning if this happens under Linux?如果在 Linux 下发生这种情况,这意味着什么? Could this produce a kernel crash?这会导致内核崩溃吗?
It means that SCTLR_EL1.nTWI
(bit 16) or SCTLR_EL1.nTWE
(bit 18) were set to 0
, and something running at EL0 executed a WFI
or WFE
instruction.这意味着SCTLR_EL1.nTWI
(第 16 位)或SCTLR_EL1.nTWE
(第 18 位)被设置为0
,并且在 EL0 上运行的某些东西执行了WFI
或WFE
指令。
Linux AArch64 userspace was apparently allowed to execute WFI
/ WFE
until this patch , which installed an exception handler in the kernel that would skip the instructions, effectively turning them into NOP
s.在这个补丁之前,Linux AArch64 用户空间显然被允许执行WFI
/ WFE
,它在内核中安装了一个异常处理程序,可以跳过指令,有效地将它们转换为NOP
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.