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操作系统或者一些特权函数
EL2Hypervisor
EL3Secure Monitor

Security state

Armv8-A架构提供了两种安全状态每种状态都有一个相关的物理内存地址空间,如下所示:

  • Secure state:在这种状态下,PE可以访问安全状态和非安全状态下的物理地址空间;
  • Non-secure state:只能访问非安全物理地址空间。


这里是从善若水的博客,感谢您的阅读📕📕📕



以上是关于ARMv8异常级别的定义EL0EL1EL2EL3的主要内容,如果未能解决你的问题,请参考以下文章

[译] ARMv8-A的基础知识

ARMV8 datasheet学习笔记4:AArch64系统级体系结构之VMSA

ARMv8-A Exception Handling

ARMV8 datasheet学习笔记4:AArch64系统级体系结构之编程模型- 异常

ARMv8-A Exception Levels

ARMV8 datasheet学习笔记4:AArch64系统级体系结构之编程模型- 其它