ARM技术william hill官网
直播中

张丽

7年用户 1503经验值
私信 关注
[问答]

如果Arch32要去切换到Arch64是如何运作的

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

回帖(2)

王飞云

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

更多回帖

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