卢骏 · 2020年06月23日

ARMv8的A32的异常等级

ARMv8,定义了异常等级,来进行权限控制。分别是EL0,EL1,EL2,EL3。

对于AArch32,ARMv8定义了9种PE模式,来确执行权限,不使用EL。对于AArch64,不支持PE模式:

monitor模式: 只能在secure的EL3执行
hyp模式: 只能在non-secure的EL2执行
system,supervisor,abort,undefined,IRQ,FIQ模式: 依赖于secure模式
user模式: 只能在EL0执行

system,supervisor,abort,undefined,IRQ,FIQ,user模式,和之前的ARMv7的特权模式兼容。只是不同的特权模式,运行在不同的EL。

对于secure状态

monitor模式只能执行在EL3,并且EL3的运行模式是AArch32

system,supervisor,abort,undefined,IRQ,FIQ模式:

 EL3是AArch64,执行在EL1
 EL3是AArch32,执行在EL3

不支持monitor模式,因为A64不支持PE模式
如果EL1是AArch32,system,supervisor,abort,undefined,IRQ,FIQ模式运行在secure EL1

如下图所示:
1.jpg

如果EL3是AArch32

支持monitor模式,并且只能在secure EL3执行
AArch32,system,supervisor,abort,undefined,IRQ,FIQ模式运行在secure EL3

secure EL1,不支持

也就是下图所描述的:

2.jpg

当EL3是AArch32,那么就没有secure EL1,monitor,system,supervisor,

abort,undefined,IRQ,FIQ模式都是运行在EL3。user模式,运行在secure EL0。

也就是当EL3是AArch32,只有EL3和EL0两个EL。

对于non-secure状态

system,supervisor,abort,undefined,IRQ,FIQ模式都是运行在EL1,user模式运行在EL0。

而hyp模式,运行在EL2,比system,supervisor,abort,undefined,IRQ,FIQ,user模式有更高的执行权限。

在non-secure状态下,只有EL2,EL1,EL0三个EL:

EL0: 运行user模式

EL1: 运行system,supervisor,abort,undefined,IRQ,FIQ模式

EL2: 运行hyp模式

AArch32的PE模式和EL的对应关系,如下表所示:

3.jpg

AArch32使用PL,来确定VA转PA的权限控制。而PL和PE模式的映射关系,如下表所示:

5.jpg

也就是:

在non-secure下,每个PL映射到对应的EL上,如PL1映射到EL1

l 在seucre下:

 PL0映射到EL0
 PL1的映射,取决于EL3的执行状态:

² EL3是AArch64:Secure PL1映射到secure EL1,monitor模式不支持

² EL3是AArch32:secure PL1映射到secure EL3,monitor模式支持

对于AArch32的PE的9种模式,在CPSR寄存器的mode[4:0]位域中,进行定义:

4.jpg

系列其他篇

原文首发于骏的世界博客
作者:卢骏.
更多Arm技术相关的文章请关注Arm技术博客极术专栏,每日更新。
推荐阅读
关注数
23392
内容数
895
Arm相关的技术博客,提供最新Arm技术干货,欢迎关注
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息