1818static void __sysreg_save_vel2_state (struct kvm_vcpu * vcpu )
1919{
2020 /* These registers are common with EL1 */
21- __vcpu_sys_reg (vcpu , PAR_EL1 ) = read_sysreg (par_el1 );
22- __vcpu_sys_reg (vcpu , TPIDR_EL1 ) = read_sysreg (tpidr_el1 );
23-
24- __vcpu_sys_reg (vcpu , ESR_EL2 ) = read_sysreg_el1 (SYS_ESR );
25- __vcpu_sys_reg (vcpu , AFSR0_EL2 ) = read_sysreg_el1 (SYS_AFSR0 );
26- __vcpu_sys_reg (vcpu , AFSR1_EL2 ) = read_sysreg_el1 (SYS_AFSR1 );
27- __vcpu_sys_reg (vcpu , FAR_EL2 ) = read_sysreg_el1 (SYS_FAR );
28- __vcpu_sys_reg (vcpu , MAIR_EL2 ) = read_sysreg_el1 (SYS_MAIR );
29- __vcpu_sys_reg (vcpu , VBAR_EL2 ) = read_sysreg_el1 (SYS_VBAR );
30- __vcpu_sys_reg (vcpu , CONTEXTIDR_EL2 ) = read_sysreg_el1 (SYS_CONTEXTIDR );
31- __vcpu_sys_reg (vcpu , AMAIR_EL2 ) = read_sysreg_el1 (SYS_AMAIR );
21+ __vcpu_assign_sys_reg (vcpu , PAR_EL1 , read_sysreg (par_el1 ) );
22+ __vcpu_assign_sys_reg (vcpu , TPIDR_EL1 , read_sysreg (tpidr_el1 ) );
23+
24+ __vcpu_assign_sys_reg (vcpu , ESR_EL2 , read_sysreg_el1 (SYS_ESR ) );
25+ __vcpu_assign_sys_reg (vcpu , AFSR0_EL2 , read_sysreg_el1 (SYS_AFSR0 ) );
26+ __vcpu_assign_sys_reg (vcpu , AFSR1_EL2 , read_sysreg_el1 (SYS_AFSR1 ) );
27+ __vcpu_assign_sys_reg (vcpu , FAR_EL2 , read_sysreg_el1 (SYS_FAR ) );
28+ __vcpu_assign_sys_reg (vcpu , MAIR_EL2 , read_sysreg_el1 (SYS_MAIR ) );
29+ __vcpu_assign_sys_reg (vcpu , VBAR_EL2 , read_sysreg_el1 (SYS_VBAR ) );
30+ __vcpu_assign_sys_reg (vcpu , CONTEXTIDR_EL2 , read_sysreg_el1 (SYS_CONTEXTIDR ) );
31+ __vcpu_assign_sys_reg (vcpu , AMAIR_EL2 , read_sysreg_el1 (SYS_AMAIR ) );
3232
3333 /*
3434 * In VHE mode those registers are compatible between EL1 and EL2,
@@ -46,21 +46,21 @@ static void __sysreg_save_vel2_state(struct kvm_vcpu *vcpu)
4646 * are always trapped, ensuring that the in-memory
4747 * copy is always up-to-date. A small blessing...
4848 */
49- __vcpu_sys_reg (vcpu , SCTLR_EL2 ) = read_sysreg_el1 (SYS_SCTLR );
50- __vcpu_sys_reg (vcpu , TTBR0_EL2 ) = read_sysreg_el1 (SYS_TTBR0 );
51- __vcpu_sys_reg (vcpu , TTBR1_EL2 ) = read_sysreg_el1 (SYS_TTBR1 );
52- __vcpu_sys_reg (vcpu , TCR_EL2 ) = read_sysreg_el1 (SYS_TCR );
49+ __vcpu_assign_sys_reg (vcpu , SCTLR_EL2 , read_sysreg_el1 (SYS_SCTLR ) );
50+ __vcpu_assign_sys_reg (vcpu , TTBR0_EL2 , read_sysreg_el1 (SYS_TTBR0 ) );
51+ __vcpu_assign_sys_reg (vcpu , TTBR1_EL2 , read_sysreg_el1 (SYS_TTBR1 ) );
52+ __vcpu_assign_sys_reg (vcpu , TCR_EL2 , read_sysreg_el1 (SYS_TCR ) );
5353
5454 if (ctxt_has_tcrx (& vcpu -> arch .ctxt )) {
55- __vcpu_sys_reg (vcpu , TCR2_EL2 ) = read_sysreg_el1 (SYS_TCR2 );
55+ __vcpu_assign_sys_reg (vcpu , TCR2_EL2 , read_sysreg_el1 (SYS_TCR2 ) );
5656
5757 if (ctxt_has_s1pie (& vcpu -> arch .ctxt )) {
58- __vcpu_sys_reg (vcpu , PIRE0_EL2 ) = read_sysreg_el1 (SYS_PIRE0 );
59- __vcpu_sys_reg (vcpu , PIR_EL2 ) = read_sysreg_el1 (SYS_PIR );
58+ __vcpu_assign_sys_reg (vcpu , PIRE0_EL2 , read_sysreg_el1 (SYS_PIRE0 ) );
59+ __vcpu_assign_sys_reg (vcpu , PIR_EL2 , read_sysreg_el1 (SYS_PIR ) );
6060 }
6161
6262 if (ctxt_has_s1poe (& vcpu -> arch .ctxt ))
63- __vcpu_sys_reg (vcpu , POR_EL2 ) = read_sysreg_el1 (SYS_POR );
63+ __vcpu_assign_sys_reg (vcpu , POR_EL2 , read_sysreg_el1 (SYS_POR ) );
6464 }
6565
6666 /*
@@ -70,13 +70,13 @@ static void __sysreg_save_vel2_state(struct kvm_vcpu *vcpu)
7070 */
7171 val = read_sysreg_el1 (SYS_CNTKCTL );
7272 val &= CNTKCTL_VALID_BITS ;
73- __vcpu_sys_reg (vcpu , CNTHCTL_EL2 ) &= ~CNTKCTL_VALID_BITS ;
74- __vcpu_sys_reg (vcpu , CNTHCTL_EL2 ) |= val ;
73+ __vcpu_rmw_sys_reg (vcpu , CNTHCTL_EL2 , & = , ~CNTKCTL_VALID_BITS ) ;
74+ __vcpu_rmw_sys_reg (vcpu , CNTHCTL_EL2 , |=, val ) ;
7575 }
7676
77- __vcpu_sys_reg (vcpu , SP_EL2 ) = read_sysreg (sp_el1 );
78- __vcpu_sys_reg (vcpu , ELR_EL2 ) = read_sysreg_el1 (SYS_ELR );
79- __vcpu_sys_reg (vcpu , SPSR_EL2 ) = read_sysreg_el1 (SYS_SPSR );
77+ __vcpu_assign_sys_reg (vcpu , SP_EL2 , read_sysreg (sp_el1 ) );
78+ __vcpu_assign_sys_reg (vcpu , ELR_EL2 , read_sysreg_el1 (SYS_ELR ) );
79+ __vcpu_assign_sys_reg (vcpu , SPSR_EL2 , read_sysreg_el1 (SYS_SPSR ) );
8080}
8181
8282static void __sysreg_restore_vel2_state (struct kvm_vcpu * vcpu )
0 commit comments