Exception levels ARMv8-A系列定义了一系列的异常等级,从EL0到EL3,下面具体说明其含义:
ELn中,随着n的增加,软件的执行权限也相应的增加;
在AARCH64状态下,异常级别的切换只能发生在触发了异常,或者异常处理返回过程中,其中:
在发生异常即将进入或者从异常处理返回到另一个异常级别(包括异常级别不变的情况)时,待进入/返回的异常级别称之为目标异常级别。每个异常级别都有一个明确的目标异常级别,这个目标异常级别要么是默认定义的,要么是通过系统寄存器的相应bit定义的(注意没有异常级别的目标异常级别是EL0)。
当PE在某个异常级别执行的时候,PE能够访问下面的资源:
常见的异常级别模型
ELn | 应用范围 |
|---|---|
EL0 | 应用 |
EL1 | 操作系统或者一些特权函数 |
EL2 | Hypervisor |
EL3 | Secure Monitor |
Armv8-A架构提供了两种安全状态,每种状态都有一个相关的物理内存地址空间,如下所示:
Secure state:在这种状态下,PE可以访问安全状态和非安全状态下的物理地址空间; Non-secure state:只能访问非安全物理地址空间。