Skip to the content.

ARMv7 base states

1. Mode

ARM 架构的 A 和 R 配置文件提供了一组支持正常软件执行和处理异常的模式。 当前模式决定:

2. State

在 ARM 架构中,状态描述了以下不同的概念:

2.1 Instruction set state

ARMv7 提供四种指令集状态。 指令集状态确定正在执行的指令集,并且是ARM状态、Thumb状态、Jazelle状态或ThumbEE状态之一。 指令集状态寄存器 ISETSTATE 提供了有关这些状态的更多信息。

2.2 Execution state

执行状态由指令集状态和一些修改指令流解码方式的控制位组成。 有关详细信息,请参阅执行状态寄存器和程序状态寄存器 (PSRs)。

2.3 Security state

在 ARM 架构中,安全状态的数量取决于实现是否包含安全扩展:

在本手册中:

2.4 Debug state

调试状态是指处理器因调试目的而停止,因为当处理器配置为停止调试模式时发生了调试事件。 请参阅侵入式调试。

当处理器不处于调试状态时,它被描述为处于非调试状态。

除非另有明确说明,本手册的 A 部分和 B 部分描述了非调试状态下的处理器行为和指令执行。 调试状态描述了调试状态的差异。

3. Privilege level

权限级别是软件执行的一个属性,在特定的安全状态下,由处理器模式决定,如下:

3.1 Secure state

在安全状态下有两个权限级别:

PL0

在用户模式下执行的软件在 PL0 处执行。

PL1

在用户模式以外的任何模式下执行的软件都在 PL1 上执行。

3.2 Non-secure state

在非安全状态下,有两个或三个权限级别:

PL0

在用户模式下执行的软件在 PL0 处执行。

PL1

在用户或 Hyp 模式以外的任何模式下执行的软件都在 PL1 上执行。

PL2

在包括虚拟化扩展的实现中,以 Hyp 模式执行的软件在 PL2 上执行。

PL0 上的软件执行有时被描述为非特权执行。 与特定特权级别PLn相关联的模式可以被描述为PLn模式。

Note

4. Exceptions

异常是改变程序中正常控制流的条件。 流程的改变将执行切换到异常处理程序,并且将异常发生时的系统状态呈现给异常处理程序。 呈现给处理程序的状态的一个关键组成部分是返回地址,它指示指令流中发生异常的点。

ARM 体系结构提供了许多不同的异常,如异常处理中所述。 该架构定义了每个异常采取的模式。 安全扩展和虚拟化扩展添加了可以确定异常发生模式的配置设置。

4.1 Terminology for describing exceptions

在本手册中,许多术语在描述异常时具有特定含义:

Note

对于同步异常,异常是从生成异常的模式中获取的。 但是,对于异步异常,处理器模式可能会在异常生成之后和发生之前发生变化。

异步异常分为:

Precise asynchronous exceptions

提供给异常处理程序的状态保证与从中获取异常的执行流中可识别的指令边界处的状态一致。

Imprecise asynchronous exceptions

不保证提供给异常处理程序的状态与执行流中发生异常的任何点一致。

4.2 Exceptions, privilege, and security state

ARMv7 对于异常处理有以下安全状态和权限要求:

Note

在 ARMv7 中,每个安全状态中的特权级别都是独立定义的。 因此,关于特权级别的规则与从非安全模式到安全模式的例外无关。

这些要求的一个影响是,必须对非安全 Hyp 模式采取的例外是: