美文网首页ARMv8-A
11. Register at AArch32

11. Register at AArch32

作者: Loyen | 来源:发表于2019-02-05 22:35 被阅读0次

ARMv8-A相关历史文章:

与ARMv7-A兼容,意味着在AArch32执行状态中的ARMv8-A处理器来说,必须与ARMv7-A处理器中通用寄存器之间存在一些对应关系。在ARMv7-A中,有用于软件使用的16个32-bit通用寄存器(R0-R15),其中R0-R15能用于通用的数据存储,R15是PC寄存器,在处理器执行指令时会修改它的值。软件可以访问CPSR的值,在异常发生时将CPSR拷贝到SPSR中,异常处理结束后再从SPSR恢复到CPSR中。

哪些寄存器可以被访问,以及在哪里被访问,取决于软件在执行时的处理器模式和寄存器本身,这个被称为备份(banking),它们使用物理上不同的存储,通常只能在特殊的处理器模式下才能使用。下图中的灰色部分寄存器表示的就是备份的(banked)。


ARMv7中使用备份(banking)来减少异常的延迟,然而,这也意味着寄存器的数量相当多,一次只能使用不到一半。
ARMv8-A使用31个64-bit的通用寄存器,在所有Exception Level都能访问。

11.1 System registers at AArch32

在ARMv7-A体系架构中,系统寄存器是通过CP15来访问的,CP15寄存器与AArch64中的系统寄存器也存在一个映射关系。
许多系统寄存器都是32-bit的,在AArch32和AArch64之间都是一一映射的,比如AArchh32中的Hyp System Control Register(HSCTLR)映射到SCTLR_EL2。
有些AArch64系统寄存器是64-bit的,这种情况下通常映射为两个AArch32 CP15寄存器,比如:

  • HCR映射到HCR_EL2[31:0]
  • HCR2映射到HCR_EL2[63:32]

11.2 PSTATE at AArch32

在ARMv8-A中,传统使用的CPSR中的字段以PSTATE的形式来呈现,可以独立访问。PSTATE包含了AArch32中所特有的状态:



下图中PSTATE的字段只能被AArch32来访问:



相关文章

网友评论

    本文标题:11. Register at AArch32

    本文链接:https://www.haomeiwen.com/subject/nzzvsqtx.html