什么是 spsr_cxfs?

What is spsr_cxfs?

我正在查看 U-Boot 的代码,它允许使用管理程序模式并将初始权限提升到 HYP 模式。然而,当我试图理解代码时,一个神秘的寄存器名称困扰着我。

来自arch/arm/cpu/armv7/nonsec_virt.S

1:
        mov     lr, ip
        mov     ip, #(F_BIT | I_BIT | A_BIT)    @ Set A, I and F
        tst     lr, #1                          @ Check for Thumb PC
        orrne   ip, ip, #T_BIT                  @ Set T if Thumb
        orr     ip, ip, r6                      @ Slot target mode in
        msr     spsr_cxfs, ip                   @ Set full SPSR
        movs    pc, lr                          @ ERET to non-secure

什么是spsr_cxfs?我尝试 Google 它,但结果是警告我可能正在寻找关于 SPSR_CXSF 的结果,以及一堆类似的汇编代码编码。

寄存器为SPSR;其余仅表示要更新的部分

总结Architecture Reference Manual中的定义,这里msr的操作数是SPSR_<fields>,其中<fields> "Is a sequence of one or more of" cxsf,分别代表位7:0、15:8、23:16和31:24。

不过,没有特定 order 对该序列的任何特定授权,因此我希望任何合理的汇编程序都不会关心。