简介
- ARMv8架构处理器有一套异常等级(Exception level)机制,分成4个等级(EL0 ~ EL3)。
- 处理器运行时会处于其中的某个等级并且可以进行等级切换。
资源差异
- 每个异常等级都拥有一些自己版本的特殊寄存器,例如:system ctrl 寄存器(sctlr_el1,sctlr_el2 …),程序状态寄存器(SPSR_EL1,SPSR_EL3,…)。
- 一些异常等级有些独有的特殊寄存器,例如:EL3 安全配置寄存器(Secure Configuration Register)(SCR_EL3),EL2 虚拟化配置寄存器(Hypervisor Configuration Register)(HCR_EL2)。
- 处理器一般会使用当前异常等级的特殊寄存器来实现不同等级之间的物理隔离。
权限差异
- 随着异常等级的提高,软件的访问权限也相应增加,因此异常等级又被称为安全等级。
- 当处理器在某个异常级别执行的时候,处理器能够访问下面的资源:
- 可用于当前异常级别和当前安全状态的资源集。
- 在当前的安全状态下,所有更低异常级别上可用的资源。
- 这意味着,异常等级为EL3时,处理器可以访问任何资源(包括安全状态和非安全状态下)。
初始等级
- 处理器上电之后运行在最高的异常等级EL3,即bl1处于EL3。
异常等级切换
- 该机制被命名为异常等级,是因为等级的切换只能通过同步异常实现,注意:不是通过中断实现的。
- 异常级别切换只能通过软件触发同步异常,或者同步异常处理返回后。
- 软件触发同步异常时,

ARMv8处理器有四个异常等级EL0-EL3,每个等级有不同的资源和权限。EL0用于用户程序,EL1为操作系统,EL2处理虚拟化,EL3是安全监控。异常等级通过SVC、HVC、SMC指令切换,且EL0不能直接到EL2或EL3。异常处理完成后,通过eret返回。EL0和EL1是必需的,EL2和EL3可选。
最低0.47元/天 解锁文章
116

被折叠的 条评论
为什么被折叠?



