On 5/13/26 6:33 PM, Shaju Abraham wrote:
> Replace the existing FIELD() macro with the newly introduced IDREG_FIELD()
> macro to remove deduplication. All definitions for TCG remains the same.
>
> Co-authored-by: Khushit Shah <[email protected]>
> Signed-off-by: Shaju Abraham <[email protected]>
> ---
>  target/arm/cpu-features.h | 232 +++-----------------------------------
>  1 file changed, 18 insertions(+), 214 deletions(-)
>
> diff --git a/target/arm/cpu-features.h b/target/arm/cpu-features.h
> index 4e44245a8b..782850ccec 100644
> --- a/target/arm/cpu-features.h
> +++ b/target/arm/cpu-features.h
> @@ -50,14 +50,6 @@ FIELD(CCSIDR_EL1, LINESIZE, 0, 3)
>  FIELD(CCSIDR_EL1, ASSOCIATIVITY, 3, 10)
>  FIELD(CCSIDR_EL1, NUMSETS, 13, 15)
>  
> -FIELD(CTR_EL0,  IMINLINE, 0, 4)
> -FIELD(CTR_EL0,  L1IP, 14, 2)
> -FIELD(CTR_EL0,  DMINLINE, 16, 4)
> -FIELD(CTR_EL0,  ERG, 20, 4)
> -FIELD(CTR_EL0,  CWG, 24, 4)
> -FIELD(CTR_EL0,  IDC, 28, 1)
> -FIELD(CTR_EL0,  DIC, 29, 1)
> -FIELD(CTR_EL0,  TMINLINE, 32, 6)
>  
MIDR_EL1 is also described inĀ 

 target/arm/cpu-idregs.h.inc 
so it could be removed I guess. Please check others

>  FIELD(MIDR_EL1, REVISION, 0, 4)
>  FIELD(MIDR_EL1, PARTNUM, 4, 12)
> @@ -189,217 +181,29 @@ FIELD(ID_PFR1, VIRTUALIZATION, 12, 4)
>  FIELD(ID_PFR1, GENTIMER, 16, 4)
>  FIELD(ID_PFR1, SEC_FRAC, 20, 4)
>  FIELD(ID_PFR1, VIRT_FRAC, 24, 4)
> -FIELD(ID_PFR1, GIC, 28, 4)
in 02/13 you seem to have a partial description of ID_PFR1 and you miss
many other fields. Any reason?

Eric
>  
>  FIELD(ID_PFR2, CSV3, 0, 4)
>  FIELD(ID_PFR2, SSBS, 4, 4)
>  FIELD(ID_PFR2, RAS_FRAC, 8, 4)
>  
> -FIELD(ID_AA64ISAR0, AES, 4, 4)
> -FIELD(ID_AA64ISAR0, SHA1, 8, 4)
> -FIELD(ID_AA64ISAR0, SHA2, 12, 4)
> -FIELD(ID_AA64ISAR0, CRC32, 16, 4)
> -FIELD(ID_AA64ISAR0, ATOMIC, 20, 4)
> -FIELD(ID_AA64ISAR0, TME, 24, 4)
> -FIELD(ID_AA64ISAR0, RDM, 28, 4)
> -FIELD(ID_AA64ISAR0, SHA3, 32, 4)
> -FIELD(ID_AA64ISAR0, SM3, 36, 4)
> -FIELD(ID_AA64ISAR0, SM4, 40, 4)
> -FIELD(ID_AA64ISAR0, DP, 44, 4)
> -FIELD(ID_AA64ISAR0, FHM, 48, 4)
> -FIELD(ID_AA64ISAR0, TS, 52, 4)
> -FIELD(ID_AA64ISAR0, TLB, 56, 4)
> -FIELD(ID_AA64ISAR0, RNDR, 60, 4)
> -
> -FIELD(ID_AA64ISAR1, DPB, 0, 4)
> -FIELD(ID_AA64ISAR1, APA, 4, 4)
> -FIELD(ID_AA64ISAR1, API, 8, 4)
> -FIELD(ID_AA64ISAR1, JSCVT, 12, 4)
> -FIELD(ID_AA64ISAR1, FCMA, 16, 4)
> -FIELD(ID_AA64ISAR1, LRCPC, 20, 4)
> -FIELD(ID_AA64ISAR1, GPA, 24, 4)
> -FIELD(ID_AA64ISAR1, GPI, 28, 4)
> -FIELD(ID_AA64ISAR1, FRINTTS, 32, 4)
> -FIELD(ID_AA64ISAR1, SB, 36, 4)
> -FIELD(ID_AA64ISAR1, SPECRES, 40, 4)
> -FIELD(ID_AA64ISAR1, BF16, 44, 4)
> -FIELD(ID_AA64ISAR1, DGH, 48, 4)
> -FIELD(ID_AA64ISAR1, I8MM, 52, 4)
> -FIELD(ID_AA64ISAR1, XS, 56, 4)
> -FIELD(ID_AA64ISAR1, LS64, 60, 4)
> -
> -FIELD(ID_AA64ISAR2, WFXT, 0, 4)
> -FIELD(ID_AA64ISAR2, RPRES, 4, 4)
> -FIELD(ID_AA64ISAR2, GPA3, 8, 4)
> -FIELD(ID_AA64ISAR2, APA3, 12, 4)
> -FIELD(ID_AA64ISAR2, MOPS, 16, 4)
> -FIELD(ID_AA64ISAR2, BC, 20, 4)
> -FIELD(ID_AA64ISAR2, PAC_FRAC, 24, 4)
> -FIELD(ID_AA64ISAR2, CLRBHB, 28, 4)
> -FIELD(ID_AA64ISAR2, SYSREG_128, 32, 4)
> -FIELD(ID_AA64ISAR2, SYSINSTR_128, 36, 4)
> -FIELD(ID_AA64ISAR2, PRFMSLC, 40, 4)
> -FIELD(ID_AA64ISAR2, RPRFM, 48, 4)
> -FIELD(ID_AA64ISAR2, CSSC, 52, 4)
> -FIELD(ID_AA64ISAR2, LUT, 56, 4)
> -FIELD(ID_AA64ISAR2, ATS1A, 60, 4)
> -
> -FIELD(ID_AA64PFR0, EL0, 0, 4)
> -FIELD(ID_AA64PFR0, EL1, 4, 4)
> -FIELD(ID_AA64PFR0, EL2, 8, 4)
> -FIELD(ID_AA64PFR0, EL3, 12, 4)
> -FIELD(ID_AA64PFR0, FP, 16, 4)
> -FIELD(ID_AA64PFR0, ADVSIMD, 20, 4)
> -FIELD(ID_AA64PFR0, GIC, 24, 4)
> -FIELD(ID_AA64PFR0, RAS, 28, 4)
> -FIELD(ID_AA64PFR0, SVE, 32, 4)
> -FIELD(ID_AA64PFR0, SEL2, 36, 4)
> -FIELD(ID_AA64PFR0, MPAM, 40, 4)
> -FIELD(ID_AA64PFR0, AMU, 44, 4)
> -FIELD(ID_AA64PFR0, DIT, 48, 4)
> -FIELD(ID_AA64PFR0, RME, 52, 4)
> -FIELD(ID_AA64PFR0, CSV2, 56, 4)
> -FIELD(ID_AA64PFR0, CSV3, 60, 4)
> -
> -FIELD(ID_AA64PFR1, BT, 0, 4)
> -FIELD(ID_AA64PFR1, SSBS, 4, 4)
> -FIELD(ID_AA64PFR1, MTE, 8, 4)
> -FIELD(ID_AA64PFR1, RAS_FRAC, 12, 4)
> -FIELD(ID_AA64PFR1, MPAM_FRAC, 16, 4)
> -FIELD(ID_AA64PFR1, SME, 24, 4)
> -FIELD(ID_AA64PFR1, RNDR_TRAP, 28, 4)
> -FIELD(ID_AA64PFR1, CSV2_FRAC, 32, 4)
> -FIELD(ID_AA64PFR1, NMI, 36, 4)
> -FIELD(ID_AA64PFR1, MTE_FRAC, 40, 4)
> -FIELD(ID_AA64PFR1, GCS, 44, 4)
> -FIELD(ID_AA64PFR1, THE, 48, 4)
> -FIELD(ID_AA64PFR1, MTEX, 52, 4)
> -FIELD(ID_AA64PFR1, DF2, 56, 4)
> -FIELD(ID_AA64PFR1, PFAR, 60, 4)
> -
> -FIELD(ID_AA64PFR2, MTEPERM, 0, 4)
> -FIELD(ID_AA64PFR2, MTESTOREONLY, 4, 4)
> -FIELD(ID_AA64PFR2, MTEFAR, 8, 4)
> -FIELD(ID_AA64PFR2, GCIE, 12, 4)
> -FIELD(ID_AA64PFR2, FPMR, 32, 4)
> -
> -FIELD(ID_AA64MMFR0, PARANGE, 0, 4)
> -FIELD(ID_AA64MMFR0, ASIDBITS, 4, 4)
> -FIELD(ID_AA64MMFR0, BIGEND, 8, 4)
> -FIELD(ID_AA64MMFR0, SNSMEM, 12, 4)
> -FIELD(ID_AA64MMFR0, BIGENDEL0, 16, 4)
> -FIELD(ID_AA64MMFR0, TGRAN16, 20, 4)
> -FIELD(ID_AA64MMFR0, TGRAN64, 24, 4)
> -FIELD(ID_AA64MMFR0, TGRAN4, 28, 4)
> -FIELD(ID_AA64MMFR0, TGRAN16_2, 32, 4)
> -FIELD(ID_AA64MMFR0, TGRAN64_2, 36, 4)
> -FIELD(ID_AA64MMFR0, TGRAN4_2, 40, 4)
> -FIELD(ID_AA64MMFR0, EXS, 44, 4)
> -FIELD(ID_AA64MMFR0, FGT, 56, 4)
> -FIELD(ID_AA64MMFR0, ECV, 60, 4)
> -
> -FIELD(ID_AA64MMFR1, HAFDBS, 0, 4)
> -FIELD(ID_AA64MMFR1, VMIDBITS, 4, 4)
> -FIELD(ID_AA64MMFR1, VH, 8, 4)
> -FIELD(ID_AA64MMFR1, HPDS, 12, 4)
> -FIELD(ID_AA64MMFR1, LO, 16, 4)
> -FIELD(ID_AA64MMFR1, PAN, 20, 4)
> -FIELD(ID_AA64MMFR1, SPECSEI, 24, 4)
> -FIELD(ID_AA64MMFR1, XNX, 28, 4)
> -FIELD(ID_AA64MMFR1, TWED, 32, 4)
> -FIELD(ID_AA64MMFR1, ETS, 36, 4)
> -FIELD(ID_AA64MMFR1, HCX, 40, 4)
> -FIELD(ID_AA64MMFR1, AFP, 44, 4)
> -FIELD(ID_AA64MMFR1, NTLBPA, 48, 4)
> -FIELD(ID_AA64MMFR1, TIDCP1, 52, 4)
> -FIELD(ID_AA64MMFR1, CMOW, 56, 4)
> -FIELD(ID_AA64MMFR1, ECBHB, 60, 4)
> -
> -FIELD(ID_AA64MMFR2, CNP, 0, 4)
> -FIELD(ID_AA64MMFR2, UAO, 4, 4)
> -FIELD(ID_AA64MMFR2, LSM, 8, 4)
> -FIELD(ID_AA64MMFR2, IESB, 12, 4)
> -FIELD(ID_AA64MMFR2, VARANGE, 16, 4)
> -FIELD(ID_AA64MMFR2, CCIDX, 20, 4)
> -FIELD(ID_AA64MMFR2, NV, 24, 4)
> -FIELD(ID_AA64MMFR2, ST, 28, 4)
> -FIELD(ID_AA64MMFR2, AT, 32, 4)
> -FIELD(ID_AA64MMFR2, IDS, 36, 4)
> -FIELD(ID_AA64MMFR2, FWB, 40, 4)
> -FIELD(ID_AA64MMFR2, TTL, 48, 4)
> -FIELD(ID_AA64MMFR2, BBM, 52, 4)
> -FIELD(ID_AA64MMFR2, EVT, 56, 4)
> -FIELD(ID_AA64MMFR2, E0PD, 60, 4)
> -
> -FIELD(ID_AA64MMFR3, TCRX, 0, 4)
> -FIELD(ID_AA64MMFR3, SCTLRX, 4, 4)
> -FIELD(ID_AA64MMFR3, S1PIE, 8, 4)
> -FIELD(ID_AA64MMFR3, S2PIE, 12, 4)
> -FIELD(ID_AA64MMFR3, S1POE, 16, 4)
> -FIELD(ID_AA64MMFR3, S2POE, 20, 4)
> -FIELD(ID_AA64MMFR3, AIE, 24, 4)
> -FIELD(ID_AA64MMFR3, MEC, 28, 4)
> -FIELD(ID_AA64MMFR3, D128, 32, 4)
> -FIELD(ID_AA64MMFR3, D128_2, 36, 4)
> -FIELD(ID_AA64MMFR3, SNERR, 40, 4)
> -FIELD(ID_AA64MMFR3, ANERR, 44, 4)
> -FIELD(ID_AA64MMFR3, SDERR, 52, 4)
> -FIELD(ID_AA64MMFR3, ADERR, 56, 4)
> -FIELD(ID_AA64MMFR3, SPEC_FPACC, 60, 4)
> -
> -FIELD(ID_AA64MMFR4, POPS, 0, 4)
> -FIELD(ID_AA64MMFR4, EIESB, 4, 4)
> -FIELD(ID_AA64MMFR4, ASID2, 8, 4)
> -FIELD(ID_AA64MMFR4, HACDBS, 12, 4)
> -FIELD(ID_AA64MMFR4, FGWTE3, 16, 4)
> -FIELD(ID_AA64MMFR4, NV_FRAC, 20, 4)
> -FIELD(ID_AA64MMFR4, E2H0, 24, 4)
> -FIELD(ID_AA64MMFR4, RMEGDI, 28, 4)
> -FIELD(ID_AA64MMFR4, E3DSE, 36, 4)
> -FIELD(ID_AA64MMFR4, SRMASK, 44, 4)
> -
> -FIELD(ID_AA64DFR0, DEBUGVER, 0, 4)
> -FIELD(ID_AA64DFR0, TRACEVER, 4, 4)
> -FIELD(ID_AA64DFR0, PMUVER, 8, 4)
> -FIELD(ID_AA64DFR0, BRPS, 12, 4)
> -FIELD(ID_AA64DFR0, PMSS, 16, 4)
> -FIELD(ID_AA64DFR0, WRPS, 20, 4)
> -FIELD(ID_AA64DFR0, SEBEP, 24, 4)
> -FIELD(ID_AA64DFR0, CTX_CMPS, 28, 4)
> -FIELD(ID_AA64DFR0, PMSVER, 32, 4)
> -FIELD(ID_AA64DFR0, DOUBLELOCK, 36, 4)
> -FIELD(ID_AA64DFR0, TRACEFILT, 40, 4)
> -FIELD(ID_AA64DFR0, TRACEBUFFER, 44, 4)
> -FIELD(ID_AA64DFR0, MTPMU, 48, 4)
> -FIELD(ID_AA64DFR0, BRBE, 52, 4)
> -FIELD(ID_AA64DFR0, EXTTRCBUFF, 56, 4)
> -FIELD(ID_AA64DFR0, HPMN0, 60, 4)
> -
> -FIELD(ID_AA64ZFR0, SVEVER, 0, 4)
> -FIELD(ID_AA64ZFR0, AES, 4, 4)
> -FIELD(ID_AA64ZFR0, ELTPERM, 12, 4)
> -FIELD(ID_AA64ZFR0, BITPERM, 16, 4)
> -FIELD(ID_AA64ZFR0, BFLOAT16, 20, 4)
> -FIELD(ID_AA64ZFR0, B16B16, 24, 4)
> -FIELD(ID_AA64ZFR0, SHA3, 32, 4)
> -FIELD(ID_AA64ZFR0, SM4, 40, 4)
> -FIELD(ID_AA64ZFR0, I8MM, 44, 4)
> -FIELD(ID_AA64ZFR0, F16MM, 48, 4)
> -FIELD(ID_AA64ZFR0, F32MM, 52, 4)
> -FIELD(ID_AA64ZFR0, F64MM, 56, 4)
> -
> -FIELD(ID_AA64SMFR0, F32F32, 32, 1)
> -FIELD(ID_AA64SMFR0, BI32I32, 33, 1)
> -FIELD(ID_AA64SMFR0, B16F32, 34, 1)
> -FIELD(ID_AA64SMFR0, F16F32, 35, 1)
> -FIELD(ID_AA64SMFR0, I8I32, 36, 4)
> -FIELD(ID_AA64SMFR0, F16F16, 42, 1)
> -FIELD(ID_AA64SMFR0, B16B16, 43, 1)
> -FIELD(ID_AA64SMFR0, I16I32, 44, 4)
> -FIELD(ID_AA64SMFR0, F64F64, 48, 1)
> -FIELD(ID_AA64SMFR0, I16I64, 52, 4)
> -FIELD(ID_AA64SMFR0, SMEVER, 56, 4)
> -FIELD(ID_AA64SMFR0, FA64, 63, 1)
> +/*
> + * Expand FIELD() declarations for every ID register field listed in
> + * cpu-idregs.h.inc .
> + */
> +#define IDREG_START(reg)
> +#define IDREG_END(reg)
> +#define IDREG_FIELD_ARCH_VAL(v, n)
> +#define IDREG_FIELD_ARCH_VAL_ANY
> +#define IDREG_FIELD_END(reg, field)
> +#define IDREG_FIELD_START(reg, field, _shift, _length, safe, defval) \
> +    FIELD(reg, field, _shift, _length)
> +#include "cpu-idregs.h.inc"
> +#undef IDREG_FIELD_START
> +#undef IDREG_FIELD_END
> +#undef IDREG_FIELD_ARCH_VAL_ANY
> +#undef IDREG_FIELD_ARCH_VAL
> +#undef IDREG_END
> +#undef IDREG_START
>  
>  FIELD(ID_DFR0, COPDBG, 0, 4)
>  FIELD(ID_DFR0, COPSDBG, 4, 4)


Reply via email to