2017-08-25 445 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)」部分。

相關問題