@@ -1934,8 +1934,11 @@ static uint64_t isr_read(CPUARMState *env, const ARMCPRegInfo *ri)
1934
1934
CPUState * cs = env_cpu (env );
1935
1935
uint64_t hcr_el2 = arm_hcr_el2_eff (env );
1936
1936
uint64_t ret = 0 ;
1937
+ bool allow_virt = (arm_current_el (env ) == 1 &&
1938
+ (!arm_is_secure_below_el3 (env ) ||
1939
+ (env -> cp15 .scr_el3 & SCR_EEL2 )));
1937
1940
1938
- if (hcr_el2 & HCR_IMO ) {
1941
+ if (allow_virt && ( hcr_el2 & HCR_IMO ) ) {
1939
1942
if (cs -> interrupt_request & CPU_INTERRUPT_VIRQ ) {
1940
1943
ret |= CPSR_I ;
1941
1944
}
@@ -1945,7 +1948,7 @@ static uint64_t isr_read(CPUARMState *env, const ARMCPRegInfo *ri)
1945
1948
}
1946
1949
}
1947
1950
1948
- if (hcr_el2 & HCR_FMO ) {
1951
+ if (allow_virt && ( hcr_el2 & HCR_FMO ) ) {
1949
1952
if (cs -> interrupt_request & CPU_INTERRUPT_VFIQ ) {
1950
1953
ret |= CPSR_F ;
1951
1954
}
@@ -5975,6 +5978,26 @@ static const ARMCPRegInfo predinv_reginfo[] = {
5975
5978
REGINFO_SENTINEL
5976
5979
};
5977
5980
5981
+ static CPAccessResult access_aa64_tid3 (CPUARMState * env , const ARMCPRegInfo * ri ,
5982
+ bool isread )
5983
+ {
5984
+ if ((arm_current_el (env ) < 2 ) && (arm_hcr_el2_eff (env ) & HCR_TID3 )) {
5985
+ return CP_ACCESS_TRAP_EL2 ;
5986
+ }
5987
+
5988
+ return CP_ACCESS_OK ;
5989
+ }
5990
+
5991
+ static CPAccessResult access_aa32_tid3 (CPUARMState * env , const ARMCPRegInfo * ri ,
5992
+ bool isread )
5993
+ {
5994
+ if (arm_feature (env , ARM_FEATURE_V8 )) {
5995
+ return access_aa64_tid3 (env , ri , isread );
5996
+ }
5997
+
5998
+ return CP_ACCESS_OK ;
5999
+ }
6000
+
5978
6001
void register_cp_regs_for_features (ARMCPU * cpu )
5979
6002
{
5980
6003
/* Register all the coprocessor registers based on feature bits */
@@ -5998,70 +6021,86 @@ void register_cp_regs_for_features(ARMCPU *cpu)
5998
6021
{ .name = "ID_PFR0" , .state = ARM_CP_STATE_BOTH ,
5999
6022
.opc0 = 3 , .opc1 = 0 , .crn = 0 , .crm = 1 , .opc2 = 0 ,
6000
6023
.access = PL1_R , .type = ARM_CP_CONST ,
6024
+ .accessfn = access_aa32_tid3 ,
6001
6025
.resetvalue = cpu -> id_pfr0 },
6002
6026
/* ID_PFR1 is not a plain ARM_CP_CONST because we don't know
6003
6027
* the value of the GIC field until after we define these regs.
6004
6028
*/
6005
6029
{ .name = "ID_PFR1" , .state = ARM_CP_STATE_BOTH ,
6006
6030
.opc0 = 3 , .opc1 = 0 , .crn = 0 , .crm = 1 , .opc2 = 1 ,
6007
6031
.access = PL1_R , .type = ARM_CP_NO_RAW ,
6032
+ .accessfn = access_aa32_tid3 ,
6008
6033
.readfn = id_pfr1_read ,
6009
6034
.writefn = arm_cp_write_ignore },
6010
6035
{ .name = "ID_DFR0" , .state = ARM_CP_STATE_BOTH ,
6011
6036
.opc0 = 3 , .opc1 = 0 , .crn = 0 , .crm = 1 , .opc2 = 2 ,
6012
6037
.access = PL1_R , .type = ARM_CP_CONST ,
6038
+ .accessfn = access_aa32_tid3 ,
6013
6039
.resetvalue = cpu -> id_dfr0 },
6014
6040
{ .name = "ID_AFR0" , .state = ARM_CP_STATE_BOTH ,
6015
6041
.opc0 = 3 , .opc1 = 0 , .crn = 0 , .crm = 1 , .opc2 = 3 ,
6016
6042
.access = PL1_R , .type = ARM_CP_CONST ,
6043
+ .accessfn = access_aa32_tid3 ,
6017
6044
.resetvalue = cpu -> id_afr0 },
6018
6045
{ .name = "ID_MMFR0" , .state = ARM_CP_STATE_BOTH ,
6019
6046
.opc0 = 3 , .opc1 = 0 , .crn = 0 , .crm = 1 , .opc2 = 4 ,
6020
6047
.access = PL1_R , .type = ARM_CP_CONST ,
6048
+ .accessfn = access_aa32_tid3 ,
6021
6049
.resetvalue = cpu -> id_mmfr0 },
6022
6050
{ .name = "ID_MMFR1" , .state = ARM_CP_STATE_BOTH ,
6023
6051
.opc0 = 3 , .opc1 = 0 , .crn = 0 , .crm = 1 , .opc2 = 5 ,
6024
6052
.access = PL1_R , .type = ARM_CP_CONST ,
6053
+ .accessfn = access_aa32_tid3 ,
6025
6054
.resetvalue = cpu -> id_mmfr1 },
6026
6055
{ .name = "ID_MMFR2" , .state = ARM_CP_STATE_BOTH ,
6027
6056
.opc0 = 3 , .opc1 = 0 , .crn = 0 , .crm = 1 , .opc2 = 6 ,
6028
6057
.access = PL1_R , .type = ARM_CP_CONST ,
6058
+ .accessfn = access_aa32_tid3 ,
6029
6059
.resetvalue = cpu -> id_mmfr2 },
6030
6060
{ .name = "ID_MMFR3" , .state = ARM_CP_STATE_BOTH ,
6031
6061
.opc0 = 3 , .opc1 = 0 , .crn = 0 , .crm = 1 , .opc2 = 7 ,
6032
6062
.access = PL1_R , .type = ARM_CP_CONST ,
6063
+ .accessfn = access_aa32_tid3 ,
6033
6064
.resetvalue = cpu -> id_mmfr3 },
6034
6065
{ .name = "ID_ISAR0" , .state = ARM_CP_STATE_BOTH ,
6035
6066
.opc0 = 3 , .opc1 = 0 , .crn = 0 , .crm = 2 , .opc2 = 0 ,
6036
6067
.access = PL1_R , .type = ARM_CP_CONST ,
6068
+ .accessfn = access_aa32_tid3 ,
6037
6069
.resetvalue = cpu -> isar .id_isar0 },
6038
6070
{ .name = "ID_ISAR1" , .state = ARM_CP_STATE_BOTH ,
6039
6071
.opc0 = 3 , .opc1 = 0 , .crn = 0 , .crm = 2 , .opc2 = 1 ,
6040
6072
.access = PL1_R , .type = ARM_CP_CONST ,
6073
+ .accessfn = access_aa32_tid3 ,
6041
6074
.resetvalue = cpu -> isar .id_isar1 },
6042
6075
{ .name = "ID_ISAR2" , .state = ARM_CP_STATE_BOTH ,
6043
6076
.opc0 = 3 , .opc1 = 0 , .crn = 0 , .crm = 2 , .opc2 = 2 ,
6044
6077
.access = PL1_R , .type = ARM_CP_CONST ,
6078
+ .accessfn = access_aa32_tid3 ,
6045
6079
.resetvalue = cpu -> isar .id_isar2 },
6046
6080
{ .name = "ID_ISAR3" , .state = ARM_CP_STATE_BOTH ,
6047
6081
.opc0 = 3 , .opc1 = 0 , .crn = 0 , .crm = 2 , .opc2 = 3 ,
6048
6082
.access = PL1_R , .type = ARM_CP_CONST ,
6083
+ .accessfn = access_aa32_tid3 ,
6049
6084
.resetvalue = cpu -> isar .id_isar3 },
6050
6085
{ .name = "ID_ISAR4" , .state = ARM_CP_STATE_BOTH ,
6051
6086
.opc0 = 3 , .opc1 = 0 , .crn = 0 , .crm = 2 , .opc2 = 4 ,
6052
6087
.access = PL1_R , .type = ARM_CP_CONST ,
6088
+ .accessfn = access_aa32_tid3 ,
6053
6089
.resetvalue = cpu -> isar .id_isar4 },
6054
6090
{ .name = "ID_ISAR5" , .state = ARM_CP_STATE_BOTH ,
6055
6091
.opc0 = 3 , .opc1 = 0 , .crn = 0 , .crm = 2 , .opc2 = 5 ,
6056
6092
.access = PL1_R , .type = ARM_CP_CONST ,
6093
+ .accessfn = access_aa32_tid3 ,
6057
6094
.resetvalue = cpu -> isar .id_isar5 },
6058
6095
{ .name = "ID_MMFR4" , .state = ARM_CP_STATE_BOTH ,
6059
6096
.opc0 = 3 , .opc1 = 0 , .crn = 0 , .crm = 2 , .opc2 = 6 ,
6060
6097
.access = PL1_R , .type = ARM_CP_CONST ,
6098
+ .accessfn = access_aa32_tid3 ,
6061
6099
.resetvalue = cpu -> id_mmfr4 },
6062
6100
{ .name = "ID_ISAR6" , .state = ARM_CP_STATE_BOTH ,
6063
6101
.opc0 = 3 , .opc1 = 0 , .crn = 0 , .crm = 2 , .opc2 = 7 ,
6064
6102
.access = PL1_R , .type = ARM_CP_CONST ,
6103
+ .accessfn = access_aa32_tid3 ,
6065
6104
.resetvalue = cpu -> isar .id_isar6 },
6066
6105
REGINFO_SENTINEL
6067
6106
};
@@ -6182,164 +6221,204 @@ void register_cp_regs_for_features(ARMCPU *cpu)
6182
6221
{ .name = "ID_AA64PFR0_EL1" , .state = ARM_CP_STATE_AA64 ,
6183
6222
.opc0 = 3 , .opc1 = 0 , .crn = 0 , .crm = 4 , .opc2 = 0 ,
6184
6223
.access = PL1_R , .type = ARM_CP_NO_RAW ,
6224
+ .accessfn = access_aa64_tid3 ,
6185
6225
.readfn = id_aa64pfr0_read ,
6186
6226
.writefn = arm_cp_write_ignore },
6187
6227
{ .name = "ID_AA64PFR1_EL1" , .state = ARM_CP_STATE_AA64 ,
6188
6228
.opc0 = 3 , .opc1 = 0 , .crn = 0 , .crm = 4 , .opc2 = 1 ,
6189
6229
.access = PL1_R , .type = ARM_CP_CONST ,
6230
+ .accessfn = access_aa64_tid3 ,
6190
6231
.resetvalue = cpu -> isar .id_aa64pfr1 },
6191
6232
{ .name = "ID_AA64PFR2_EL1_RESERVED" , .state = ARM_CP_STATE_AA64 ,
6192
6233
.opc0 = 3 , .opc1 = 0 , .crn = 0 , .crm = 4 , .opc2 = 2 ,
6193
6234
.access = PL1_R , .type = ARM_CP_CONST ,
6235
+ .accessfn = access_aa64_tid3 ,
6194
6236
.resetvalue = 0 },
6195
6237
{ .name = "ID_AA64PFR3_EL1_RESERVED" , .state = ARM_CP_STATE_AA64 ,
6196
6238
.opc0 = 3 , .opc1 = 0 , .crn = 0 , .crm = 4 , .opc2 = 3 ,
6197
6239
.access = PL1_R , .type = ARM_CP_CONST ,
6240
+ .accessfn = access_aa64_tid3 ,
6198
6241
.resetvalue = 0 },
6199
6242
{ .name = "ID_AA64ZFR0_EL1" , .state = ARM_CP_STATE_AA64 ,
6200
6243
.opc0 = 3 , .opc1 = 0 , .crn = 0 , .crm = 4 , .opc2 = 4 ,
6201
6244
.access = PL1_R , .type = ARM_CP_CONST ,
6245
+ .accessfn = access_aa64_tid3 ,
6202
6246
/* At present, only SVEver == 0 is defined anyway. */
6203
6247
.resetvalue = 0 },
6204
6248
{ .name = "ID_AA64PFR5_EL1_RESERVED" , .state = ARM_CP_STATE_AA64 ,
6205
6249
.opc0 = 3 , .opc1 = 0 , .crn = 0 , .crm = 4 , .opc2 = 5 ,
6206
6250
.access = PL1_R , .type = ARM_CP_CONST ,
6251
+ .accessfn = access_aa64_tid3 ,
6207
6252
.resetvalue = 0 },
6208
6253
{ .name = "ID_AA64PFR6_EL1_RESERVED" , .state = ARM_CP_STATE_AA64 ,
6209
6254
.opc0 = 3 , .opc1 = 0 , .crn = 0 , .crm = 4 , .opc2 = 6 ,
6210
6255
.access = PL1_R , .type = ARM_CP_CONST ,
6256
+ .accessfn = access_aa64_tid3 ,
6211
6257
.resetvalue = 0 },
6212
6258
{ .name = "ID_AA64PFR7_EL1_RESERVED" , .state = ARM_CP_STATE_AA64 ,
6213
6259
.opc0 = 3 , .opc1 = 0 , .crn = 0 , .crm = 4 , .opc2 = 7 ,
6214
6260
.access = PL1_R , .type = ARM_CP_CONST ,
6261
+ .accessfn = access_aa64_tid3 ,
6215
6262
.resetvalue = 0 },
6216
6263
{ .name = "ID_AA64DFR0_EL1" , .state = ARM_CP_STATE_AA64 ,
6217
6264
.opc0 = 3 , .opc1 = 0 , .crn = 0 , .crm = 5 , .opc2 = 0 ,
6218
6265
.access = PL1_R , .type = ARM_CP_CONST ,
6266
+ .accessfn = access_aa64_tid3 ,
6219
6267
.resetvalue = cpu -> id_aa64dfr0 },
6220
6268
{ .name = "ID_AA64DFR1_EL1" , .state = ARM_CP_STATE_AA64 ,
6221
6269
.opc0 = 3 , .opc1 = 0 , .crn = 0 , .crm = 5 , .opc2 = 1 ,
6222
6270
.access = PL1_R , .type = ARM_CP_CONST ,
6271
+ .accessfn = access_aa64_tid3 ,
6223
6272
.resetvalue = cpu -> id_aa64dfr1 },
6224
6273
{ .name = "ID_AA64DFR2_EL1_RESERVED" , .state = ARM_CP_STATE_AA64 ,
6225
6274
.opc0 = 3 , .opc1 = 0 , .crn = 0 , .crm = 5 , .opc2 = 2 ,
6226
6275
.access = PL1_R , .type = ARM_CP_CONST ,
6276
+ .accessfn = access_aa64_tid3 ,
6227
6277
.resetvalue = 0 },
6228
6278
{ .name = "ID_AA64DFR3_EL1_RESERVED" , .state = ARM_CP_STATE_AA64 ,
6229
6279
.opc0 = 3 , .opc1 = 0 , .crn = 0 , .crm = 5 , .opc2 = 3 ,
6230
6280
.access = PL1_R , .type = ARM_CP_CONST ,
6281
+ .accessfn = access_aa64_tid3 ,
6231
6282
.resetvalue = 0 },
6232
6283
{ .name = "ID_AA64AFR0_EL1" , .state = ARM_CP_STATE_AA64 ,
6233
6284
.opc0 = 3 , .opc1 = 0 , .crn = 0 , .crm = 5 , .opc2 = 4 ,
6234
6285
.access = PL1_R , .type = ARM_CP_CONST ,
6286
+ .accessfn = access_aa64_tid3 ,
6235
6287
.resetvalue = cpu -> id_aa64afr0 },
6236
6288
{ .name = "ID_AA64AFR1_EL1" , .state = ARM_CP_STATE_AA64 ,
6237
6289
.opc0 = 3 , .opc1 = 0 , .crn = 0 , .crm = 5 , .opc2 = 5 ,
6238
6290
.access = PL1_R , .type = ARM_CP_CONST ,
6291
+ .accessfn = access_aa64_tid3 ,
6239
6292
.resetvalue = cpu -> id_aa64afr1 },
6240
6293
{ .name = "ID_AA64AFR2_EL1_RESERVED" , .state = ARM_CP_STATE_AA64 ,
6241
6294
.opc0 = 3 , .opc1 = 0 , .crn = 0 , .crm = 5 , .opc2 = 6 ,
6242
6295
.access = PL1_R , .type = ARM_CP_CONST ,
6296
+ .accessfn = access_aa64_tid3 ,
6243
6297
.resetvalue = 0 },
6244
6298
{ .name = "ID_AA64AFR3_EL1_RESERVED" , .state = ARM_CP_STATE_AA64 ,
6245
6299
.opc0 = 3 , .opc1 = 0 , .crn = 0 , .crm = 5 , .opc2 = 7 ,
6246
6300
.access = PL1_R , .type = ARM_CP_CONST ,
6301
+ .accessfn = access_aa64_tid3 ,
6247
6302
.resetvalue = 0 },
6248
6303
{ .name = "ID_AA64ISAR0_EL1" , .state = ARM_CP_STATE_AA64 ,
6249
6304
.opc0 = 3 , .opc1 = 0 , .crn = 0 , .crm = 6 , .opc2 = 0 ,
6250
6305
.access = PL1_R , .type = ARM_CP_CONST ,
6306
+ .accessfn = access_aa64_tid3 ,
6251
6307
.resetvalue = cpu -> isar .id_aa64isar0 },
6252
6308
{ .name = "ID_AA64ISAR1_EL1" , .state = ARM_CP_STATE_AA64 ,
6253
6309
.opc0 = 3 , .opc1 = 0 , .crn = 0 , .crm = 6 , .opc2 = 1 ,
6254
6310
.access = PL1_R , .type = ARM_CP_CONST ,
6311
+ .accessfn = access_aa64_tid3 ,
6255
6312
.resetvalue = cpu -> isar .id_aa64isar1 },
6256
6313
{ .name = "ID_AA64ISAR2_EL1_RESERVED" , .state = ARM_CP_STATE_AA64 ,
6257
6314
.opc0 = 3 , .opc1 = 0 , .crn = 0 , .crm = 6 , .opc2 = 2 ,
6258
6315
.access = PL1_R , .type = ARM_CP_CONST ,
6316
+ .accessfn = access_aa64_tid3 ,
6259
6317
.resetvalue = 0 },
6260
6318
{ .name = "ID_AA64ISAR3_EL1_RESERVED" , .state = ARM_CP_STATE_AA64 ,
6261
6319
.opc0 = 3 , .opc1 = 0 , .crn = 0 , .crm = 6 , .opc2 = 3 ,
6262
6320
.access = PL1_R , .type = ARM_CP_CONST ,
6321
+ .accessfn = access_aa64_tid3 ,
6263
6322
.resetvalue = 0 },
6264
6323
{ .name = "ID_AA64ISAR4_EL1_RESERVED" , .state = ARM_CP_STATE_AA64 ,
6265
6324
.opc0 = 3 , .opc1 = 0 , .crn = 0 , .crm = 6 , .opc2 = 4 ,
6266
6325
.access = PL1_R , .type = ARM_CP_CONST ,
6326
+ .accessfn = access_aa64_tid3 ,
6267
6327
.resetvalue = 0 },
6268
6328
{ .name = "ID_AA64ISAR5_EL1_RESERVED" , .state = ARM_CP_STATE_AA64 ,
6269
6329
.opc0 = 3 , .opc1 = 0 , .crn = 0 , .crm = 6 , .opc2 = 5 ,
6270
6330
.access = PL1_R , .type = ARM_CP_CONST ,
6331
+ .accessfn = access_aa64_tid3 ,
6271
6332
.resetvalue = 0 },
6272
6333
{ .name = "ID_AA64ISAR6_EL1_RESERVED" , .state = ARM_CP_STATE_AA64 ,
6273
6334
.opc0 = 3 , .opc1 = 0 , .crn = 0 , .crm = 6 , .opc2 = 6 ,
6274
6335
.access = PL1_R , .type = ARM_CP_CONST ,
6336
+ .accessfn = access_aa64_tid3 ,
6275
6337
.resetvalue = 0 },
6276
6338
{ .name = "ID_AA64ISAR7_EL1_RESERVED" , .state = ARM_CP_STATE_AA64 ,
6277
6339
.opc0 = 3 , .opc1 = 0 , .crn = 0 , .crm = 6 , .opc2 = 7 ,
6278
6340
.access = PL1_R , .type = ARM_CP_CONST ,
6341
+ .accessfn = access_aa64_tid3 ,
6279
6342
.resetvalue = 0 },
6280
6343
{ .name = "ID_AA64MMFR0_EL1" , .state = ARM_CP_STATE_AA64 ,
6281
6344
.opc0 = 3 , .opc1 = 0 , .crn = 0 , .crm = 7 , .opc2 = 0 ,
6282
6345
.access = PL1_R , .type = ARM_CP_CONST ,
6346
+ .accessfn = access_aa64_tid3 ,
6283
6347
.resetvalue = cpu -> isar .id_aa64mmfr0 },
6284
6348
{ .name = "ID_AA64MMFR1_EL1" , .state = ARM_CP_STATE_AA64 ,
6285
6349
.opc0 = 3 , .opc1 = 0 , .crn = 0 , .crm = 7 , .opc2 = 1 ,
6286
6350
.access = PL1_R , .type = ARM_CP_CONST ,
6351
+ .accessfn = access_aa64_tid3 ,
6287
6352
.resetvalue = cpu -> isar .id_aa64mmfr1 },
6288
6353
{ .name = "ID_AA64MMFR2_EL1_RESERVED" , .state = ARM_CP_STATE_AA64 ,
6289
6354
.opc0 = 3 , .opc1 = 0 , .crn = 0 , .crm = 7 , .opc2 = 2 ,
6290
6355
.access = PL1_R , .type = ARM_CP_CONST ,
6356
+ .accessfn = access_aa64_tid3 ,
6291
6357
.resetvalue = 0 },
6292
6358
{ .name = "ID_AA64MMFR3_EL1_RESERVED" , .state = ARM_CP_STATE_AA64 ,
6293
6359
.opc0 = 3 , .opc1 = 0 , .crn = 0 , .crm = 7 , .opc2 = 3 ,
6294
6360
.access = PL1_R , .type = ARM_CP_CONST ,
6361
+ .accessfn = access_aa64_tid3 ,
6295
6362
.resetvalue = 0 },
6296
6363
{ .name = "ID_AA64MMFR4_EL1_RESERVED" , .state = ARM_CP_STATE_AA64 ,
6297
6364
.opc0 = 3 , .opc1 = 0 , .crn = 0 , .crm = 7 , .opc2 = 4 ,
6298
6365
.access = PL1_R , .type = ARM_CP_CONST ,
6366
+ .accessfn = access_aa64_tid3 ,
6299
6367
.resetvalue = 0 },
6300
6368
{ .name = "ID_AA64MMFR5_EL1_RESERVED" , .state = ARM_CP_STATE_AA64 ,
6301
6369
.opc0 = 3 , .opc1 = 0 , .crn = 0 , .crm = 7 , .opc2 = 5 ,
6302
6370
.access = PL1_R , .type = ARM_CP_CONST ,
6371
+ .accessfn = access_aa64_tid3 ,
6303
6372
.resetvalue = 0 },
6304
6373
{ .name = "ID_AA64MMFR6_EL1_RESERVED" , .state = ARM_CP_STATE_AA64 ,
6305
6374
.opc0 = 3 , .opc1 = 0 , .crn = 0 , .crm = 7 , .opc2 = 6 ,
6306
6375
.access = PL1_R , .type = ARM_CP_CONST ,
6376
+ .accessfn = access_aa64_tid3 ,
6307
6377
.resetvalue = 0 },
6308
6378
{ .name = "ID_AA64MMFR7_EL1_RESERVED" , .state = ARM_CP_STATE_AA64 ,
6309
6379
.opc0 = 3 , .opc1 = 0 , .crn = 0 , .crm = 7 , .opc2 = 7 ,
6310
6380
.access = PL1_R , .type = ARM_CP_CONST ,
6381
+ .accessfn = access_aa64_tid3 ,
6311
6382
.resetvalue = 0 },
6312
6383
{ .name = "MVFR0_EL1" , .state = ARM_CP_STATE_AA64 ,
6313
6384
.opc0 = 3 , .opc1 = 0 , .crn = 0 , .crm = 3 , .opc2 = 0 ,
6314
6385
.access = PL1_R , .type = ARM_CP_CONST ,
6386
+ .accessfn = access_aa64_tid3 ,
6315
6387
.resetvalue = cpu -> isar .mvfr0 },
6316
6388
{ .name = "MVFR1_EL1" , .state = ARM_CP_STATE_AA64 ,
6317
6389
.opc0 = 3 , .opc1 = 0 , .crn = 0 , .crm = 3 , .opc2 = 1 ,
6318
6390
.access = PL1_R , .type = ARM_CP_CONST ,
6391
+ .accessfn = access_aa64_tid3 ,
6319
6392
.resetvalue = cpu -> isar .mvfr1 },
6320
6393
{ .name = "MVFR2_EL1" , .state = ARM_CP_STATE_AA64 ,
6321
6394
.opc0 = 3 , .opc1 = 0 , .crn = 0 , .crm = 3 , .opc2 = 2 ,
6322
6395
.access = PL1_R , .type = ARM_CP_CONST ,
6396
+ .accessfn = access_aa64_tid3 ,
6323
6397
.resetvalue = cpu -> isar .mvfr2 },
6324
6398
{ .name = "MVFR3_EL1_RESERVED" , .state = ARM_CP_STATE_AA64 ,
6325
6399
.opc0 = 3 , .opc1 = 0 , .crn = 0 , .crm = 3 , .opc2 = 3 ,
6326
6400
.access = PL1_R , .type = ARM_CP_CONST ,
6401
+ .accessfn = access_aa64_tid3 ,
6327
6402
.resetvalue = 0 },
6328
6403
{ .name = "MVFR4_EL1_RESERVED" , .state = ARM_CP_STATE_AA64 ,
6329
6404
.opc0 = 3 , .opc1 = 0 , .crn = 0 , .crm = 3 , .opc2 = 4 ,
6330
6405
.access = PL1_R , .type = ARM_CP_CONST ,
6406
+ .accessfn = access_aa64_tid3 ,
6331
6407
.resetvalue = 0 },
6332
6408
{ .name = "MVFR5_EL1_RESERVED" , .state = ARM_CP_STATE_AA64 ,
6333
6409
.opc0 = 3 , .opc1 = 0 , .crn = 0 , .crm = 3 , .opc2 = 5 ,
6334
6410
.access = PL1_R , .type = ARM_CP_CONST ,
6411
+ .accessfn = access_aa64_tid3 ,
6335
6412
.resetvalue = 0 },
6336
6413
{ .name = "MVFR6_EL1_RESERVED" , .state = ARM_CP_STATE_AA64 ,
6337
6414
.opc0 = 3 , .opc1 = 0 , .crn = 0 , .crm = 3 , .opc2 = 6 ,
6338
6415
.access = PL1_R , .type = ARM_CP_CONST ,
6416
+ .accessfn = access_aa64_tid3 ,
6339
6417
.resetvalue = 0 },
6340
6418
{ .name = "MVFR7_EL1_RESERVED" , .state = ARM_CP_STATE_AA64 ,
6341
6419
.opc0 = 3 , .opc1 = 0 , .crn = 0 , .crm = 3 , .opc2 = 7 ,
6342
6420
.access = PL1_R , .type = ARM_CP_CONST ,
6421
+ .accessfn = access_aa64_tid3 ,
6343
6422
.resetvalue = 0 },
6344
6423
{ .name = "PMCEID0" , .state = ARM_CP_STATE_AA32 ,
6345
6424
.cp = 15 , .opc1 = 0 , .crn = 9 , .crm = 12 , .opc2 = 6 ,
0 commit comments