简体   繁体   English

AArch64 ESR Trapped WFI 或 WFE 指令执行

[英]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 上运行的某些东西执行了WFIWFE指令。

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM