target/arm: Mark up sysregs for HFGRTR bits 0..11
Mark up the sysreg definitions for the registers trapped by HFGRTR/HFGWTR bits 0..11. 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-11-peter.maydell@linaro.org Message-id: 20230127175507.2895013-11-peter.maydell@linaro.org
This commit is contained in:
parent
361c33f6b8
commit
158c276c74
@ -577,6 +577,20 @@ typedef enum FGTBit {
|
||||
FGT_HDFGRTR = FGT_RW | (FGTREG_HDFGRTR << R_FGT_IDX_SHIFT),
|
||||
FGT_HDFGWTR = FGT_W | (FGTREG_HDFGWTR << R_FGT_IDX_SHIFT),
|
||||
FGT_HFGITR = FGT_EXEC | (FGTREG_HFGITR << R_FGT_IDX_SHIFT),
|
||||
|
||||
/* Trap bits in HFGRTR_EL2 / HFGWTR_EL2, starting from bit 0. */
|
||||
DO_BIT(HFGRTR, AFSR0_EL1),
|
||||
DO_BIT(HFGRTR, AFSR1_EL1),
|
||||
DO_BIT(HFGRTR, AIDR_EL1),
|
||||
DO_BIT(HFGRTR, AMAIR_EL1),
|
||||
DO_BIT(HFGRTR, APDAKEY),
|
||||
DO_BIT(HFGRTR, APDBKEY),
|
||||
DO_BIT(HFGRTR, APGAKEY),
|
||||
DO_BIT(HFGRTR, APIAKEY),
|
||||
DO_BIT(HFGRTR, APIBKEY),
|
||||
DO_BIT(HFGRTR, CCSIDR_EL1),
|
||||
DO_BIT(HFGRTR, CLIDR_EL1),
|
||||
DO_BIT(HFGRTR, CONTEXTIDR_EL1),
|
||||
} FGTBit;
|
||||
|
||||
#undef DO_BIT
|
||||
|
@ -633,6 +633,7 @@ static const ARMCPRegInfo cp_reginfo[] = {
|
||||
{ .name = "CONTEXTIDR_EL1", .state = ARM_CP_STATE_BOTH,
|
||||
.opc0 = 3, .opc1 = 0, .crn = 13, .crm = 0, .opc2 = 1,
|
||||
.access = PL1_RW, .accessfn = access_tvm_trvm,
|
||||
.fgt = FGT_CONTEXTIDR_EL1,
|
||||
.secure = ARM_CP_SECSTATE_NS,
|
||||
.fieldoffset = offsetof(CPUARMState, cp15.contextidr_el[1]),
|
||||
.resetvalue = 0, .writefn = contextidr_write, .raw_writefn = raw_write, },
|
||||
@ -2163,6 +2164,7 @@ static const ARMCPRegInfo v7_cp_reginfo[] = {
|
||||
.opc0 = 3, .crn = 0, .crm = 0, .opc1 = 1, .opc2 = 0,
|
||||
.access = PL1_R,
|
||||
.accessfn = access_tid4,
|
||||
.fgt = FGT_CCSIDR_EL1,
|
||||
.readfn = ccsidr_read, .type = ARM_CP_NO_RAW },
|
||||
{ .name = "CSSELR", .state = ARM_CP_STATE_BOTH,
|
||||
.opc0 = 3, .crn = 0, .crm = 0, .opc1 = 2, .opc2 = 0,
|
||||
@ -2179,6 +2181,7 @@ static const ARMCPRegInfo v7_cp_reginfo[] = {
|
||||
.opc0 = 3, .opc1 = 1, .crn = 0, .crm = 0, .opc2 = 7,
|
||||
.access = PL1_R, .type = ARM_CP_CONST,
|
||||
.accessfn = access_aa64_tid1,
|
||||
.fgt = FGT_AIDR_EL1,
|
||||
.resetvalue = 0 },
|
||||
/*
|
||||
* Auxiliary fault status registers: these also are IMPDEF, and we
|
||||
@ -2187,10 +2190,12 @@ static const ARMCPRegInfo v7_cp_reginfo[] = {
|
||||
{ .name = "AFSR0_EL1", .state = ARM_CP_STATE_BOTH,
|
||||
.opc0 = 3, .opc1 = 0, .crn = 5, .crm = 1, .opc2 = 0,
|
||||
.access = PL1_RW, .accessfn = access_tvm_trvm,
|
||||
.fgt = FGT_AFSR0_EL1,
|
||||
.type = ARM_CP_CONST, .resetvalue = 0 },
|
||||
{ .name = "AFSR1_EL1", .state = ARM_CP_STATE_BOTH,
|
||||
.opc0 = 3, .opc1 = 0, .crn = 5, .crm = 1, .opc2 = 1,
|
||||
.access = PL1_RW, .accessfn = access_tvm_trvm,
|
||||
.fgt = FGT_AFSR1_EL1,
|
||||
.type = ARM_CP_CONST, .resetvalue = 0 },
|
||||
/*
|
||||
* MAIR can just read-as-written because we don't implement caches
|
||||
@ -4392,6 +4397,7 @@ static const ARMCPRegInfo lpae_cp_reginfo[] = {
|
||||
{ .name = "AMAIR0", .state = ARM_CP_STATE_BOTH,
|
||||
.opc0 = 3, .crn = 10, .crm = 3, .opc1 = 0, .opc2 = 0,
|
||||
.access = PL1_RW, .accessfn = access_tvm_trvm,
|
||||
.fgt = FGT_AMAIR_EL1,
|
||||
.type = ARM_CP_CONST, .resetvalue = 0 },
|
||||
/* AMAIR1 is mapped to AMAIR_EL1[63:32] */
|
||||
{ .name = "AMAIR1", .cp = 15, .crn = 10, .crm = 3, .opc1 = 0, .opc2 = 1,
|
||||
@ -7041,42 +7047,52 @@ static const ARMCPRegInfo pauth_reginfo[] = {
|
||||
{ .name = "APDAKEYLO_EL1", .state = ARM_CP_STATE_AA64,
|
||||
.opc0 = 3, .opc1 = 0, .crn = 2, .crm = 2, .opc2 = 0,
|
||||
.access = PL1_RW, .accessfn = access_pauth,
|
||||
.fgt = FGT_APDAKEY,
|
||||
.fieldoffset = offsetof(CPUARMState, keys.apda.lo) },
|
||||
{ .name = "APDAKEYHI_EL1", .state = ARM_CP_STATE_AA64,
|
||||
.opc0 = 3, .opc1 = 0, .crn = 2, .crm = 2, .opc2 = 1,
|
||||
.access = PL1_RW, .accessfn = access_pauth,
|
||||
.fgt = FGT_APDAKEY,
|
||||
.fieldoffset = offsetof(CPUARMState, keys.apda.hi) },
|
||||
{ .name = "APDBKEYLO_EL1", .state = ARM_CP_STATE_AA64,
|
||||
.opc0 = 3, .opc1 = 0, .crn = 2, .crm = 2, .opc2 = 2,
|
||||
.access = PL1_RW, .accessfn = access_pauth,
|
||||
.fgt = FGT_APDBKEY,
|
||||
.fieldoffset = offsetof(CPUARMState, keys.apdb.lo) },
|
||||
{ .name = "APDBKEYHI_EL1", .state = ARM_CP_STATE_AA64,
|
||||
.opc0 = 3, .opc1 = 0, .crn = 2, .crm = 2, .opc2 = 3,
|
||||
.access = PL1_RW, .accessfn = access_pauth,
|
||||
.fgt = FGT_APDBKEY,
|
||||
.fieldoffset = offsetof(CPUARMState, keys.apdb.hi) },
|
||||
{ .name = "APGAKEYLO_EL1", .state = ARM_CP_STATE_AA64,
|
||||
.opc0 = 3, .opc1 = 0, .crn = 2, .crm = 3, .opc2 = 0,
|
||||
.access = PL1_RW, .accessfn = access_pauth,
|
||||
.fgt = FGT_APGAKEY,
|
||||
.fieldoffset = offsetof(CPUARMState, keys.apga.lo) },
|
||||
{ .name = "APGAKEYHI_EL1", .state = ARM_CP_STATE_AA64,
|
||||
.opc0 = 3, .opc1 = 0, .crn = 2, .crm = 3, .opc2 = 1,
|
||||
.access = PL1_RW, .accessfn = access_pauth,
|
||||
.fgt = FGT_APGAKEY,
|
||||
.fieldoffset = offsetof(CPUARMState, keys.apga.hi) },
|
||||
{ .name = "APIAKEYLO_EL1", .state = ARM_CP_STATE_AA64,
|
||||
.opc0 = 3, .opc1 = 0, .crn = 2, .crm = 1, .opc2 = 0,
|
||||
.access = PL1_RW, .accessfn = access_pauth,
|
||||
.fgt = FGT_APIAKEY,
|
||||
.fieldoffset = offsetof(CPUARMState, keys.apia.lo) },
|
||||
{ .name = "APIAKEYHI_EL1", .state = ARM_CP_STATE_AA64,
|
||||
.opc0 = 3, .opc1 = 0, .crn = 2, .crm = 1, .opc2 = 1,
|
||||
.access = PL1_RW, .accessfn = access_pauth,
|
||||
.fgt = FGT_APIAKEY,
|
||||
.fieldoffset = offsetof(CPUARMState, keys.apia.hi) },
|
||||
{ .name = "APIBKEYLO_EL1", .state = ARM_CP_STATE_AA64,
|
||||
.opc0 = 3, .opc1 = 0, .crn = 2, .crm = 1, .opc2 = 2,
|
||||
.access = PL1_RW, .accessfn = access_pauth,
|
||||
.fgt = FGT_APIBKEY,
|
||||
.fieldoffset = offsetof(CPUARMState, keys.apib.lo) },
|
||||
{ .name = "APIBKEYHI_EL1", .state = ARM_CP_STATE_AA64,
|
||||
.opc0 = 3, .opc1 = 0, .crn = 2, .crm = 1, .opc2 = 3,
|
||||
.access = PL1_RW, .accessfn = access_pauth,
|
||||
.fgt = FGT_APIBKEY,
|
||||
.fieldoffset = offsetof(CPUARMState, keys.apib.hi) },
|
||||
};
|
||||
|
||||
@ -7940,6 +7956,7 @@ void register_cp_regs_for_features(ARMCPU *cpu)
|
||||
.opc0 = 3, .crn = 0, .crm = 0, .opc1 = 1, .opc2 = 1,
|
||||
.access = PL1_R, .type = ARM_CP_CONST,
|
||||
.accessfn = access_tid4,
|
||||
.fgt = FGT_CLIDR_EL1,
|
||||
.resetvalue = cpu->clidr
|
||||
};
|
||||
define_one_arm_cp_reg(cpu, &clidr);
|
||||
|
Loading…
Reference in New Issue
Block a user