@samitouri / QOSamiQemu / commits / 187304a617

target/arm: Implement ID_AA64ISAR3

Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org> Message-id: 20260522220306.235200-2-richard.henderson@linaro.org Signed-off-by: Peter Maydell <peter.maydell@linaro.org>

Richard Henderson committed May 22, 2026 at 15:02 UTC 187304a617bf9452f4882a7a5ac3513cb7d2a689
4 files changed +17 -2
target/arm/cpu-features.h
+9
@@ -244,6 +244,15 @@ FIELD(ID_AA64ISAR2, CSSC, 52, 4)
244 FIELD(ID_AA64ISAR2, LUT, 56, 4)
245 FIELD(ID_AA64ISAR2, ATS1A, 60, 4)
246
247 +FIELD(ID_AA64ISAR3, CPA, 0, 4)
248 +FIELD(ID_AA64ISAR3, FAMINMAX, 4, 4)
249 +FIELD(ID_AA64ISAR3, TLBIW, 8, 4)
250 +FIELD(ID_AA64ISAR3, PACM, 12, 4)
251 +FIELD(ID_AA64ISAR3, LSFE, 16, 4)
252 +FIELD(ID_AA64ISAR3, OCCMO, 20, 4)
253 +FIELD(ID_AA64ISAR3, LSUI, 24, 4)
254 +FIELD(ID_AA64ISAR3, FPRCVT, 28, 4)
255 +
256 FIELD(ID_AA64PFR0, EL0, 0, 4)
257 FIELD(ID_AA64PFR0, EL1, 4, 4)
258 FIELD(ID_AA64PFR0, EL2, 8, 4)
target/arm/cpu-sysregs.h.inc
+1
@@ -10,6 +10,7 @@ DEF(ID_AA64AFR1_EL1, 3, 0, 0, 5, 5)
10 DEF(ID_AA64ISAR0_EL1, 3, 0, 0, 6, 0)
11 DEF(ID_AA64ISAR1_EL1, 3, 0, 0, 6, 1)
12 DEF(ID_AA64ISAR2_EL1, 3, 0, 0, 6, 2)
13 +DEF(ID_AA64ISAR3_EL1, 3, 0, 0, 6, 3)
14 DEF(ID_AA64MMFR0_EL1, 3, 0, 0, 7, 0)
15 DEF(ID_AA64MMFR1_EL1, 3, 0, 0, 7, 1)
16 DEF(ID_AA64MMFR2_EL1, 3, 0, 0, 7, 2)
target/arm/cpu.c
+1
@@ -1747,6 +1747,7 @@ static void arm_clear_aarch64_idregs(ARMCPU *cpu)
1747 SET_IDREG(&cpu->isar, ID_AA64ISAR0, 0);
1748 SET_IDREG(&cpu->isar, ID_AA64ISAR1, 0);
1749 SET_IDREG(&cpu->isar, ID_AA64ISAR2, 0);
1750 + SET_IDREG(&cpu->isar, ID_AA64ISAR3, 0);
1751 SET_IDREG(&cpu->isar, ID_AA64PFR0, 0);
1752 SET_IDREG(&cpu->isar, ID_AA64PFR1, 0);
1753 SET_IDREG(&cpu->isar, ID_AA64PFR2, 0);
target/arm/helper.c
+6 -2
@@ -6519,11 +6519,11 @@ void register_cp_regs_for_features(ARMCPU *cpu)
6519 .access = PL1_R, .type = ARM_CP_CONST,
6520 .accessfn = access_tid3,
6521 .resetvalue = GET_IDREG(isar, ID_AA64ISAR2)},
6522 - { .name = "ID_AA64ISAR3_EL1_RESERVED", .state = ARM_CP_STATE_AA64,
6522 + { .name = "ID_AA64ISAR3_EL1", .state = ARM_CP_STATE_AA64,
6523 .opc0 = 3, .opc1 = 0, .crn = 0, .crm = 6, .opc2 = 3,
6524 .access = PL1_R, .type = ARM_CP_CONST,
6525 .accessfn = access_tid3,
6526 - .resetvalue = 0 },
6526 + .resetvalue = GET_IDREG(isar, ID_AA64ISAR3) },
6527 { .name = "ID_AA64ISAR4_EL1_RESERVED", .state = ARM_CP_STATE_AA64,
6528 .opc0 = 3, .opc1 = 0, .crn = 0, .crm = 6, .opc2 = 4,
6529 .access = PL1_R, .type = ARM_CP_CONST,
@@ -6752,6 +6752,10 @@ void register_cp_regs_for_features(ARMCPU *cpu)
6752 R_ID_AA64ISAR2_BC_MASK |
6753 R_ID_AA64ISAR2_RPRFM_MASK |
6754 R_ID_AA64ISAR2_CSSC_MASK },
6755 + { .name = "ID_AA64ISAR3_EL1",
6756 + .exported_bits = R_ID_AA64ISAR3_FAMINMAX_MASK |
6757 + R_ID_AA64ISAR3_LSFE_MASK |
6758 + R_ID_AA64ISAR3_FPRCVT_MASK },
6759 { .name = "ID_AA64ISAR*_EL1_RESERVED",
6760 .is_glob = true },
6761 };