【问题标题】:No LR and SPSR for EL0 in Aarch64Aarch64中EL0没有LR和SPSR
【发布时间】:2015-05-23 06:56:34
【问题描述】:
在 AArch64 中,有 4 个异常级别,即 EL0-3。 ARM网站提到有4个堆栈指针(SP_EL0/1/2/3)但只有3个异常链接寄存器(ELR_EL1/2/3)和只有3个保存的程序状态寄存器(SPSR_EL1/2/3)。
为什么不需要 ELR_EL0 和 SPSR_EL0?
附:对不起,如果这是一个愚蠢的问题。我是 ARM 架构的新手。
【问题讨论】:
标签:
exception-handling
arm
cpu-registers
arm64
【解决方案1】:
按照设计,异常不能以 EL0 为目标,因此如果它不能接受异常,那么机器能够从一个异常返回就没有用处。
为了稍微扩展推理(忽略可选和更特殊用途的更高异常级别),基本设计是 EL1 是特权系统代码运行的地方,EL0 是非特权用户代码运行的地方。因此,EL0 的功能必然受到更多限制,并且对于处理 架构 异常(即需要详细了解系统知识的低级事物)不是很有用。只有特权软件(通常是操作系统内核)才能访问必要的完整硬件和软件状态,以决定处理基本硬件异常是否意味着例如从交换中悄悄地分页某些东西,而不是向违规任务传递“软件异常”类型的信号,以告诉它做错事。