什么是 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" c
,x
、s
、f
,分别代表位7:0、15:8、23:16和31:24。
不过,没有特定 order 对该序列的任何特定授权,因此我希望任何合理的汇编程序都不会关心。
我正在查看 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" c
,x
、s
、f
,分别代表位7:0、15:8、23:16和31:24。
不过,没有特定 order 对该序列的任何特定授权,因此我希望任何合理的汇编程序都不会关心。