2016-07-19 20 views
1

Ich schaue auf den Code von U-Boot, der die Verwendung des Hypervisor-Modus gewährt und die Anfangsberechtigung auf den HYP-Modus erhöht. Ein mysteriöser Registername stört mich jedoch, während ich versuche, den Code zu verstehen.Was ist spsr_cxfs?

Von 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 

Was ist spsr_cxfs? Ich habe versucht, Google es, aber die Ergebnisse waren die Warnung, dass ich nach Ergebnissen in Bezug auf SPSR_CX SF, und eine Reihe von Assembly-Codes suchen, die ähnlich codiert sind.

Antwort

3

Das Register ist SPSR; der Rest bedeutet nur, welche Teile davon zu aktualisieren sind.

die Definition in der Architektur-Referenzhandbuch Um es zusammenzufassen, hier der Operand msr ist SPSR_<fields>, wo <fields> "ist eine Folge von einem oder mehreren der" c, x, s, f, die Bits 7 darstellen: 15 0, : 8, 23:16 bzw. 31:24.

Was es jedoch nicht gibt, ist ein bestimmtes Mandat einer bestimmten Bestellung zu dieser Sequenz, so würde ich erwarten, dass jeder vernünftige Assembler auch nicht kümmern.