ARMv8-A架构基础之 异常级别(exception level, el)

ARM架构定义了基于处理器模式的异常模型。 对于每种异常类型,体系结构都定义了异常所采用的模式。 这种模式被称为异常的目标模式(target mode)。 然而可配置的陷入,使能和路由控制常常可以更改异常的目标模式。 ARMv8-A 的AArch32遵循此模型。

当处理器发生异常时:

  • 将当前程序状态保存在目标模式的SPSR中。
  • 保存异常的返回地址:
    • 如果目标模式不是Hyp模式,则在目标模式的链接寄存器(LR)中。
    • 如果目标模式是Hyp模式,则在ELR_hyp中。
  • 进入目标模式。 除非异常目标模式是Monitor模式,否则不会更改安全状态。

ARMv7-A体系结构使用从PL0到PL2的特权级别。 在ARMv8-A中,异常级别已经取代了权限级别,但本节将介绍如何对PL1继续进行特殊使用。 下表显示了包含虚拟化扩展和安全扩展的ARMv7-A处理器的全套处理器模式。 它还显示了ARMv7-A分配给每个模式的特权级别,这些模式定义了其执行权限。 执行权限是在每个安全状态中独立定义的。

模式功能安全状态ARMv7-A特权级别
User (USR)非特权模式(大多数应用程序都运行在该模式)BothPL0
FIQFIQ中断异常时进入BothPL1
IRQIRQ中断异常时进入BothPL1
Supervisor (SVC)重置时进入或执行监督调用指令(SVC)时进入BothPL1
Monitor (MON)当执行SMC指令(安全监视器调用)时或处理器进入Monitor 模式异常用于支持安全状态和非安全状态之间的切换。Secure onlyPL1
Abort (ABT)内存访问异常时进入BothPL1
Undef (UND)在执行未定义的指令时进入BothPL1
System (SYS)特权模式,与用户模式共享寄存器视图BothPL1
Hyp (HYP)由Hypervisor调用和Hyp陷入异常时进入Non-secure onlyPL2

在ARMv7-A体系结构中,处理器模式可以在特权软件控制下更改,或者在发生异常时自动更改。 当发生异常时,内核保存当前执行状态和返回地址,进入处理异常所需的模式,并可能禁用硬件中断。 在以前没有特权的用户模式,应用程序以最低级别的特权PL0运行。

操作系统在PL1上运行。 在具有虚拟化扩展的系统中,Hypervisor在PL2上运行。 安全监视器作为在安全世界和普通世界之间切换的网关,也在PL1上运行。

ARMv8-A不更改此异常模型,但添加了以下规则以涵盖ARMv7-A中不可能出现的情况:

  • 如果EL2正在使用AArch64,则任何以Hyp模式为目标的异常进入EL2也将使用AArch64。
  • 如果EL3正在使用AArch64,则任何以Monitor模式为目标的异常进入EL3也将使用AArch64。

在AArch64中,处理器模式被映射到的异常级别如下图所示(linux 就是rich os)。

比较典型映射如下:

当发生异常时,处理器把异常级别切换到能处理该异常类型的异常级别(相当于ARMv7-A中的处理器模式)。 在AArch32中安全监视器(Secure monitor)在PL1上运行,而在AArch64中安全监视器在EL3上运行。

处理器模式映射到异常级别

安全状态下的异常级别取决于EL3是否使用AArch64。 这会影响处理器模式如何映射到异常级别。

ARMv7-A中使用的monitor模式在ARMv8-A中不存在。这是因为正在使用AArch64的EL3提供了Secure monitor功能。

在普通世界中映射没有变化,但是在安全世界中,Supervisor 模式,Abort 模式,IRQ模式,FIQ模式,Undefined 模式和System 模式从EL1升级到EL3。 这是因为:

  • EL3提供Secure Monitor功能。
  • ARMv6安全扩展将Monitor 模式定义为与下面这些模式为同一层级的安全状态模式:Supervisor 模式,Abort 模式,IRQ模式,FIQ模式,Undefined 模式和System 模式。 因此,这些模式和Secure Monitor功能一起表示为EL3。

这个重映射对处理器的操作没有影响。 在AArch32状态内的操作完全根据处理器模式之间的交互来定义,而不涉及任何关联的权限级别或异常级别。

ARMv8-A中的权限级别

当EL3使用AArch32时,这些模式集(Supervisor,Abort,IRQ,FIQ,Undefined,System)是处于安全状态的EL3模式,在所有其他情况下都是EL1模式。

为了避免这种复杂的描述,这些模式可以被描述为PL1模式,反映它们在ARMv7-A中的特权级别。 与此相关的是:

  • 在这两种安全状态下,这些模式下影响执行的控制可以被描述为PL1控制。
  • 在这些模式或用户模式下执行时,使用的转换系统称为PL1&0转换机制。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值