ARMv8-AC语言&嵌入式嵌入式 Linux C ARM

3. Changing Exception Levels

2019-02-03  本文已影响0人  Loyen

ARMv8-A相关历史文章:

ARM架构的早期版本定义了一个基于处理器模式的异常模型,针对每一个异常类型,体系结构都定义了接收异常的模式,称为异常的目标模式。针对一个异常,configurable traps,enables,routing controls能改变处理器的目标模式。ARMv8-A的AArch32遵循这个模型。

当处理器接收异常时:

在ARMv7-A体系架构使用PL0-PL2三个特权级,在ARMv8-A中,Exception Levels取代了特权级,但是PL1还能继续发挥特殊作用。
下图将描述ARMv7-A处理器的全部模式,包括虚拟化扩展和安全扩展。ARMv7-A为每个模式分配了执行特权,其中执行特权的定义独立于安全状态。



在ARMv7-A体系架构中,处理器模式可以在特权软件的控制下进行切换,或者在异常发生的时候自动切换。当异常发生时,处理器会保存当前的执行状态和返回地址,然后进入处理异常的目标模式,可能会禁止硬件中断。

在ARMv8-A中,没有改变这种异常模型,但是增加了几条规则,来覆盖在ARMv7-A中不支持的case,规则如下:

在AArch64中,处理器模式和Exception levels的映射关系如下图所示:



当异常发生时,处理器将改变Exception Level(相当于ARMv7-A中的处理器模式)来处理异常类型。Secure monitor在AArch32中时处在PL1状态,在AArch64中处在EL3状态。

3.1 Mapping the processor modess onto the Exception levels

安全状态下的Exception level取决于EL3是否使用了AArch64,这个会影响处理器模式如何映射到Exception levels。

比较两张图可以看出,在Normal world中的映射关系是一样的;在Secure world中,Supervisor mode、Abort mode、IRQ mode、FIQ mode、Undefined mode还有System mode从EL1提升到了EL3,这是因为:

这种重新映射对处理器的操作没有任何影响,AArch32状态内的操作完全按照处理器模式之间的交互来定义的,没有涉及到关联的特权级别或Exception levels。

3.2 Privilege levels in ARMv8-A

在Secure状态中,处理器模式(Supervisor、Abort、IRQ、FIQ、Undefined、Syste)在EL3使用AArch32时,是EL3模式;在其他情况下则是EL1模式。
为了避免这些复杂的描述,这些模式可以被描述为PL1模式,反映它们在ARMv7-A中的特权级别,与此相关的:

上一篇 下一篇

猜你喜欢

热点阅读