如何在ARMv8中ERET到相同的异常级别?

时间:2017-08-25 09:29:47

标签: assembly arm

众所周知如何从异常级别返回到先前的异常级别(设置elr_el3 - >设置spsr_el3 - >执行eret),但是如何从EL3 ERET到同一个EL3?在ARM的官方文档中,我发现了一句话,说明有可能: "从异常返回可以保持相同的异常级别或输入较低的异常级别。它无法移动到更高的异常级别。"。

1 个答案:

答案 0 :(得分:3)

ERET指令可用于返回CPU支持的相同或任何较低的异常级别。如果存储在SPSR_EL3.M[4:0]中的已保存模式字段设置为0b011010b01100,其中位M[3:2]将异常级别编码为3,则在EL3处执行的ERET指令将返回到EL3。

参见" D1.6.4保存的程序状态寄存器(SPSR)"在ARM Architecture Reference Manual -- ARMv8, for ARMv8-A architecture profile中有关如何布置SPSR_ELx寄存器的更多详细信息。