target/arm: Mark up sysregs for HFGRTR bits 24..35
Mark up the sysreg definitions for the registers trapped by HFGRTR/HFGWTR bits 24..35. Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Tested-by: Fuad Tabba <tabba@google.com> Message-id: 20230130182459.3309057-13-peter.maydell@linaro.org Message-id: 20230127175507.2895013-13-peter.maydell@linaro.org
This commit is contained in:
parent
b19ed03c4c
commit
67dd80306c
@ -603,6 +603,18 @@ typedef enum FGTBit {
|
||||
DO_BIT(HFGRTR, LORID_EL1),
|
||||
DO_BIT(HFGRTR, LORN_EL1),
|
||||
DO_BIT(HFGRTR, LORSA_EL1),
|
||||
DO_BIT(HFGRTR, MAIR_EL1),
|
||||
DO_BIT(HFGRTR, MIDR_EL1),
|
||||
DO_BIT(HFGRTR, MPIDR_EL1),
|
||||
DO_BIT(HFGRTR, PAR_EL1),
|
||||
DO_BIT(HFGRTR, REVIDR_EL1),
|
||||
DO_BIT(HFGRTR, SCTLR_EL1),
|
||||
DO_BIT(HFGRTR, SCXTNUM_EL1),
|
||||
DO_BIT(HFGRTR, SCXTNUM_EL0),
|
||||
DO_BIT(HFGRTR, TCR_EL1),
|
||||
DO_BIT(HFGRTR, TPIDR_EL1),
|
||||
DO_BIT(HFGRTR, TPIDRRO_EL0),
|
||||
DO_BIT(HFGRTR, TPIDR_EL0),
|
||||
} FGTBit;
|
||||
|
||||
#undef DO_BIT
|
||||
|
@ -2206,6 +2206,7 @@ static const ARMCPRegInfo v7_cp_reginfo[] = {
|
||||
{ .name = "MAIR_EL1", .state = ARM_CP_STATE_AA64,
|
||||
.opc0 = 3, .opc1 = 0, .crn = 10, .crm = 2, .opc2 = 0,
|
||||
.access = PL1_RW, .accessfn = access_tvm_trvm,
|
||||
.fgt = FGT_MAIR_EL1,
|
||||
.fieldoffset = offsetof(CPUARMState, cp15.mair_el[1]),
|
||||
.resetvalue = 0 },
|
||||
{ .name = "MAIR_EL3", .state = ARM_CP_STATE_AA64,
|
||||
@ -2349,25 +2350,30 @@ static const ARMCPRegInfo v6k_cp_reginfo[] = {
|
||||
{ .name = "TPIDR_EL0", .state = ARM_CP_STATE_AA64,
|
||||
.opc0 = 3, .opc1 = 3, .opc2 = 2, .crn = 13, .crm = 0,
|
||||
.access = PL0_RW,
|
||||
.fgt = FGT_TPIDR_EL0,
|
||||
.fieldoffset = offsetof(CPUARMState, cp15.tpidr_el[0]), .resetvalue = 0 },
|
||||
{ .name = "TPIDRURW", .cp = 15, .crn = 13, .crm = 0, .opc1 = 0, .opc2 = 2,
|
||||
.access = PL0_RW,
|
||||
.fgt = FGT_TPIDR_EL0,
|
||||
.bank_fieldoffsets = { offsetoflow32(CPUARMState, cp15.tpidrurw_s),
|
||||
offsetoflow32(CPUARMState, cp15.tpidrurw_ns) },
|
||||
.resetfn = arm_cp_reset_ignore },
|
||||
{ .name = "TPIDRRO_EL0", .state = ARM_CP_STATE_AA64,
|
||||
.opc0 = 3, .opc1 = 3, .opc2 = 3, .crn = 13, .crm = 0,
|
||||
.access = PL0_R | PL1_W,
|
||||
.fgt = FGT_TPIDRRO_EL0,
|
||||
.fieldoffset = offsetof(CPUARMState, cp15.tpidrro_el[0]),
|
||||
.resetvalue = 0},
|
||||
{ .name = "TPIDRURO", .cp = 15, .crn = 13, .crm = 0, .opc1 = 0, .opc2 = 3,
|
||||
.access = PL0_R | PL1_W,
|
||||
.fgt = FGT_TPIDRRO_EL0,
|
||||
.bank_fieldoffsets = { offsetoflow32(CPUARMState, cp15.tpidruro_s),
|
||||
offsetoflow32(CPUARMState, cp15.tpidruro_ns) },
|
||||
.resetfn = arm_cp_reset_ignore },
|
||||
{ .name = "TPIDR_EL1", .state = ARM_CP_STATE_AA64,
|
||||
.opc0 = 3, .opc1 = 0, .opc2 = 4, .crn = 13, .crm = 0,
|
||||
.access = PL1_RW,
|
||||
.fgt = FGT_TPIDR_EL1,
|
||||
.fieldoffset = offsetof(CPUARMState, cp15.tpidr_el[1]), .resetvalue = 0 },
|
||||
{ .name = "TPIDRPRW", .opc1 = 0, .cp = 15, .crn = 13, .crm = 0, .opc2 = 4,
|
||||
.access = PL1_RW,
|
||||
@ -4164,6 +4170,7 @@ static const ARMCPRegInfo vmsa_cp_reginfo[] = {
|
||||
{ .name = "TCR_EL1", .state = ARM_CP_STATE_AA64,
|
||||
.opc0 = 3, .crn = 2, .crm = 0, .opc1 = 0, .opc2 = 2,
|
||||
.access = PL1_RW, .accessfn = access_tvm_trvm,
|
||||
.fgt = FGT_TCR_EL1,
|
||||
.writefn = vmsa_tcr_el12_write,
|
||||
.raw_writefn = raw_write,
|
||||
.resetvalue = 0,
|
||||
@ -5399,6 +5406,7 @@ static const ARMCPRegInfo v8_cp_reginfo[] = {
|
||||
.type = ARM_CP_ALIAS,
|
||||
.opc0 = 3, .opc1 = 0, .crn = 7, .crm = 4, .opc2 = 0,
|
||||
.access = PL1_RW, .resetvalue = 0,
|
||||
.fgt = FGT_PAR_EL1,
|
||||
.fieldoffset = offsetof(CPUARMState, cp15.par_el[1]),
|
||||
.writefn = par_write },
|
||||
#endif
|
||||
@ -7562,10 +7570,12 @@ static const ARMCPRegInfo scxtnum_reginfo[] = {
|
||||
{ .name = "SCXTNUM_EL0", .state = ARM_CP_STATE_AA64,
|
||||
.opc0 = 3, .opc1 = 3, .crn = 13, .crm = 0, .opc2 = 7,
|
||||
.access = PL0_RW, .accessfn = access_scxtnum,
|
||||
.fgt = FGT_SCXTNUM_EL0,
|
||||
.fieldoffset = offsetof(CPUARMState, scxtnum_el[0]) },
|
||||
{ .name = "SCXTNUM_EL1", .state = ARM_CP_STATE_AA64,
|
||||
.opc0 = 3, .opc1 = 0, .crn = 13, .crm = 0, .opc2 = 7,
|
||||
.access = PL1_RW, .accessfn = access_scxtnum,
|
||||
.fgt = FGT_SCXTNUM_EL1,
|
||||
.fieldoffset = offsetof(CPUARMState, scxtnum_el[1]) },
|
||||
{ .name = "SCXTNUM_EL2", .state = ARM_CP_STATE_AA64,
|
||||
.opc0 = 3, .opc1 = 4, .crn = 13, .crm = 0, .opc2 = 7,
|
||||
@ -8604,6 +8614,7 @@ void register_cp_regs_for_features(ARMCPU *cpu)
|
||||
{ .name = "MIDR_EL1", .state = ARM_CP_STATE_BOTH,
|
||||
.opc0 = 3, .opc1 = 0, .crn = 0, .crm = 0, .opc2 = 0,
|
||||
.access = PL1_R, .type = ARM_CP_NO_RAW, .resetvalue = cpu->midr,
|
||||
.fgt = FGT_MIDR_EL1,
|
||||
.fieldoffset = offsetof(CPUARMState, cp15.c0_cpuid),
|
||||
.readfn = midr_read },
|
||||
/* crn = 0 op1 = 0 crm = 0 op2 = 7 : AArch32 aliases of MIDR */
|
||||
@ -8614,6 +8625,7 @@ void register_cp_regs_for_features(ARMCPU *cpu)
|
||||
.opc0 = 3, .opc1 = 0, .crn = 0, .crm = 0, .opc2 = 6,
|
||||
.access = PL1_R,
|
||||
.accessfn = access_aa64_tid1,
|
||||
.fgt = FGT_REVIDR_EL1,
|
||||
.type = ARM_CP_CONST, .resetvalue = cpu->revidr },
|
||||
};
|
||||
ARMCPRegInfo id_v8_midr_alias_cp_reginfo = {
|
||||
@ -8785,6 +8797,7 @@ void register_cp_regs_for_features(ARMCPU *cpu)
|
||||
ARMCPRegInfo mpidr_cp_reginfo[] = {
|
||||
{ .name = "MPIDR_EL1", .state = ARM_CP_STATE_BOTH,
|
||||
.opc0 = 3, .crn = 0, .crm = 0, .opc1 = 0, .opc2 = 5,
|
||||
.fgt = FGT_MPIDR_EL1,
|
||||
.access = PL1_R, .readfn = mpidr_read, .type = ARM_CP_NO_RAW },
|
||||
};
|
||||
#ifdef CONFIG_USER_ONLY
|
||||
@ -8884,6 +8897,7 @@ void register_cp_regs_for_features(ARMCPU *cpu)
|
||||
.name = "SCTLR", .state = ARM_CP_STATE_BOTH,
|
||||
.opc0 = 3, .opc1 = 0, .crn = 1, .crm = 0, .opc2 = 0,
|
||||
.access = PL1_RW, .accessfn = access_tvm_trvm,
|
||||
.fgt = FGT_SCTLR_EL1,
|
||||
.bank_fieldoffsets = { offsetof(CPUARMState, cp15.sctlr_s),
|
||||
offsetof(CPUARMState, cp15.sctlr_ns) },
|
||||
.writefn = sctlr_write, .resetvalue = cpu->reset_sctlr,
|
||||
|
Loading…
Reference in New Issue
Block a user