mirror of https://github.com/xemu-project/xemu.git
target/arm: Mark up sysregs for HDFGRTR bits 0..11
Mark up the sysreg definitons for the registers trapped by HDFGRTR/HDFGWTR bits 0..11. These cover various debug related registers. 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-15-peter.maydell@linaro.org Message-id: 20230127175507.2895013-15-peter.maydell@linaro.org
This commit is contained in:
parent
bd8db7d905
commit
917b1405c1
|
@ -622,6 +622,18 @@ typedef enum FGTBit {
|
|||
DO_BIT(HFGRTR, ERRIDR_EL1),
|
||||
DO_REV_BIT(HFGRTR, NSMPRI_EL1),
|
||||
DO_REV_BIT(HFGRTR, NTPIDR2_EL0),
|
||||
|
||||
/* Trap bits in HDFGRTR_EL2 / HDFGWTR_EL2, starting from bit 0. */
|
||||
DO_BIT(HDFGRTR, DBGBCRN_EL1),
|
||||
DO_BIT(HDFGRTR, DBGBVRN_EL1),
|
||||
DO_BIT(HDFGRTR, DBGWCRN_EL1),
|
||||
DO_BIT(HDFGRTR, DBGWVRN_EL1),
|
||||
DO_BIT(HDFGRTR, MDSCR_EL1),
|
||||
DO_BIT(HDFGRTR, DBGCLAIM),
|
||||
DO_BIT(HDFGWTR, OSLAR_EL1),
|
||||
DO_BIT(HDFGRTR, OSLSR_EL1),
|
||||
DO_BIT(HDFGRTR, OSECCR_EL1),
|
||||
DO_BIT(HDFGRTR, OSDLR_EL1),
|
||||
} FGTBit;
|
||||
|
||||
#undef DO_BIT
|
||||
|
|
|
@ -672,6 +672,7 @@ static const ARMCPRegInfo debug_cp_reginfo[] = {
|
|||
{ .name = "MDSCR_EL1", .state = ARM_CP_STATE_BOTH,
|
||||
.cp = 14, .opc0 = 2, .opc1 = 0, .crn = 0, .crm = 2, .opc2 = 2,
|
||||
.access = PL1_RW, .accessfn = access_tda,
|
||||
.fgt = FGT_MDSCR_EL1,
|
||||
.fieldoffset = offsetof(CPUARMState, cp15.mdscr_el1),
|
||||
.resetvalue = 0 },
|
||||
/*
|
||||
|
@ -702,6 +703,7 @@ static const ARMCPRegInfo debug_cp_reginfo[] = {
|
|||
{ .name = "OSECCR_EL1", .state = ARM_CP_STATE_BOTH, .cp = 14,
|
||||
.opc0 = 2, .opc1 = 0, .crn = 0, .crm = 6, .opc2 = 2,
|
||||
.access = PL1_RW, .accessfn = access_tda,
|
||||
.fgt = FGT_OSECCR_EL1,
|
||||
.type = ARM_CP_CONST, .resetvalue = 0 },
|
||||
/*
|
||||
* DBGDSCRint[15,12,5:2] map to MDSCR_EL1[15,12,5:2]. Map all bits as
|
||||
|
@ -717,16 +719,19 @@ static const ARMCPRegInfo debug_cp_reginfo[] = {
|
|||
.cp = 14, .opc0 = 2, .opc1 = 0, .crn = 1, .crm = 0, .opc2 = 4,
|
||||
.access = PL1_W, .type = ARM_CP_NO_RAW,
|
||||
.accessfn = access_tdosa,
|
||||
.fgt = FGT_OSLAR_EL1,
|
||||
.writefn = oslar_write },
|
||||
{ .name = "OSLSR_EL1", .state = ARM_CP_STATE_BOTH,
|
||||
.cp = 14, .opc0 = 2, .opc1 = 0, .crn = 1, .crm = 1, .opc2 = 4,
|
||||
.access = PL1_R, .resetvalue = 10,
|
||||
.accessfn = access_tdosa,
|
||||
.fgt = FGT_OSLSR_EL1,
|
||||
.fieldoffset = offsetof(CPUARMState, cp15.oslsr_el1) },
|
||||
/* Dummy OSDLR_EL1: 32-bit Linux will read this */
|
||||
{ .name = "OSDLR_EL1", .state = ARM_CP_STATE_BOTH,
|
||||
.cp = 14, .opc0 = 2, .opc1 = 0, .crn = 1, .crm = 3, .opc2 = 4,
|
||||
.access = PL1_RW, .accessfn = access_tdosa,
|
||||
.fgt = FGT_OSDLR_EL1,
|
||||
.writefn = osdlr_write,
|
||||
.fieldoffset = offsetof(CPUARMState, cp15.osdlr_el1) },
|
||||
/*
|
||||
|
@ -763,10 +768,12 @@ static const ARMCPRegInfo debug_cp_reginfo[] = {
|
|||
.cp = 14, .opc0 = 2, .opc1 = 0, .crn = 7, .crm = 8, .opc2 = 6,
|
||||
.type = ARM_CP_ALIAS,
|
||||
.access = PL1_RW, .accessfn = access_tda,
|
||||
.fgt = FGT_DBGCLAIM,
|
||||
.writefn = dbgclaimset_write, .readfn = dbgclaimset_read },
|
||||
{ .name = "DBGCLAIMCLR_EL1", .state = ARM_CP_STATE_BOTH,
|
||||
.cp = 14, .opc0 = 2, .opc1 = 0, .crn = 7, .crm = 9, .opc2 = 6,
|
||||
.access = PL1_RW, .accessfn = access_tda,
|
||||
.fgt = FGT_DBGCLAIM,
|
||||
.writefn = dbgclaimclr_write, .raw_writefn = raw_write,
|
||||
.fieldoffset = offsetof(CPUARMState, cp15.dbgclaim) },
|
||||
};
|
||||
|
@ -1127,12 +1134,14 @@ void define_debug_regs(ARMCPU *cpu)
|
|||
{ .name = dbgbvr_el1_name, .state = ARM_CP_STATE_BOTH,
|
||||
.cp = 14, .opc0 = 2, .opc1 = 0, .crn = 0, .crm = i, .opc2 = 4,
|
||||
.access = PL1_RW, .accessfn = access_tda,
|
||||
.fgt = FGT_DBGBVRN_EL1,
|
||||
.fieldoffset = offsetof(CPUARMState, cp15.dbgbvr[i]),
|
||||
.writefn = dbgbvr_write, .raw_writefn = raw_write
|
||||
},
|
||||
{ .name = dbgbcr_el1_name, .state = ARM_CP_STATE_BOTH,
|
||||
.cp = 14, .opc0 = 2, .opc1 = 0, .crn = 0, .crm = i, .opc2 = 5,
|
||||
.access = PL1_RW, .accessfn = access_tda,
|
||||
.fgt = FGT_DBGBCRN_EL1,
|
||||
.fieldoffset = offsetof(CPUARMState, cp15.dbgbcr[i]),
|
||||
.writefn = dbgbcr_write, .raw_writefn = raw_write
|
||||
},
|
||||
|
@ -1149,12 +1158,14 @@ void define_debug_regs(ARMCPU *cpu)
|
|||
{ .name = dbgwvr_el1_name, .state = ARM_CP_STATE_BOTH,
|
||||
.cp = 14, .opc0 = 2, .opc1 = 0, .crn = 0, .crm = i, .opc2 = 6,
|
||||
.access = PL1_RW, .accessfn = access_tda,
|
||||
.fgt = FGT_DBGWVRN_EL1,
|
||||
.fieldoffset = offsetof(CPUARMState, cp15.dbgwvr[i]),
|
||||
.writefn = dbgwvr_write, .raw_writefn = raw_write
|
||||
},
|
||||
{ .name = dbgwcr_el1_name, .state = ARM_CP_STATE_BOTH,
|
||||
.cp = 14, .opc0 = 2, .opc1 = 0, .crn = 0, .crm = i, .opc2 = 7,
|
||||
.access = PL1_RW, .accessfn = access_tda,
|
||||
.fgt = FGT_DBGWCRN_EL1,
|
||||
.fieldoffset = offsetof(CPUARMState, cp15.dbgwcr[i]),
|
||||
.writefn = dbgwcr_write, .raw_writefn = raw_write
|
||||
},
|
||||
|
|
Loading…
Reference in New Issue