已知如何从异常级别返回到上一个异常级别(set elr_el3 -> set spsr_el3 ->execute eret),但是如何从 EL3 ERET 到同一个 EL3?在 ARM 的官方文档中,我发现了这样一句话: “从异常返回可以停留在相同的异常级别或进入较低的异常级别。它不能移动到更高的异常级别。”。
最佳答案
ERET 指令可用于返回到 CPU 支持的相同或任何较低的异常级别。如果存储在 SPSR_EL3.M[4:0]
中的已保存模式字段设置为 0b01101
或 0b01100
,其中位 M[ 3:2]
编码异常级别为3,那么在EL3执行的ERET指令将返回到EL3。
请参阅 ARM Architecture Reference Manual -- ARMv8, for ARMv8-A architecture profile 中的“D1.6.4 保存的程序状态寄存器 (SPSR)”部分了解有关 SPSR_ELx 寄存器如何布局的更多详细信息。
关于assembly - 如何在ARMv8中ERET到相同的异常级别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45878436/