【ARMv8】異常級別的定義EL0、EL1、EL2、EL3

Exception levels
ARMv8-A系列定義了一系列的異常等級,從EL0到EL3,下面具體說明其含義:

ELn中,隨着n的增加,軟件的執行權限也相應的增加;

  • EL0被稱爲無特權執行;
  • EL2提供了對虛擬化的支持
  • EL3提供了安全狀態切換功能(安全狀態與非安裝狀態之間的切換)

異常級別的切換

在AARCH64狀態下,異常級別的切換隻能發生在觸發了異常,或者異常處理返回過程中,其中:

  • 當發生異常時,異常級別要不增加,要不保持不變;
  • 當從異常處理返回時,異常級別只能減小或者保持不變。

在發生異常即將進入或者從異常處理返回到另一個異常級別(包括異常級別不變的情況)時,待進入/返回的異常級別稱之爲目標異常級別。每個異常級別都有一個明確的目標異常級別,這個目標異常級別要麼是默認定義的,要麼是通過系統寄存器的相應bit定義的(注意沒有異常級別的目標異常級別是EL0)。

不同異常級別資源使用

當PE在某個異常級別執行的時候,PE能夠訪問下面的資源:

  • 可用於當前異常級別和當前安全狀態的資源集;
  • 在當前的安全狀態下,所有較低的異常級別上可用的資源。
    這意味着,如果實現了EL3,那麼當執行在EL3時,PE可以訪問所有異常級別上可用的所有資源(包括安全狀態和非安全狀態下)。

常見的異常級別模型

ELn 應用範圍
EL0 應用
EL1 操作系統或者一些特權函數
EL2 Hypervisor
EL3 Secure Monitor

Security state

Armv8-A架構提供了兩種安全狀態,每種狀態都有一個相關的物理內存地址空間,如下所示:

Secure state:在這種狀態下,PE可以訪問安全狀態和非安全狀態下的物理地址空間;
Non-secure state:只能訪問非安全物理地址空間。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章