[PATCH 3/6] target/arm: Add FGWTE3 FGT bit definitions
Richard Henderson <[email protected]> Thu, 23 Jul 2026 20:06:13 -0700
| Newsgroups | org.nongnu.qemu-arm,org.nongnu.qemu-devel |
|---|---|
| Message-ID | <[email protected]> |
Signed-off-by: Richard Henderson <[email protected]> --- target/arm/cpregs.h | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/target/arm/cpregs.h b/target/arm/cpregs.h index 2c9927b1d9..9f2532fe66 100644 --- a/target/arm/cpregs.h +++ b/target/arm/cpregs.h @@ -728,6 +728,9 @@ FIELD(FGT, BITPOS, 0, 6) /* Bit position within the uint64_t */ #define DO_BIT(REG, BITNAME) \ FGT_##BITNAME = FGT_##REG | R_##REG##_EL2_##BITNAME##_SHIFT +#define DO_EL3_BIT(REG, BITNAME) \ + FGT_##BITNAME = FGT_##REG | R_##REG##_EL3_##BITNAME##_SHIFT + /* Some bits have reversed sense, so 0 means trap and 1 means not */ #define DO_REV_BIT(REG, BITNAME) \ FGT_##BITNAME = FGT_##REG | FGT_REV | R_##REG##_EL2_##BITNAME##_SHIFT @@ -787,6 +790,7 @@ 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), + FGT_FGWTE3 = FGT_W | (FGTREG_FGWTE3 << R_FGT_IDX_SHIFT), /* Trap bits in HFGRTR_EL2 / HFGWTR_EL2, starting from bit 0. */ DO_BIT(HFGRTR, AFSR0_EL1), @@ -919,10 +923,37 @@ typedef enum FGTBit { DO_REV_BIT(HFGITR, NGCSPUSHM_EL1), DO_REV_BIT(HFGITR, NGCSEPP), DO_BIT(HFGITR, ATS1E1A), + + /* Trap bits in FGWTE3_EL3, starting from bit 0 */ + DO_EL3_BIT(FGWTE3, ACTLR_EL3), + DO_EL3_BIT(FGWTE3, AFSR0_EL3), + DO_EL3_BIT(FGWTE3, AFSR1_EL3), + DO_EL3_BIT(FGWTE3, AMAIR_EL3), + DO_EL3_BIT(FGWTE3, AMAIR2_EL3), + DO_EL3_BIT(FGWTE3, GCSCR_EL3), + DO_EL3_BIT(FGWTE3, GCSPR_EL3), + DO_EL3_BIT(FGWTE3, GPCCR_EL3), + DO_EL3_BIT(FGWTE3, GPTBR_EL3), + DO_EL3_BIT(FGWTE3, MAIR_EL3), + DO_EL3_BIT(FGWTE3, MAIR2_EL3), + DO_EL3_BIT(FGWTE3, MDCR_EL3), + DO_EL3_BIT(FGWTE3, MECID_RL_A_EL3), + DO_EL3_BIT(FGWTE3, MPAM3_EL3), + DO_EL3_BIT(FGWTE3, PIR_EL3), + DO_EL3_BIT(FGWTE3, SCTLR_EL3), + DO_EL3_BIT(FGWTE3, SCTLR2_EL3), + DO_EL3_BIT(FGWTE3, SPMROOTCR_EL3), + DO_EL3_BIT(FGWTE3, TCR_EL3), + DO_EL3_BIT(FGWTE3, TPIDR_EL3), + DO_EL3_BIT(FGWTE3, TTBR0_EL3), + DO_EL3_BIT(FGWTE3, VBAR_EL3), + DO_EL3_BIT(FGWTE3, GPCBW_EL3), } FGTBit; #undef DO_BIT +#undef DO_EL3_BIT #undef DO_REV_BIT +#undef DO_TLBINXS_BIT typedef struct ARMCPRegInfo ARMCPRegInfo; -- 2.43.0