@@ -2803,6 +2803,36 @@ static const struct sys_reg_desc sys_reg_descs[] = {
2803
2803
EL2_REG (SP_EL2 , NULL , reset_unknown , 0 ),
2804
2804
};
2805
2805
2806
+ static bool handle_at_s1e01 (struct kvm_vcpu * vcpu , struct sys_reg_params * p ,
2807
+ const struct sys_reg_desc * r )
2808
+ {
2809
+ u32 op = sys_insn (p -> Op0 , p -> Op1 , p -> CRn , p -> CRm , p -> Op2 );
2810
+
2811
+ __kvm_at_s1e01 (vcpu , op , p -> regval );
2812
+
2813
+ return true;
2814
+ }
2815
+
2816
+ static bool handle_at_s1e2 (struct kvm_vcpu * vcpu , struct sys_reg_params * p ,
2817
+ const struct sys_reg_desc * r )
2818
+ {
2819
+ u32 op = sys_insn (p -> Op0 , p -> Op1 , p -> CRn , p -> CRm , p -> Op2 );
2820
+
2821
+ __kvm_at_s1e2 (vcpu , op , p -> regval );
2822
+
2823
+ return true;
2824
+ }
2825
+
2826
+ static bool handle_at_s12 (struct kvm_vcpu * vcpu , struct sys_reg_params * p ,
2827
+ const struct sys_reg_desc * r )
2828
+ {
2829
+ u32 op = sys_insn (p -> Op0 , p -> Op1 , p -> CRn , p -> CRm , p -> Op2 );
2830
+
2831
+ __kvm_at_s12 (vcpu , op , p -> regval );
2832
+
2833
+ return true;
2834
+ }
2835
+
2806
2836
static bool kvm_supported_tlbi_s12_op (struct kvm_vcpu * vpcu , u32 instr )
2807
2837
{
2808
2838
struct kvm * kvm = vpcu -> kvm ;
@@ -3065,6 +3095,14 @@ static struct sys_reg_desc sys_insn_descs[] = {
3065
3095
{ SYS_DESC (SYS_DC_ISW ), access_dcsw },
3066
3096
{ SYS_DESC (SYS_DC_IGSW ), access_dcgsw },
3067
3097
{ SYS_DESC (SYS_DC_IGDSW ), access_dcgsw },
3098
+
3099
+ SYS_INSN (AT_S1E1R , handle_at_s1e01 ),
3100
+ SYS_INSN (AT_S1E1W , handle_at_s1e01 ),
3101
+ SYS_INSN (AT_S1E0R , handle_at_s1e01 ),
3102
+ SYS_INSN (AT_S1E0W , handle_at_s1e01 ),
3103
+ SYS_INSN (AT_S1E1RP , handle_at_s1e01 ),
3104
+ SYS_INSN (AT_S1E1WP , handle_at_s1e01 ),
3105
+
3068
3106
{ SYS_DESC (SYS_DC_CSW ), access_dcsw },
3069
3107
{ SYS_DESC (SYS_DC_CGSW ), access_dcgsw },
3070
3108
{ SYS_DESC (SYS_DC_CGDSW ), access_dcgsw },
@@ -3144,6 +3182,13 @@ static struct sys_reg_desc sys_insn_descs[] = {
3144
3182
SYS_INSN (TLBI_VALE1NXS , handle_tlbi_el1 ),
3145
3183
SYS_INSN (TLBI_VAALE1NXS , handle_tlbi_el1 ),
3146
3184
3185
+ SYS_INSN (AT_S1E2R , handle_at_s1e2 ),
3186
+ SYS_INSN (AT_S1E2W , handle_at_s1e2 ),
3187
+ SYS_INSN (AT_S12E1R , handle_at_s12 ),
3188
+ SYS_INSN (AT_S12E1W , handle_at_s12 ),
3189
+ SYS_INSN (AT_S12E0R , handle_at_s12 ),
3190
+ SYS_INSN (AT_S12E0W , handle_at_s12 ),
3191
+
3147
3192
SYS_INSN (TLBI_IPAS2E1IS , handle_ipas2e1is ),
3148
3193
SYS_INSN (TLBI_RIPAS2E1IS , handle_ripas2e1is ),
3149
3194
SYS_INSN (TLBI_IPAS2LE1IS , handle_ipas2e1is ),
0 commit comments