@ -5839,9 +5839,18 @@ static const ARMCPRegInfo ccsidr2_reginfo[] = {
. readfn = ccsidr2_read , . type = ARM_CP_NO_RAW } ,
} ;
static CPAccessResult access_aa64 _tid3 ( CPUARMState * env , const ARMCPRegInfo * ri ,
bool isread )
static CPAccessResult access_v7a _tid3 ( CPUARMState * env , const ARMCPRegInfo * ri ,
bool isread )
{
/*
* Trap on TID3 always . This should be used only for the fixed set of
* registers which are defined to trap on HCR . TID3 in v7A , which is :
* ID_PFR { 0 , 1 } , ID_DFR0 , ID_AFR0 , ID_MMFR { 0 , 1 , 2 , 3 } , ID_ISAR { 0 , 1 , 2 , 3 , 4 , 5 }
* ( MVFR0 and MVFR1 also trap in v7A , but this is not handled via
* this accessfn but in check_hcr_el2_trap . )
* Any other registers in the TID3 trap space should use access_tid3 ( ) ,
* so that they trap on v8 and above , but not on v7 .
*/
if ( ( arm_current_el ( env ) < 2 ) & & ( arm_hcr_el2_eff ( env ) & HCR_TID3 ) ) {
return CP_ACCESS_TRAP_EL2 ;
}
@ -5849,11 +5858,18 @@ static CPAccessResult access_aa64_tid3(CPUARMState *env, const ARMCPRegInfo *ri,
return CP_ACCESS_OK ;
}
static CPAccessResult access_aa32_ tid3 ( CPUARMState * env , const ARMCPRegInfo * ri ,
bool isread )
static CPAccessResult access_tid3 ( CPUARMState * env , const ARMCPRegInfo * ri ,
bool isread )
{
/*
* Trap on TID3 , if we implement at least v8 . For v8 and above
* the ID register space is at least IMPDEF permitted to trap ,
* and must trap if FEAT_FGT is implemented . We choose to trap
* always . Use this function for any new registers that should
* trap on TID3 .
*/
if ( arm_feature ( env , ARM_FEATURE_V8 ) ) {
return access_aa64_tid3 ( env , ri , isread ) ;
return access_v7a _tid3 ( env , ri , isread ) ;
}
return CP_ACCESS_OK ;
@ -6303,7 +6319,7 @@ void register_cp_regs_for_features(ARMCPU *cpu)
{ . name = " ID_PFR0 " , . state = ARM_CP_STATE_BOTH ,
. opc0 = 3 , . opc1 = 0 , . crn = 0 , . crm = 1 , . opc2 = 0 ,
. access = PL1_R , . type = ARM_CP_CONST ,
. accessfn = access_aa32 _tid3 ,
. accessfn = access_v7a _tid3 ,
. resetvalue = GET_IDREG ( isar , ID_PFR0 ) } ,
/*
* ID_PFR1 is not a plain ARM_CP_CONST because we don ' t know
@ -6317,7 +6333,7 @@ void register_cp_regs_for_features(ARMCPU *cpu)
. resetvalue = GET_IDREG ( isar , ID_PFR1 ) ,
# else
. type = ARM_CP_NO_RAW ,
. accessfn = access_aa32 _tid3 ,
. accessfn = access_v7a _tid3 ,
. readfn = id_pfr1_read ,
. writefn = arm_cp_write_ignore
# endif
@ -6325,72 +6341,72 @@ void register_cp_regs_for_features(ARMCPU *cpu)
{ . name = " ID_DFR0 " , . state = ARM_CP_STATE_BOTH ,
. opc0 = 3 , . opc1 = 0 , . crn = 0 , . crm = 1 , . opc2 = 2 ,
. access = PL1_R , . type = ARM_CP_CONST ,
. accessfn = access_aa32 _tid3 ,
. accessfn = access_v7a _tid3 ,
. resetvalue = GET_IDREG ( isar , ID_DFR0 ) } ,
{ . name = " ID_AFR0 " , . state = ARM_CP_STATE_BOTH ,
. opc0 = 3 , . opc1 = 0 , . crn = 0 , . crm = 1 , . opc2 = 3 ,
. access = PL1_R , . type = ARM_CP_CONST ,
. accessfn = access_aa32 _tid3 ,
. accessfn = access_v7a _tid3 ,
. resetvalue = GET_IDREG ( isar , ID_AFR0 ) } ,
{ . name = " ID_MMFR0 " , . state = ARM_CP_STATE_BOTH ,
. opc0 = 3 , . opc1 = 0 , . crn = 0 , . crm = 1 , . opc2 = 4 ,
. access = PL1_R , . type = ARM_CP_CONST ,
. accessfn = access_aa32 _tid3 ,
. accessfn = access_v7a _tid3 ,
. resetvalue = GET_IDREG ( isar , ID_MMFR0 ) } ,
{ . name = " ID_MMFR1 " , . state = ARM_CP_STATE_BOTH ,
. opc0 = 3 , . opc1 = 0 , . crn = 0 , . crm = 1 , . opc2 = 5 ,
. access = PL1_R , . type = ARM_CP_CONST ,
. accessfn = access_aa32 _tid3 ,
. accessfn = access_v7a _tid3 ,
. resetvalue = GET_IDREG ( isar , ID_MMFR1 ) } ,
{ . name = " ID_MMFR2 " , . state = ARM_CP_STATE_BOTH ,
. opc0 = 3 , . opc1 = 0 , . crn = 0 , . crm = 1 , . opc2 = 6 ,
. access = PL1_R , . type = ARM_CP_CONST ,
. accessfn = access_aa32 _tid3 ,
. accessfn = access_v7a _tid3 ,
. resetvalue = GET_IDREG ( isar , ID_MMFR2 ) } ,
{ . name = " ID_MMFR3 " , . state = ARM_CP_STATE_BOTH ,
. opc0 = 3 , . opc1 = 0 , . crn = 0 , . crm = 1 , . opc2 = 7 ,
. access = PL1_R , . type = ARM_CP_CONST ,
. accessfn = access_aa32 _tid3 ,
. accessfn = access_v7a _tid3 ,
. resetvalue = GET_IDREG ( isar , ID_MMFR3 ) } ,
{ . name = " ID_ISAR0 " , . state = ARM_CP_STATE_BOTH ,
. opc0 = 3 , . opc1 = 0 , . crn = 0 , . crm = 2 , . opc2 = 0 ,
. access = PL1_R , . type = ARM_CP_CONST ,
. accessfn = access_aa32 _tid3 ,
. accessfn = access_v7a _tid3 ,
. resetvalue = GET_IDREG ( isar , ID_ISAR0 ) } ,
{ . name = " ID_ISAR1 " , . state = ARM_CP_STATE_BOTH ,
. opc0 = 3 , . opc1 = 0 , . crn = 0 , . crm = 2 , . opc2 = 1 ,
. access = PL1_R , . type = ARM_CP_CONST ,
. accessfn = access_aa32 _tid3 ,
. accessfn = access_v7a _tid3 ,
. resetvalue = GET_IDREG ( isar , ID_ISAR1 ) } ,
{ . name = " ID_ISAR2 " , . state = ARM_CP_STATE_BOTH ,
. opc0 = 3 , . opc1 = 0 , . crn = 0 , . crm = 2 , . opc2 = 2 ,
. access = PL1_R , . type = ARM_CP_CONST ,
. accessfn = access_aa32 _tid3 ,
. accessfn = access_v7a _tid3 ,
. resetvalue = GET_IDREG ( isar , ID_ISAR2 ) } ,
{ . name = " ID_ISAR3 " , . state = ARM_CP_STATE_BOTH ,
. opc0 = 3 , . opc1 = 0 , . crn = 0 , . crm = 2 , . opc2 = 3 ,
. access = PL1_R , . type = ARM_CP_CONST ,
. accessfn = access_aa32 _tid3 ,
. accessfn = access_v7a _tid3 ,
. resetvalue = GET_IDREG ( isar , ID_ISAR3 ) } ,
{ . name = " ID_ISAR4 " , . state = ARM_CP_STATE_BOTH ,
. opc0 = 3 , . opc1 = 0 , . crn = 0 , . crm = 2 , . opc2 = 4 ,
. access = PL1_R , . type = ARM_CP_CONST ,
. accessfn = access_aa32 _tid3 ,
. accessfn = access_v7a _tid3 ,
. resetvalue = GET_IDREG ( isar , ID_ISAR4 ) } ,
{ . name = " ID_ISAR5 " , . state = ARM_CP_STATE_BOTH ,
. opc0 = 3 , . opc1 = 0 , . crn = 0 , . crm = 2 , . opc2 = 5 ,
. access = PL1_R , . type = ARM_CP_CONST ,
. accessfn = access_aa32 _tid3 ,
. accessfn = access_v7a _tid3 ,
. resetvalue = GET_IDREG ( isar , ID_ISAR5 ) } ,
{ . name = " ID_MMFR4 " , . state = ARM_CP_STATE_BOTH ,
. opc0 = 3 , . opc1 = 0 , . crn = 0 , . crm = 2 , . opc2 = 6 ,
. access = PL1_R , . type = ARM_CP_CONST ,
. accessfn = access_aa32_ tid3 ,
. accessfn = access_tid3 ,
. resetvalue = GET_IDREG ( isar , ID_MMFR4 ) } ,
{ . name = " ID_ISAR6 " , . state = ARM_CP_STATE_BOTH ,
. opc0 = 3 , . opc1 = 0 , . crn = 0 , . crm = 2 , . opc2 = 7 ,
. access = PL1_R , . type = ARM_CP_CONST ,
. accessfn = access_aa32_ tid3 ,
. accessfn = access_tid3 ,
. resetvalue = GET_IDREG ( isar , ID_ISAR6 ) } ,
} ;
define_arm_cp_regs ( cpu , v6_idregs ) ;
@ -6441,7 +6457,7 @@ void register_cp_regs_for_features(ARMCPU *cpu)
. resetvalue = GET_IDREG ( isar , ID_AA64PFR0 )
# else
. type = ARM_CP_NO_RAW ,
. accessfn = access_aa64_ tid3 ,
. accessfn = access_tid3 ,
. readfn = id_aa64pfr0_read ,
. writefn = arm_cp_write_ignore
# endif
@ -6449,172 +6465,172 @@ void register_cp_regs_for_features(ARMCPU *cpu)
{ . name = " ID_AA64PFR1_EL1 " , . state = ARM_CP_STATE_AA64 ,
. opc0 = 3 , . opc1 = 0 , . crn = 0 , . crm = 4 , . opc2 = 1 ,
. access = PL1_R , . type = ARM_CP_CONST ,
. accessfn = access_aa64_ tid3 ,
. accessfn = access_tid3 ,
. resetvalue = GET_IDREG ( isar , ID_AA64PFR1 ) } ,
{ . name = " ID_AA64PFR2_EL1 " , . state = ARM_CP_STATE_AA64 ,
. opc0 = 3 , . opc1 = 0 , . crn = 0 , . crm = 4 , . opc2 = 2 ,
. access = PL1_R , . type = ARM_CP_CONST ,
. accessfn = access_aa64_ tid3 ,
. accessfn = access_tid3 ,
. resetvalue = GET_IDREG ( isar , ID_AA64PFR2 ) } ,
{ . name = " ID_AA64PFR3_EL1_RESERVED " , . state = ARM_CP_STATE_AA64 ,
. opc0 = 3 , . opc1 = 0 , . crn = 0 , . crm = 4 , . opc2 = 3 ,
. access = PL1_R , . type = ARM_CP_CONST ,
. accessfn = access_aa64_ tid3 ,
. accessfn = access_tid3 ,
. resetvalue = 0 } ,
{ . name = " ID_AA64ZFR0_EL1 " , . state = ARM_CP_STATE_AA64 ,
. opc0 = 3 , . opc1 = 0 , . crn = 0 , . crm = 4 , . opc2 = 4 ,
. access = PL1_R , . type = ARM_CP_CONST ,
. accessfn = access_aa64_ tid3 ,
. accessfn = access_tid3 ,
. resetvalue = GET_IDREG ( isar , ID_AA64ZFR0 ) } ,
{ . name = " ID_AA64SMFR0_EL1 " , . state = ARM_CP_STATE_AA64 ,
. opc0 = 3 , . opc1 = 0 , . crn = 0 , . crm = 4 , . opc2 = 5 ,
. access = PL1_R , . type = ARM_CP_CONST ,
. accessfn = access_aa64_ tid3 ,
. accessfn = access_tid3 ,
. resetvalue = GET_IDREG ( isar , ID_AA64SMFR0 ) } ,
{ . name = " ID_AA64PFR6_EL1_RESERVED " , . state = ARM_CP_STATE_AA64 ,
. opc0 = 3 , . opc1 = 0 , . crn = 0 , . crm = 4 , . opc2 = 6 ,
. access = PL1_R , . type = ARM_CP_CONST ,
. accessfn = access_aa64_ tid3 ,
. accessfn = access_tid3 ,
. resetvalue = 0 } ,
{ . name = " ID_AA64PFR7_EL1_RESERVED " , . state = ARM_CP_STATE_AA64 ,
. opc0 = 3 , . opc1 = 0 , . crn = 0 , . crm = 4 , . opc2 = 7 ,
. access = PL1_R , . type = ARM_CP_CONST ,
. accessfn = access_aa64_ tid3 ,
. accessfn = access_tid3 ,
. resetvalue = 0 } ,
{ . name = " ID_AA64DFR0_EL1 " , . state = ARM_CP_STATE_AA64 ,
. opc0 = 3 , . opc1 = 0 , . crn = 0 , . crm = 5 , . opc2 = 0 ,
. access = PL1_R , . type = ARM_CP_CONST ,
. accessfn = access_aa64_ tid3 ,
. accessfn = access_tid3 ,
. resetvalue = GET_IDREG ( isar , ID_AA64DFR0 ) } ,
{ . name = " ID_AA64DFR1_EL1 " , . state = ARM_CP_STATE_AA64 ,
. opc0 = 3 , . opc1 = 0 , . crn = 0 , . crm = 5 , . opc2 = 1 ,
. access = PL1_R , . type = ARM_CP_CONST ,
. accessfn = access_aa64_ tid3 ,
. accessfn = access_tid3 ,
. resetvalue = GET_IDREG ( isar , ID_AA64DFR1 ) } ,
{ . name = " ID_AA64DFR2_EL1_RESERVED " , . state = ARM_CP_STATE_AA64 ,
. opc0 = 3 , . opc1 = 0 , . crn = 0 , . crm = 5 , . opc2 = 2 ,
. access = PL1_R , . type = ARM_CP_CONST ,
. accessfn = access_aa64_ tid3 ,
. accessfn = access_tid3 ,
. resetvalue = 0 } ,
{ . name = " ID_AA64DFR3_EL1_RESERVED " , . state = ARM_CP_STATE_AA64 ,
. opc0 = 3 , . opc1 = 0 , . crn = 0 , . crm = 5 , . opc2 = 3 ,
. access = PL1_R , . type = ARM_CP_CONST ,
. accessfn = access_aa64_ tid3 ,
. accessfn = access_tid3 ,
. resetvalue = 0 } ,
{ . name = " ID_AA64AFR0_EL1 " , . state = ARM_CP_STATE_AA64 ,
. opc0 = 3 , . opc1 = 0 , . crn = 0 , . crm = 5 , . opc2 = 4 ,
. access = PL1_R , . type = ARM_CP_CONST ,
. accessfn = access_aa64_ tid3 ,
. accessfn = access_tid3 ,
. resetvalue = GET_IDREG ( isar , ID_AA64AFR0 ) } ,
{ . name = " ID_AA64AFR1_EL1 " , . state = ARM_CP_STATE_AA64 ,
. opc0 = 3 , . opc1 = 0 , . crn = 0 , . crm = 5 , . opc2 = 5 ,
. access = PL1_R , . type = ARM_CP_CONST ,
. accessfn = access_aa64_ tid3 ,
. accessfn = access_tid3 ,
. resetvalue = GET_IDREG ( isar , ID_AA64AFR1 ) } ,
{ . name = " ID_AA64AFR2_EL1_RESERVED " , . state = ARM_CP_STATE_AA64 ,
. opc0 = 3 , . opc1 = 0 , . crn = 0 , . crm = 5 , . opc2 = 6 ,
. access = PL1_R , . type = ARM_CP_CONST ,
. accessfn = access_aa64_ tid3 ,
. accessfn = access_tid3 ,
. resetvalue = 0 } ,
{ . name = " ID_AA64AFR3_EL1_RESERVED " , . state = ARM_CP_STATE_AA64 ,
. opc0 = 3 , . opc1 = 0 , . crn = 0 , . crm = 5 , . opc2 = 7 ,
. access = PL1_R , . type = ARM_CP_CONST ,
. accessfn = access_aa64_ tid3 ,
. accessfn = access_tid3 ,
. resetvalue = 0 } ,
{ . name = " ID_AA64ISAR0_EL1 " , . state = ARM_CP_STATE_AA64 ,
. opc0 = 3 , . opc1 = 0 , . crn = 0 , . crm = 6 , . opc2 = 0 ,
. access = PL1_R , . type = ARM_CP_CONST ,
. accessfn = access_aa64_ tid3 ,
. accessfn = access_tid3 ,
. resetvalue = GET_IDREG ( isar , ID_AA64ISAR0 ) } ,
{ . name = " ID_AA64ISAR1_EL1 " , . state = ARM_CP_STATE_AA64 ,
. opc0 = 3 , . opc1 = 0 , . crn = 0 , . crm = 6 , . opc2 = 1 ,
. access = PL1_R , . type = ARM_CP_CONST ,
. accessfn = access_aa64_ tid3 ,
. accessfn = access_tid3 ,
. resetvalue = GET_IDREG ( isar , ID_AA64ISAR1 ) } ,
{ . name = " ID_AA64ISAR2_EL1 " , . state = ARM_CP_STATE_AA64 ,
. opc0 = 3 , . opc1 = 0 , . crn = 0 , . crm = 6 , . opc2 = 2 ,
. access = PL1_R , . type = ARM_CP_CONST ,
. accessfn = access_aa64_ tid3 ,
. accessfn = access_tid3 ,
. resetvalue = GET_IDREG ( isar , ID_AA64ISAR2 ) } ,
{ . name = " ID_AA64ISAR3_EL1_RESERVED " , . state = ARM_CP_STATE_AA64 ,
. opc0 = 3 , . opc1 = 0 , . crn = 0 , . crm = 6 , . opc2 = 3 ,
. access = PL1_R , . type = ARM_CP_CONST ,
. accessfn = access_aa64_ tid3 ,
. accessfn = access_tid3 ,
. resetvalue = 0 } ,
{ . name = " ID_AA64ISAR4_EL1_RESERVED " , . state = ARM_CP_STATE_AA64 ,
. opc0 = 3 , . opc1 = 0 , . crn = 0 , . crm = 6 , . opc2 = 4 ,
. access = PL1_R , . type = ARM_CP_CONST ,
. accessfn = access_aa64_ tid3 ,
. accessfn = access_tid3 ,
. resetvalue = 0 } ,
{ . name = " ID_AA64ISAR5_EL1_RESERVED " , . state = ARM_CP_STATE_AA64 ,
. opc0 = 3 , . opc1 = 0 , . crn = 0 , . crm = 6 , . opc2 = 5 ,
. access = PL1_R , . type = ARM_CP_CONST ,
. accessfn = access_aa64_ tid3 ,
. accessfn = access_tid3 ,
. resetvalue = 0 } ,
{ . name = " ID_AA64ISAR6_EL1_RESERVED " , . state = ARM_CP_STATE_AA64 ,
. opc0 = 3 , . opc1 = 0 , . crn = 0 , . crm = 6 , . opc2 = 6 ,
. access = PL1_R , . type = ARM_CP_CONST ,
. accessfn = access_aa64_ tid3 ,
. accessfn = access_tid3 ,
. resetvalue = 0 } ,
{ . name = " ID_AA64ISAR7_EL1_RESERVED " , . state = ARM_CP_STATE_AA64 ,
. opc0 = 3 , . opc1 = 0 , . crn = 0 , . crm = 6 , . opc2 = 7 ,
. access = PL1_R , . type = ARM_CP_CONST ,
. accessfn = access_aa64_ tid3 ,
. accessfn = access_tid3 ,
. resetvalue = 0 } ,
{ . name = " ID_AA64MMFR0_EL1 " , . state = ARM_CP_STATE_AA64 ,
. opc0 = 3 , . opc1 = 0 , . crn = 0 , . crm = 7 , . opc2 = 0 ,
. access = PL1_R , . type = ARM_CP_CONST ,
. accessfn = access_aa64_ tid3 ,
. accessfn = access_tid3 ,
. resetvalue = GET_IDREG ( isar , ID_AA64MMFR0 ) } ,
{ . name = " ID_AA64MMFR1_EL1 " , . state = ARM_CP_STATE_AA64 ,
. opc0 = 3 , . opc1 = 0 , . crn = 0 , . crm = 7 , . opc2 = 1 ,
. access = PL1_R , . type = ARM_CP_CONST ,
. accessfn = access_aa64_ tid3 ,
. accessfn = access_tid3 ,
. resetvalue = GET_IDREG ( isar , ID_AA64MMFR1 ) } ,
{ . name = " ID_AA64MMFR2_EL1 " , . state = ARM_CP_STATE_AA64 ,
. opc0 = 3 , . opc1 = 0 , . crn = 0 , . crm = 7 , . opc2 = 2 ,
. access = PL1_R , . type = ARM_CP_CONST ,
. accessfn = access_aa64_ tid3 ,
. accessfn = access_tid3 ,
. resetvalue = GET_IDREG ( isar , ID_AA64MMFR2 ) } ,
{ . name = " ID_AA64MMFR3_EL1 " , . state = ARM_CP_STATE_AA64 ,
. opc0 = 3 , . opc1 = 0 , . crn = 0 , . crm = 7 , . opc2 = 3 ,
. access = PL1_R , . type = ARM_CP_CONST ,
. accessfn = access_aa64_ tid3 ,
. accessfn = access_tid3 ,
. resetvalue = GET_IDREG ( isar , ID_AA64MMFR3 ) } ,
{ . name = " ID_AA64MMFR4_EL1 " , . state = ARM_CP_STATE_AA64 ,
. opc0 = 3 , . opc1 = 0 , . crn = 0 , . crm = 7 , . opc2 = 4 ,
. access = PL1_R , . type = ARM_CP_CONST ,
. accessfn = access_aa64_ tid3 ,
. accessfn = access_tid3 ,
. resetvalue = GET_IDREG ( isar , ID_AA64MMFR4 ) } ,
{ . name = " ID_AA64MMFR5_EL1_RESERVED " , . state = ARM_CP_STATE_AA64 ,
. opc0 = 3 , . opc1 = 0 , . crn = 0 , . crm = 7 , . opc2 = 5 ,
. access = PL1_R , . type = ARM_CP_CONST ,
. accessfn = access_aa64_ tid3 ,
. accessfn = access_tid3 ,
. resetvalue = 0 } ,
{ . name = " ID_AA64MMFR6_EL1_RESERVED " , . state = ARM_CP_STATE_AA64 ,
. opc0 = 3 , . opc1 = 0 , . crn = 0 , . crm = 7 , . opc2 = 6 ,
. access = PL1_R , . type = ARM_CP_CONST ,
. accessfn = access_aa64_ tid3 ,
. accessfn = access_tid3 ,
. resetvalue = 0 } ,
{ . name = " ID_AA64MMFR7_EL1_RESERVED " , . state = ARM_CP_STATE_AA64 ,
. opc0 = 3 , . opc1 = 0 , . crn = 0 , . crm = 7 , . opc2 = 7 ,
. access = PL1_R , . type = ARM_CP_CONST ,
. accessfn = access_aa64_ tid3 ,
. accessfn = access_tid3 ,
. resetvalue = 0 } ,
{ . name = " MVFR0_EL1 " , . state = ARM_CP_STATE_AA64 ,
. opc0 = 3 , . opc1 = 0 , . crn = 0 , . crm = 3 , . opc2 = 0 ,
. access = PL1_R , . type = ARM_CP_CONST ,
. accessfn = access_aa64_ tid3 ,
. accessfn = access_tid3 ,
. resetvalue = cpu - > isar . mvfr0 } ,
{ . name = " MVFR1_EL1 " , . state = ARM_CP_STATE_AA64 ,
. opc0 = 3 , . opc1 = 0 , . crn = 0 , . crm = 3 , . opc2 = 1 ,
. access = PL1_R , . type = ARM_CP_CONST ,
. accessfn = access_aa64_ tid3 ,
. accessfn = access_tid3 ,
. resetvalue = cpu - > isar . mvfr1 } ,
{ . name = " MVFR2_EL1 " , . state = ARM_CP_STATE_AA64 ,
. opc0 = 3 , . opc1 = 0 , . crn = 0 , . crm = 3 , . opc2 = 2 ,
. access = PL1_R , . type = ARM_CP_CONST ,
. accessfn = access_aa64_ tid3 ,
. accessfn = access_tid3 ,
. resetvalue = cpu - > isar . mvfr2 } ,
/*
* " 0, c0, c3, {0,1,2} " are the encodings corresponding to
@ -6625,17 +6641,17 @@ void register_cp_regs_for_features(ARMCPU *cpu)
{ . name = " RES_0_C0_C3_0 " , . state = ARM_CP_STATE_AA32 ,
. cp = 15 , . opc1 = 0 , . crn = 0 , . crm = 3 , . opc2 = 0 ,
. access = PL1_R , . type = ARM_CP_CONST ,
. accessfn = access_aa64_ tid3 ,
. accessfn = access_tid3 ,
. resetvalue = 0 } ,
{ . name = " RES_0_C0_C3_1 " , . state = ARM_CP_STATE_AA32 ,
. cp = 15 , . opc1 = 0 , . crn = 0 , . crm = 3 , . opc2 = 1 ,
. access = PL1_R , . type = ARM_CP_CONST ,
. accessfn = access_aa64_ tid3 ,
. accessfn = access_tid3 ,
. resetvalue = 0 } ,
{ . name = " RES_0_C0_C3_2 " , . state = ARM_CP_STATE_AA32 ,
. cp = 15 , . opc1 = 0 , . crn = 0 , . crm = 3 , . opc2 = 2 ,
. access = PL1_R , . type = ARM_CP_CONST ,
. accessfn = access_aa64_ tid3 ,
. accessfn = access_tid3 ,
. resetvalue = 0 } ,
/*
* Other encodings in " 0, c0, c3, ... " are STATE_BOTH because
@ -6646,27 +6662,27 @@ void register_cp_regs_for_features(ARMCPU *cpu)
{ . name = " RES_0_C0_C3_3 " , . state = ARM_CP_STATE_BOTH ,
. opc0 = 3 , . opc1 = 0 , . crn = 0 , . crm = 3 , . opc2 = 3 ,
. access = PL1_R , . type = ARM_CP_CONST ,
. accessfn = access_aa64_ tid3 ,
. accessfn = access_tid3 ,
. resetvalue = 0 } ,
{ . name = " ID_PFR2 " , . state = ARM_CP_STATE_BOTH ,
. opc0 = 3 , . opc1 = 0 , . crn = 0 , . crm = 3 , . opc2 = 4 ,
. access = PL1_R , . type = ARM_CP_CONST ,
. accessfn = access_aa64_ tid3 ,
. accessfn = access_tid3 ,
. resetvalue = GET_IDREG ( isar , ID_PFR2 ) } ,
{ . name = " ID_DFR1 " , . state = ARM_CP_STATE_BOTH ,
. opc0 = 3 , . opc1 = 0 , . crn = 0 , . crm = 3 , . opc2 = 5 ,
. access = PL1_R , . type = ARM_CP_CONST ,
. accessfn = access_aa64_ tid3 ,
. accessfn = access_tid3 ,
. resetvalue = GET_IDREG ( isar , ID_DFR1 ) } ,
{ . name = " ID_MMFR5 " , . state = ARM_CP_STATE_BOTH ,
. opc0 = 3 , . opc1 = 0 , . crn = 0 , . crm = 3 , . opc2 = 6 ,
. access = PL1_R , . type = ARM_CP_CONST ,
. accessfn = access_aa64_ tid3 ,
. accessfn = access_tid3 ,
. resetvalue = GET_IDREG ( isar , ID_MMFR5 ) } ,
{ . name = " RES_0_C0_C3_7 " , . state = ARM_CP_STATE_BOTH ,
. opc0 = 3 , . opc1 = 0 , . crn = 0 , . crm = 3 , . opc2 = 7 ,
. access = PL1_R , . type = ARM_CP_CONST ,
. accessfn = access_aa64_ tid3 ,
. accessfn = access_tid3 ,
. resetvalue = 0 } ,
} ;
# ifdef CONFIG_USER_ONLY
@ -6818,7 +6834,7 @@ void register_cp_regs_for_features(ARMCPU *cpu)
. state = ARM_CP_STATE_AA32 ,
. cp = 15 , . opc1 = 0 , . crn = 0 , . crm = i , . opc2 = CP_ANY ,
. access = PL1_R , . type = ARM_CP_CONST ,
. accessfn = access_aa64_ tid3 ,
. accessfn = access_tid3 ,
. resetvalue = 0 } ;
define_one_arm_cp_reg ( cpu , & v8_aa32_raz_idregs ) ;
}