ARMv8-A架构定义了两个执行状态AArch64和AArch32。 AArch64状态对于ARMv8-A是唯一的并且使用64位通用寄存器,而AArch32状态则使用32位通用寄存器向后兼容ARMv7-A。 GNU和Linux文档(Redhat和Fedora发行版除外)有时将AArch64称为ARM64。
AArch32执行状态与包含虚拟化扩展,安全扩展和大型物理地址扩展的ARMv7-A实现兼容。 ARMv8-A架构允许使用AArch32或AArch64来执行不同的软件层(比如应用程序,操作系统内核或Hypervisor层)。 ARMv8-A体系结构定义了AArch32和AArch64如何交互。
下图显示了在AArch64中异常级别的组织。

下图显示了在AArch32中异常级别的组织。

在AArch32状态下,可信的操作系统软件在安全EL1中执行,在AArch64状态下,它主要在安全EL3中执行。
原文
https://developer.arm.com/products/architecture/a-profile/docs/100878/latest/execution-states
网友评论