ARM技术论坛
直播中

贾大林

8年用户 1403经验值
私信 关注
[问答]

在armv8架构中Arch32切换到Arch64是如何运作的

各位大神,armv8架构中,如果Arch32要去切换到Arch64,是如何运作的?状态会清空吗?

回帖(2)

石玉兰

2022-6-6 16:14:10
      当exception执行时,处理器的当前状态PSTATE存储在寄存器SPSR_Eln(n=1,2,3)中

  在V8中,interrupt跟exception是差不多的一个东西

  exception的变换有三个指令,SVC,HVC,和SMC

  当状态切换的时候需要升高层级,然后再返回

  所以首先需要指令来中断当前状态

  然后升高层级,再返回到低层级执行另外一个指令集的app

  异常发生时:SPSR_Eln 更新(其中n是执行异常的异常级别),以存储异常结束时正确返回所需的PSTATE信息。 PSTATE被更新以反映新的处理器状态。

  通过执行ERET指令,处理器通过软件被告知什么时候从异常返回。 这将从SPSR_ELn恢复异常之前的PSTATE,并通过从ELR_Eln中恢复PC将程序执行返回到原始位置。

  ELR_ELn寄存器用于存储异常的返回地址。 该寄存器中的值(实际上是几个寄存器)在进入异常时自动写入,并写入PC以执行用于从异常返回的ERET指令。
举报

王芳

2022-6-6 16:14:45
EL0~3各自工作在哪个指令集是寄存器定义好的,其中最高exception level的指令集是在reset时候指定的,aarch32到aarch64只发生在从低的EL到高的EL的跃迁过程中,属于exception的处理范围,所以状态肯定是不会清空的,会保存下来。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分