2017-08-25 443 views
1

已知如何从异常级别返回到以前的异常级别(set elr_el3 - > set spsr_el3 - > execute eret),但是如何将ELET从EL3返回到相同的EL3?在ARM的官方文档中,我发现了这样的句子: “从异常中返回可以保持相同的异常级别或输入较低的异常级别,但不能移动到更高的异常级别。”如何在ARMv8中将ERET设置为相同的异常级别?

+1

也许这意味着你不能低于el0并留在el0。 –

+0

有趣的观点:)但在文档中,我发现信息ELET在EL0是未定义的行为。 –

+1

是的,无法找到答案要么...说PSTATE来自SPSR,但spsr不包含EL位。 –

回答

2

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

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

相关问题