ARMv8异常级别的定义EL0EL1EL2EL3
Posted 从善若水
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ARMv8异常级别的定义EL0EL1EL2EL3相关的知识,希望对你有一定的参考价值。
本人就职于国际知名终端厂商,负责modem芯片研发。
在5G早期负责终端数据业务层、核心网相关的开发工作,目前牵头6G算力网络技术标准研究。
博客内容主要围绕:
5G/6G协议讲解
算力网络讲解(云计算,边缘计算,端计算)
高级C语言讲解
Rust语言讲解
文章目录
Exception levels
ARMv8-A系列定义了一系列的异常等级,从EL0到EL3,下面具体说明其含义:
- ELn中,随着n的增加,软件的执行权限也相应的增加;
- EL0被称为无特权执行;
- EL2提供了对虚拟化的支持
- EL3提供了安全状态切换功能(安全状态与非安装状态之间的切换)
🛑注意,EL0和EL1是必须实现的,EL2和EL3是可选的。而且一个PE中实现的EL可以不连续,例如只实现了EL0、EL1和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:只能访问非安全物理地址空间。
这里是从善若水的博客,感谢您的阅读📕📕📕
以上是关于ARMv8异常级别的定义EL0EL1EL2EL3的主要内容,如果未能解决你的问题,请参考以下文章
ARMV8 datasheet学习笔记4:AArch64系统级体系结构之VMSA