NEEDS_FEAT_FLAG
NEEDS_FEAT_FLAG(HCR_EL2_E2H, RES1_WHEN_E2H1 | FORCE_RESx),
#define NEEDS_FEAT(m, ...) NEEDS_FEAT_FLAG(m, 0, __VA_ARGS__)
NEEDS_FEAT_FLAG(TCR2_EL2_FNG1 |
#define FORCE_RES0(m) NEEDS_FEAT_FLAG(m, FORCE_RESx)
NEEDS_FEAT_FLAG(TCR2_EL2_DisCH1 |
NEEDS_FEAT_FLAG(TCR2_EL2_AMEC1, REQUIRES_E2H1, FEAT_MEC),
#define FORCE_RES1(m) NEEDS_FEAT_FLAG(m, FORCE_RESx | AS_RES1)
NEEDS_FEAT_FLAG(SCTLR_EL1_ITD |
NEEDS_FEAT_FLAG(SCTLR_EL1_TSCXT,
NEEDS_FEAT_FLAG(SCTLR_EL1_EIS |
NEEDS_FEAT_FLAG(SCTLR_EL1_LSMAOE |
NEEDS_FEAT_FLAG(SCTLR_EL1_SPAN,
NEEDS_FEAT_FLAG(SCTLR_EL2_CP15BEN,
NEEDS_FEAT_FLAG(SCTLR_EL2_ITD |
NEEDS_FEAT_FLAG(SCTLR_EL2_BT0, REQUIRES_E2H1, FEAT_BTI),
NEEDS_FEAT_FLAG(SCTLR_EL2_CMOW, REQUIRES_E2H1, FEAT_CMOW),
NEEDS_FEAT_FLAG(SCTLR_EL2_TSCXT,
NEEDS_FEAT_FLAG(SCTLR_EL2_EIS |
NEEDS_FEAT_FLAG(SCTLR_EL2_EnALS, REQUIRES_E2H1, FEAT_LS64),
NEEDS_FEAT_FLAG(SCTLR_EL2_EnAS0, REQUIRES_E2H1, FEAT_LS64_ACCDATA),
NEEDS_FEAT_FLAG(SCTLR_EL2_EnASR, REQUIRES_E2H1, FEAT_LS64_V),
NEEDS_FEAT_FLAG(SCTLR_EL2_LSMAOE |
NEEDS_FEAT_FLAG(SCTLR_EL2_E0E, REQUIRES_E2H1, feat_mixedendel0),
NEEDS_FEAT_FLAG(SCTLR_EL2_MSCEn, REQUIRES_E2H1, FEAT_MOPS),
NEEDS_FEAT_FLAG(SCTLR_EL2_ATA0 |
NEEDS_FEAT_FLAG(SCTLR_EL2_TCSO0, REQUIRES_E2H1, FEAT_MTE_STORE_ONLY),
NEEDS_FEAT_FLAG(SCTLR_EL2_SPAN, AS_RES1 | REQUIRES_E2H1, FEAT_PAN),
NEEDS_FEAT_FLAG(SCTLR_EL2_EPAN, REQUIRES_E2H1, FEAT_PAN3),
NEEDS_FEAT_FLAG(SCTLR_EL2_EnTP2, REQUIRES_E2H1, FEAT_SME),
NEEDS_FEAT_FLAG(SCTLR_EL2_TIDCP, REQUIRES_E2H1, FEAT_TIDCP1),
NEEDS_FEAT_FLAG(SCTLR_EL2_TWEDEL |
NEEDS_FEAT_FLAG(SCTLR_EL2_nTWE |
NEEDS_FEAT_FLAG(SCTLR_EL2_UCI |
NEEDS_FEAT_FLAG(HFGRTR_EL2_VBAR_EL1 |
NEEDS_FEAT_FLAG(HFGWTR_EL2_VBAR_EL1 |
NEEDS_FEAT_FLAG(HDFGRTR_EL2_OSDLR_EL1, NEVER_FGU,
NEEDS_FEAT_FLAG(HDFGRTR_EL2_OSECCR_EL1 |
NEEDS_FEAT_FLAG(HDFGWTR_EL2_OSDLR_EL1,
NEEDS_FEAT_FLAG(HDFGWTR_EL2_OSECCR_EL1 |
NEEDS_FEAT_FLAG(HFGITR_EL2_DCCVAC |
NEEDS_FEAT_FLAG(HCR_EL2_RW, AS_RES1, FEAT_AA32EL1),