diff options
| author | Galen Williamson <galen@vector35.com> | 2025-03-25 21:27:51 -0400 |
|---|---|---|
| committer | Galen Williamson <galen@vector35.com> | 2025-03-31 18:31:33 -0400 |
| commit | b095215397ca8fe7e9808f312403ec4494de76f6 (patch) | |
| tree | 5eebe61a44d2f95aa5fadd78d9974234fca376be /arch/arm64 | |
| parent | 8093106217331012734564301118244748535715 (diff) | |
[aarch64] Updating Aarch64 system registers to 2024-12 spec, fix MSR/MRS lifting to use ReadMSR/WriteMSR intrinsics that take enums, removing the sysregs from the register list of the architecture
* sysregs are no longer registers, add enum for TLBI and AT operands
* add erroneously missing cases for unsupported encodings, add enum for DC operands
Diffstat (limited to 'arch/arm64')
| -rw-r--r-- | arch/arm64/CMakeLists.txt | 5 | ||||
| -rw-r--r-- | arch/arm64/arch_arm64.cpp | 262 | ||||
| -rw-r--r-- | arch/arm64/disassembler/decode.h | 266 | ||||
| -rw-r--r-- | arch/arm64/disassembler/decode2.c | 9 | ||||
| -rw-r--r-- | arch/arm64/disassembler/decode_fields32.c | 1 | ||||
| -rw-r--r-- | arch/arm64/disassembler/decode_scratchpad.c | 773 | ||||
| -rw-r--r-- | arch/arm64/disassembler/format.h | 2 | ||||
| -rw-r--r-- | arch/arm64/disassembler/pcode.c | 364 | ||||
| -rw-r--r-- | arch/arm64/disassembler/sysregs_fmt_gen.c | 1501 | ||||
| -rw-r--r-- | arch/arm64/disassembler/sysregs_fmt_gen.h | 12 | ||||
| -rw-r--r-- | arch/arm64/disassembler/sysregs_gen.c | 1497 | ||||
| -rw-r--r-- | arch/arm64/disassembler/sysregs_gen.h | 1560 | ||||
| -rw-r--r-- | arch/arm64/il.cpp | 335 | ||||
| -rw-r--r-- | arch/arm64/il.h | 6 | ||||
| -rw-r--r-- | arch/arm64/neon_intrinsics.cpp | 247 | ||||
| -rw-r--r-- | arch/arm64/neon_intrinsics.h | 3 | ||||
| -rw-r--r-- | arch/arm64/sysregs_enum.cpp | 3002 | ||||
| -rw-r--r-- | arch/arm64/sysregs_enum.h | 14 |
18 files changed, 9294 insertions, 565 deletions
diff --git a/arch/arm64/CMakeLists.txt b/arch/arm64/CMakeLists.txt index a26fe3c1..f4b414bb 100644 --- a/arch/arm64/CMakeLists.txt +++ b/arch/arm64/CMakeLists.txt @@ -8,7 +8,8 @@ file(GLOB SOURCES *.h disassembler/decode.c disassembler/format.c - disassembler/sysregs.c + disassembler/sysregs_gen.c + disassembler/sysregs_fmt_gen.c disassembler/regs.c disassembler/encodings_dec.c disassembler/encodings_fmt.c @@ -21,6 +22,8 @@ file(GLOB SOURCES disassembler/decode_scratchpad.c disassembler/*.h) +list(FILTER SOURCES EXCLUDE REGEX "sysregs\\.(h|cpp)$") + if(DEMO) add_library(${PROJECT_NAME} STATIC ${SOURCES}) else() diff --git a/arch/arm64/arch_arm64.cpp b/arch/arm64/arch_arm64.cpp index 980febff..37641893 100644 --- a/arch/arm64/arch_arm64.cpp +++ b/arch/arm64/arch_arm64.cpp @@ -511,9 +511,17 @@ class Arm64Architecture : public Architecture /* case: system registers */ if (operand->operandClass == SYS_REG) { - snprintf(buf, sizeof(buf), "%s", get_system_register_name((SystemReg)operand->sysreg)); - result.emplace_back(RegisterToken, buf); - return DISASM_SUCCESS; + auto name = get_system_register_name((SystemReg)(operand->sysreg)); + if (name && name[0]) + { + snprintf(buf, sizeof(buf), "%s", get_system_register_name((SystemReg)(operand->sysreg))); + result.emplace_back(RegisterToken, buf); + return DISASM_SUCCESS; + } + else + { + return tokenize_implementation_specific(operand, result); + } } if (operand->operandClass != REG && operand->operandClass != MULTI_REG) @@ -941,9 +949,9 @@ class Arm64Architecture : public Architecture case ARM64_INTRIN_WFI: return "__wfi"; case ARM64_INTRIN_MSR: - return "_WriteStatusReg"; + return "_WriteMSR"; case ARM64_INTRIN_MRS: - return "_ReadStatusReg"; + return "_ReadMSR"; case ARM64_INTRIN_HINT_DGH: return "SystemHintOp_DGH"; case ARM64_INTRIN_ESB: @@ -998,6 +1006,10 @@ class Arm64Architecture : public Architecture return "__aesd"; case ARM64_INTRIN_AESE: return "__aese"; + case ARM64_INTRIN_AESIMC: + return "__aesimc"; + case ARM64_INTRIN_AESMC: + return "__aesmc"; case ARM64_INTRIN_LDXR: return "__ldxr"; case ARM64_INTRIN_LDXRB: @@ -1022,6 +1034,11 @@ class Arm64Architecture : public Architecture return "__stlxrb"; case ARM64_INTRIN_STLXRH: return "__stlxrh"; + case ARM64_INTRIN_TLBI: + case ARM64_INTRIN_TLBI_REG: + return "__tlbi"; + case ARM64_INTRIN_AT: + return "__at"; default: break; } @@ -1059,10 +1076,16 @@ class Arm64Architecture : public Architecture { switch (intrinsic) { - case ARM64_INTRIN_CLZ: // reads <Xn> - case ARM64_INTRIN_DC: // reads <Xt> - case ARM64_INTRIN_MSR: case ARM64_INTRIN_MRS: + return {NameAndType("SystemReg", Confidence<Ref<Type>>(Type::EnumerationType(this, get_system_register_enum(), 4, false), BN_FULL_CONFIDENCE))}; + break; + case ARM64_INTRIN_MSR: + return { + NameAndType("SystemReg", Confidence<Ref<Type>>(Type::EnumerationType(this, get_system_register_enum(), 4, false), BN_FULL_CONFIDENCE)), + NameAndType(Type::IntegerType(8, false)) + }; + break; + case ARM64_INTRIN_CLZ: // reads <Xn> case ARM64_INTRIN_PRFM: case ARM64_INTRIN_REV: // reads <Xn> case ARM64_INTRIN_RBIT: // reads <Xn> @@ -1077,6 +1100,25 @@ class Arm64Architecture : public Architecture case ARM64_INTRIN_PACIA: // reads <Xd>, <Xn> case ARM64_INTRIN_PACIB: // reads <Xd>, <Xn> return {NameAndType(Type::IntegerType(8, false)), NameAndType(Type::IntegerType(8, false))}; + case ARM64_INTRIN_TLBI: // reads <tlbi_op>, <Xn> + return { + NameAndType("tlbi_op", Confidence<Ref<Type>>(Type::EnumerationType(this, get_tlbi_op_enum(), 4, false), BN_FULL_CONFIDENCE)) + }; + case ARM64_INTRIN_TLBI_REG: // reads <tlbi_op>, <Xn> + return { + NameAndType("tlbi_op", Confidence<Ref<Type>>(Type::EnumerationType(this, get_tlbi_op_enum(), 4, false), BN_FULL_CONFIDENCE)), + NameAndType(Type::IntegerType(8, false)) + }; + case ARM64_INTRIN_AT: // reads <at_op>, <Xn> + return { + NameAndType("at_op", Confidence<Ref<Type>>(Type::EnumerationType(this, get_at_op_enum(), 4, false), BN_FULL_CONFIDENCE)), + NameAndType(Type::IntegerType(8, false)) + }; + case ARM64_INTRIN_DC: // reads <dc_op>, <Xn> + return { + NameAndType("dc_op", Confidence<Ref<Type>>(Type::EnumerationType(this, get_dc_op_enum(), 4, false), BN_FULL_CONFIDENCE)), + NameAndType(Type::IntegerType(8, false)) + }; case ARM64_INTRIN_AESD: case ARM64_INTRIN_AESE: return {NameAndType(Type::IntegerType(16, false)), NameAndType(Type::IntegerType(16, false))}; @@ -1093,11 +1135,12 @@ class Arm64Architecture : public Architecture switch (intrinsic) { case ARM64_INTRIN_MSR: + return {}; + case ARM64_INTRIN_MRS: case ARM64_INTRIN_AUTDA: // writes <Xd> case ARM64_INTRIN_AUTDB: // writes <Xd> case ARM64_INTRIN_AUTIA: // writes <Xd> case ARM64_INTRIN_AUTIB: // writes <Xd> - case ARM64_INTRIN_MRS: case ARM64_INTRIN_PACDA: // writes <Xd> case ARM64_INTRIN_PACDB: // writes <Xd> case ARM64_INTRIN_PACIA: // writes <Xd> @@ -1795,170 +1838,16 @@ class Arm64Architecture : public Architecture REG_P8, REG_P9, REG_P10, REG_P11, REG_P12, REG_P13, REG_P14, REG_P15, REG_P16, REG_P17, REG_P18, REG_P19, REG_P20, REG_P21, REG_P22, REG_P23, REG_P24, REG_P25, REG_P26, REG_P27, REG_P28, REG_P29, REG_P30, REG_P31, - /* system registers */ - REG_OSDTRRX_EL1, REG_DBGBVR0_EL1, REG_DBGBCR0_EL1, REG_DBGWVR0_EL1, - REG_DBGWCR0_EL1, REG_DBGBVR1_EL1, REG_DBGBCR1_EL1, REG_DBGWVR1_EL1, - REG_DBGWCR1_EL1, REG_MDCCINT_EL1, REG_MDSCR_EL1, REG_DBGBVR2_EL1, - REG_DBGBCR2_EL1, REG_DBGWVR2_EL1, REG_DBGWCR2_EL1, REG_OSDTRTX_EL1, - REG_DBGBVR3_EL1, REG_DBGBCR3_EL1, REG_DBGWVR3_EL1, REG_DBGWCR3_EL1, - REG_DBGBVR4_EL1, REG_DBGBCR4_EL1, REG_DBGWVR4_EL1, REG_DBGWCR4_EL1, - REG_DBGBVR5_EL1, REG_DBGBCR5_EL1, REG_DBGWVR5_EL1, REG_DBGWCR5_EL1, - REG_OSECCR_EL1, REG_DBGBVR6_EL1, REG_DBGBCR6_EL1, REG_DBGWVR6_EL1, - REG_DBGWCR6_EL1, REG_DBGBVR7_EL1, REG_DBGBCR7_EL1, REG_DBGWVR7_EL1, - REG_DBGWCR7_EL1, REG_DBGBVR8_EL1, REG_DBGBCR8_EL1, REG_DBGWVR8_EL1, - REG_DBGWCR8_EL1, REG_DBGBVR9_EL1, REG_DBGBCR9_EL1, REG_DBGWVR9_EL1, - REG_DBGWCR9_EL1, REG_DBGBVR10_EL1, REG_DBGBCR10_EL1, REG_DBGWVR10_EL1, - REG_DBGWCR10_EL1, REG_DBGBVR11_EL1, REG_DBGBCR11_EL1, REG_DBGWVR11_EL1, - REG_DBGWCR11_EL1, REG_DBGBVR12_EL1, REG_DBGBCR12_EL1, REG_DBGWVR12_EL1, - REG_DBGWCR12_EL1, REG_DBGBVR13_EL1, REG_DBGBCR13_EL1, REG_DBGWVR13_EL1, - REG_DBGWCR13_EL1, REG_DBGBVR14_EL1, REG_DBGBCR14_EL1, REG_DBGWVR14_EL1, - REG_DBGWCR14_EL1, REG_DBGBVR15_EL1, REG_DBGBCR15_EL1, REG_DBGWVR15_EL1, - REG_DBGWCR15_EL1, REG_OSLAR_EL1, REG_OSDLR_EL1, REG_DBGPRCR_EL1, - REG_DBGCLAIMSET_EL1, REG_DBGCLAIMCLR_EL1, REG_TRCTRACEIDR, REG_TRCVICTLR, - REG_TRCSEQEVR0, REG_TRCCNTRLDVR0, REG_TRCIMSPEC0, REG_TRCPRGCTLR, REG_TRCQCTLR, - REG_TRCVIIECTLR, REG_TRCSEQEVR1, REG_TRCCNTRLDVR1, REG_TRCIMSPEC1, - REG_TRCPROCSELR, REG_TRCVISSCTLR, REG_TRCSEQEVR2, REG_TRCCNTRLDVR2, - REG_TRCIMSPEC2, REG_TRCVIPCSSCTLR, REG_TRCCNTRLDVR3, REG_TRCIMSPEC3, - REG_TRCCONFIGR, REG_TRCCNTCTLR0, REG_TRCIMSPEC4, REG_TRCCNTCTLR1, - REG_TRCIMSPEC5, REG_TRCAUXCTLR, REG_TRCSEQRSTEVR, REG_TRCCNTCTLR2, - REG_TRCIMSPEC6, REG_TRCSEQSTR, REG_TRCCNTCTLR3, REG_TRCIMSPEC7, - REG_TRCEVENTCTL0R, REG_TRCVDCTLR, REG_TRCEXTINSELR, REG_TRCCNTVR0, - REG_TRCEVENTCTL1R, REG_TRCVDSACCTLR, REG_TRCEXTINSELR1, REG_TRCCNTVR1, - REG_TRCRSR, REG_TRCVDARCCTLR, REG_TRCEXTINSELR2, REG_TRCCNTVR2, - REG_TRCSTALLCTLR, REG_TRCEXTINSELR3, REG_TRCCNTVR3, REG_TRCTSCTLR, - REG_TRCSYNCPR, REG_TRCCCCTLR, REG_TRCBBCTLR, REG_TRCRSCTLR16, REG_TRCSSCCR0, - REG_TRCSSPCICR0, REG_TRCOSLAR, REG_TRCRSCTLR17, REG_TRCSSCCR1, REG_TRCSSPCICR1, - REG_TRCRSCTLR2, REG_TRCRSCTLR18, REG_TRCSSCCR2, REG_TRCSSPCICR2, - REG_TRCRSCTLR3, REG_TRCRSCTLR19, REG_TRCSSCCR3, REG_TRCSSPCICR3, - REG_TRCRSCTLR4, REG_TRCRSCTLR20, REG_TRCSSCCR4, REG_TRCSSPCICR4, REG_TRCPDCR, - REG_TRCRSCTLR5, REG_TRCRSCTLR21, REG_TRCSSCCR5, REG_TRCSSPCICR5, - REG_TRCRSCTLR6, REG_TRCRSCTLR22, REG_TRCSSCCR6, REG_TRCSSPCICR6, - REG_TRCRSCTLR7, REG_TRCRSCTLR23, REG_TRCSSCCR7, REG_TRCSSPCICR7, - REG_TRCRSCTLR8, REG_TRCRSCTLR24, REG_TRCSSCSR0, REG_TRCRSCTLR9, - REG_TRCRSCTLR25, REG_TRCSSCSR1, REG_TRCRSCTLR10, REG_TRCRSCTLR26, - REG_TRCSSCSR2, REG_TRCRSCTLR11, REG_TRCRSCTLR27, REG_TRCSSCSR3, - REG_TRCRSCTLR12, REG_TRCRSCTLR28, REG_TRCSSCSR4, REG_TRCRSCTLR13, - REG_TRCRSCTLR29, REG_TRCSSCSR5, REG_TRCRSCTLR14, REG_TRCRSCTLR30, - REG_TRCSSCSR6, REG_TRCRSCTLR15, REG_TRCRSCTLR31, REG_TRCSSCSR7, REG_TRCACVR0, - REG_TRCACVR8, REG_TRCACATR0, REG_TRCACATR8, REG_TRCDVCVR0, REG_TRCDVCVR4, - REG_TRCDVCMR0, REG_TRCDVCMR4, REG_TRCACVR1, REG_TRCACVR9, REG_TRCACATR1, - REG_TRCACATR9, REG_TRCACVR2, REG_TRCACVR10, REG_TRCACATR2, REG_TRCACATR10, - REG_TRCDVCVR1, REG_TRCDVCVR5, REG_TRCDVCMR1, REG_TRCDVCMR5, REG_TRCACVR3, - REG_TRCACVR11, REG_TRCACATR3, REG_TRCACATR11, REG_TRCACVR4, REG_TRCACVR12, - REG_TRCACATR4, REG_TRCACATR12, REG_TRCDVCVR2, REG_TRCDVCVR6, REG_TRCDVCMR2, - REG_TRCDVCMR6, REG_TRCACVR5, REG_TRCACVR13, REG_TRCACATR5, REG_TRCACATR13, - REG_TRCACVR6, REG_TRCACVR14, REG_TRCACATR6, REG_TRCACATR14, REG_TRCDVCVR3, - REG_TRCDVCVR7, REG_TRCDVCMR3, REG_TRCDVCMR7, REG_TRCACVR7, REG_TRCACVR15, - REG_TRCACATR7, REG_TRCACATR15, REG_TRCCIDCVR0, REG_TRCVMIDCVR0, - REG_TRCCIDCCTLR0, REG_TRCCIDCCTLR1, REG_TRCCIDCVR1, REG_TRCVMIDCVR1, - REG_TRCVMIDCCTLR0, REG_TRCVMIDCCTLR1, REG_TRCCIDCVR2, REG_TRCVMIDCVR2, - REG_TRCCIDCVR3, REG_TRCVMIDCVR3, REG_TRCCIDCVR4, REG_TRCVMIDCVR4, - REG_TRCCIDCVR5, REG_TRCVMIDCVR5, REG_TRCCIDCVR6, REG_TRCVMIDCVR6, - REG_TRCCIDCVR7, REG_TRCVMIDCVR7, REG_TRCITCTRL, REG_TRCCLAIMSET, - REG_TRCCLAIMCLR, REG_TRCLAR, REG_TEECR32_EL1, REG_TEEHBR32_EL1, REG_DBGDTR_EL0, - REG_DBGDTRTX_EL0, REG_DBGVCR32_EL2, REG_MPIDR_EL1, REG_SCTLR_EL1, REG_ACTLR_EL1, - REG_CPACR_EL1, REG_RGSR_EL1, REG_GCR_EL1, REG_TRFCR_EL1, REG_TTBR0_EL1, - REG_TTBR1_EL1, REG_TCR_EL1, REG_APIAKEYLO_EL1, REG_APIAKEYHI_EL1, - REG_APIBKEYLO_EL1, REG_APIBKEYHI_EL1, REG_APDAKEYLO_EL1, REG_APDAKEYHI_EL1, - REG_APDBKEYLO_EL1, REG_APDBKEYHI_EL1, REG_APGAKEYLO_EL1, REG_APGAKEYHI_EL1, - REG_SPSR_EL1, REG_ELR_EL1, REG_SP_EL0, REG_SPSEL, REG_CURRENTEL, REG_PAN, - REG_UAO, REG_ICC_PMR_EL1, REG_AFSR0_EL1, REG_AFSR1_EL1, REG_ESR_EL1, - REG_ERRSELR_EL1, REG_ERXCTLR_EL1, REG_ERXSTATUS_EL1, REG_ERXADDR_EL1, - REG_ERXPFGCTL_EL1, REG_ERXPFGCDN_EL1, REG_ERXMISC0_EL1, REG_ERXMISC1_EL1, - REG_ERXMISC2_EL1, REG_ERXMISC3_EL1, REG_ERXTS_EL1, REG_TFSR_EL1, - REG_TFSRE0_EL1, REG_FAR_EL1, REG_PAR_EL1, REG_PMSCR_EL1, REG_PMSICR_EL1, - REG_PMSIRR_EL1, REG_PMSFCR_EL1, REG_PMSEVFR_EL1, REG_PMSLATFR_EL1, - REG_PMSIDR_EL1, REG_PMBLIMITR_EL1, REG_PMBPTR_EL1, REG_PMBSR_EL1, - REG_PMBIDR_EL1, REG_TRBLIMITR_EL1, REG_TRBPTR_EL1, REG_TRBBASER_EL1, - REG_TRBSR_EL1, REG_TRBMAR_EL1, REG_TRBTRG_EL1, REG_PMINTENSET_EL1, - REG_PMINTENCLR_EL1, REG_PMMIR_EL1, REG_MAIR_EL1, REG_AMAIR_EL1, REG_LORSA_EL1, - REG_LOREA_EL1, REG_LORN_EL1, REG_LORC_EL1, REG_MPAM1_EL1, REG_MPAM0_EL1, - REG_VBAR_EL1, REG_RMR_EL1, REG_DISR_EL1, REG_ICC_EOIR0_EL1, REG_ICC_BPR0_EL1, - REG_ICC_AP0R0_EL1, REG_ICC_AP0R1_EL1, REG_ICC_AP0R2_EL1, REG_ICC_AP0R3_EL1, - REG_ICC_AP1R0_EL1, REG_ICC_AP1R1_EL1, REG_ICC_AP1R2_EL1, REG_ICC_AP1R3_EL1, - REG_ICC_DIR_EL1, REG_ICC_SGI1R_EL1, REG_ICC_ASGI1R_EL1, REG_ICC_SGI0R_EL1, - REG_ICC_EOIR1_EL1, REG_ICC_BPR1_EL1, REG_ICC_CTLR_EL1, REG_ICC_SRE_EL1, - REG_ICC_IGRPEN0_EL1, REG_ICC_IGRPEN1_EL1, REG_ICC_SEIEN_EL1, - REG_CONTEXTIDR_EL1, REG_TPIDR_EL1, REG_SCXTNUM_EL1, REG_CNTKCTL_EL1, - REG_CSSELR_EL1, REG_NZCV, REG_DAIFSET, REG_DIT, REG_SSBS, REG_TCO, REG_FPCR, - REG_FPSR, REG_DSPSR_EL0, REG_DLR_EL0, REG_PMCR_EL0, REG_PMCNTENSET_EL0, - REG_PMCNTENCLR_EL0, REG_PMOVSCLR_EL0, REG_PMSWINC_EL0, REG_PMSELR_EL0, - REG_PMCCNTR_EL0, REG_PMXEVTYPER_EL0, REG_PMXEVCNTR_EL0, REG_DAIFCLR, REG_PMUSERENR_EL0, - REG_PMOVSSET_EL0, REG_TPIDR_EL0, REG_TPIDRRO_EL0, REG_SCXTNUM_EL0, - REG_AMCR_EL0, REG_AMUSERENR_EL0, REG_AMCNTENCLR0_EL0, REG_AMCNTENSET0_EL0, - REG_AMCNTENCLR1_EL0, REG_AMCNTENSET1_EL0, REG_AMEVCNTR00_EL0, - REG_AMEVCNTR01_EL0, REG_AMEVCNTR02_EL0, REG_AMEVCNTR03_EL0, REG_AMEVCNTR10_EL0, - REG_AMEVCNTR11_EL0, REG_AMEVCNTR12_EL0, REG_AMEVCNTR13_EL0, REG_AMEVCNTR14_EL0, - REG_AMEVCNTR15_EL0, REG_AMEVCNTR16_EL0, REG_AMEVCNTR17_EL0, REG_AMEVCNTR18_EL0, - REG_AMEVCNTR19_EL0, REG_AMEVCNTR110_EL0, REG_AMEVCNTR111_EL0, - REG_AMEVCNTR112_EL0, REG_AMEVCNTR113_EL0, REG_AMEVCNTR114_EL0, - REG_AMEVCNTR115_EL0, REG_AMEVTYPER10_EL0, REG_AMEVTYPER11_EL0, - REG_AMEVTYPER12_EL0, REG_AMEVTYPER13_EL0, REG_AMEVTYPER14_EL0, - REG_AMEVTYPER15_EL0, REG_AMEVTYPER16_EL0, REG_AMEVTYPER17_EL0, - REG_AMEVTYPER18_EL0, REG_AMEVTYPER19_EL0, REG_AMEVTYPER110_EL0, - REG_AMEVTYPER111_EL0, REG_AMEVTYPER112_EL0, REG_AMEVTYPER113_EL0, - REG_AMEVTYPER114_EL0, REG_AMEVTYPER115_EL0, REG_CNTFRQ_EL0, REG_CNTP_TVAL_EL0, - REG_CNTP_CTL_EL0, REG_CNTP_CVAL_EL0, REG_CNTV_TVAL_EL0, REG_CNTV_CTL_EL0, - REG_CNTV_CVAL_EL0, REG_PMEVCNTR0_EL0, REG_PMEVCNTR1_EL0, REG_PMEVCNTR2_EL0, - REG_PMEVCNTR3_EL0, REG_PMEVCNTR4_EL0, REG_PMEVCNTR5_EL0, REG_PMEVCNTR6_EL0, - REG_PMEVCNTR7_EL0, REG_PMEVCNTR8_EL0, REG_PMEVCNTR9_EL0, REG_PMEVCNTR10_EL0, - REG_PMEVCNTR11_EL0, REG_PMEVCNTR12_EL0, REG_PMEVCNTR13_EL0, REG_PMEVCNTR14_EL0, - REG_PMEVCNTR15_EL0, REG_PMEVCNTR16_EL0, REG_PMEVCNTR17_EL0, REG_PMEVCNTR18_EL0, - REG_PMEVCNTR19_EL0, REG_PMEVCNTR20_EL0, REG_PMEVCNTR21_EL0, REG_PMEVCNTR22_EL0, - REG_PMEVCNTR23_EL0, REG_PMEVCNTR24_EL0, REG_PMEVCNTR25_EL0, REG_PMEVCNTR26_EL0, - REG_PMEVCNTR27_EL0, REG_PMEVCNTR28_EL0, REG_PMEVCNTR29_EL0, REG_PMEVCNTR30_EL0, - REG_PMEVTYPER0_EL0, REG_PMEVTYPER1_EL0, REG_PMEVTYPER2_EL0, REG_PMEVTYPER3_EL0, - REG_PMEVTYPER4_EL0, REG_PMEVTYPER5_EL0, REG_PMEVTYPER6_EL0, REG_PMEVTYPER7_EL0, - REG_PMEVTYPER8_EL0, REG_PMEVTYPER9_EL0, REG_PMEVTYPER10_EL0, - REG_PMEVTYPER11_EL0, REG_PMEVTYPER12_EL0, REG_PMEVTYPER13_EL0, - REG_PMEVTYPER14_EL0, REG_PMEVTYPER15_EL0, REG_PMEVTYPER16_EL0, - REG_PMEVTYPER17_EL0, REG_PMEVTYPER18_EL0, REG_PMEVTYPER19_EL0, - REG_PMEVTYPER20_EL0, REG_PMEVTYPER21_EL0, REG_PMEVTYPER22_EL0, - REG_PMEVTYPER23_EL0, REG_PMEVTYPER24_EL0, REG_PMEVTYPER25_EL0, - REG_PMEVTYPER26_EL0, REG_PMEVTYPER27_EL0, REG_PMEVTYPER28_EL0, - REG_PMEVTYPER29_EL0, REG_PMEVTYPER30_EL0, REG_PMCCFILTR_EL0, REG_VPIDR_EL2, - REG_VMPIDR_EL2, REG_SCTLR_EL2, REG_ACTLR_EL2, REG_HCR_EL2, REG_MDCR_EL2, - REG_CPTR_EL2, REG_HSTR_EL2, REG_HACR_EL2, REG_TRFCR_EL2, REG_SDER32_EL2, - REG_TTBR0_EL2, REG_TTBR1_EL2, REG_TCR_EL2, REG_VTTBR_EL2, REG_VTCR_EL2, - REG_VNCR_EL2, REG_VSTTBR_EL2, REG_VSTCR_EL2, REG_DACR32_EL2, REG_SPSR_EL2, - REG_ELR_EL2, REG_SP_EL1, REG_SPSR_IRQ, REG_SPSR_ABT, REG_SPSR_UND, - REG_SPSR_FIQ, REG_IFSR32_EL2, REG_AFSR0_EL2, REG_AFSR1_EL2, REG_ESR_EL2, - REG_VSESR_EL2, REG_FPEXC32_EL2, REG_TFSR_EL2, REG_FAR_EL2, REG_HPFAR_EL2, - REG_PMSCR_EL2, REG_MAIR_EL2, REG_AMAIR_EL2, REG_MPAMHCR_EL2, REG_MPAMVPMV_EL2, - REG_MPAM2_EL2, REG_MPAMVPM0_EL2, REG_MPAMVPM1_EL2, REG_MPAMVPM2_EL2, - REG_MPAMVPM3_EL2, REG_MPAMVPM4_EL2, REG_MPAMVPM5_EL2, REG_MPAMVPM6_EL2, - REG_MPAMVPM7_EL2, REG_VBAR_EL2, REG_RMR_EL2, REG_VDISR_EL2, REG_ICH_AP0R0_EL2, - REG_ICH_AP0R1_EL2, REG_ICH_AP0R2_EL2, REG_ICH_AP0R3_EL2, REG_ICH_AP1R0_EL2, - REG_ICH_AP1R1_EL2, REG_ICH_AP1R2_EL2, REG_ICH_AP1R3_EL2, REG_ICH_VSEIR_EL2, - REG_ICC_SRE_EL2, REG_ICH_HCR_EL2, REG_ICH_MISR_EL2, REG_ICH_VMCR_EL2, - REG_ICH_LR0_EL2, REG_ICH_LR1_EL2, REG_ICH_LR2_EL2, REG_ICH_LR3_EL2, - REG_ICH_LR4_EL2, REG_ICH_LR5_EL2, REG_ICH_LR6_EL2, REG_ICH_LR7_EL2, - REG_ICH_LR8_EL2, REG_ICH_LR9_EL2, REG_ICH_LR10_EL2, REG_ICH_LR11_EL2, - REG_ICH_LR12_EL2, REG_ICH_LR13_EL2, REG_ICH_LR14_EL2, REG_ICH_LR15_EL2, - REG_CONTEXTIDR_EL2, REG_TPIDR_EL2, REG_SCXTNUM_EL2, REG_CNTVOFF_EL2, - REG_CNTHCTL_EL2, REG_CNTHP_TVAL_EL2, REG_CNTHP_CTL_EL2, REG_CNTHP_CVAL_EL2, - REG_CNTHV_TVAL_EL2, REG_CNTHV_CTL_EL2, REG_CNTHV_CVAL_EL2, REG_CNTHVS_TVAL_EL2, - REG_CNTHVS_CTL_EL2, REG_CNTHVS_CVAL_EL2, REG_CNTHPS_TVAL_EL2, - REG_CNTHPS_CTL_EL2, REG_CNTHPS_CVAL_EL2, REG_SCTLR_EL12, REG_CPACR_EL12, - REG_TRFCR_EL12, REG_TTBR0_EL12, REG_TTBR1_EL12, REG_TCR_EL12, REG_SPSR_EL12, - REG_ELR_EL12, REG_AFSR0_EL12, REG_AFSR1_EL12, REG_ESR_EL12, REG_TFSR_EL12, - REG_FAR_EL12, REG_PMSCR_EL12, REG_MAIR_EL12, REG_AMAIR_EL12, REG_MPAM1_EL12, - REG_VBAR_EL12, REG_CONTEXTIDR_EL12, REG_SCXTNUM_EL12, REG_CNTKCTL_EL12, - REG_CNTP_TVAL_EL02, REG_CNTP_CTL_EL02, REG_CNTP_CVAL_EL02, REG_CNTV_TVAL_EL02, - REG_CNTV_CTL_EL02, REG_CNTV_CVAL_EL02, REG_SCTLR_EL3, REG_ACTLR_EL3, - REG_SCR_EL3, REG_SDER32_EL3, REG_CPTR_EL3, REG_MDCR_EL3, REG_TTBR0_EL3, - REG_TCR_EL3, REG_SPSR_EL3, REG_ELR_EL3, REG_SP_EL2, REG_AFSR0_EL3, - REG_AFSR1_EL3, REG_ESR_EL3, REG_TFSR_EL3, REG_FAR_EL3, REG_MAIR_EL3, - REG_AMAIR_EL3, REG_MPAM3_EL3, REG_VBAR_EL3, REG_RMR_EL3, REG_ICC_CTLR_EL3, - REG_ICC_SRE_EL3, REG_ICC_IGRPEN1_EL3, REG_TPIDR_EL3, REG_SCXTNUM_EL3, - REG_CNTPS_TVAL_EL1, REG_CNTPS_CTL_EL1, REG_CNTPS_CVAL_EL1, REG_PSTATE_SPSEL, + /* system registers -- removed because they're not registers anymore */ + /* fake registers */ FAKEREG_SYSREG_UNKNOWN, /* acts as an input/output to ARM64_INTRIN_MSR, ARM64_INTRIN_MRS intrinsics when the sysreg has no name (is implementation specific) */ FAKEREG_SYSCALL_INFO }; - + // auto sysregs = get_system_registers(); + // r.insert(r.end(), sysregs.begin(), sysregs.end()); return r; } @@ -2033,6 +1922,8 @@ class Arm64Architecture : public Architecture case REG_X30: case REG_SP: return RegisterInfo(reg, 0, 8); + case REG_XZR: + return RegisterInfo(reg, 0, 0); case REG_V0: case REG_V1: case REG_V2: @@ -2331,32 +2222,51 @@ class Arm64Architecture : public Architecture } if (reg == FAKEREG_SYSREG_UNKNOWN) + { + // LogWarn("GetRegisterInfo called on FAKEREG_SYSREG_UNKNOWN %#x/%d", reg, reg); return RegisterInfo(reg, 0, 8); + } if (reg == FAKEREG_SYSCALL_INFO) return RegisterInfo(reg, 0, 4); if (reg > SYSREG_NONE && reg < SYSREG_END) - return RegisterInfo(reg, 0, 8); + // constexpr auto sysregs = []() { + // auto sysregs = get_system_registers(); + // auto sysreg_set = std::unordered_set<uint32_t>(sysregs.begin(), sysregs.end()); + // return sysreg_set; + // }; + // auto sysreg_set = sysregs(); + // if (sysreg_set.find(reg) != sysreg_set.end()) + // return RegisterInfo(reg, 0, 8); + LogWarn("GetRegisterInfo called on sysreg %#x/%d", reg, reg); return RegisterInfo(0, 0, 0); } + uint32_t GetRegisterStackForRegister(uint32_t reg) + { + return BN_INVALID_REGISTER; + } + virtual uint32_t GetStackPointerRegister() override { return REG_SP; } virtual uint32_t GetLinkRegister() override { return REG_X30; } virtual vector<uint32_t> GetSystemRegisters() override { - vector<uint32_t> system_regs = {}; - - for (uint32_t ii = SYSREG_NONE + 1; ii < SYSREG_END; ++ii) - { - system_regs.push_back(ii); - } - + // vector<uint32_t> system_regs = {}; + // + // for (uint32_t ii = SYSREG_NONE + 1; ii < SYSREG_END; ++ii) + // { + // system_regs.push_back(ii); + // } + // + // system_regs.push_back(FAKEREG_SYSREG_UNKNOWN); + // + // return system_regs; + vector<uint32_t> system_regs = get_system_registers(); system_regs.push_back(FAKEREG_SYSREG_UNKNOWN); - return system_regs; } }; diff --git a/arch/arm64/disassembler/decode.h b/arch/arm64/disassembler/decode.h index a57d0247..4eb71bc8 100644 --- a/arch/arm64/disassembler/decode.h +++ b/arch/arm64/disassembler/decode.h @@ -10,7 +10,8 @@ #include "encodings_dec.h" #include "regs.h" -#include "sysregs.h" +#include "sysregs_gen.h" +#include "sysregs_fmt_gen.h" #ifdef _MSC_VER #undef REG_NONE // collides with winnt's define @@ -113,6 +114,21 @@ enum SliceIndicator #define FPCR_GET_IOE(X) SLICE(X, 8, 8) //----------------------------------------------------------------------------- +// <tlbi_op>: TLBI operands +//----------------------------------------------------------------------------- +#define TLBI_OP(op1, crn, crm, op2) (((op1 & 7) << 11) | ((crn & 0xF) << 7) | ((crm & 0xF) << 3) | ((op2) & 7)) + +//----------------------------------------------------------------------------- +// <at_op>: AT operands +//----------------------------------------------------------------------------- +#define AT_OP(op1, crm, op2) (TLBI_OP(op1, 7, crm, op2)) + +//----------------------------------------------------------------------------- +// <dc_op>: DC operands +//----------------------------------------------------------------------------- +#define DC_OP(op1, crm, op2) (TLBI_OP(op1, 7, crm, op2)) + +//----------------------------------------------------------------------------- // disassembly context (INPUT into disassembler) //----------------------------------------------------------------------------- @@ -497,6 +513,251 @@ enum FlagEffect FLAGEFFECT_SETS_FLOAT=3 // sets flags after float comparison }; +enum ImplSpec +{ + OP0 = 0, + OP1 = 1, + CRN = 2, + CRM = 3, + OP2 = 4 +}; + +enum ATOp +{ + AT_OP_INVALID=-1, + AT_OP_S1E1R=AT_OP(0b000, 0b1000, 0b000), + AT_OP_S1E1W=AT_OP(0b000, 0b1000, 0b001), + AT_OP_S1E0R=AT_OP(0b000, 0b1000, 0b010), + AT_OP_S1E0W=AT_OP(0b000, 0b1000, 0b011), + AT_OP_S1E1RP=AT_OP(0b000, 0b1001, 0b000), + AT_OP_S1E1WP=AT_OP(0b000, 0b1001, 0b001), + AT_OP_S1E1A=AT_OP(0b000, 0b1001, 0b010), + AT_OP_S1E2R=AT_OP(0b100, 0b1000, 0b000), + AT_OP_S1E2W=AT_OP(0b100, 0b1000, 0b001), + AT_OP_S12E1R=AT_OP(0b100, 0b1000, 0b100), + AT_OP_S12E1W=AT_OP(0b100, 0b1000, 0b101), + AT_OP_S12E0R=AT_OP(0b100, 0b1000, 0b110), + AT_OP_S12E0W=AT_OP(0b100, 0b1000, 0b111), + AT_OP_S1E2A=AT_OP(0b100, 0b1001, 0b010), + AT_OP_S1E3R=AT_OP(0b110, 0b1000, 0b000), + AT_OP_S1E3W=AT_OP(0b110, 0b1000, 0b001), + AT_OP_S1E3A=AT_OP(0b110, 0b1001, 0b010), +}; + +enum TlbiOp +{ + TLBI_INVALID=-1, + TLBI_VMALLE1OS=TLBI_OP(0b000, 0b1000, 0b0001, 0b000), + TLBI_VAE1OS=TLBI_OP(0b000, 0b1000, 0b0001, 0b001), + TLBI_ASIDE1OS=TLBI_OP(0b000, 0b1000, 0b0001, 0b010), + TLBI_VAAE1OS=TLBI_OP(0b000, 0b1000, 0b0001, 0b011), + TLBI_VALE1OS=TLBI_OP(0b000, 0b1000, 0b0001, 0b101), + TLBI_VAALE1OS=TLBI_OP(0b000, 0b1000, 0b0001, 0b111), + TLBI_RVAE1IS=TLBI_OP(0b000, 0b1000, 0b0010, 0b001), + TLBI_RVAAE1IS=TLBI_OP(0b000, 0b1000, 0b0010, 0b011), + TLBI_RVALE1IS=TLBI_OP(0b000, 0b1000, 0b0010, 0b101), + TLBI_RVAALE1IS=TLBI_OP(0b000, 0b1000, 0b0010, 0b111), + TLBI_VMALLE1IS=TLBI_OP(0b000, 0b1000, 0b0011, 0b000), + TLBI_VAE1IS=TLBI_OP(0b000, 0b1000, 0b0011, 0b001), + TLBI_ASIDE1IS=TLBI_OP(0b000, 0b1000, 0b0011, 0b010), + TLBI_VAAE1IS=TLBI_OP(0b000, 0b1000, 0b0011, 0b011), + TLBI_VALE1IS=TLBI_OP(0b000, 0b1000, 0b0011, 0b101), + TLBI_VAALE1IS=TLBI_OP(0b000, 0b1000, 0b0011, 0b111), + TLBI_RVAE1OS=TLBI_OP(0b000, 0b1000, 0b0101, 0b001), + TLBI_RVAAE1OS=TLBI_OP(0b000, 0b1000, 0b0101, 0b011), + TLBI_RVALE1OS=TLBI_OP(0b000, 0b1000, 0b0101, 0b101), + TLBI_RVAALE1OS=TLBI_OP(0b000, 0b1000, 0b0101, 0b111), + TLBI_RVAE1=TLBI_OP(0b000, 0b1000, 0b0110, 0b001), + TLBI_RVAAE1=TLBI_OP(0b000, 0b1000, 0b0110, 0b011), + TLBI_RVALE1=TLBI_OP(0b000, 0b1000, 0b0110, 0b101), + TLBI_RVAALE1=TLBI_OP(0b000, 0b1000, 0b0110, 0b111), + TLBI_VMALLE1=TLBI_OP(0b000, 0b1000, 0b0111, 0b000), + TLBI_VAE1=TLBI_OP(0b000, 0b1000, 0b0111, 0b001), + TLBI_ASIDE1=TLBI_OP(0b000, 0b1000, 0b0111, 0b010), + TLBI_VAAE1=TLBI_OP(0b000, 0b1000, 0b0111, 0b011), + TLBI_VALE1=TLBI_OP(0b000, 0b1000, 0b0111, 0b101), + TLBI_VAALE1=TLBI_OP(0b000, 0b1000, 0b0111, 0b111), + TLBI_VMALLE1OSNXS=TLBI_OP(0b000, 0b1001, 0b0001, 0b000), + TLBI_VAE1OSNXS=TLBI_OP(0b000, 0b1001, 0b0001, 0b001), + TLBI_ASIDE1OSNXS=TLBI_OP(0b000, 0b1001, 0b0001, 0b010), + TLBI_VAAE1OSNXS=TLBI_OP(0b000, 0b1001, 0b0001, 0b011), + TLBI_VALE1OSNXS=TLBI_OP(0b000, 0b1001, 0b0001, 0b101), + TLBI_VAALE1OSNXS=TLBI_OP(0b000, 0b1001, 0b0001, 0b111), + TLBI_RVAE1ISNXS=TLBI_OP(0b000, 0b1001, 0b0010, 0b001), + TLBI_RVAAE1ISNXS=TLBI_OP(0b000, 0b1001, 0b0010, 0b011), + TLBI_RVALE1ISNXS=TLBI_OP(0b000, 0b1001, 0b0010, 0b101), + TLBI_RVAALE1ISNXS=TLBI_OP(0b000, 0b1001, 0b0010, 0b111), + TLBI_VMALLE1ISNXS=TLBI_OP(0b000, 0b1001, 0b0011, 0b000), + TLBI_VAE1ISNXS=TLBI_OP(0b000, 0b1001, 0b0011, 0b001), + TLBI_ASIDE1ISNXS=TLBI_OP(0b000, 0b1001, 0b0011, 0b010), + TLBI_VAAE1ISNXS=TLBI_OP(0b000, 0b1001, 0b0011, 0b011), + TLBI_VALE1ISNXS=TLBI_OP(0b000, 0b1001, 0b0011, 0b101), + TLBI_VAALE1ISNXS=TLBI_OP(0b000, 0b1001, 0b0011, 0b111), + TLBI_RVAE1OSNXS=TLBI_OP(0b000, 0b1001, 0b0101, 0b001), + TLBI_RVAAE1OSNXS=TLBI_OP(0b000, 0b1001, 0b0101, 0b011), + TLBI_RVALE1OSNXS=TLBI_OP(0b000, 0b1001, 0b0101, 0b101), + TLBI_RVAALE1OSNXS=TLBI_OP(0b000, 0b1001, 0b0101, 0b111), + TLBI_RVAE1NXS=TLBI_OP(0b000, 0b1001, 0b0110, 0b001), + TLBI_RVAAE1NXS=TLBI_OP(0b000, 0b1001, 0b0110, 0b011), + TLBI_RVALE1NXS=TLBI_OP(0b000, 0b1001, 0b0110, 0b101), + TLBI_RVAALE1NXS=TLBI_OP(0b000, 0b1001, 0b0110, 0b111), + TLBI_VMALLE1NXS=TLBI_OP(0b000, 0b1001, 0b0111, 0b000), + TLBI_VAE1NXS=TLBI_OP(0b000, 0b1001, 0b0111, 0b001), + TLBI_ASIDE1NXS=TLBI_OP(0b000, 0b1001, 0b0111, 0b010), + TLBI_VAAE1NXS=TLBI_OP(0b000, 0b1001, 0b0111, 0b011), + TLBI_VALE1NXS=TLBI_OP(0b000, 0b1001, 0b0111, 0b101), + TLBI_VAALE1NXS=TLBI_OP(0b000, 0b1001, 0b0111, 0b111), + TLBI_IPAS2E1IS=TLBI_OP(0b100, 0b1000, 0b0000, 0b001), + TLBI_RIPAS2E1IS=TLBI_OP(0b100, 0b1000, 0b0000, 0b010), + TLBI_IPAS2LE1IS=TLBI_OP(0b100, 0b1000, 0b0000, 0b101), + TLBI_RIPAS2LE1IS=TLBI_OP(0b100, 0b1000, 0b0000, 0b110), + TLBI_ALLE2OS=TLBI_OP(0b100, 0b1000, 0b0001, 0b000), + TLBI_VAE2OS=TLBI_OP(0b100, 0b1000, 0b0001, 0b001), + TLBI_ALLE1OS=TLBI_OP(0b100, 0b1000, 0b0001, 0b100), + TLBI_VALE2OS=TLBI_OP(0b100, 0b1000, 0b0001, 0b101), + TLBI_VMALLS12E1OS=TLBI_OP(0b100, 0b1000, 0b0001, 0b110), + TLBI_RVAE2IS=TLBI_OP(0b100, 0b1000, 0b0010, 0b001), + TLBI_VMALLWS2E1IS=TLBI_OP(0b100, 0b1000, 0b0010, 0b010), + TLBI_RVALE2IS=TLBI_OP(0b100, 0b1000, 0b0010, 0b101), + TLBI_ALLE2IS=TLBI_OP(0b100, 0b1000, 0b0011, 0b000), + TLBI_VAE2IS=TLBI_OP(0b100, 0b1000, 0b0011, 0b001), + TLBI_ALLE1IS=TLBI_OP(0b100, 0b1000, 0b0011, 0b100), + TLBI_VALE2IS=TLBI_OP(0b100, 0b1000, 0b0011, 0b101), + TLBI_VMALLS12E1IS=TLBI_OP(0b100, 0b1000, 0b0011, 0b110), + TLBI_IPAS2E1OS=TLBI_OP(0b100, 0b1000, 0b0100, 0b000), + TLBI_IPAS2E1=TLBI_OP(0b100, 0b1000, 0b0100, 0b001), + TLBI_RIPAS2E1=TLBI_OP(0b100, 0b1000, 0b0100, 0b010), + TLBI_RIPAS2E1OS=TLBI_OP(0b100, 0b1000, 0b0100, 0b011), + TLBI_IPAS2LE1OS=TLBI_OP(0b100, 0b1000, 0b0100, 0b100), + TLBI_IPAS2LE1=TLBI_OP(0b100, 0b1000, 0b0100, 0b101), + TLBI_RIPAS2LE1=TLBI_OP(0b100, 0b1000, 0b0100, 0b110), + TLBI_RIPAS2LE1OS=TLBI_OP(0b100, 0b1000, 0b0100, 0b111), + TLBI_RVAE2OS=TLBI_OP(0b100, 0b1000, 0b0101, 0b001), + TLBI_VMALLWS2E1OS=TLBI_OP(0b100, 0b1000, 0b0101, 0b010), + TLBI_RVALE2OS=TLBI_OP(0b100, 0b1000, 0b0101, 0b101), + TLBI_RVAE2=TLBI_OP(0b100, 0b1000, 0b0110, 0b001), + TLBI_VMALLWS2E1=TLBI_OP(0b100, 0b1000, 0b0110, 0b010), + TLBI_RVALE2=TLBI_OP(0b100, 0b1000, 0b0110, 0b101), + TLBI_ALLE2=TLBI_OP(0b100, 0b1000, 0b0111, 0b000), + TLBI_VAE2=TLBI_OP(0b100, 0b1000, 0b0111, 0b001), + TLBI_ALLE1=TLBI_OP(0b100, 0b1000, 0b0111, 0b100), + TLBI_VALE2=TLBI_OP(0b100, 0b1000, 0b0111, 0b101), + TLBI_VMALLS12E1=TLBI_OP(0b100, 0b1000, 0b0111, 0b110), + TLBI_IPAS2E1ISNXS=TLBI_OP(0b100, 0b1001, 0b0000, 0b001), + TLBI_RIPAS2E1ISNXS=TLBI_OP(0b100, 0b1001, 0b0000, 0b010), + TLBI_IPAS2LE1ISNXS=TLBI_OP(0b100, 0b1001, 0b0000, 0b101), + TLBI_RIPAS2LE1ISNXS=TLBI_OP(0b100, 0b1001, 0b0000, 0b110), + TLBI_ALLE2OSNXS=TLBI_OP(0b100, 0b1001, 0b0001, 0b000), + TLBI_VAE2OSNXS=TLBI_OP(0b100, 0b1001, 0b0001, 0b001), + TLBI_ALLE1OSNXS=TLBI_OP(0b100, 0b1001, 0b0001, 0b100), + TLBI_VALE2OSNXS=TLBI_OP(0b100, 0b1001, 0b0001, 0b101), + TLBI_VMALLS12E1OSNXS=TLBI_OP(0b100, 0b1001, 0b0001, 0b110), + TLBI_RVAE2ISNXS=TLBI_OP(0b100, 0b1001, 0b0010, 0b001), + TLBI_VMALLWS2E1ISNXS=TLBI_OP(0b100, 0b1001, 0b0010, 0b010), + TLBI_RVALE2ISNXS=TLBI_OP(0b100, 0b1001, 0b0010, 0b101), + TLBI_ALLE2ISNXS=TLBI_OP(0b100, 0b1001, 0b0011, 0b000), + TLBI_VAE2ISNXS=TLBI_OP(0b100, 0b1001, 0b0011, 0b001), + TLBI_ALLE1ISNXS=TLBI_OP(0b100, 0b1001, 0b0011, 0b100), + TLBI_VALE2ISNXS=TLBI_OP(0b100, 0b1001, 0b0011, 0b101), + TLBI_VMALLS12E1ISNXS=TLBI_OP(0b100, 0b1001, 0b0011, 0b110), + TLBI_IPAS2E1OSNXS=TLBI_OP(0b100, 0b1001, 0b0100, 0b000), + TLBI_IPAS2E1NXS=TLBI_OP(0b100, 0b1001, 0b0100, 0b001), + TLBI_RIPAS2E1NXS=TLBI_OP(0b100, 0b1001, 0b0100, 0b010), + TLBI_RIPAS2E1OSNXS=TLBI_OP(0b100, 0b1001, 0b0100, 0b011), + TLBI_IPAS2LE1OSNXS=TLBI_OP(0b100, 0b1001, 0b0100, 0b100), + TLBI_IPAS2LE1NXS=TLBI_OP(0b100, 0b1001, 0b0100, 0b101), + TLBI_RIPAS2LE1NXS=TLBI_OP(0b100, 0b1001, 0b0100, 0b110), + TLBI_RIPAS2LE1OSNXS=TLBI_OP(0b100, 0b1001, 0b0100, 0b111), + TLBI_RVAE2OSNXS=TLBI_OP(0b100, 0b1001, 0b0101, 0b001), + TLBI_VMALLWS2E1OSNXS=TLBI_OP(0b100, 0b1001, 0b0101, 0b010), + TLBI_RVALE2OSNXS=TLBI_OP(0b100, 0b1001, 0b0101, 0b101), + TLBI_RVAE2NXS=TLBI_OP(0b100, 0b1001, 0b0110, 0b001), + TLBI_VMALLWS2E1NXS=TLBI_OP(0b100, 0b1001, 0b0110, 0b010), + TLBI_RVALE2NXS=TLBI_OP(0b100, 0b1001, 0b0110, 0b101), + TLBI_ALLE2NXS=TLBI_OP(0b100, 0b1001, 0b0111, 0b000), + TLBI_VAE2NXS=TLBI_OP(0b100, 0b1001, 0b0111, 0b001), + TLBI_ALLE1NXS=TLBI_OP(0b100, 0b1001, 0b0111, 0b100), + TLBI_VALE2NXS=TLBI_OP(0b100, 0b1001, 0b0111, 0b101), + TLBI_VMALLS12E1NXS=TLBI_OP(0b100, 0b1001, 0b0111, 0b110), + TLBI_ALLE3OS=TLBI_OP(0b110, 0b1000, 0b0001, 0b000), + TLBI_VAE3OS=TLBI_OP(0b110, 0b1000, 0b0001, 0b001), + TLBI_PAALLOS=TLBI_OP(0b110, 0b1000, 0b0001, 0b100), + TLBI_VALE3OS=TLBI_OP(0b110, 0b1000, 0b0001, 0b101), + TLBI_RVAE3IS=TLBI_OP(0b110, 0b1000, 0b0010, 0b001), + TLBI_RVALE3IS=TLBI_OP(0b110, 0b1000, 0b0010, 0b101), + TLBI_ALLE3IS=TLBI_OP(0b110, 0b1000, 0b0011, 0b000), + TLBI_VAE3IS=TLBI_OP(0b110, 0b1000, 0b0011, 0b001), + TLBI_VALE3IS=TLBI_OP(0b110, 0b1000, 0b0011, 0b101), + TLBI_RPAOS=TLBI_OP(0b110, 0b1000, 0b0100, 0b011), + TLBI_RPALOS=TLBI_OP(0b110, 0b1000, 0b0100, 0b111), + TLBI_RVAE3OS=TLBI_OP(0b110, 0b1000, 0b0101, 0b001), + TLBI_RVALE3OS=TLBI_OP(0b110, 0b1000, 0b0101, 0b101), + TLBI_RVAE3=TLBI_OP(0b110, 0b1000, 0b0110, 0b001), + TLBI_RVALE3=TLBI_OP(0b110, 0b1000, 0b0110, 0b101), + TLBI_ALLE3=TLBI_OP(0b110, 0b1000, 0b0111, 0b000), + TLBI_VAE3=TLBI_OP(0b110, 0b1000, 0b0111, 0b001), + TLBI_PAALL=TLBI_OP(0b110, 0b1000, 0b0111, 0b100), + TLBI_VALE3=TLBI_OP(0b110, 0b1000, 0b0111, 0b101), + TLBI_ALLE3OSNXS=TLBI_OP(0b110, 0b1001, 0b0001, 0b000), + TLBI_VAE3OSNXS=TLBI_OP(0b110, 0b1001, 0b0001, 0b001), + TLBI_VALE3OSNXS=TLBI_OP(0b110, 0b1001, 0b0001, 0b101), + TLBI_RVAE3ISNXS=TLBI_OP(0b110, 0b1001, 0b0010, 0b001), + TLBI_RVALE3ISNXS=TLBI_OP(0b110, 0b1001, 0b0010, 0b101), + TLBI_ALLE3ISNXS=TLBI_OP(0b110, 0b1001, 0b0011, 0b000), + TLBI_VAE3ISNXS=TLBI_OP(0b110, 0b1001, 0b0011, 0b001), + TLBI_VALE3ISNXS=TLBI_OP(0b110, 0b1001, 0b0011, 0b101), + TLBI_RVAE3OSNXS=TLBI_OP(0b110, 0b1001, 0b0101, 0b001), + TLBI_RVALE3OSNXS=TLBI_OP(0b110, 0b1001, 0b0101, 0b101), + TLBI_RVAE3NXS=TLBI_OP(0b110, 0b1001, 0b0110, 0b001), + TLBI_RVALE3NXS=TLBI_OP(0b110, 0b1001, 0b0110, 0b101), + TLBI_ALLE3NXS=TLBI_OP(0b110, 0b1001, 0b0111, 0b000), + TLBI_VAE3NXS=TLBI_OP(0b110, 0b1001, 0b0111, 0b001), + TLBI_VALE3NXS=TLBI_OP(0b110, 0b1001, 0b0111, 0b101), +}; + +enum DCOp +{ + DC_OP_INVALID=-1, + DC_OP_IVAC=DC_OP(0b000, 0b0110, 0b001), + DC_OP_ISW=DC_OP(0b000, 0b0110, 0b010), + DC_OP_IGVAC=DC_OP(0b000, 0b0110, 0b011), + DC_OP_IGSW=DC_OP(0b000, 0b0110, 0b100), + DC_OP_IGDVAC=DC_OP(0b000, 0b0110, 0b101), + DC_OP_IGDSW=DC_OP(0b000, 0b0110, 0b110), + DC_OP_CSW=DC_OP(0b000, 0b1010, 0b010), + DC_OP_CGSW=DC_OP(0b000, 0b1010, 0b100), + DC_OP_CGDSW=DC_OP(0b000, 0b1010, 0b110), + DC_OP_CISW=DC_OP(0b000, 0b1110, 0b010), + DC_OP_CIGSW=DC_OP(0b000, 0b1110, 0b100), + DC_OP_CIGDSW=DC_OP(0b000, 0b1110, 0b110), + DC_OP_CIVAPS=DC_OP(0b000, 0b1111, 0b001), + DC_OP_CIGDVAPS=DC_OP(0b000, 0b1111, 0b101), + DC_OP_ZVA=DC_OP(0b011, 0b0100, 0b001), + DC_OP_GVA=DC_OP(0b011, 0b0100, 0b011), + DC_OP_GZVA=DC_OP(0b011, 0b0100, 0b100), + DC_OP_CVAC=DC_OP(0b011, 0b1010, 0b001), + DC_OP_CGVAC=DC_OP(0b011, 0b1010, 0b011), + DC_OP_CGDVAC=DC_OP(0b011, 0b1010, 0b101), + DC_OP_CVAOC=DC_OP(0b011, 0b1011, 0b000), + DC_OP_CVAU=DC_OP(0b011, 0b1011, 0b001), + DC_OP_CGDVAOC=DC_OP(0b011, 0b1011, 0b111), + DC_OP_CVAP=DC_OP(0b011, 0b1100, 0b001), + DC_OP_CGVAP=DC_OP(0b011, 0b1100, 0b011), + DC_OP_CGDVAP=DC_OP(0b011, 0b1100, 0b101), + DC_OP_CVADP=DC_OP(0b011, 0b1101, 0b001), + DC_OP_CGVADP=DC_OP(0b011, 0b1101, 0b011), + DC_OP_CGDVADP=DC_OP(0b011, 0b1101, 0b101), + DC_OP_CIVAC=DC_OP(0b011, 0b1110, 0b001), + DC_OP_CIGVAC=DC_OP(0b011, 0b1110, 0b011), + DC_OP_CIGDVAC=DC_OP(0b011, 0b1110, 0b101), + DC_OP_CIVAOC=DC_OP(0b011, 0b1111, 0b000), + DC_OP_CIGDVAOC=DC_OP(0b011, 0b1111, 0b111), + DC_OP_CIPAE=DC_OP(0b100, 0b1110, 0b000), + DC_OP_CIGDPAE=DC_OP(0b100, 0b1110, 0b111), + DC_OP_CIPAPA=DC_OP(0b110, 0b1110, 0b001), + DC_OP_CIGDPAPA=DC_OP(0b110, 0b1110, 0b101), +}; + #ifndef __cplusplus typedef enum SystemReg SystemReg; typedef enum OperandClass OperandClass; @@ -507,6 +768,8 @@ typedef enum Operation Operation; typedef enum Group Group; typedef enum ArrangementSpec ArrangementSpec; typedef enum SliceIndicator SliceIndicator; +typedef enum ImplSpec ImplSpec; +typedef enum TlbiOp TlbiOp; #endif #define MAX_REGISTERS 5 @@ -574,6 +837,7 @@ extern "C" int aarch64_decompose(uint32_t instructionValue, Instruction* instr, uint64_t address); size_t get_register_size(enum Register); + // const char* tlbi_op(int32_t op); #ifdef __cplusplus } diff --git a/arch/arm64/disassembler/decode2.c b/arch/arm64/disassembler/decode2.c index 0d0d7c14..7dbe3699 100644 --- a/arch/arm64/disassembler/decode2.c +++ b/arch/arm64/disassembler/decode2.c @@ -27518,7 +27518,8 @@ int SYS(context *ctx, Instruction *instr) if(ctx->CRn==7 && SysOp(ctx->op1,7,ctx->CRm,ctx->op2)==Sys_DC) return DC_SYS(ctx, instr); if(ctx->op1==3 && ctx->CRn==7 && ctx->CRm==3 && ctx->op2==5) return DVP_SYS(ctx, instr); if(ctx->CRn==7 && SysOp(ctx->op1,7,ctx->CRm,ctx->op2)==Sys_IC) return IC_SYS(ctx, instr); - if(ctx->CRn==8 && SysOp(ctx->op1,8,ctx->CRm,ctx->op2)==Sys_TLBI) return TLBI_SYS(ctx, instr); + // if(ctx->CRn==8 && SysOp(ctx->op1,8,ctx->CRm,ctx->op2)==Sys_TLBI) return TLBI_SYS(ctx, instr); + if(((ctx->CRn&14)==8) && SysOp(ctx->op1,ctx->CRn,ctx->CRm,ctx->op2)==Sys_TLBI) return TLBI_SYS(ctx, instr); OK(ENC_SYS_CR_SYSTEMINSTRS); } return rc; @@ -27666,8 +27667,10 @@ int TLBI_SYS(context *ctx, Instruction *instr) { int rc = DECODE_STATUS_UNMATCHED; /* class iclass_system */ - /* 1101010100|L=0|op0=01|op1=xxx|CRn=1000|CRm=xxxx|op2=xxx|Rt=xxxxx */ - if((INSWORD & 0xFFF8F000)==0xD5088000) { + // /* 1101010100|L=0|op0=01|op1=xxx|CRn=1000|CRm=xxxx|op2=xxx|Rt=xxxxx */ + // if((INSWORD & 0xFFF8F000)==0xD5088000) { + /* 110|101|0100|L=0|01|op1=xxx|CRn=100x|CRm=xxxx|op2=xxx|Rt=xxxxx */ + if((INSWORD & 0xFFF8E000)==0xD5088000) { decode_fields32(ENC_TLBI_SYS_CR_SYSTEMINSTRS, ctx, instr); OK(ENC_TLBI_SYS_CR_SYSTEMINSTRS); } diff --git a/arch/arm64/disassembler/decode_fields32.c b/arch/arm64/disassembler/decode_fields32.c index 63e479cd..b5e26540 100644 --- a/arch/arm64/disassembler/decode_fields32.c +++ b/arch/arm64/disassembler/decode_fields32.c @@ -1626,6 +1626,7 @@ void decode_fields32(enum ENCODING enc, context *ctx, Instruction *instr) case ENC_XAFLAG_M_PSTATE: case ENC_XPACLRI_HI_HINTS: case ENC_YIELD_HI_HINTS: + //['19:1101010100000:1101010100000', '16:op1:011', '12:0100:0100', '8:CRm:0111', '5:op2:110', '0:Rt:11111'] // xxxxxxxxxx|L=x|op0=xx|op1=xxx|CRn=xxxx|CRm=xxxx|op2=xxx|Rt=xxxxx ctx->L = (insword>>21)&1; ctx->op0 = (insword>>19)&3; diff --git a/arch/arm64/disassembler/decode_scratchpad.c b/arch/arm64/disassembler/decode_scratchpad.c index 0248b0ca..c1f63c10 100644 --- a/arch/arm64/disassembler/decode_scratchpad.c +++ b/arch/arm64/disassembler/decode_scratchpad.c @@ -1218,6 +1218,11 @@ const char* reg_lookup_c[16] = {"c0", "c1", "c2", "c3", "c4", "c5", "c6", "c7", #define ADD_OPERAND_SYSTEMREG(R) \ instr->operands[i].operandClass = SYS_REG; \ + instr->operands[i].implspec[0] = ctx->sys_op0; \ + instr->operands[i].implspec[1] = ctx->sys_op1; \ + instr->operands[i].implspec[2] = ctx->sys_crn; \ + instr->operands[i].implspec[3] = ctx->sys_crm; \ + instr->operands[i].implspec[4] = ctx->sys_op2; \ instr->operands[i].sysreg = (R); \ i++; @@ -7516,51 +7521,72 @@ int decode_scratchpad(context* ctx, Instruction* instr) case ENC_AT_SYS_CR_SYSTEMINSTRS: { char* at_op = ""; - switch ((ctx->sys_op1 << 4) | ((ctx->sys_crm & 1) << 3) | (ctx->sys_op2 & 7)) + switch (AT_OP(ctx->sys_op1, ctx->sys_crm, ctx->sys_op2)) { - case 0b0000000: - at_op = "S1E1R"; - break; - case 0b0000001: - at_op = "S1E1W"; - break; - case 0b0000010: - at_op = "S1E0R"; - break; - case 0b0000011: - at_op = "S1E0W"; - break; - case 0b0001000: - at_op = "S1E1RP"; - break; - case 0b0001001: - at_op = "S1E1WP"; - break; - case 0b1000000: - at_op = "S1E2R"; - break; - case 0b1000001: - at_op = "S1E2W"; - break; - case 0b1000100: - at_op = "S12E1R"; - break; - case 0b1000101: - at_op = "S12E1W"; - break; - case 0b1000110: - at_op = "S12E1R"; - break; - case 0b1000111: - at_op = "S12E0W"; - break; - case 0b1100000: - at_op = "S1E3R"; - break; - case 0b1100001: - at_op = "S1E3W"; - break; + case AT_OP(0b000, 0b1000, 0b000): at_op = "S1E1R"; break; + case AT_OP(0b000, 0b1000, 0b001): at_op = "S1E1W"; break; + case AT_OP(0b000, 0b1000, 0b010): at_op = "S1E0R"; break; + case AT_OP(0b000, 0b1000, 0b011): at_op = "S1E0W"; break; + case AT_OP(0b000, 0b1001, 0b000): at_op = "S1E1RP"; break; + case AT_OP(0b000, 0b1001, 0b001): at_op = "S1E1WP"; break; + case AT_OP(0b000, 0b1001, 0b010): at_op = "S1E1A"; break; + case AT_OP(0b100, 0b1000, 0b000): at_op = "S1E2R"; break; + case AT_OP(0b100, 0b1000, 0b001): at_op = "S1E2W"; break; + case AT_OP(0b100, 0b1000, 0b100): at_op = "S12E1R"; break; + case AT_OP(0b100, 0b1000, 0b101): at_op = "S12E1W"; break; + case AT_OP(0b100, 0b1000, 0b110): at_op = "S12E0R"; break; + case AT_OP(0b100, 0b1000, 0b111): at_op = "S12E0W"; break; + case AT_OP(0b100, 0b1001, 0b010): at_op = "S1E2A"; break; + case AT_OP(0b110, 0b1000, 0b000): at_op = "S1E3R"; break; + case AT_OP(0b110, 0b1000, 0b001): at_op = "S1E3W"; break; + case AT_OP(0b110, 0b1001, 0b010): at_op = "S1E3A"; break; } + // switch ((ctx->sys_op1 << 4) | ((ctx->sys_crm & 1) << 3) | (ctx->sys_op2 & 7)) + // { + // case 0b0000000: + // at_op = "S1E1R"; + // break; + // case 0b0000001: + // at_op = "S1E1W"; + // break; + // case 0b0000010: + // at_op = "S1E0R"; + // break; + // case 0b0000011: + // at_op = "S1E0W"; + // break; + // case 0b0001000: + // at_op = "S1E1RP"; + // break; + // case 0b0001001: + // at_op = "S1E1WP"; + // break; + // case 0b1000000: + // at_op = "S1E2R"; + // break; + // case 0b1000001: + // at_op = "S1E2W"; + // break; + // case 0b1000100: + // at_op = "S12E1R"; + // break; + // case 0b1000101: + // at_op = "S12E1W"; + // break; + // case 0b1000110: + // at_op = "S12E1R"; + // break; + // case 0b1000111: + // at_op = "S12E0W"; + // break; + // case 0b1100000: + // at_op = "S1E3R"; + // break; + // case 0b1100001: + // at_op = "S1E3W"; + // break; + // } + instr->operands[i].immediate = AT_OP(ctx->sys_op1, ctx->sys_crm, ctx->sys_op2); // <at_op> ADD_OPERAND_NAME(at_op) // <Xt> @@ -7582,69 +7608,122 @@ int decode_scratchpad(context* ctx, Instruction* instr) } case ENC_DC_SYS_CR_SYSTEMINSTRS: { +#define HavePoP() (1) +#define HavePoPS() (1) +#define HaveMT() (1) +#define HaveMTE() (1) +#define HaveDP() (1) +#define HaveDPB() (1) +#define HaveOCCM() (1) +#define HaveOCCMO() (1) +#define HaveRM() (1) +#define HaveRME() (1) +#define HaveME() (1) +#define HaveMEC() (1) const char* dc_op = "RESERVED"; uint64_t op1 = ctx->op1; uint64_t op2 = ctx->op2; uint64_t CRm = ctx->CRm; - if (op1 == 0b000 && CRm == 0b0110 && op2 == 0b001) - dc_op = "ivac"; - else if (op1 == 0b000 && CRm == 0b0110 && op2 == 0b010) - dc_op = "isw"; - else if (op1 == 0b000 && CRm == 0b0110 && op2 == 0b011 && HasMTE()) - dc_op = "igvac"; - else if (op1 == 0b000 && CRm == 0b0110 && op2 == 0b100 && HasMTE()) - dc_op = "igsw"; - else if (op1 == 0b000 && CRm == 0b0110 && op2 == 0b101 && HasMTE()) - dc_op = "igdvac"; - else if (op1 == 0b000 && CRm == 0b0110 && op2 == 0b110 && HasMTE()) - dc_op = "igdsw"; - else if (op1 == 0b000 && CRm == 0b1010 && op2 == 0b010) - dc_op = "csw"; - else if (op1 == 0b000 && CRm == 0b1010 && op2 == 0b100 && HasMTE()) - dc_op = "cgsw"; - else if (op1 == 0b000 && CRm == 0b1010 && op2 == 0b010 && HasMTE()) - dc_op = "cgdsw"; - else if (op1 == 0b000 && CRm == 0b1110 && op2 == 0b010) - dc_op = "cisw"; - else if (op1 == 0b000 && CRm == 0b1110 && op2 == 0b100 && HasMTE()) - dc_op = "cigsw"; - else if (op1 == 0b000 && CRm == 0b1110 && op2 == 0b110 && HasMTE()) - dc_op = "cigdsw"; - else if (op1 == 0b011 && CRm == 0b0100 && op2 == 0b001) - dc_op = "zva"; - else if (op1 == 0b011 && CRm == 0b0100 && op2 == 0b011 && HasMTE()) - dc_op = "gva"; - else if (op1 == 0b011 && CRm == 0b0100 && op2 == 0b100 && HasMTE()) - dc_op = "gzva"; - else if (op1 == 0b011 && CRm == 0b1010 && op2 == 0b001) - dc_op = "cvac"; - else if (op1 == 0b011 && CRm == 0b1010 && op2 == 0b011 && HasMTE()) - dc_op = "cgvac"; - else if (op1 == 0b011 && CRm == 0b1010 && op2 == 0b101 && HasMTE()) - dc_op = "cgdvac"; - else if (op1 == 0b011 && CRm == 0b1011 && op2 == 0b001) - dc_op = "cvau"; - else if (op1 == 0b011 && CRm == 0b1100 && op2 == 0b001 && HaveDCPoP()) - dc_op = "cvap"; - else if (op1 == 0b011 && CRm == 0b1100 && op2 == 0b011 && HasMTE()) - dc_op = "cgvap"; - else if (op1 == 0b011 && CRm == 0b1100 && op2 == 0b101 && HasMTE()) - dc_op = "cgdvap"; - else if (op1 == 0b011 && CRm == 0b1101 && op2 == 0b001 && HaveDCCVADP()) - dc_op = "cvadp"; - else if (op1 == 0b011 && CRm == 0b1101 && op2 == 0b011 && HasMTE()) - dc_op = "cgvadp"; - else if (op1 == 0b011 && CRm == 0b1101 && op2 == 0b101 && HasMTE()) - dc_op = "cgdvadp"; - else if (op1 == 0b011 && CRm == 0b1110 && op2 == 0b001) - dc_op = "civac"; - else if (op1 == 0b011 && CRm == 0b1110 && op2 == 0b011 && HasMTE()) - dc_op = "cigvac"; - else if (op1 == 0b011 && CRm == 0b1110 && op2 == 0b101 && HasMTE()) - dc_op = "cgdvac"; - - // <dc_op>,<Xt> + switch (DC_OP(op1, CRm, op2)) { + case DC_OP(0b000, 0b0110, 0b001): dc_op = "IVAC"; break; + case DC_OP(0b000, 0b0110, 0b010): dc_op = "ISW"; break; + case DC_OP(0b000, 0b0110, 0b011): if (HaveMTE()) dc_op = "IGVAC"; break; + case DC_OP(0b000, 0b0110, 0b100): if (HaveMTE()) dc_op = "IGSW"; break; + case DC_OP(0b000, 0b0110, 0b101): if (HaveMTE()) dc_op = "IGDVAC"; break; + case DC_OP(0b000, 0b0110, 0b110): if (HaveMTE()) dc_op = "IGDSW"; break; + case DC_OP(0b000, 0b1010, 0b010): dc_op = "CSW"; break; + case DC_OP(0b000, 0b1010, 0b100): if (HaveMTE()) dc_op = "CGSW"; break; + case DC_OP(0b000, 0b1010, 0b110): if (HaveMTE()) dc_op = "CGDSW"; break; + case DC_OP(0b000, 0b1110, 0b010): dc_op = "CISW"; break; + case DC_OP(0b000, 0b1110, 0b100): if (HaveMTE()) dc_op = "CIGSW"; break; + case DC_OP(0b000, 0b1110, 0b110): if (HaveMTE()) dc_op = "CIGDSW"; break; + case DC_OP(0b000, 0b1111, 0b001): if (HavePoP()) dc_op = "CIVAPS"; break; + case DC_OP(0b000, 0b1111, 0b101): if (HavePoPS() && HaveMTE()) dc_op = "CIGDVAPS"; break; + case DC_OP(0b011, 0b0100, 0b001): dc_op = "ZVA"; break; + case DC_OP(0b011, 0b0100, 0b011): if (HaveMT()) dc_op = "GVA"; break; + case DC_OP(0b011, 0b0100, 0b100): if (HaveMT()) dc_op = "GZVA"; break; + case DC_OP(0b011, 0b1010, 0b001): dc_op = "CVAC"; break; + case DC_OP(0b011, 0b1010, 0b011): if (HaveMT()) dc_op = "CGVAC"; break; + case DC_OP(0b011, 0b1010, 0b101): if (HaveMT()) dc_op = "CGDVAC"; break; + case DC_OP(0b011, 0b1011, 0b000): if (HaveOCCM()) dc_op = "CVAOC"; break; + case DC_OP(0b011, 0b1011, 0b001): dc_op = "CVAU"; break; + case DC_OP(0b011, 0b1011, 0b111): if (HaveOCCMO() && HaveMT()) dc_op = "CGDVAOC"; break; + case DC_OP(0b011, 0b1100, 0b001): if (HaveDP()) dc_op = "CVAP"; break; + case DC_OP(0b011, 0b1100, 0b011): if (HaveMT()) dc_op = "CGVAP"; break; + case DC_OP(0b011, 0b1100, 0b101): if (HaveMT()) dc_op = "CGDVAP"; break; + case DC_OP(0b011, 0b1101, 0b001): if (HaveDPB()) dc_op = "CVADP"; break; + case DC_OP(0b011, 0b1101, 0b011): if (HaveMT()) dc_op = "CGVADP"; break; + case DC_OP(0b011, 0b1101, 0b101): if (HaveMT()) dc_op = "CGDVADP"; break; + case DC_OP(0b011, 0b1110, 0b001): dc_op = "CIVAC"; break; + case DC_OP(0b011, 0b1110, 0b011): if (HaveMT()) dc_op = "CIGVAC"; break; + case DC_OP(0b011, 0b1110, 0b101): if (HaveMT()) dc_op = "CIGDVAC"; break; + case DC_OP(0b011, 0b1111, 0b000): if (HaveOCCM()) dc_op = "CIVAOC"; break; + case DC_OP(0b011, 0b1111, 0b111): if (HaveOCCMO() && HaveMT()) dc_op = "CIGDVAOC"; break; + case DC_OP(0b100, 0b1110, 0b000): if (HaveME()) dc_op = "CIPAE"; break; + case DC_OP(0b100, 0b1110, 0b111): if (HaveMEC() && HaveMTE()) dc_op = "CIGDPAE"; break; + case DC_OP(0b110, 0b1110, 0b001): if (HaveRM()) dc_op = "CIPAPA"; break; + case DC_OP(0b110, 0b1110, 0b101): if (HaveRME() && HaveMTE()) dc_op = "CIGDPAPA"; break; + } +// if (op1 == 0b000 && CRm == 0b0110 && op2 == 0b001) +// dc_op = "ivac"; +// else if (op1 == 0b000 && CRm == 0b0110 && op2 == 0b010) +// dc_op = "isw"; +// else if (op1 == 0b000 && CRm == 0b0110 && op2 == 0b011 && HasMTE()) +// dc_op = "igvac"; +// else if (op1 == 0b000 && CRm == 0b0110 && op2 == 0b100 && HasMTE()) +// dc_op = "igsw"; +// else if (op1 == 0b000 && CRm == 0b0110 && op2 == 0b101 && HasMTE()) +// dc_op = "igdvac"; +// else if (op1 == 0b000 && CRm == 0b0110 && op2 == 0b110 && HasMTE()) +// dc_op = "igdsw"; +// else if (op1 == 0b000 && CRm == 0b1010 && op2 == 0b010) +// dc_op = "csw"; +// else if (op1 == 0b000 && CRm == 0b1010 && op2 == 0b100 && HasMTE()) +// dc_op = "cgsw"; +// else if (op1 == 0b000 && CRm == 0b1010 && op2 == 0b010 && HasMTE()) +// dc_op = "cgdsw"; +// else if (op1 == 0b000 && CRm == 0b1110 && op2 == 0b010) +// dc_op = "cisw"; +// else if (op1 == 0b000 && CRm == 0b1110 && op2 == 0b100 && HasMTE()) +// dc_op = "cigsw"; +// else if (op1 == 0b000 && CRm == 0b1110 && op2 == 0b110 && HasMTE()) +// dc_op = "cigdsw"; +// else if (op1 == 0b011 && CRm == 0b0100 && op2 == 0b001) +// dc_op = "zva"; +// else if (op1 == 0b011 && CRm == 0b0100 && op2 == 0b011 && HasMTE()) +// dc_op = "gva"; +// else if (op1 == 0b011 && CRm == 0b0100 && op2 == 0b100 && HasMTE()) +// dc_op = "gzva"; +// else if (op1 == 0b011 && CRm == 0b1010 && op2 == 0b001) +// dc_op = "cvac"; +// else if (op1 == 0b011 && CRm == 0b1010 && op2 == 0b011 && HasMTE()) +// dc_op = "cgvac"; +// else if (op1 == 0b011 && CRm == 0b1010 && op2 == 0b101 && HasMTE()) +// dc_op = "cgdvac"; +// else if (op1 == 0b011 && CRm == 0b1011 && op2 == 0b001) +// dc_op = "cvau"; +// else if (op1 == 0b011 && CRm == 0b1100 && op2 == 0b001 && HaveDCPoP()) +// dc_op = "cvap"; +// else if (op1 == 0b011 && CRm == 0b1100 && op2 == 0b011 && HasMTE()) +// dc_op = "cgvap"; +// else if (op1 == 0b011 && CRm == 0b1100 && op2 == 0b101 && HasMTE()) +// dc_op = "cgdvap"; +// else if (op1 == 0b011 && CRm == 0b1101 && op2 == 0b001 && HaveDCCVADP()) +// dc_op = "cvadp"; +// else if (op1 == 0b011 && CRm == 0b1101 && op2 == 0b011 && HasMTE()) +// dc_op = "cgvadp"; +// else if (op1 == 0b011 && CRm == 0b1101 && op2 == 0b101 && HasMTE()) +// dc_op = "cgdvadp"; +// else if (op1 == 0b011 && CRm == 0b1110 && op2 == 0b001) +// dc_op = "civac"; +// else if (op1 == 0b011 && CRm == 0b1110 && op2 == 0b011 && HasMTE()) +// dc_op = "cigvac"; +// else if (op1 == 0b011 && CRm == 0b1110 && op2 == 0b101 && HasMTE()) +// dc_op = "cgdvac"; + instr->operands[i].immediate = DC_OP(op1, CRm, op2); + // <dc_op> ADD_OPERAND_NAME(dc_op); + // <Xt> ADD_OPERAND_XT; break; @@ -8074,164 +8153,344 @@ int decode_scratchpad(context* ctx, Instruction* instr) { uint64_t op1 = ctx->op1; uint64_t op2 = ctx->op2; + uint64_t crn = ctx->CRn; uint64_t crm = ctx->CRm; const char* tlbi_op = "error"; - if (op1 == 0b000 && crm == 0b0001 && op2 == 0b000 && HaveTLBIOS()) - tlbi_op = "vmalle1os"; - else if (op1 == 0b000 && crm == 0b0001 && op2 == 0b001 && HaveTLBIOS()) - tlbi_op = "vae1os"; - else if (op1 == 0b000 && crm == 0b0001 && op2 == 0b010 && HaveTLBIOS()) - tlbi_op = "aside1os"; - else if (op1 == 0b000 && crm == 0b0001 && op2 == 0b011 && HaveTLBIOS()) - tlbi_op = "vaae1os"; - else if (op1 == 0b000 && crm == 0b0001 && op2 == 0b101 && HaveTLBIOS()) - tlbi_op = "vale1os"; - else if (op1 == 0b000 && crm == 0b0001 && op2 == 0b111 && HaveTLBIOS()) - tlbi_op = "vaale1os"; - else if (op1 == 0b000 && crm == 0b0010 && op2 == 0b001 && HaveTLBIRANGE()) - tlbi_op = "rvae1is"; - else if (op1 == 0b000 && crm == 0b0010 && op2 == 0b011 && HaveTLBIRANGE()) - tlbi_op = "rvaae1is"; - else if (op1 == 0b000 && crm == 0b0010 && op2 == 0b101 && HaveTLBIRANGE()) - tlbi_op = "rvale1is"; - else if (op1 == 0b000 && crm == 0b0010 && op2 == 0b111 && HaveTLBIRANGE()) - tlbi_op = "rvaale1is"; - else if (op1 == 0b000 && crm == 0b0011 && op2 == 0b000) - tlbi_op = "vmalle1is"; - else if (op1 == 0b000 && crm == 0b0011 && op2 == 0b001) - tlbi_op = "vae1is"; - else if (op1 == 0b000 && crm == 0b0011 && op2 == 0b010) - tlbi_op = "aside1is"; - else if (op1 == 0b000 && crm == 0b0011 && op2 == 0b011) - tlbi_op = "vaae1is"; - else if (op1 == 0b000 && crm == 0b0011 && op2 == 0b101) - tlbi_op = "vale1is"; - else if (op1 == 0b000 && crm == 0b0011 && op2 == 0b111) - tlbi_op = "vaale1is"; - else if (op1 == 0b000 && crm == 0b0101 && op2 == 0b001 && HaveTLBIRANGE()) - tlbi_op = "rvae1os"; - else if (op1 == 0b000 && crm == 0b0101 && op2 == 0b011 && HaveTLBIRANGE()) - tlbi_op = "rvaae1os"; - else if (op1 == 0b000 && crm == 0b0101 && op2 == 0b101 && HaveTLBIRANGE()) - tlbi_op = "rvale1os"; - else if (op1 == 0b000 && crm == 0b0101 && op2 == 0b111 && HaveTLBIRANGE()) - tlbi_op = "rvaale1os"; - else if (op1 == 0b000 && crm == 0b0110 && op2 == 0b001 && HaveTLBIRANGE()) - tlbi_op = "rvae1"; - else if (op1 == 0b000 && crm == 0b0110 && op2 == 0b011 && HaveTLBIRANGE()) - tlbi_op = "rvaae1"; - else if (op1 == 0b000 && crm == 0b0110 && op2 == 0b101 && HaveTLBIRANGE()) - tlbi_op = "rvale1"; - else if (op1 == 0b000 && crm == 0b0110 && op2 == 0b111 && HaveTLBIRANGE()) - tlbi_op = "rvaale1"; - else if (op1 == 0b000 && crm == 0b0111 && op2 == 0b000) - tlbi_op = "vmalle1"; - else if (op1 == 0b000 && crm == 0b0111 && op2 == 0b001) - tlbi_op = "vae1"; - else if (op1 == 0b000 && crm == 0b0111 && op2 == 0b010) - tlbi_op = "aside1"; - else if (op1 == 0b000 && crm == 0b0111 && op2 == 0b011) - tlbi_op = "vaae1"; - else if (op1 == 0b000 && crm == 0b0111 && op2 == 0b101) - tlbi_op = "vale1"; - else if (op1 == 0b000 && crm == 0b0111 && op2 == 0b111) - tlbi_op = "vaale1"; - else if (op1 == 0b100 && crm == 0b0000 && op2 == 0b001) - tlbi_op = "ipas2e1is"; - else if (op1 == 0b100 && crm == 0b0000 && op2 == 0b010 && HaveTLBIRANGE()) - tlbi_op = "ripas2e1is"; - else if (op1 == 0b100 && crm == 0b0000 && op2 == 0b101) - tlbi_op = "ipas2le1is"; - else if (op1 == 0b100 && crm == 0b0000 && op2 == 0b110 && HaveTLBIRANGE()) - tlbi_op = "ripas2le1is"; - else if (op1 == 0b100 && crm == 0b0001 && op2 == 0b000 && HaveTLBIOS()) - tlbi_op = "alle2os"; - else if (op1 == 0b100 && crm == 0b0001 && op2 == 0b001 && HaveTLBIOS()) - tlbi_op = "vae2os"; - else if (op1 == 0b100 && crm == 0b0001 && op2 == 0b100 && HaveTLBIOS()) - tlbi_op = "alle1os"; - else if (op1 == 0b100 && crm == 0b0001 && op2 == 0b101 && HaveTLBIOS()) - tlbi_op = "vale2os"; - else if (op1 == 0b100 && crm == 0b0001 && op2 == 0b110 && HaveTLBIOS()) - tlbi_op = "vmalls12e1os"; - else if (op1 == 0b100 && crm == 0b0010 && op2 == 0b001 && HaveTLBIRANGE()) - tlbi_op = "rvae2is"; - else if (op1 == 0b100 && crm == 0b0010 && op2 == 0b101 && HaveTLBIRANGE()) - tlbi_op = "rvale2is"; - else if (op1 == 0b100 && crm == 0b0011 && op2 == 0b000) - tlbi_op = "alle2is"; - else if (op1 == 0b100 && crm == 0b0011 && op2 == 0b001) - tlbi_op = "vae2is"; - else if (op1 == 0b100 && crm == 0b0011 && op2 == 0b100) - tlbi_op = "alle1is"; - else if (op1 == 0b100 && crm == 0b0011 && op2 == 0b101) - tlbi_op = "vale2is"; - else if (op1 == 0b100 && crm == 0b0011 && op2 == 0b110) - tlbi_op = "vmalls12e1is"; - else if (op1 == 0b100 && crm == 0b0100 && op2 == 0b000 && HaveTLBIOS()) - tlbi_op = "ipas2e1os"; - else if (op1 == 0b100 && crm == 0b0100 && op2 == 0b001) - tlbi_op = "ipas2e1"; - else if (op1 == 0b100 && crm == 0b0100 && op2 == 0b010 && HaveTLBIRANGE()) - tlbi_op = "ripas2e1"; - else if (op1 == 0b100 && crm == 0b0100 && op2 == 0b011 && HaveTLBIRANGE()) - tlbi_op = "ripas2e1os"; - else if (op1 == 0b100 && crm == 0b0100 && op2 == 0b100 && HaveTLBIOS()) - tlbi_op = "ipas2le1os"; - else if (op1 == 0b100 && crm == 0b0100 && op2 == 0b101) - tlbi_op = "ipas2le1"; - else if (op1 == 0b100 && crm == 0b0100 && op2 == 0b110 && HaveTLBIRANGE()) - tlbi_op = "ripas2le1"; - else if (op1 == 0b100 && crm == 0b0100 && op2 == 0b111 && HaveTLBIRANGE()) - tlbi_op = "ripas2le1os"; - else if (op1 == 0b100 && crm == 0b0101 && op2 == 0b001 && HaveTLBIRANGE()) - tlbi_op = "rvae2os"; - else if (op1 == 0b100 && crm == 0b0101 && op2 == 0b101 && HaveTLBIRANGE()) - tlbi_op = "rvale2os"; - else if (op1 == 0b100 && crm == 0b0110 && op2 == 0b001 && HaveTLBIRANGE()) - tlbi_op = "rvae2"; - else if (op1 == 0b100 && crm == 0b0110 && op2 == 0b101 && HaveTLBIRANGE()) - tlbi_op = "rvale2"; - else if (op1 == 0b100 && crm == 0b0111 && op2 == 0b000) - tlbi_op = "alle2"; - else if (op1 == 0b100 && crm == 0b0111 && op2 == 0b001) - tlbi_op = "vae2"; - else if (op1 == 0b100 && crm == 0b0111 && op2 == 0b100) - tlbi_op = "alle1"; - else if (op1 == 0b100 && crm == 0b0111 && op2 == 0b101) - tlbi_op = "vale2"; - else if (op1 == 0b100 && crm == 0b0111 && op2 == 0b110) - tlbi_op = "vmalls12e1"; - else if (op1 == 0b110 && crm == 0b0001 && op2 == 0b000 && HaveTLBIOS()) - tlbi_op = "alle3os"; - else if (op1 == 0b110 && crm == 0b0001 && op2 == 0b001 && HaveTLBIOS()) - tlbi_op = "vae3os"; - else if (op1 == 0b110 && crm == 0b0001 && op2 == 0b101 && HaveTLBIOS()) - tlbi_op = "vale3os"; - else if (op1 == 0b110 && crm == 0b0010 && op2 == 0b001 && HaveTLBIRANGE()) - tlbi_op = "rvae3is"; - else if (op1 == 0b110 && crm == 0b0010 && op2 == 0b101 && HaveTLBIRANGE()) - tlbi_op = "rvale3is"; - else if (op1 == 0b110 && crm == 0b0011 && op2 == 0b000) - tlbi_op = "alle3is"; - else if (op1 == 0b110 && crm == 0b0011 && op2 == 0b001) - tlbi_op = "vae3is"; - else if (op1 == 0b110 && crm == 0b0011 && op2 == 0b101) - tlbi_op = "vale3is"; - else if (op1 == 0b110 && crm == 0b0101 && op2 == 0b001 && HaveTLBIRANGE()) - tlbi_op = "rvae3os"; - else if (op1 == 0b110 && crm == 0b0101 && op2 == 0b101 && HaveTLBIRANGE()) - tlbi_op = "rvale3os"; - else if (op1 == 0b110 && crm == 0b0110 && op2 == 0b001 && HaveTLBIRANGE()) - tlbi_op = "rvae3"; - else if (op1 == 0b110 && crm == 0b0110 && op2 == 0b101 && HaveTLBIRANGE()) - tlbi_op = "rvale3"; - else if (op1 == 0b110 && crm == 0b0111 && op2 == 0b000) - tlbi_op = "alle3"; - else if (op1 == 0b110 && crm == 0b0111 && op2 == 0b001) - tlbi_op = "vae3"; - else if (op1 == 0b110 && crm == 0b0111 && op2 == 0b101) - tlbi_op = "vale3"; + instr->operands[i].immediate = -1; + switch (TLBI_OP(op1, crn, crm, op2)) + { +#define HaveXS() (1) +#define HaveTLBIW() (1) +#define HaveRME() (1) + case TLBI_OP(0b000, 0b1000, 0b0001, 0b000): if HaveTLBIOS() tlbi_op = "vmalle1os"; break; + case TLBI_OP(0b000, 0b1000, 0b0001, 0b001): if HaveTLBIOS() tlbi_op = "vae1os"; break; + case TLBI_OP(0b000, 0b1000, 0b0001, 0b010): if HaveTLBIOS() tlbi_op = "aside1os"; break; + case TLBI_OP(0b000, 0b1000, 0b0001, 0b011): if HaveTLBIOS() tlbi_op = "vaae1os"; break; + case TLBI_OP(0b000, 0b1000, 0b0001, 0b101): if HaveTLBIOS() tlbi_op = "vale1os"; break; + case TLBI_OP(0b000, 0b1000, 0b0001, 0b111): if HaveTLBIOS() tlbi_op = "vaale1os"; break; + case TLBI_OP(0b000, 0b1000, 0b0010, 0b001): if HaveTLBIRANGE() tlbi_op = "rvae1is"; break; + case TLBI_OP(0b000, 0b1000, 0b0010, 0b011): if HaveTLBIRANGE() tlbi_op = "rvaae1is"; break; + case TLBI_OP(0b000, 0b1000, 0b0010, 0b101): if HaveTLBIRANGE() tlbi_op = "rvale1is"; break; + case TLBI_OP(0b000, 0b1000, 0b0010, 0b111): if HaveTLBIRANGE() tlbi_op = "rvaale1is"; break; + case TLBI_OP(0b000, 0b1000, 0b0011, 0b000): tlbi_op = "vmalle1is"; break; + case TLBI_OP(0b000, 0b1000, 0b0011, 0b001): tlbi_op = "vae1is"; break; + case TLBI_OP(0b000, 0b1000, 0b0011, 0b010): tlbi_op = "aside1is"; break; + case TLBI_OP(0b000, 0b1000, 0b0011, 0b011): tlbi_op = "vaae1is"; break; + case TLBI_OP(0b000, 0b1000, 0b0011, 0b101): tlbi_op = "vale1is"; break; + case TLBI_OP(0b000, 0b1000, 0b0011, 0b111): tlbi_op = "vaale1is"; break; + case TLBI_OP(0b000, 0b1000, 0b0101, 0b001): if HaveTLBIRANGE() tlbi_op = "rvae1os"; break; + case TLBI_OP(0b000, 0b1000, 0b0101, 0b011): if HaveTLBIRANGE() tlbi_op = "rvaae1os"; break; + case TLBI_OP(0b000, 0b1000, 0b0101, 0b101): if HaveTLBIRANGE() tlbi_op = "rvale1os"; break; + case TLBI_OP(0b000, 0b1000, 0b0101, 0b111): if HaveTLBIRANGE() tlbi_op = "rvaale1os"; break; + case TLBI_OP(0b000, 0b1000, 0b0110, 0b001): if HaveTLBIRANGE() tlbi_op = "rvae1"; break; + case TLBI_OP(0b000, 0b1000, 0b0110, 0b011): if HaveTLBIRANGE() tlbi_op = "rvaae1"; break; + case TLBI_OP(0b000, 0b1000, 0b0110, 0b101): if HaveTLBIRANGE() tlbi_op = "rvale1"; break; + case TLBI_OP(0b000, 0b1000, 0b0110, 0b111): if HaveTLBIRANGE() tlbi_op = "rvaale1"; break; + case TLBI_OP(0b000, 0b1000, 0b0111, 0b000): tlbi_op = "vmalle1"; break; + case TLBI_OP(0b000, 0b1000, 0b0111, 0b001): tlbi_op = "vae1"; break; + case TLBI_OP(0b000, 0b1000, 0b0111, 0b010): tlbi_op = "aside1"; break; + case TLBI_OP(0b000, 0b1000, 0b0111, 0b011): tlbi_op = "vaae1"; break; + case TLBI_OP(0b000, 0b1000, 0b0111, 0b101): tlbi_op = "vale1"; break; + case TLBI_OP(0b000, 0b1000, 0b0111, 0b111): tlbi_op = "vaale1"; break; + case TLBI_OP(0b000, 0b1001, 0b0001, 0b000): if HaveXS() tlbi_op = "vmalle1osnxs"; break; + case TLBI_OP(0b000, 0b1001, 0b0001, 0b001): if HaveXS() tlbi_op = "vae1osnxs"; break; + case TLBI_OP(0b000, 0b1001, 0b0001, 0b010): if HaveXS() tlbi_op = "aside1osnxs"; break; + case TLBI_OP(0b000, 0b1001, 0b0001, 0b011): if HaveXS() tlbi_op = "vaae1osnxs"; break; + case TLBI_OP(0b000, 0b1001, 0b0001, 0b101): if HaveXS() tlbi_op = "vale1osnxs"; break; + case TLBI_OP(0b000, 0b1001, 0b0001, 0b111): if HaveXS() tlbi_op = "vaale1osnxs"; break; + case TLBI_OP(0b000, 0b1001, 0b0010, 0b001): if HaveXS() tlbi_op = "rvae1isnxs"; break; + case TLBI_OP(0b000, 0b1001, 0b0010, 0b011): if HaveXS() tlbi_op = "rvaae1isnxs"; break; + case TLBI_OP(0b000, 0b1001, 0b0010, 0b101): if HaveXS() tlbi_op = "rvale1isnxs"; break; + case TLBI_OP(0b000, 0b1001, 0b0010, 0b111): if HaveXS() tlbi_op = "rvaale1isnxs"; break; + case TLBI_OP(0b000, 0b1001, 0b0011, 0b000): if HaveXS() tlbi_op = "vmalle1isnxs"; break; + case TLBI_OP(0b000, 0b1001, 0b0011, 0b001): if HaveXS() tlbi_op = "vae1isnxs"; break; + case TLBI_OP(0b000, 0b1001, 0b0011, 0b010): if HaveXS() tlbi_op = "aside1isnxs"; break; + case TLBI_OP(0b000, 0b1001, 0b0011, 0b011): if HaveXS() tlbi_op = "vaae1isnxs"; break; + case TLBI_OP(0b000, 0b1001, 0b0011, 0b101): if HaveXS() tlbi_op = "vale1isnxs"; break; + case TLBI_OP(0b000, 0b1001, 0b0011, 0b111): if HaveXS() tlbi_op = "vaale1isnxs"; break; + case TLBI_OP(0b000, 0b1001, 0b0101, 0b001): if HaveXS() tlbi_op = "rvae1osnxs"; break; + case TLBI_OP(0b000, 0b1001, 0b0101, 0b011): if HaveXS() tlbi_op = "rvaae1osnxs"; break; + case TLBI_OP(0b000, 0b1001, 0b0101, 0b101): if HaveXS() tlbi_op = "rvale1osnxs"; break; + case TLBI_OP(0b000, 0b1001, 0b0101, 0b111): if HaveXS() tlbi_op = "rvaale1osnxs"; break; + case TLBI_OP(0b000, 0b1001, 0b0110, 0b001): if HaveXS() tlbi_op = "rvae1nxs"; break; + case TLBI_OP(0b000, 0b1001, 0b0110, 0b011): if HaveXS() tlbi_op = "rvaae1nxs"; break; + case TLBI_OP(0b000, 0b1001, 0b0110, 0b101): if HaveXS() tlbi_op = "rvale1nxs"; break; + case TLBI_OP(0b000, 0b1001, 0b0110, 0b111): if HaveXS() tlbi_op = "rvaale1nxs"; break; + case TLBI_OP(0b000, 0b1001, 0b0111, 0b000): if HaveXS() tlbi_op = "vmalle1nxs"; break; + case TLBI_OP(0b000, 0b1001, 0b0111, 0b001): if HaveXS() tlbi_op = "vae1nxs"; break; + case TLBI_OP(0b000, 0b1001, 0b0111, 0b010): if HaveXS() tlbi_op = "aside1nxs"; break; + case TLBI_OP(0b000, 0b1001, 0b0111, 0b011): if HaveXS() tlbi_op = "vaae1nxs"; break; + case TLBI_OP(0b000, 0b1001, 0b0111, 0b101): if HaveXS() tlbi_op = "vale1nxs"; break; + case TLBI_OP(0b000, 0b1001, 0b0111, 0b111): if HaveXS() tlbi_op = "vaale1nxs"; break; + case TLBI_OP(0b100, 0b1000, 0b0000, 0b001): tlbi_op = "ipas2e1is"; break; + case TLBI_OP(0b100, 0b1000, 0b0000, 0b010): if HaveTLBIRANGE() tlbi_op = "ripas2e1is"; break; + case TLBI_OP(0b100, 0b1000, 0b0000, 0b101): tlbi_op = "ipas2le1is"; break; + case TLBI_OP(0b100, 0b1000, 0b0000, 0b110): if HaveTLBIRANGE() tlbi_op = "ripas2le1is"; break; + case TLBI_OP(0b100, 0b1000, 0b0001, 0b000): if HaveTLBIOS() tlbi_op = "alle2os"; break; + case TLBI_OP(0b100, 0b1000, 0b0001, 0b001): if HaveTLBIOS() tlbi_op = "vae2os"; break; + case TLBI_OP(0b100, 0b1000, 0b0001, 0b100): if HaveTLBIOS() tlbi_op = "alle1os"; break; + case TLBI_OP(0b100, 0b1000, 0b0001, 0b101): if HaveTLBIOS() tlbi_op = "vale2os"; break; + case TLBI_OP(0b100, 0b1000, 0b0001, 0b110): if HaveTLBIOS() tlbi_op = "vmalls12e1os"; break; + case TLBI_OP(0b100, 0b1000, 0b0010, 0b001): if HaveTLBIRANGE() tlbi_op = "rvae2is"; break; + case TLBI_OP(0b100, 0b1000, 0b0010, 0b010): if HaveTLBIW() tlbi_op = "vmallws2e1is"; break; + case TLBI_OP(0b100, 0b1000, 0b0010, 0b101): if HaveTLBIRANGE() tlbi_op = "rvale2is"; break; + case TLBI_OP(0b100, 0b1000, 0b0011, 0b000): tlbi_op = "alle2is"; break; + case TLBI_OP(0b100, 0b1000, 0b0011, 0b001): tlbi_op = "vae2is"; break; + case TLBI_OP(0b100, 0b1000, 0b0011, 0b100): tlbi_op = "alle1is"; break; + case TLBI_OP(0b100, 0b1000, 0b0011, 0b101): tlbi_op = "vale2is"; break; + case TLBI_OP(0b100, 0b1000, 0b0011, 0b110): tlbi_op = "vmalls12e1is"; break; + case TLBI_OP(0b100, 0b1000, 0b0100, 0b000): if HaveTLBIOS() tlbi_op = "ipas2e1os"; break; + case TLBI_OP(0b100, 0b1000, 0b0100, 0b001): tlbi_op = "ipas2e1"; break; + case TLBI_OP(0b100, 0b1000, 0b0100, 0b010): if HaveTLBIRANGE() tlbi_op = "ripas2e1"; break; + case TLBI_OP(0b100, 0b1000, 0b0100, 0b011): if HaveTLBIRANGE() tlbi_op = "ripas2e1os"; break; + case TLBI_OP(0b100, 0b1000, 0b0100, 0b100): if HaveTLBIOS() tlbi_op = "ipas2le1os"; break; + case TLBI_OP(0b100, 0b1000, 0b0100, 0b101): tlbi_op = "ipas2le1"; break; + case TLBI_OP(0b100, 0b1000, 0b0100, 0b110): if HaveTLBIRANGE() tlbi_op = "ripas2le1"; break; + case TLBI_OP(0b100, 0b1000, 0b0100, 0b111): if HaveTLBIRANGE() tlbi_op = "ripas2le1os"; break; + case TLBI_OP(0b100, 0b1000, 0b0101, 0b001): if HaveTLBIRANGE() tlbi_op = "rvae2os"; break; + case TLBI_OP(0b100, 0b1000, 0b0101, 0b010): if HaveTLBIW() tlbi_op = "vmallws2e1os"; break; + case TLBI_OP(0b100, 0b1000, 0b0101, 0b101): if HaveTLBIRANGE() tlbi_op = "rvale2os"; break; + case TLBI_OP(0b100, 0b1000, 0b0110, 0b001): if HaveTLBIRANGE() tlbi_op = "rvae2"; break; + case TLBI_OP(0b100, 0b1000, 0b0110, 0b010): if HaveTLBIW() tlbi_op = "vmallws2e1"; break; + case TLBI_OP(0b100, 0b1000, 0b0110, 0b101): if HaveTLBIRANGE() tlbi_op = "rvale2"; break; + case TLBI_OP(0b100, 0b1000, 0b0111, 0b000): tlbi_op = "alle2"; break; + case TLBI_OP(0b100, 0b1000, 0b0111, 0b001): tlbi_op = "vae2"; break; + case TLBI_OP(0b100, 0b1000, 0b0111, 0b100): tlbi_op = "alle1"; break; + case TLBI_OP(0b100, 0b1000, 0b0111, 0b101): tlbi_op = "vale2"; break; + case TLBI_OP(0b100, 0b1000, 0b0111, 0b110): tlbi_op = "vmalls12e1"; break; + case TLBI_OP(0b100, 0b1001, 0b0000, 0b001): if HaveXS() tlbi_op = "ipas2e1isnxs"; break; + case TLBI_OP(0b100, 0b1001, 0b0000, 0b010): if HaveXS() tlbi_op = "ripas2e1isnxs"; break; + case TLBI_OP(0b100, 0b1001, 0b0000, 0b101): if HaveXS() tlbi_op = "ipas2le1isnxs"; break; + case TLBI_OP(0b100, 0b1001, 0b0000, 0b110): if HaveXS() tlbi_op = "ripas2le1isnxs"; break; + case TLBI_OP(0b100, 0b1001, 0b0001, 0b000): if HaveXS() tlbi_op = "alle2osnxs"; break; + case TLBI_OP(0b100, 0b1001, 0b0001, 0b001): if HaveXS() tlbi_op = "vae2osnxs"; break; + case TLBI_OP(0b100, 0b1001, 0b0001, 0b100): if HaveXS() tlbi_op = "alle1osnxs"; break; + case TLBI_OP(0b100, 0b1001, 0b0001, 0b101): if HaveXS() tlbi_op = "vale2osnxs"; break; + case TLBI_OP(0b100, 0b1001, 0b0001, 0b110): if HaveXS() tlbi_op = "vmalls12e1osnxs"; break; + case TLBI_OP(0b100, 0b1001, 0b0010, 0b001): if HaveXS() tlbi_op = "rvae2isnxs"; break; + case TLBI_OP(0b100, 0b1001, 0b0010, 0b010): if HaveTLBIW() tlbi_op = "vmallws2e1isnxs"; break; + case TLBI_OP(0b100, 0b1001, 0b0010, 0b101): if HaveXS() tlbi_op = "rvale2isnxs"; break; + case TLBI_OP(0b100, 0b1001, 0b0011, 0b000): if HaveXS() tlbi_op = "alle2isnxs"; break; + case TLBI_OP(0b100, 0b1001, 0b0011, 0b001): if HaveXS() tlbi_op = "vae2isnxs"; break; + case TLBI_OP(0b100, 0b1001, 0b0011, 0b100): if HaveXS() tlbi_op = "alle1isnxs"; break; + case TLBI_OP(0b100, 0b1001, 0b0011, 0b101): if HaveXS() tlbi_op = "vale2isnxs"; break; + case TLBI_OP(0b100, 0b1001, 0b0011, 0b110): if HaveXS() tlbi_op = "vmalls12e1isnxs"; break; + case TLBI_OP(0b100, 0b1001, 0b0100, 0b000): if HaveXS() tlbi_op = "ipas2e1osnxs"; break; + case TLBI_OP(0b100, 0b1001, 0b0100, 0b001): if HaveXS() tlbi_op = "ipas2e1nxs"; break; + case TLBI_OP(0b100, 0b1001, 0b0100, 0b010): if HaveXS() tlbi_op = "ripas2e1nxs"; break; + case TLBI_OP(0b100, 0b1001, 0b0100, 0b011): if HaveXS() tlbi_op = "ripas2e1osnxs"; break; + case TLBI_OP(0b100, 0b1001, 0b0100, 0b100): if HaveXS() tlbi_op = "ipas2le1osnxs"; break; + case TLBI_OP(0b100, 0b1001, 0b0100, 0b101): if HaveXS() tlbi_op = "ipas2le1nxs"; break; + case TLBI_OP(0b100, 0b1001, 0b0100, 0b110): if HaveXS() tlbi_op = "ripas2le1nxs"; break; + case TLBI_OP(0b100, 0b1001, 0b0100, 0b111): if HaveXS() tlbi_op = "ripas2le1osnxs"; break; + case TLBI_OP(0b100, 0b1001, 0b0101, 0b001): if HaveXS() tlbi_op = "rvae2osnxs"; break; + case TLBI_OP(0b100, 0b1001, 0b0101, 0b010): if HaveTLBIW() tlbi_op = "vmallws2e1osnxs"; break; + case TLBI_OP(0b100, 0b1001, 0b0101, 0b101): if HaveXS() tlbi_op = "rvale2osnxs"; break; + case TLBI_OP(0b100, 0b1001, 0b0110, 0b001): if HaveXS() tlbi_op = "rvae2nxs"; break; + case TLBI_OP(0b100, 0b1001, 0b0110, 0b010): if HaveTLBIW() tlbi_op = "vmallws2e1nxs"; break; + case TLBI_OP(0b100, 0b1001, 0b0110, 0b101): if HaveXS() tlbi_op = "rvale2nxs"; break; + case TLBI_OP(0b100, 0b1001, 0b0111, 0b000): if HaveXS() tlbi_op = "alle2nxs"; break; + case TLBI_OP(0b100, 0b1001, 0b0111, 0b001): if HaveXS() tlbi_op = "vae2nxs"; break; + case TLBI_OP(0b100, 0b1001, 0b0111, 0b100): if HaveXS() tlbi_op = "alle1nxs"; break; + case TLBI_OP(0b100, 0b1001, 0b0111, 0b101): if HaveXS() tlbi_op = "vale2nxs"; break; + case TLBI_OP(0b100, 0b1001, 0b0111, 0b110): if HaveXS() tlbi_op = "vmalls12e1nxs"; break; + case TLBI_OP(0b110, 0b1000, 0b0001, 0b000): if HaveTLBIOS() tlbi_op = "alle3os"; break; + case TLBI_OP(0b110, 0b1000, 0b0001, 0b001): if HaveTLBIOS() tlbi_op = "vae3os"; break; + case TLBI_OP(0b110, 0b1000, 0b0001, 0b100): if HaveRME() tlbi_op = "paallos"; break; + case TLBI_OP(0b110, 0b1000, 0b0001, 0b101): if HaveTLBIOS() tlbi_op = "vale3os"; break; + case TLBI_OP(0b110, 0b1000, 0b0010, 0b001): if HaveTLBIRANGE() tlbi_op = "rvae3is"; break; + case TLBI_OP(0b110, 0b1000, 0b0010, 0b101): if HaveTLBIRANGE() tlbi_op = "rvale3is"; break; + case TLBI_OP(0b110, 0b1000, 0b0011, 0b000): tlbi_op = "alle3is"; break; + case TLBI_OP(0b110, 0b1000, 0b0011, 0b001): tlbi_op = "vae3is"; break; + case TLBI_OP(0b110, 0b1000, 0b0011, 0b101): tlbi_op = "vale3is"; break; + case TLBI_OP(0b110, 0b1000, 0b0100, 0b011): if HaveRME() tlbi_op = "rpaos"; break; + case TLBI_OP(0b110, 0b1000, 0b0100, 0b111): if HaveRME() tlbi_op = "rpalos"; break; + case TLBI_OP(0b110, 0b1000, 0b0101, 0b001): if HaveTLBIRANGE() tlbi_op = "rvae3os"; break; + case TLBI_OP(0b110, 0b1000, 0b0101, 0b101): if HaveTLBIRANGE() tlbi_op = "rvale3os"; break; + case TLBI_OP(0b110, 0b1000, 0b0110, 0b001): if HaveTLBIRANGE() tlbi_op = "rvae3"; break; + case TLBI_OP(0b110, 0b1000, 0b0110, 0b101): if HaveTLBIRANGE() tlbi_op = "rvale3"; break; + case TLBI_OP(0b110, 0b1000, 0b0111, 0b000): tlbi_op = "alle3"; break; + case TLBI_OP(0b110, 0b1000, 0b0111, 0b001): tlbi_op = "vae3"; break; + case TLBI_OP(0b110, 0b1000, 0b0111, 0b100): if HaveRME() tlbi_op = "paall"; break; + case TLBI_OP(0b110, 0b1000, 0b0111, 0b101): tlbi_op = "vale3"; break; + case TLBI_OP(0b110, 0b1001, 0b0001, 0b000): if HaveXS() tlbi_op = "alle3osnxs"; break; + case TLBI_OP(0b110, 0b1001, 0b0001, 0b001): if HaveXS() tlbi_op = "vae3osnxs"; break; + case TLBI_OP(0b110, 0b1001, 0b0001, 0b101): if HaveXS() tlbi_op = "vale3osnxs"; break; + case TLBI_OP(0b110, 0b1001, 0b0010, 0b001): if HaveXS() tlbi_op = "rvae3isnxs"; break; + case TLBI_OP(0b110, 0b1001, 0b0010, 0b101): if HaveXS() tlbi_op = "rvale3isnxs"; break; + case TLBI_OP(0b110, 0b1001, 0b0011, 0b000): if HaveXS() tlbi_op = "alle3isnxs"; break; + case TLBI_OP(0b110, 0b1001, 0b0011, 0b001): if HaveXS() tlbi_op = "vae3isnxs"; break; + case TLBI_OP(0b110, 0b1001, 0b0011, 0b101): if HaveXS() tlbi_op = "vale3isnxs"; break; + case TLBI_OP(0b110, 0b1001, 0b0101, 0b001): if HaveXS() tlbi_op = "rvae3osnxs"; break; + case TLBI_OP(0b110, 0b1001, 0b0101, 0b101): if HaveXS() tlbi_op = "rvale3osnxs"; break; + case TLBI_OP(0b110, 0b1001, 0b0110, 0b001): if HaveXS() tlbi_op = "rvae3nxs"; break; + case TLBI_OP(0b110, 0b1001, 0b0110, 0b101): if HaveXS() tlbi_op = "rvale3nxs"; break; + case TLBI_OP(0b110, 0b1001, 0b0111, 0b000): if HaveXS() tlbi_op = "alle3nxs"; break; + case TLBI_OP(0b110, 0b1001, 0b0111, 0b001): if HaveXS() tlbi_op = "vae3nxs"; break; + case TLBI_OP(0b110, 0b1001, 0b0111, 0b101): if HaveXS() tlbi_op = "vale3nxs"; break; + + + } + // if (op1 == 0b000 && crm == 0b0001 && op2 == 0b000 && HaveTLBIOS()) + // tlbi_op = "vmalle1os"; + // else if (op1 == 0b000 && crm == 0b0001 && op2 == 0b001 && HaveTLBIOS()) + // tlbi_op = "vae1os"; + // else if (op1 == 0b000 && crm == 0b0001 && op2 == 0b010 && HaveTLBIOS()) + // tlbi_op = "aside1os"; + // else if (op1 == 0b000 && crm == 0b0001 && op2 == 0b011 && HaveTLBIOS()) + // tlbi_op = "vaae1os"; + // else if (op1 == 0b000 && crm == 0b0001 && op2 == 0b101 && HaveTLBIOS()) + // tlbi_op = "vale1os"; + // else if (op1 == 0b000 && crm == 0b0001 && op2 == 0b111 && HaveTLBIOS()) + // tlbi_op = "vaale1os"; + // else if (op1 == 0b000 && crm == 0b0010 && op2 == 0b001 && HaveTLBIRANGE()) + // tlbi_op = "rvae1is"; + // else if (op1 == 0b000 && crm == 0b0010 && op2 == 0b011 && HaveTLBIRANGE()) + // tlbi_op = "rvaae1is"; + // else if (op1 == 0b000 && crm == 0b0010 && op2 == 0b101 && HaveTLBIRANGE()) + // tlbi_op = "rvale1is"; + // else if (op1 == 0b000 && crm == 0b0010 && op2 == 0b111 && HaveTLBIRANGE()) + // tlbi_op = "rvaale1is"; + // else if (op1 == 0b000 && crm == 0b0011 && op2 == 0b000) + // tlbi_op = "vmalle1is"; + // else if (op1 == 0b000 && crm == 0b0011 && op2 == 0b001) + // tlbi_op = "vae1is"; + // else if (op1 == 0b000 && crm == 0b0011 && op2 == 0b010) + // tlbi_op = "aside1is"; + // else if (op1 == 0b000 && crm == 0b0011 && op2 == 0b011) + // tlbi_op = "vaae1is"; + // else if (op1 == 0b000 && crm == 0b0011 && op2 == 0b101) + // tlbi_op = "vale1is"; + // else if (op1 == 0b000 && crm == 0b0011 && op2 == 0b111) + // tlbi_op = "vaale1is"; + // else if (op1 == 0b000 && crm == 0b0101 && op2 == 0b001 && HaveTLBIRANGE()) + // tlbi_op = "rvae1os"; + // else if (op1 == 0b000 && crm == 0b0101 && op2 == 0b011 && HaveTLBIRANGE()) + // tlbi_op = "rvaae1os"; + // else if (op1 == 0b000 && crm == 0b0101 && op2 == 0b101 && HaveTLBIRANGE()) + // tlbi_op = "rvale1os"; + // else if (op1 == 0b000 && crm == 0b0101 && op2 == 0b111 && HaveTLBIRANGE()) + // tlbi_op = "rvaale1os"; + // else if (op1 == 0b000 && crm == 0b0110 && op2 == 0b001 && HaveTLBIRANGE()) + // tlbi_op = "rvae1"; + // else if (op1 == 0b000 && crm == 0b0110 && op2 == 0b011 && HaveTLBIRANGE()) + // tlbi_op = "rvaae1"; + // else if (op1 == 0b000 && crm == 0b0110 && op2 == 0b101 && HaveTLBIRANGE()) + // tlbi_op = "rvale1"; + // else if (op1 == 0b000 && crm == 0b0110 && op2 == 0b111 && HaveTLBIRANGE()) + // tlbi_op = "rvaale1"; + // else if (op1 == 0b000 && crm == 0b0111 && op2 == 0b000) + // tlbi_op = "vmalle1"; + // else if (op1 == 0b000 && crm == 0b0111 && op2 == 0b001) + // tlbi_op = "vae1"; + // else if (op1 == 0b000 && crm == 0b0111 && op2 == 0b010) + // tlbi_op = "aside1"; + // else if (op1 == 0b000 && crm == 0b0111 && op2 == 0b011) + // tlbi_op = "vaae1"; + // else if (op1 == 0b000 && crm == 0b0111 && op2 == 0b101) + // tlbi_op = "vale1"; + // else if (op1 == 0b000 && crm == 0b0111 && op2 == 0b111) + // tlbi_op = "vaale1"; + // else if (op1 == 0b100 && crm == 0b0000 && op2 == 0b001) + // tlbi_op = "ipas2e1is"; + // else if (op1 == 0b100 && crm == 0b0000 && op2 == 0b010 && HaveTLBIRANGE()) + // tlbi_op = "ripas2e1is"; + // else if (op1 == 0b100 && crm == 0b0000 && op2 == 0b101) + // tlbi_op = "ipas2le1is"; + // else if (op1 == 0b100 && crm == 0b0000 && op2 == 0b110 && HaveTLBIRANGE()) + // tlbi_op = "ripas2le1is"; + // else if (op1 == 0b100 && crm == 0b0001 && op2 == 0b000 && HaveTLBIOS()) + // tlbi_op = "alle2os"; + // else if (op1 == 0b100 && crm == 0b0001 && op2 == 0b001 && HaveTLBIOS()) + // tlbi_op = "vae2os"; + // else if (op1 == 0b100 && crm == 0b0001 && op2 == 0b100 && HaveTLBIOS()) + // tlbi_op = "alle1os"; + // else if (op1 == 0b100 && crm == 0b0001 && op2 == 0b101 && HaveTLBIOS()) + // tlbi_op = "vale2os"; + // else if (op1 == 0b100 && crm == 0b0001 && op2 == 0b110 && HaveTLBIOS()) + // tlbi_op = "vmalls12e1os"; + // else if (op1 == 0b100 && crm == 0b0010 && op2 == 0b001 && HaveTLBIRANGE()) + // tlbi_op = "rvae2is"; + // else if (op1 == 0b100 && crm == 0b0010 && op2 == 0b101 && HaveTLBIRANGE()) + // tlbi_op = "rvale2is"; + // else if (op1 == 0b100 && crm == 0b0011 && op2 == 0b000) + // tlbi_op = "alle2is"; + // else if (op1 == 0b100 && crm == 0b0011 && op2 == 0b001) + // tlbi_op = "vae2is"; + // else if (op1 == 0b100 && crm == 0b0011 && op2 == 0b100) + // tlbi_op = "alle1is"; + // else if (op1 == 0b100 && crm == 0b0011 && op2 == 0b101) + // tlbi_op = "vale2is"; + // else if (op1 == 0b100 && crm == 0b0011 && op2 == 0b110) + // tlbi_op = "vmalls12e1is"; + // else if (op1 == 0b100 && crm == 0b0100 && op2 == 0b000 && HaveTLBIOS()) + // tlbi_op = "ipas2e1os"; + // else if (op1 == 0b100 && crm == 0b0100 && op2 == 0b001) + // tlbi_op = "ipas2e1"; + // else if (op1 == 0b100 && crm == 0b0100 && op2 == 0b010 && HaveTLBIRANGE()) + // tlbi_op = "ripas2e1"; + // else if (op1 == 0b100 && crm == 0b0100 && op2 == 0b011 && HaveTLBIRANGE()) + // tlbi_op = "ripas2e1os"; + // else if (op1 == 0b100 && crm == 0b0100 && op2 == 0b100 && HaveTLBIOS()) + // tlbi_op = "ipas2le1os"; + // else if (op1 == 0b100 && crm == 0b0100 && op2 == 0b101) + // tlbi_op = "ipas2le1"; + // else if (op1 == 0b100 && crm == 0b0100 && op2 == 0b110 && HaveTLBIRANGE()) + // tlbi_op = "ripas2le1"; + // else if (op1 == 0b100 && crm == 0b0100 && op2 == 0b111 && HaveTLBIRANGE()) + // tlbi_op = "ripas2le1os"; + // else if (op1 == 0b100 && crm == 0b0101 && op2 == 0b001 && HaveTLBIRANGE()) + // tlbi_op = "rvae2os"; + // else if (op1 == 0b100 && crm == 0b0101 && op2 == 0b101 && HaveTLBIRANGE()) + // tlbi_op = "rvale2os"; + // else if (op1 == 0b100 && crm == 0b0110 && op2 == 0b001 && HaveTLBIRANGE()) + // tlbi_op = "rvae2"; + // else if (op1 == 0b100 && crm == 0b0110 && op2 == 0b101 && HaveTLBIRANGE()) + // tlbi_op = "rvale2"; + // else if (op1 == 0b100 && crm == 0b0111 && op2 == 0b000) + // tlbi_op = "alle2"; + // else if (op1 == 0b100 && crm == 0b0111 && op2 == 0b001) + // tlbi_op = "vae2"; + // else if (op1 == 0b100 && crm == 0b0111 && op2 == 0b100) + // tlbi_op = "alle1"; + // else if (op1 == 0b100 && crm == 0b0111 && op2 == 0b101) + // tlbi_op = "vale2"; + // else if (op1 == 0b100 && crm == 0b0111 && op2 == 0b110) + // tlbi_op = "vmalls12e1"; + // else if (op1 == 0b110 && crm == 0b0001 && op2 == 0b000 && HaveTLBIOS()) + // tlbi_op = "alle3os"; + // else if (op1 == 0b110 && crm == 0b0001 && op2 == 0b001 && HaveTLBIOS()) + // tlbi_op = "vae3os"; + // else if (op1 == 0b110 && crm == 0b0001 && op2 == 0b101 && HaveTLBIOS()) + // tlbi_op = "vale3os"; + // else if (op1 == 0b110 && crm == 0b0010 && op2 == 0b001 && HaveTLBIRANGE()) + // tlbi_op = "rvae3is"; + // else if (op1 == 0b110 && crm == 0b0010 && op2 == 0b101 && HaveTLBIRANGE()) + // tlbi_op = "rvale3is"; + // else if (op1 == 0b110 && crm == 0b0011 && op2 == 0b000) + // tlbi_op = "alle3is"; + // else if (op1 == 0b110 && crm == 0b0011 && op2 == 0b001) + // tlbi_op = "vae3is"; + // else if (op1 == 0b110 && crm == 0b0011 && op2 == 0b101) + // tlbi_op = "vale3is"; + // else if (op1 == 0b110 && crm == 0b0101 && op2 == 0b001 && HaveTLBIRANGE()) + // tlbi_op = "rvae3os"; + // else if (op1 == 0b110 && crm == 0b0101 && op2 == 0b101 && HaveTLBIRANGE()) + // tlbi_op = "rvale3os"; + // else if (op1 == 0b110 && crm == 0b0110 && op2 == 0b001 && HaveTLBIRANGE()) + // tlbi_op = "rvae3"; + // else if (op1 == 0b110 && crm == 0b0110 && op2 == 0b101 && HaveTLBIRANGE()) + // tlbi_op = "rvale3"; + // else if (op1 == 0b110 && crm == 0b0111 && op2 == 0b000) + // tlbi_op = "alle3"; + // else if (op1 == 0b110 && crm == 0b0111 && op2 == 0b001) + // tlbi_op = "vae3"; + // else if (op1 == 0b110 && crm == 0b0111 && op2 == 0b101) + // tlbi_op = "vale3"; + instr->operands[i].implspec[OP1] = op1; + instr->operands[i].implspec[CRM] = crm; + instr->operands[i].implspec[OP2] = op2; + instr->operands[i].immediate = TLBI_OP(op1, crn, crm, op2); // NON-SYNTAX: <tlbi_op>{,<Xt>} ADD_OPERAND_NAME(tlbi_op); if (ctx->Rt != 31) diff --git a/arch/arm64/disassembler/format.h b/arch/arm64/disassembler/format.h index 6e743b46..6228cbf7 100644 --- a/arch/arm64/disassembler/format.h +++ b/arch/arm64/disassembler/format.h @@ -8,7 +8,7 @@ #include "encodings_fmt.h" #include "operations.h" #include "regs.h" -#include "sysregs.h" +#include "sysregs_fmt_gen.h" //----------------------------------------------------------------------------- // disassembly function prototypes, return values diff --git a/arch/arm64/disassembler/pcode.c b/arch/arm64/disassembler/pcode.c index 2daf070b..4623d368 100644 --- a/arch/arm64/disassembler/pcode.c +++ b/arch/arm64/disassembler/pcode.c @@ -196,36 +196,55 @@ enum ShiftType DecodeShift(uint8_t op) enum SystemOp SysOp(uint32_t op1, uint32_t CRn, uint32_t CRm, uint32_t op2) { - uint32_t tmp = (op1 << 11) | (CRn << 7) | (CRm << 3) | op2; +// uint32_t tmp = (op1 << 11) | (CRn << 7) | (CRm << 3) | op2; + uint32_t tmp = (((op1 & 7) << 11) | ((CRn & 0xF) << 7) | ((CRm & 0xF) << 3) | ((op2) & 7)); switch (tmp) { - case 0b00001111000000: + case AT_OP_S1E1R: + case AT_OP_S1E1W: + case AT_OP_S1E0R: + case AT_OP_S1E0W: + case AT_OP_S1E1RP: + case AT_OP_S1E1WP: + case AT_OP_S1E1A: + case AT_OP_S1E2R: + case AT_OP_S1E2W: + case AT_OP_S12E1R: + case AT_OP_S12E1W: + case AT_OP_S12E0R: + case AT_OP_S12E0W: + case AT_OP_S1E2A: + case AT_OP_S1E3R: + case AT_OP_S1E3W: + case AT_OP_S1E3A: return Sys_AT; // S1E1R - case 0b10001111000000: - return Sys_AT; // S1E2R - case 0b11001111000000: - return Sys_AT; // S1E3R - case 0b00001111000001: - return Sys_AT; // S1E1W - case 0b00001111001001: - return Sys_AT; // S1E1WP - case 0b10001111000001: - return Sys_AT; // S1E2W - case 0b11001111000001: - return Sys_AT; // S1E3W - case 0b00001111000010: - return Sys_AT; // S1E0R - case 0b00001111000011: - return Sys_AT; // S1E0W - case 0b10001111000100: - return Sys_AT; // S12E1R - case 0b10001111000101: - return Sys_AT; // S12E1W - case 0b10001111000110: - return Sys_AT; // S12E0R - case 0b10001111000111: - return Sys_AT; // S12E0W +// case 0b00001111000000: +// return Sys_AT; // S1E1R +// case 0b10001111000000: +// return Sys_AT; // S1E2R +// case 0b11001111000000: +// return Sys_AT; // S1E3R +// case 0b00001111000001: +// return Sys_AT; // S1E1W +// case 0b00001111001001: +// return Sys_AT; // S1E1WP +// case 0b10001111000001: +// return Sys_AT; // S1E2W +// case 0b11001111000001: +// return Sys_AT; // S1E3W +// case 0b00001111000010: +// return Sys_AT; // S1E0R +// case 0b00001111000011: +// return Sys_AT; // S1E0W +// case 0b10001111000100: +// return Sys_AT; // S12E1R +// case 0b10001111000101: +// return Sys_AT; // S12E1W +// case 0b10001111000110: +// return Sys_AT; // S12E0R +// case 0b10001111000111: +// return Sys_AT; // S12E0W case 0b01101110100001: return Sys_DC; // ZVA case 0b00001110110001: @@ -250,70 +269,237 @@ enum SystemOp SysOp(uint32_t op1, uint32_t CRn, uint32_t CRm, uint32_t op2) return Sys_IC; // IALLU case 0b01101110101001: return Sys_IC; // IVAU - case 0b10010000000001: + case TLBI_VMALLE1OS: + case TLBI_VAE1OS: + case TLBI_ASIDE1OS: + case TLBI_VAAE1OS: + case TLBI_VALE1OS: + case TLBI_VAALE1OS: + case TLBI_RVAE1IS: + case TLBI_RVAAE1IS: + case TLBI_RVALE1IS: + case TLBI_RVAALE1IS: + case TLBI_VMALLE1IS: + case TLBI_VAE1IS: + case TLBI_ASIDE1IS: + case TLBI_VAAE1IS: + case TLBI_VALE1IS: + case TLBI_VAALE1IS: + case TLBI_RVAE1OS: + case TLBI_RVAAE1OS: + case TLBI_RVALE1OS: + case TLBI_RVAALE1OS: + case TLBI_RVAE1: + case TLBI_RVAAE1: + case TLBI_RVALE1: + case TLBI_RVAALE1: + case TLBI_VMALLE1: + case TLBI_VAE1: + case TLBI_ASIDE1: + case TLBI_VAAE1: + case TLBI_VALE1: + case TLBI_VAALE1: + case TLBI_VMALLE1OSNXS: + case TLBI_VAE1OSNXS: + case TLBI_ASIDE1OSNXS: + case TLBI_VAAE1OSNXS: + case TLBI_VALE1OSNXS: + case TLBI_VAALE1OSNXS: + case TLBI_RVAE1ISNXS: + case TLBI_RVAAE1ISNXS: + case TLBI_RVALE1ISNXS: + case TLBI_RVAALE1ISNXS: + case TLBI_VMALLE1ISNXS: + case TLBI_VAE1ISNXS: + case TLBI_ASIDE1ISNXS: + case TLBI_VAAE1ISNXS: + case TLBI_VALE1ISNXS: + case TLBI_VAALE1ISNXS: + case TLBI_RVAE1OSNXS: + case TLBI_RVAAE1OSNXS: + case TLBI_RVALE1OSNXS: + case TLBI_RVAALE1OSNXS: + case TLBI_RVAE1NXS: + case TLBI_RVAAE1NXS: + case TLBI_RVALE1NXS: + case TLBI_RVAALE1NXS: + case TLBI_VMALLE1NXS: + case TLBI_VAE1NXS: + case TLBI_ASIDE1NXS: + case TLBI_VAAE1NXS: + case TLBI_VALE1NXS: + case TLBI_VAALE1NXS: + case TLBI_IPAS2E1IS: + case TLBI_RIPAS2E1IS: + case TLBI_IPAS2LE1IS: + case TLBI_RIPAS2LE1IS: + case TLBI_ALLE2OS: + case TLBI_VAE2OS: + case TLBI_ALLE1OS: + case TLBI_VALE2OS: + case TLBI_VMALLS12E1OS: + case TLBI_RVAE2IS: + case TLBI_VMALLWS2E1IS: + case TLBI_RVALE2IS: + case TLBI_ALLE2IS: + case TLBI_VAE2IS: + case TLBI_ALLE1IS: + case TLBI_VALE2IS: + case TLBI_VMALLS12E1IS: + case TLBI_IPAS2E1OS: + case TLBI_IPAS2E1: + case TLBI_RIPAS2E1: + case TLBI_RIPAS2E1OS: + case TLBI_IPAS2LE1OS: + case TLBI_IPAS2LE1: + case TLBI_RIPAS2LE1: + case TLBI_RIPAS2LE1OS: + case TLBI_RVAE2OS: + case TLBI_VMALLWS2E1OS: + case TLBI_RVALE2OS: + case TLBI_RVAE2: + case TLBI_VMALLWS2E1: + case TLBI_RVALE2: + case TLBI_ALLE2: + case TLBI_VAE2: + case TLBI_ALLE1: + case TLBI_VALE2: + case TLBI_VMALLS12E1: + case TLBI_IPAS2E1ISNXS: + case TLBI_RIPAS2E1ISNXS: + case TLBI_IPAS2LE1ISNXS: + case TLBI_RIPAS2LE1ISNXS: + case TLBI_ALLE2OSNXS: + case TLBI_VAE2OSNXS: + case TLBI_ALLE1OSNXS: + case TLBI_VALE2OSNXS: + case TLBI_VMALLS12E1OSNXS: + case TLBI_RVAE2ISNXS: + case TLBI_VMALLWS2E1ISNXS: + case TLBI_RVALE2ISNXS: + case TLBI_ALLE2ISNXS: + case TLBI_VAE2ISNXS: + case TLBI_ALLE1ISNXS: + case TLBI_VALE2ISNXS: + case TLBI_VMALLS12E1ISNXS: + case TLBI_IPAS2E1OSNXS: + case TLBI_IPAS2E1NXS: + case TLBI_RIPAS2E1NXS: + case TLBI_RIPAS2E1OSNXS: + case TLBI_IPAS2LE1OSNXS: + case TLBI_IPAS2LE1NXS: + case TLBI_RIPAS2LE1NXS: + case TLBI_RIPAS2LE1OSNXS: + case TLBI_RVAE2OSNXS: + case TLBI_VMALLWS2E1OSNXS: + case TLBI_RVALE2OSNXS: + case TLBI_RVAE2NXS: + case TLBI_VMALLWS2E1NXS: + case TLBI_RVALE2NXS: + case TLBI_ALLE2NXS: + case TLBI_VAE2NXS: + case TLBI_ALLE1NXS: + case TLBI_VALE2NXS: + case TLBI_VMALLS12E1NXS: + case TLBI_ALLE3OS: + case TLBI_VAE3OS: + case TLBI_PAALLOS: + case TLBI_VALE3OS: + case TLBI_RVAE3IS: + case TLBI_RVALE3IS: + case TLBI_ALLE3IS: + case TLBI_VAE3IS: + case TLBI_VALE3IS: + case TLBI_RPAOS: + case TLBI_RPALOS: + case TLBI_RVAE3OS: + case TLBI_RVALE3OS: + case TLBI_RVAE3: + case TLBI_RVALE3: + case TLBI_ALLE3: + case TLBI_VAE3: + case TLBI_PAALL: + case TLBI_VALE3: + case TLBI_ALLE3OSNXS: + case TLBI_VAE3OSNXS: + case TLBI_VALE3OSNXS: + case TLBI_RVAE3ISNXS: + case TLBI_RVALE3ISNXS: + case TLBI_ALLE3ISNXS: + case TLBI_VAE3ISNXS: + case TLBI_VALE3ISNXS: + case TLBI_RVAE3OSNXS: + case TLBI_RVALE3OSNXS: + case TLBI_RVAE3NXS: + case TLBI_RVALE3NXS: + case TLBI_ALLE3NXS: + case TLBI_VAE3NXS: + case TLBI_VALE3NXS: return Sys_TLBI; // IPAS2E1IS - case 0b10010000000101: - return Sys_TLBI; // IPAS2LE1IS - case 0b00010000011000: - return Sys_TLBI; // VMALLE1IS - case 0b10010000011000: - return Sys_TLBI; // ALLE2IS - case 0b11010000011000: - return Sys_TLBI; // ALLE3IS - case 0b00010000011001: - return Sys_TLBI; // VAE1IS - case 0b10010000011001: - return Sys_TLBI; // VAE2IS - case 0b11010000011001: - return Sys_TLBI; // VAE3IS - case 0b00010000011010: - return Sys_TLBI; // ASIDE1IS - case 0b00010000011011: - return Sys_TLBI; // VAAE1IS - case 0b10010000011100: - return Sys_TLBI; // ALLE1IS - case 0b00010000011101: - return Sys_TLBI; // VALE1IS - case 0b10010000011101: - return Sys_TLBI; // VALE2IS - case 0b11010000011101: - return Sys_TLBI; // VALE3IS - case 0b10010000011110: - return Sys_TLBI; // VMALLS12E1IS - case 0b00010000011111: - return Sys_TLBI; // VAALE1IS - case 0b10010000100001: - return Sys_TLBI; // IPAS2E1 - case 0b10010000100101: - return Sys_TLBI; // IPAS2LE1 - case 0b00010000111000: - return Sys_TLBI; // VMALLE1 - case 0b10010000111000: - return Sys_TLBI; // ALLE2 - case 0b11010000111000: - return Sys_TLBI; // ALLE3 - case 0b00010000111001: - return Sys_TLBI; // VAE1 - case 0b10010000111001: - return Sys_TLBI; // VAE2 - case 0b11010000111001: - return Sys_TLBI; // VAE3 - case 0b00010000111010: - return Sys_TLBI; // ASIDE1 - case 0b00010000111011: - return Sys_TLBI; // VAAE1 - case 0b10010000111100: - return Sys_TLBI; // ALLE1 - case 0b00010000111101: - return Sys_TLBI; // VALE1 - case 0b10010000111101: - return Sys_TLBI; // VALE2 - case 0b11010000111101: - return Sys_TLBI; // VALE3 - case 0b10010000111110: - return Sys_TLBI; // VMALLS12E1 - case 0b00010000111111: - return Sys_TLBI; // VAALE1 +// case 0b10010000000001: +// return Sys_TLBI; // IPAS2E1IS +// case 0b10010000000101: +// return Sys_TLBI; // IPAS2LE1IS +// case 0b00010000011000: +// return Sys_TLBI; // VMALLE1IS +// case 0b10010000011000: +// return Sys_TLBI; // ALLE2IS +// case 0b11010000011000: +// return Sys_TLBI; // ALLE3IS +// case 0b00010000011001: +// return Sys_TLBI; // VAE1IS +// case 0b10010000011001: +// return Sys_TLBI; // VAE2IS +// case 0b11010000011001: +// return Sys_TLBI; // VAE3IS +// case 0b00010000011010: +// return Sys_TLBI; // ASIDE1IS +// case 0b00010000011011: +// return Sys_TLBI; // VAAE1IS +// case 0b10010000011100: +// return Sys_TLBI; // ALLE1IS +// case 0b00010000011101: +// return Sys_TLBI; // VALE1IS +// case 0b10010000011101: +// return Sys_TLBI; // VALE2IS +// case 0b11010000011101: +// return Sys_TLBI; // VALE3IS +// case 0b10010000011110: +// return Sys_TLBI; // VMALLS12E1IS +// case 0b00010000011111: +// return Sys_TLBI; // VAALE1IS +// case 0b10010000100001: +// return Sys_TLBI; // IPAS2E1 +// case 0b10010000100101: +// return Sys_TLBI; // IPAS2LE1 +// case 0b00010000111000: +// return Sys_TLBI; // VMALLE1 +// case 0b10010000111000: +// return Sys_TLBI; // ALLE2 +// case 0b11010000111000: +// return Sys_TLBI; // ALLE3 +// case 0b00010000111001: +// return Sys_TLBI; // VAE1 +// case 0b10010000111001: +// return Sys_TLBI; // VAE2 +// case 0b11010000111001: +// return Sys_TLBI; // VAE3 +// case 0b00010000111010: +// return Sys_TLBI; // ASIDE1 +// case 0b00010000111011: +// return Sys_TLBI; // VAAE1 +// case 0b10010000111100: +// return Sys_TLBI; // ALLE1 +// case 0b00010000111101: +// return Sys_TLBI; // VALE1 +// case 0b10010000111101: +// return Sys_TLBI; // VALE2 +// case 0b11010000111101: +// return Sys_TLBI; // VALE3 +// case 0b10010000111110: +// return Sys_TLBI; // VMALLS12E1 +// case 0b00010000111111: +// return Sys_TLBI; // VAALE1 default: return Sys_ERROR; } diff --git a/arch/arm64/disassembler/sysregs_fmt_gen.c b/arch/arm64/disassembler/sysregs_fmt_gen.c new file mode 100644 index 00000000..805303ab --- /dev/null +++ b/arch/arm64/disassembler/sysregs_fmt_gen.c @@ -0,0 +1,1501 @@ +#include <stddef.h> + +#include "sysregs_gen.h" + +/* must parallel has_system_register_name() from the decode side */ +const char *get_system_register_name(enum SystemReg sr) +{ + switch(sr) { + case REG_EDSCR: return "edscr"; + case REG_EDPRSR: return "edprsr"; + case REG_UAOIMM: return "uaoimm"; + case REG_PANIMM: return "panimm"; + case REG_SPSELIMM: return "spselimm"; + case REG_DITIMM: return "ditimm"; + case REG_SVCRIMM: return "svcrimm"; + case REG_ICIALLUIS: return "icialluis"; + case REG_ICIALLU: return "iciallu"; + case REG_DCIVAC: return "dcivac"; + case REG_DCISW: return "dcisw"; + case REG_ATS1E1R: return "ats1e1r"; + case REG_ATS1E1W: return "ats1e1w"; + case REG_ATS1E0R: return "ats1e0r"; + case REG_ATS1E0W: return "ats1e0w"; + case REG_DCCSW: return "dccsw"; + case REG_DCCISW: return "dccisw"; + case REG_TLBIVMALLE1IS: return "tlbivmalle1is"; + case REG_TLBIVAE1IS: return "tlbivae1is"; + case REG_TLBIASIDE1IS: return "tlbiaside1is"; + case REG_TLBIVAAE1IS: return "tlbivaae1is"; + case REG_TLBIVALE1IS: return "tlbivale1is"; + case REG_TLBIVAALE1IS: return "tlbivaale1is"; + case REG_TLBIVMALLE1: return "tlbivmalle1"; + case REG_TLBIVAE1: return "tlbivae1"; + case REG_TLBIASIDE1: return "tlbiaside1"; + case REG_TLBIVAAE1: return "tlbivaae1"; + case REG_TLBIVALE1: return "tlbivale1"; + case REG_TLBIVAALE1: return "tlbivaale1"; + case REG_DCZVA: return "dczva"; + case REG_ICIVAU: return "icivau"; + case REG_DCCVAC: return "dccvac"; + case REG_DCCVAU: return "dccvau"; + case REG_DCCIVAC: return "dccivac"; + case REG_ATS1E2R: return "ats1e2r"; + case REG_ATS1E2W: return "ats1e2w"; + case REG_ATS12E1R: return "ats12e1r"; + case REG_ATS12E1W: return "ats12e1w"; + case REG_ATS12E0R: return "ats12e0r"; + case REG_ATS12E0W: return "ats12e0w"; + case REG_TLBIIPAS2E1IS: return "tlbiipas2e1is"; + case REG_TLBIIPAS2LE1IS: return "tlbiipas2le1is"; + case REG_TLBIALLE2IS: return "tlbialle2is"; + case REG_TLBIVAE2IS: return "tlbivae2is"; + case REG_TLBIALLE1IS: return "tlbialle1is"; + case REG_TLBIVALE2IS: return "tlbivale2is"; + case REG_TLBIVMALLS12E1IS: return "tlbivmalls12e1is"; + case REG_TLBIIPAS2E1: return "tlbiipas2e1"; + case REG_TLBIIPAS2LE1: return "tlbiipas2le1"; + case REG_TLBIALLE2: return "tlbialle2"; + case REG_TLBIVAE2: return "tlbivae2"; + case REG_TLBIALLE1: return "tlbialle1"; + case REG_TLBIVALE2: return "tlbivale2"; + case REG_TLBIVMALLS12E1: return "tlbivmalls12e1"; + case REG_ATS1E3R: return "ats1e3r"; + case REG_ATS1E3W: return "ats1e3w"; + case REG_TLBIALLE3IS: return "tlbialle3is"; + case REG_TLBIVAE3IS: return "tlbivae3is"; + case REG_TLBIVALE3IS: return "tlbivale3is"; + case REG_TLBIALLE3: return "tlbialle3"; + case REG_TLBIVAE3: return "tlbivae3"; + case REG_TLBIVALE3: return "tlbivale3"; + case REG_OSDTRRX_EL1: return "osdtrrx_el1"; + case REG_DBGBVR0_EL1: return "dbgbvr0_el1"; + case REG_DBGBCR0_EL1: return "dbgbcr0_el1"; + case REG_DBGWVR0_EL1: return "dbgwvr0_el1"; + case REG_DBGWCR0_EL1: return "dbgwcr0_el1"; + case REG_DBGBVR1_EL1: return "dbgbvr1_el1"; + case REG_DBGBCR1_EL1: return "dbgbcr1_el1"; + case REG_DBGWVR1_EL1: return "dbgwvr1_el1"; + case REG_DBGWCR1_EL1: return "dbgwcr1_el1"; + case REG_MDCCINT_EL1: return "mdccint_el1"; + case REG_MDSCR_EL1: return "mdscr_el1"; + case REG_DBGBVR2_EL1: return "dbgbvr2_el1"; + case REG_DBGBCR2_EL1: return "dbgbcr2_el1"; + case REG_DBGWVR2_EL1: return "dbgwvr2_el1"; + case REG_DBGWCR2_EL1: return "dbgwcr2_el1"; + case REG_OSDTRTX_EL1: return "osdtrtx_el1"; + case REG_DBGBVR3_EL1: return "dbgbvr3_el1"; + case REG_DBGBCR3_EL1: return "dbgbcr3_el1"; + case REG_DBGWVR3_EL1: return "dbgwvr3_el1"; + case REG_DBGWCR3_EL1: return "dbgwcr3_el1"; + case REG_DBGBVR4_EL1: return "dbgbvr4_el1"; + case REG_DBGBCR4_EL1: return "dbgbcr4_el1"; + case REG_DBGWVR4_EL1: return "dbgwvr4_el1"; + case REG_DBGWCR4_EL1: return "dbgwcr4_el1"; + case REG_DBGBVR5_EL1: return "dbgbvr5_el1"; + case REG_DBGBCR5_EL1: return "dbgbcr5_el1"; + case REG_DBGWVR5_EL1: return "dbgwvr5_el1"; + case REG_DBGWCR5_EL1: return "dbgwcr5_el1"; + case REG_DBGWFAR: return "dbgwfar"; + case REG_OSECCR_EL1: return "oseccr_el1"; + case REG_DBGBVR6_EL1: return "dbgbvr6_el1"; + case REG_DBGBCR6_EL1: return "dbgbcr6_el1"; + case REG_DBGWVR6_EL1: return "dbgwvr6_el1"; + case REG_DBGWCR6_EL1: return "dbgwcr6_el1"; + case REG_DBGBVR7_EL1: return "dbgbvr7_el1"; + case REG_DBGBCR7_EL1: return "dbgbcr7_el1"; + case REG_DBGWVR7_EL1: return "dbgwvr7_el1"; + case REG_DBGWCR7_EL1: return "dbgwcr7_el1"; + case REG_DBGBVR8_EL1: return "dbgbvr8_el1"; + case REG_DBGBCR8_EL1: return "dbgbcr8_el1"; + case REG_DBGWVR8_EL1: return "dbgwvr8_el1"; + case REG_DBGWCR8_EL1: return "dbgwcr8_el1"; + case REG_DBGBVR9_EL1: return "dbgbvr9_el1"; + case REG_DBGBCR9_EL1: return "dbgbcr9_el1"; + case REG_DBGWVR9_EL1: return "dbgwvr9_el1"; + case REG_DBGWCR9_EL1: return "dbgwcr9_el1"; + case REG_DBGBVR10_EL1: return "dbgbvr10_el1"; + case REG_DBGBCR10_EL1: return "dbgbcr10_el1"; + case REG_DBGWVR10_EL1: return "dbgwvr10_el1"; + case REG_DBGWCR10_EL1: return "dbgwcr10_el1"; + case REG_DBGBVR11_EL1: return "dbgbvr11_el1"; + case REG_DBGBCR11_EL1: return "dbgbcr11_el1"; + case REG_DBGWVR11_EL1: return "dbgwvr11_el1"; + case REG_DBGWCR11_EL1: return "dbgwcr11_el1"; + case REG_DBGBVR12_EL1: return "dbgbvr12_el1"; + case REG_DBGBCR12_EL1: return "dbgbcr12_el1"; + case REG_DBGWVR12_EL1: return "dbgwvr12_el1"; + case REG_DBGWCR12_EL1: return "dbgwcr12_el1"; + case REG_DBGBVR13_EL1: return "dbgbvr13_el1"; + case REG_DBGBCR13_EL1: return "dbgbcr13_el1"; + case REG_DBGWVR13_EL1: return "dbgwvr13_el1"; + case REG_DBGWCR13_EL1: return "dbgwcr13_el1"; + case REG_DBGBVR14_EL1: return "dbgbvr14_el1"; + case REG_DBGBCR14_EL1: return "dbgbcr14_el1"; + case REG_DBGWVR14_EL1: return "dbgwvr14_el1"; + case REG_DBGWCR14_EL1: return "dbgwcr14_el1"; + case REG_DBGBVR15_EL1: return "dbgbvr15_el1"; + case REG_DBGBCR15_EL1: return "dbgbcr15_el1"; + case REG_DBGWVR15_EL1: return "dbgwvr15_el1"; + case REG_DBGWCR15_EL1: return "dbgwcr15_el1"; + case REG_MDRAR_EL1: return "mdrar_el1"; + case REG_OSLAR_EL1: return "oslar_el1"; + case REG_OSLSR_EL1: return "oslsr_el1"; + case REG_OSDLR_EL1: return "osdlr_el1"; + case REG_DBGPRCR_EL1: return "dbgprcr_el1"; + case REG_CLAIMSET_EL1: return "claimset_el1"; + case REG_CLAIMCLR_EL1: return "claimclr_el1"; + case REG_AUTHSTAT_EL1: return "authstat_el1"; + case REG_TRCTRACEIDR: return "trctraceidr"; + case REG_TRCVICTLR: return "trcvictlr"; + case REG_TRCSEQEVR0: return "trcseqevr0"; + case REG_TRCCNTRLDVR0: return "trccntrldvr0"; + case REG_TRCIMSPEC0: return "trcimspec0"; + case REG_TRCPRGCTLR: return "trcprgctlr"; + case REG_TRCQCTLR: return "trcqctlr"; + case REG_TRCVIIECTLR: return "trcviiectlr"; + case REG_TRCSEQEVR1: return "trcseqevr1"; + case REG_TRCCNTRLDVR1: return "trccntrldvr1"; + case REG_TRCIMSPEC1: return "trcimspec1"; + case REG_TRCPROCSELR: return "trcprocselr"; + case REG_TRCVISSCTLR: return "trcvissctlr"; + case REG_TRCSEQEVR2: return "trcseqevr2"; + case REG_TRCCNTRLDVR2: return "trccntrldvr2"; + case REG_TRCIMSPEC2: return "trcimspec2"; + case REG_TRCVIPCSSCTLR: return "trcvipcssctlr"; + case REG_TRCCNTRLDVR3: return "trccntrldvr3"; + case REG_TRCIMSPEC3: return "trcimspec3"; + case REG_TRCCONFIGR: return "trcconfigr"; + case REG_TRCCNTCTLR0: return "trccntctlr0"; + case REG_TRCIMSPEC4: return "trcimspec4"; + case REG_TRCCNTCTLR1: return "trccntctlr1"; + case REG_TRCIMSPEC5: return "trcimspec5"; + case REG_TRCAUXCTLR: return "trcauxctlr"; + case REG_TRCSEQRSTEVR: return "trcseqrstevr"; + case REG_TRCCNTCTLR2: return "trccntctlr2"; + case REG_TRCIMSPEC6: return "trcimspec6"; + case REG_TRCSEQSTR: return "trcseqstr"; + case REG_TRCCNTCTLR3: return "trccntctlr3"; + case REG_TRCIMSPEC7: return "trcimspec7"; + case REG_TRCEVENTCTL0R: return "trceventctl0r"; + case REG_TRCVDCTLR: return "trcvdctlr"; + case REG_TRCEXTINSELR: return "trcextinselr"; + case REG_TRCCNTVR0: return "trccntvr0"; + case REG_TRCEVENTCTL1R: return "trceventctl1r"; + case REG_TRCVDSACCTLR: return "trcvdsacctlr"; + case REG_TRCEXTINSELR1: return "trcextinselr1"; + case REG_TRCCNTVR1: return "trccntvr1"; + case REG_TRCRSR: return "trcrsr"; + case REG_TRCVDARCCTLR: return "trcvdarcctlr"; + case REG_TRCEXTINSELR2: return "trcextinselr2"; + case REG_TRCCNTVR2: return "trccntvr2"; + case REG_TRCSTALLCTLR: return "trcstallctlr"; + case REG_TRCEXTINSELR3: return "trcextinselr3"; + case REG_TRCCNTVR3: return "trccntvr3"; + case REG_TRCTSCTLR: return "trctsctlr"; + case REG_TRCSYNCPR: return "trcsyncpr"; + case REG_TRCCCCTLR: return "trcccctlr"; + case REG_TRCBBCTLR: return "trcbbctlr"; + case REG_TRCRSCTLR16: return "trcrsctlr16"; + case REG_TRCSSCCR0: return "trcssccr0"; + case REG_TRCSSPCICR0: return "trcsspcicr0"; + case REG_TRCOSLAR: return "trcoslar"; + case REG_TRCRSCTLR17: return "trcrsctlr17"; + case REG_TRCSSCCR1: return "trcssccr1"; + case REG_TRCSSPCICR1: return "trcsspcicr1"; + case REG_TRCRSCTLR2: return "trcrsctlr2"; + case REG_TRCRSCTLR18: return "trcrsctlr18"; + case REG_TRCSSCCR2: return "trcssccr2"; + case REG_TRCSSPCICR2: return "trcsspcicr2"; + case REG_TRCRSCTLR3: return "trcrsctlr3"; + case REG_TRCRSCTLR19: return "trcrsctlr19"; + case REG_TRCSSCCR3: return "trcssccr3"; + case REG_TRCSSPCICR3: return "trcsspcicr3"; + case REG_TRCRSCTLR4: return "trcrsctlr4"; + case REG_TRCRSCTLR20: return "trcrsctlr20"; + case REG_TRCSSCCR4: return "trcssccr4"; + case REG_TRCSSPCICR4: return "trcsspcicr4"; + case REG_TRCPDCR: return "trcpdcr"; + case REG_TRCRSCTLR5: return "trcrsctlr5"; + case REG_TRCRSCTLR21: return "trcrsctlr21"; + case REG_TRCSSCCR5: return "trcssccr5"; + case REG_TRCSSPCICR5: return "trcsspcicr5"; + case REG_TRCRSCTLR6: return "trcrsctlr6"; + case REG_TRCRSCTLR22: return "trcrsctlr22"; + case REG_TRCSSCCR6: return "trcssccr6"; + case REG_TRCSSPCICR6: return "trcsspcicr6"; + case REG_TRCRSCTLR7: return "trcrsctlr7"; + case REG_TRCRSCTLR23: return "trcrsctlr23"; + case REG_TRCSSCCR7: return "trcssccr7"; + case REG_TRCSSPCICR7: return "trcsspcicr7"; + case REG_TRCRSCTLR8: return "trcrsctlr8"; + case REG_TRCRSCTLR24: return "trcrsctlr24"; + case REG_TRCSSCSR0: return "trcsscsr0"; + case REG_TRCRSCTLR9: return "trcrsctlr9"; + case REG_TRCRSCTLR25: return "trcrsctlr25"; + case REG_TRCSSCSR1: return "trcsscsr1"; + case REG_TRCRSCTLR10: return "trcrsctlr10"; + case REG_TRCRSCTLR26: return "trcrsctlr26"; + case REG_TRCSSCSR2: return "trcsscsr2"; + case REG_TRCRSCTLR11: return "trcrsctlr11"; + case REG_TRCRSCTLR27: return "trcrsctlr27"; + case REG_TRCSSCSR3: return "trcsscsr3"; + case REG_TRCRSCTLR12: return "trcrsctlr12"; + case REG_TRCRSCTLR28: return "trcrsctlr28"; + case REG_TRCSSCSR4: return "trcsscsr4"; + case REG_TRCRSCTLR13: return "trcrsctlr13"; + case REG_TRCRSCTLR29: return "trcrsctlr29"; + case REG_TRCSSCSR5: return "trcsscsr5"; + case REG_TRCRSCTLR14: return "trcrsctlr14"; + case REG_TRCRSCTLR30: return "trcrsctlr30"; + case REG_TRCSSCSR6: return "trcsscsr6"; + case REG_TRCRSCTLR15: return "trcrsctlr15"; + case REG_TRCRSCTLR31: return "trcrsctlr31"; + case REG_TRCSSCSR7: return "trcsscsr7"; + case REG_TRCACVR0: return "trcacvr0"; + case REG_TRCACVR8: return "trcacvr8"; + case REG_TRCACATR0: return "trcacatr0"; + case REG_TRCACATR8: return "trcacatr8"; + case REG_TRCDVCVR0: return "trcdvcvr0"; + case REG_TRCDVCVR4: return "trcdvcvr4"; + case REG_TRCDVCMR0: return "trcdvcmr0"; + case REG_TRCDVCMR4: return "trcdvcmr4"; + case REG_TRCACVR1: return "trcacvr1"; + case REG_TRCACVR9: return "trcacvr9"; + case REG_TRCACATR1: return "trcacatr1"; + case REG_TRCACATR9: return "trcacatr9"; + case REG_TRCACVR2: return "trcacvr2"; + case REG_TRCACVR10: return "trcacvr10"; + case REG_TRCACATR2: return "trcacatr2"; + case REG_TRCACATR10: return "trcacatr10"; + case REG_TRCDVCVR1: return "trcdvcvr1"; + case REG_TRCDVCVR5: return "trcdvcvr5"; + case REG_TRCDVCMR1: return "trcdvcmr1"; + case REG_TRCDVCMR5: return "trcdvcmr5"; + case REG_TRCACVR3: return "trcacvr3"; + case REG_TRCACVR11: return "trcacvr11"; + case REG_TRCACATR3: return "trcacatr3"; + case REG_TRCACATR11: return "trcacatr11"; + case REG_TRCACVR4: return "trcacvr4"; + case REG_TRCACVR12: return "trcacvr12"; + case REG_TRCACATR4: return "trcacatr4"; + case REG_TRCACATR12: return "trcacatr12"; + case REG_TRCDVCVR2: return "trcdvcvr2"; + case REG_TRCDVCVR6: return "trcdvcvr6"; + case REG_TRCDVCMR2: return "trcdvcmr2"; + case REG_TRCDVCMR6: return "trcdvcmr6"; + case REG_TRCACVR5: return "trcacvr5"; + case REG_TRCACVR13: return "trcacvr13"; + case REG_TRCACATR5: return "trcacatr5"; + case REG_TRCACATR13: return "trcacatr13"; + case REG_TRCACVR6: return "trcacvr6"; + case REG_TRCACVR14: return "trcacvr14"; + case REG_TRCACATR6: return "trcacatr6"; + case REG_TRCACATR14: return "trcacatr14"; + case REG_TRCDVCVR3: return "trcdvcvr3"; + case REG_TRCDVCVR7: return "trcdvcvr7"; + case REG_TRCDVCMR3: return "trcdvcmr3"; + case REG_TRCDVCMR7: return "trcdvcmr7"; + case REG_TRCACVR7: return "trcacvr7"; + case REG_TRCACVR15: return "trcacvr15"; + case REG_TRCACATR7: return "trcacatr7"; + case REG_TRCACATR15: return "trcacatr15"; + case REG_TRCCIDCVR0: return "trccidcvr0"; + case REG_TRCVMIDCVR0: return "trcvmidcvr0"; + case REG_TRCCIDCCTLR0: return "trccidcctlr0"; + case REG_TRCCIDCCTLR1: return "trccidcctlr1"; + case REG_TRCCIDCVR1: return "trccidcvr1"; + case REG_TRCVMIDCVR1: return "trcvmidcvr1"; + case REG_TRCVMIDCCTLR0: return "trcvmidcctlr0"; + case REG_TRCVMIDCCTLR1: return "trcvmidcctlr1"; + case REG_TRCCIDCVR2: return "trccidcvr2"; + case REG_TRCVMIDCVR2: return "trcvmidcvr2"; + case REG_TRCCIDCVR3: return "trccidcvr3"; + case REG_TRCVMIDCVR3: return "trcvmidcvr3"; + case REG_TRCCIDCVR4: return "trccidcvr4"; + case REG_TRCVMIDCVR4: return "trcvmidcvr4"; + case REG_TRCCIDCVR5: return "trccidcvr5"; + case REG_TRCVMIDCVR5: return "trcvmidcvr5"; + case REG_TRCCIDCVR6: return "trccidcvr6"; + case REG_TRCVMIDCVR6: return "trcvmidcvr6"; + case REG_TRCCIDCVR7: return "trccidcvr7"; + case REG_TRCVMIDCVR7: return "trcvmidcvr7"; + case REG_TRCITCTRL: return "trcitctrl"; + case REG_TRCCLAIMSET: return "trcclaimset"; + case REG_TRCCLAIMCLR: return "trcclaimclr"; + case REG_TRCLAR: return "trclar"; + case REG_TEECR32_EL1: return "teecr32_el1"; + case REG_TEEHBR32_EL1: return "teehbr32_el1"; + case REG_MDCCSR_EL0: return "mdccsr_el0"; + case REG_MDDTR_EL0: return "mddtr_el0"; + case REG_MDDTRTX_EL0: return "mddtrtx_el0"; + case REG_DBGVCR32_EL2: return "dbgvcr32_el2"; + case REG_MIDR_EL1: return "midr_el1"; + case REG_MPIDR_EL1: return "mpidr_el1"; + case REG_REVIDR_EL1: return "revidr_el1"; + case REG_ID_PFR0_EL1: return "id_pfr0_el1"; + case REG_ID_PFR1_EL1: return "id_pfr1_el1"; + case REG_ID_DFR0_EL1: return "id_dfr0_el1"; + case REG_ID_AFR0_EL1: return "id_afr0_el1"; + case REG_ID_MMFR0_EL1: return "id_mmfr0_el1"; + case REG_ID_MMFR1_EL1: return "id_mmfr1_el1"; + case REG_ID_MMFR2_EL1: return "id_mmfr2_el1"; + case REG_ID_MMFR3_EL1: return "id_mmfr3_el1"; + case REG_ID_ISAR0_EL1: return "id_isar0_el1"; + case REG_ID_ISAR1_EL1: return "id_isar1_el1"; + case REG_ID_ISAR2_EL1: return "id_isar2_el1"; + case REG_ID_ISAR3_EL1: return "id_isar3_el1"; + case REG_ID_ISAR4_EL1: return "id_isar4_el1"; + case REG_ID_ISAR5_EL1: return "id_isar5_el1"; + case REG_ID_MMFR4_EL1: return "id_mmfr4_el1"; + case REG_ID_ISAR6_EL1: return "id_isar6_el1"; + case REG_MVFR0_EL1: return "mvfr0_el1"; + case REG_MVFR1_EL1: return "mvfr1_el1"; + case REG_MVFR2_EL1: return "mvfr2_el1"; + case REG_ID_AA32RES3_EL1: return "id_aa32res3_el1"; + case REG_ID_PFR2_EL1: return "id_pfr2_el1"; + case REG_ID_AA32RES5_EL1: return "id_aa32res5_el1"; + case REG_ID_AA32RES6_EL1: return "id_aa32res6_el1"; + case REG_ID_AA32RES7_EL1: return "id_aa32res7_el1"; + case REG_ID_AA64PFR0_EL1: return "id_aa64pfr0_el1"; + case REG_ID_AA64PFR1_EL1: return "id_aa64pfr1_el1"; + case REG_ID_AA64PFR2_EL1: return "id_aa64pfr2_el1"; + case REG_ID_AA64PFR3_EL1: return "id_aa64pfr3_el1"; + case REG_ID_AA64ZFR0_EL1: return "id_aa64zfr0_el1"; + case REG_ID_AA64SMFR0_EL1: return "id_aa64smfr0_el1"; + case REG_ID_AA64ZFR2_EL1: return "id_aa64zfr2_el1"; + case REG_ID_AA64ZFR3_EL1: return "id_aa64zfr3_el1"; + case REG_ID_AA64DFR0_EL1: return "id_aa64dfr0_el1"; + case REG_ID_AA64DFR1_EL1: return "id_aa64dfr1_el1"; + case REG_ID_AA64DFR2_EL1: return "id_aa64dfr2_el1"; + case REG_ID_AA64DFR3_EL1: return "id_aa64dfr3_el1"; + case REG_ID_AA64AFR0_EL1: return "id_aa64afr0_el1"; + case REG_ID_AA64AFR1_EL1: return "id_aa64afr1_el1"; + case REG_ID_AA64AFR2_EL1: return "id_aa64afr2_el1"; + case REG_ID_AA64AFR3_EL1: return "id_aa64afr3_el1"; + case REG_ID_AA64ISAR0_EL1: return "id_aa64isar0_el1"; + case REG_ID_AA64ISAR1_EL1: return "id_aa64isar1_el1"; + case REG_ID_AA64ISAR2_EL1: return "id_aa64isar2_el1"; + case REG_ID_AA64ISAR3_EL1: return "id_aa64isar3_el1"; + case REG_ID_AA64ISAR4_EL1: return "id_aa64isar4_el1"; + case REG_ID_AA64ISAR5_EL1: return "id_aa64isar5_el1"; + case REG_ID_AA64ISAR6_EL1: return "id_aa64isar6_el1"; + case REG_ID_AA64ISAR7_EL1: return "id_aa64isar7_el1"; + case REG_ID_AA64MMFR0_EL1: return "id_aa64mmfr0_el1"; + case REG_ID_AA64MMFR1_EL1: return "id_aa64mmfr1_el1"; + case REG_ID_AA64MMFR2_EL1: return "id_aa64mmfr2_el1"; + case REG_ID_AA64MMFR3_EL1: return "id_aa64mmfr3_el1"; + case REG_ID_AA64MMFR4_EL1: return "id_aa64mmfr4_el1"; + case REG_ID_AA64MMFR5_EL1: return "id_aa64mmfr5_el1"; + case REG_ID_AA64MMFR6_EL1: return "id_aa64mmfr6_el1"; + case REG_ID_AA64MMFR7_EL1: return "id_aa64mmfr7_el1"; + case REG_SCTLR_EL21: return "sctlr_el21"; + case REG_ACTLR_EL21: return "actlr_el21"; + case REG_CPTR_EL21: return "cptr_el21"; + case REG_RGSR_EL1: return "rgsr_el1"; + case REG_GCR_EL1: return "gcr_el1"; + case REG_TRFCR_EL1: return "trfcr_el1"; + case REG_SMPRI_EL1: return "smpri_el1"; + case REG_SMCR_EL21: return "smcr_el21"; + case REG_TTBR0_EL21: return "ttbr0_el21"; + case REG_TTBR1_EL21: return "ttbr1_el21"; + case REG_TCR_EL21: return "tcr_el21"; + case REG_APIAKEYLO_EL21: return "apiakeylo_el21"; + case REG_APIAKEYHI_EL21: return "apiakeyhi_el21"; + case REG_APIBKEYLO_EL21: return "apibkeylo_el21"; + case REG_APIBKEYHI_EL21: return "apibkeyhi_el21"; + case REG_APDAKEYLO_EL21: return "apdakeylo_el21"; + case REG_APDAKEYHI_EL21: return "apdakeyhi_el21"; + case REG_APDBKEYLO_EL21: return "apdbkeylo_el21"; + case REG_APDBKEYHI_EL21: return "apdbkeyhi_el21"; + case REG_APGAKEYLO_EL21: return "apgakeylo_el21"; + case REG_APGAKEYHI_EL21: return "apgakeyhi_el21"; + case REG_SPSR_EL21: return "spsr_el21"; + case REG_ELR_EL21: return "elr_el21"; + case REG_SP_EL0: return "sp_el0"; + case REG_SPSEL: return "spsel"; + case REG_NESTEDCURRENTEL: return "nestedcurrentel"; + case REG_PAN: return "pan"; + case REG_UAO: return "uao"; + case REG_ICV_PMR_EL1: return "icv_pmr_el1"; + case REG_AFSR0_EL21: return "afsr0_el21"; + case REG_AFSR1_EL21: return "afsr1_el21"; + case REG_ESR_EL21: return "esr_el21"; + case REG_ERRIDR_EL1: return "erridr_el1"; + case REG_ERRSELR_EL1: return "errselr_el1"; + case REG_ERXCTLR_EL1: return "erxctlr_el1"; + case REG_ERXSTATUS_EL1: return "erxstatus_el1"; + case REG_ERXADDR_EL1: return "erxaddr_el1"; + case REG_ERXPFGCTL_EL1: return "erxpfgctl_el1"; + case REG_ERXPFGCDN_EL1: return "erxpfgcdn_el1"; + case REG_ERXMISC0_EL1: return "erxmisc0_el1"; + case REG_ERXMISC1_EL1: return "erxmisc1_el1"; + case REG_ERXMISC2_EL1: return "erxmisc2_el1"; + case REG_ERXMISC3_EL1: return "erxmisc3_el1"; + case REG_ERXTS_EL1: return "erxts_el1"; + case REG_TFSR_EL1: return "tfsr_el1"; + case REG_TFSRE0_EL1: return "tfsre0_el1"; + case REG_FAR_EL21: return "far_el21"; + case REG_PAR_EL1: return "par_el1"; + case REG_PMSCR_EL1: return "pmscr_el1"; + case REG_PMSICR_EL1: return "pmsicr_el1"; + case REG_PMSIRR_EL1: return "pmsirr_el1"; + case REG_PMSFCR_EL1: return "pmsfcr_el1"; + case REG_PMSEVFR_EL1: return "pmsevfr_el1"; + case REG_PMSLATFR_EL1: return "pmslatfr_el1"; + case REG_PMSIDR_EL1: return "pmsidr_el1"; + case REG_PMBLIMITR_EL1: return "pmblimitr_el1"; + case REG_PMBPTR_EL1: return "pmbptr_el1"; + case REG_PMBSR_EL1: return "pmbsr_el1"; + case REG_PMBIDR_EL1: return "pmbidr_el1"; + case REG_TRBLIMITR_EL1: return "trblimitr_el1"; + case REG_TRBPTR_EL1: return "trbptr_el1"; + case REG_TRBBASER_EL1: return "trbbaser_el1"; + case REG_TRBSR_EL1: return "trbsr_el1"; + case REG_TRBMAR_EL1: return "trbmar_el1"; + case REG_TRBTRG_EL1: return "trbtrg_el1"; + case REG_PMINTENSET_EL1: return "pmintenset_el1"; + case REG_PMINTENCLR_EL1: return "pmintenclr_el1"; + case REG_PMMIR_EL1: return "pmmir_el1"; + case REG_MAIR_EL21: return "mair_el21"; + case REG_AMAIR_EL21: return "amair_el21"; + case REG_LORSA_EL1: return "lorsa_el1"; + case REG_LOREA_EL1: return "lorea_el1"; + case REG_LORN_EL1: return "lorn_el1"; + case REG_LORC_EL1: return "lorc_el1"; + case REG_LORID_EL1: return "lorid_el1"; + case REG_MPAM1_EL1: return "mpam1_el1"; + case REG_MPAM0_EL1: return "mpam0_el1"; + case REG_CTRR_C_LWR_EL21: return "ctrr_c_lwr_el21"; + case REG_CTRR_C_UPR_EL21: return "ctrr_c_upr_el21"; + case REG_CTRR_D_LWR_EL21: return "ctrr_d_lwr_el21"; + case REG_CTRR_D_UPR_EL21: return "ctrr_d_upr_el21"; + case REG_CTRR_C_LWR_EL12: return "ctrr_c_lwr_el12"; + case REG_CTRR_C_UPR_EL12: return "ctrr_c_upr_el12"; + case REG_CTRR_D_LWR_EL12: return "ctrr_d_lwr_el12"; + case REG_CTRR_D_UPR_EL12: return "ctrr_d_upr_el12"; + case REG_CTRR_C_LWR_EL2: return "ctrr_c_lwr_el2"; + case REG_CTRR_C_UPR_EL2: return "ctrr_c_upr_el2"; + case REG_CTRR_D_LWR_EL2: return "ctrr_d_lwr_el2"; + case REG_CTRR_D_UPR_EL2: return "ctrr_d_upr_el2"; + case REG_CTRR_C_CTL_EL21: return "ctrr_c_ctl_el21"; + case REG_CTRR_D_CTL_EL21: return "ctrr_d_ctl_el21"; + case REG_CTRR_C_CTL_EL12: return "ctrr_c_ctl_el12"; + case REG_CTRR_D_CTL_EL12: return "ctrr_d_ctl_el12"; + case REG_CTRR_C_CTL_EL2: return "ctrr_c_ctl_el2"; + case REG_CTRR_D_CTL_EL2: return "ctrr_d_ctl_el2"; + case REG_CTXR_A_LWR_EL21: return "ctxr_a_lwr_el21"; + case REG_CTXR_A_UPR_EL21: return "ctxr_a_upr_el21"; + case REG_CTXR_B_LWR_EL21: return "ctxr_b_lwr_el21"; + case REG_CTXR_B_UPR_EL21: return "ctxr_b_upr_el21"; + case REG_CTXR_C_LWR_EL21: return "ctxr_c_lwr_el21"; + case REG_CTXR_C_UPR_EL21: return "ctxr_c_upr_el21"; + case REG_CTXR_D_LWR_EL21: return "ctxr_d_lwr_el21"; + case REG_CTXR_D_UPR_EL21: return "ctxr_d_upr_el21"; + case REG_CTXR_A_LWR_EL12: return "ctxr_a_lwr_el12"; + case REG_CTXR_A_UPR_EL12: return "ctxr_a_upr_el12"; + case REG_CTXR_B_LWR_EL12: return "ctxr_b_lwr_el12"; + case REG_CTXR_B_UPR_EL12: return "ctxr_b_upr_el12"; + case REG_CTXR_C_LWR_EL12: return "ctxr_c_lwr_el12"; + case REG_CTXR_C_UPR_EL12: return "ctxr_c_upr_el12"; + case REG_CTXR_D_LWR_EL12: return "ctxr_d_lwr_el12"; + case REG_CTXR_D_UPR_EL12: return "ctxr_d_upr_el12"; + case REG_CTXR_A_LWR_EL2: return "ctxr_a_lwr_el2"; + case REG_CTXR_A_UPR_EL2: return "ctxr_a_upr_el2"; + case REG_CTXR_B_LWR_EL2: return "ctxr_b_lwr_el2"; + case REG_CTXR_B_UPR_EL2: return "ctxr_b_upr_el2"; + case REG_CTXR_C_LWR_EL2: return "ctxr_c_lwr_el2"; + case REG_CTXR_C_UPR_EL2: return "ctxr_c_upr_el2"; + case REG_CTXR_D_LWR_EL2: return "ctxr_d_lwr_el2"; + case REG_CTXR_D_UPR_EL2: return "ctxr_d_upr_el2"; + case REG_CTXR_A_CTL_EL21: return "ctxr_a_ctl_el21"; + case REG_CTXR_B_CTL_EL21: return "ctxr_b_ctl_el21"; + case REG_CTXR_C_CTL_EL21: return "ctxr_c_ctl_el21"; + case REG_CTXR_D_CTL_EL21: return "ctxr_d_ctl_el21"; + case REG_CTXR_A_CTL_EL12: return "ctxr_a_ctl_el12"; + case REG_CTXR_B_CTL_EL12: return "ctxr_b_ctl_el12"; + case REG_CTXR_C_CTL_EL12: return "ctxr_c_ctl_el12"; + case REG_CTXR_D_CTL_EL12: return "ctxr_d_ctl_el12"; + case REG_CTXR_A_CTL_EL2: return "ctxr_a_ctl_el2"; + case REG_CTXR_B_CTL_EL2: return "ctxr_b_ctl_el2"; + case REG_CTXR_C_CTL_EL2: return "ctxr_c_ctl_el2"; + case REG_CTXR_D_CTL_EL2: return "ctxr_d_ctl_el2"; + case REG_ACC_CTRR_C_LWR_EL2: return "acc_ctrr_c_lwr_el2"; + case REG_ACC_CTRR_C_UPR_EL2: return "acc_ctrr_c_upr_el2"; + case REG_ACC_CTRR_D_LWR_EL2: return "acc_ctrr_d_lwr_el2"; + case REG_ACC_CTRR_D_UPR_EL2: return "acc_ctrr_d_upr_el2"; + case REG_ACC_CTXR_A_LWR_EL2: return "acc_ctxr_a_lwr_el2"; + case REG_ACC_CTXR_A_UPR_EL2: return "acc_ctxr_a_upr_el2"; + case REG_ACC_CTXR_B_LWR_EL2: return "acc_ctxr_b_lwr_el2"; + case REG_ACC_CTXR_B_UPR_EL2: return "acc_ctxr_b_upr_el2"; + case REG_ACC_CTXR_C_LWR_EL2: return "acc_ctxr_c_lwr_el2"; + case REG_ACC_CTXR_C_UPR_EL2: return "acc_ctxr_c_upr_el2"; + case REG_ACC_CTXR_D_LWR_EL2: return "acc_ctxr_d_lwr_el2"; + case REG_ACC_CTXR_D_UPR_EL2: return "acc_ctxr_d_upr_el2"; + case REG_ACC_CTRR_C_CTL_EL2: return "acc_ctrr_c_ctl_el2"; + case REG_ACC_CTRR_D_CTL_EL2: return "acc_ctrr_d_ctl_el2"; + case REG_ACC_CTXR_A_CTL_EL2: return "acc_ctxr_a_ctl_el2"; + case REG_ACC_CTXR_B_CTL_EL2: return "acc_ctxr_b_ctl_el2"; + case REG_ACC_CTXR_C_CTL_EL2: return "acc_ctxr_c_ctl_el2"; + case REG_ACC_CTXR_D_CTL_EL2: return "acc_ctxr_d_ctl_el2"; + case REG_VBAR_EL21: return "vbar_el21"; + case REG_RVBAR_EL1: return "rvbar_el1"; + case REG_RMR_EL1: return "rmr_el1"; + case REG_ISR_EL1: return "isr_el1"; + case REG_DISR_EL1: return "disr_el1"; + case REG_ICV_IAR0_EL1: return "icv_iar0_el1"; + case REG_ICV_EOIR0_EL1: return "icv_eoir0_el1"; + case REG_ICV_HPPIR0_EL1: return "icv_hppir0_el1"; + case REG_ICV_BPR0_EL1: return "icv_bpr0_el1"; + case REG_ICC_AP0R0_EL1: return "icc_ap0r0_el1"; + case REG_ICC_AP0R1_EL1: return "icc_ap0r1_el1"; + case REG_ICC_AP0R2_EL1: return "icc_ap0r2_el1"; + case REG_ICC_AP0R3_EL1: return "icc_ap0r3_el1"; + case REG_ICC_AP1R0_EL1: return "icc_ap1r0_el1"; + case REG_ICC_AP1R1_EL1: return "icc_ap1r1_el1"; + case REG_ICC_AP1R2_EL1: return "icc_ap1r2_el1"; + case REG_ICC_AP1R3_EL1: return "icc_ap1r3_el1"; + case REG_ICV_DIR_EL1: return "icv_dir_el1"; + case REG_ICV_RPR_EL1: return "icv_rpr_el1"; + case REG_ICC_SGI1R_EL1: return "icc_sgi1r_el1"; + case REG_ICC_ASGI1R_EL1: return "icc_asgi1r_el1"; + case REG_ICC_SGI0R_EL1: return "icc_sgi0r_el1"; + case REG_ICV_IAR1_EL1: return "icv_iar1_el1"; + case REG_ICV_EOIR1_EL1: return "icv_eoir1_el1"; + case REG_ICV_HPPIR1_EL1: return "icv_hppir1_el1"; + case REG_ICV_BPR1_EL1: return "icv_bpr1_el1"; + case REG_ICV_CTLR_EL1: return "icv_ctlr_el1"; + case REG_ICC_SRE_EL1: return "icc_sre_el1"; + case REG_ICV_IGRPEN0_EL1: return "icv_igrpen0_el1"; + case REG_ICV_IGRPEN1_EL1: return "icv_igrpen1_el1"; + case REG_ICC_SEIEN_EL1: return "icc_seien_el1"; + case REG_CONTEXTIDR_EL21: return "contextidr_el21"; + case REG_TPIDR_EL1: return "tpidr_el1"; + case REG_SCXTNUM_EL21: return "scxtnum_el21"; + case REG_REDIR_CNTKCTL_EL1: return "redir_cntkctl_el1"; + case REG_HID0: return "hid0"; + case REG_HID25: return "hid25"; + case REG_HID26: return "hid26"; + case REG_HID27: return "hid27"; + case REG_HID28: return "hid28"; + case REG_HID29: return "hid29"; + case REG_HID34: return "hid34"; + case REG_HID1: return "hid1"; + case REG_HID21: return "hid21"; + case REG_BIUVCSCUPCMDCRD: return "biuvcscupcmdcrd"; + case REG_BIUVCSCUPDATCRD: return "biuvcscupdatcrd"; + case REG_HID2: return "hid2"; + case REG_HID30: return "hid30"; + case REG_HID31: return "hid31"; + case REG_HID32: return "hid32"; + case REG_HID33: return "hid33"; + case REG_HID3: return "hid3"; + case REG_BIUVCSCUPCMDCRDC2: return "biuvcscupcmdcrdc2"; + case REG_BIUVCSCUPDATCRDC2: return "biuvcscupdatcrdc2"; + case REG_HID4: return "hid4"; + case REG_HID5: return "hid5"; + case REG_HID6: return "hid6"; + case REG_HID7: return "hid7"; + case REG_HID8: return "hid8"; + case REG_HID9: return "hid9"; + case REG_HID10: return "hid10"; + case REG_BLOCK_CMAINT_CFG: return "block_cmaint_cfg"; + case REG_HID11: return "hid11"; + case REG_HID18: return "hid18"; + case REG_HID36: return "hid36"; + case REG_HID37: return "hid37"; + case REG_HID12: return "hid12"; + case REG_HID15: return "hid15"; + case REG_HID19: return "hid19"; + case REG_BIU_TLIMIT: return "biu_tlimit"; + case REG_HID13: return "hid13"; + case REG_HID_RCTX_G0CTL: return "hid_rctx_g0ctl"; + case REG_HID_RCTX_G1CTL: return "hid_rctx_g1ctl"; + case REG_HID14: return "hid14"; + case REG_HID16: return "hid16"; + case REG_LLC_WRR2: return "llc_wrr2"; + case REG_BIU_AFI_CFG: return "biu_afi_cfg"; + case REG_HID17: return "hid17"; + case REG_HID24: return "hid24"; + case REG_HID35: return "hid35"; + case REG_CCSIDRPL1_I_EL1: return "ccsidrpl1_i_el1"; + case REG_CLIDR_EL1: return "clidr_el1"; + case REG_SMIDR_EL1: return "smidr_el1"; + case REG_AIDR_EL1: return "aidr_el1"; + case REG_PMCR0_EL1: return "pmcr0_el1"; + case REG_APPL_CONTEXTPTR: return "appl_contextptr"; + case REG_LD_LATPROF_CTL_EL21: return "ld_latprof_ctl_el21"; + case REG_AON_CPU_MSTALL_CTL01_EL1: return "aon_cpu_mstall_ctl01_el1"; + case REG_PM_MEMFLT_CTL23_EL1: return "pm_memflt_ctl23_el1"; + case REG_REDIR_ACNTV_CTL_EL0: return "redir_acntv_ctl_el0"; + case REG_LCL_ACNTVCTSS_NOREDIR_EL0: return "lcl_acntvctss_noredir_el0"; + case REG_PMCR1_EL21: return "pmcr1_el21"; + case REG_LD_LATPROF_CTR_EL1: return "ld_latprof_ctr_el1"; + case REG_AON_CPU_MSTALL_CTL23_EL1: return "aon_cpu_mstall_ctl23_el1"; + case REG_PM_MEMFLT_CTL45_EL1: return "pm_memflt_ctl45_el1"; + case REG_AGTCNTRDIR_EL21: return "agtcntrdir_el21"; + case REG_AGTCNTKCTL_NOREDIR_EL1: return "agtcntkctl_noredir_el1"; + case REG_PMCR2_EL1: return "pmcr2_el1"; + case REG_LD_LATPROF_STS_EL1: return "ld_latprof_sts_el1"; + case REG_AON_CPU_MSTALL_CTL45_EL1: return "aon_cpu_mstall_ctl45_el1"; + case REG_REDIR_ACNTHP_CVAL_EL2: return "redir_acnthp_cval_el2"; + case REG_LCL_CNTVCT_NOREDIR_EL0: return "lcl_cntvct_noredir_el0"; + case REG_AGTCNTP_CVAL_NOREDIR_EL0: return "agtcntp_cval_noredir_el0"; + case REG_PMCR3_EL1: return "pmcr3_el1"; + case REG_LD_LATPROF_INF_EL1: return "ld_latprof_inf_el1"; + case REG_AON_CPU_MSTALL_CTL67_EL1: return "aon_cpu_mstall_ctl67_el1"; + case REG_REDIR_ACNTHP_TVAL_EL2: return "redir_acnthp_tval_el2"; + case REG_LCL_CNTPCTSS_NOREDIR_EL0: return "lcl_cntpctss_noredir_el0"; + case REG_AGTCNTP_TVAL_NOREDIR_EL0: return "agtcntp_tval_noredir_el0"; + case REG_PMCR4_EL1: return "pmcr4_el1"; + case REG_LD_LATPROF_CTL_EL2: return "ld_latprof_ctl_el2"; + case REG_AON_CPU_MEMFLT_CTL01_EL1: return "aon_cpu_memflt_ctl01_el1"; + case REG_REDIR_ACNTHP_CTL_EL2: return "redir_acnthp_ctl_el2"; + case REG_LCL_CNTVCTSS_NOREDIR_EL0: return "lcl_cntvctss_noredir_el0"; + case REG_AGTCNTP_CTL_NOREDIR_EL0: return "agtcntp_ctl_noredir_el0"; + case REG_PMESR0_EL1: return "pmesr0_el1"; + case REG_LD_LATPROF_CMD_EL1: return "ld_latprof_cmd_el1"; + case REG_AON_CPU_MEMFLT_CTL23_EL1: return "aon_cpu_memflt_ctl23_el1"; + case REG_REDIR_ACNTHV_CVAL_EL2: return "redir_acnthv_cval_el2"; + case REG_AGTCNTV_CVAL_NOREDIR_EL0: return "agtcntv_cval_noredir_el0"; + case REG_PMESR1_EL1: return "pmesr1_el1"; + case REG_PMCR1_EL2: return "pmcr1_el2"; + case REG_AON_CPU_MEMFLT_CTL45_EL1: return "aon_cpu_memflt_ctl45_el1"; + case REG_REDIR_ACNTHV_TVAL_EL2: return "redir_acnthv_tval_el2"; + case REG_CNTKCTL_NOREDIR_EL1: return "cntkctl_noredir_el1"; + case REG_AGTCNTV_TVAL_NOREDIR_EL0: return "agtcntv_tval_noredir_el0"; + case REG_OPMAT0_EL1: return "opmat0_el1"; + case REG_PMCR1_EL12: return "pmcr1_el12"; + case REG_AON_CPU_MEMFLT_CTL67_EL1: return "aon_cpu_memflt_ctl67_el1"; + case REG_REDIR_ACNTHV_CTL_EL2: return "redir_acnthv_ctl_el2"; + case REG_CNTP_CVAL_NOREDIR_EL0: return "cntp_cval_noredir_el0"; + case REG_AGTCNTV_CTL_NOREDIR_EL0: return "agtcntv_ctl_noredir_el0"; + case REG_OPMAT1_EL1: return "opmat1_el1"; + case REG_PMCR1_GL12: return "pmcr1_gl12"; + case REG_AON_CPU_MSTALL_CTR0_EL1: return "aon_cpu_mstall_ctr0_el1"; + case REG_REDIR_ACNTFRQ_EL0: return "redir_acntfrq_el0"; + case REG_CNTP_TVAL_NOREDIR_EL0: return "cntp_tval_noredir_el0"; + case REG_LCL_CNTPCT_NOREDIR_EL0: return "lcl_cntpct_noredir_el0"; + case REG_OPMSK0_EL1: return "opmsk0_el1"; + case REG_LD_LATPROF_CTL_EL12: return "ld_latprof_ctl_el12"; + case REG_AON_CPU_MSTALL_CTR1_EL1: return "aon_cpu_mstall_ctr1_el1"; + case REG_AGTCNTVOFF_EL2: return "agtcntvoff_el2"; + case REG_CNTP_CTL_NOREDIR_EL0: return "cntp_ctl_noredir_el0"; + case REG_CNTV_CTL_NOREDIR_EL0: return "cntv_ctl_noredir_el0"; + case REG_OPMSK1_EL1: return "opmsk1_el1"; + case REG_LD_LATPROF_INF_EL2: return "ld_latprof_inf_el2"; + case REG_AON_CPU_MSTALL_CTR2_EL1: return "aon_cpu_mstall_ctr2_el1"; + case REG_REDIR_ACNTP_CVAL_EL0: return "redir_acntp_cval_el0"; + case REG_CNTV_CVAL_NOREDIR_EL0: return "cntv_cval_noredir_el0"; + case REG_LCL_ACNTPCT_NOREDIR_EL0: return "lcl_acntpct_noredir_el0"; + case REG_AON_CPU_MSTALL_CTR3_EL1: return "aon_cpu_mstall_ctr3_el1"; + case REG_REDIR_ACNTP_TVAL_EL0: return "redir_acntp_tval_el0"; + case REG_CNTV_TVAL_NOREDIR_EL0: return "cntv_tval_noredir_el0"; + case REG_VMSA_HV_LOCK_EL2: return "vmsa_hv_lock_el2"; + case REG_PMSWCTRL_EL1: return "pmswctrl_el1"; + case REG_PMCR5_EL0: return "pmcr5_el0"; + case REG_AON_CPU_MSTALL_CTR4_EL1: return "aon_cpu_mstall_ctr4_el1"; + case REG_PMCOMPARE0_EL1: return "pmcompare0_el1"; + case REG_PMCOMPARE1_EL1: return "pmcompare1_el1"; + case REG_VMSA_NV_LOCK_EL2: return "vmsa_nv_lock_el2"; + case REG_PMSR_EL1: return "pmsr_el1"; + case REG_AON_CPU_MSTALL_CTR5_EL1: return "aon_cpu_mstall_ctr5_el1"; + case REG_REDIR_ACNTP_CTL_EL0: return "redir_acntp_ctl_el0"; + case REG_PMCOMPARE5_EL1: return "pmcompare5_el1"; + case REG_PMCOMPARE6_EL1: return "pmcompare6_el1"; + case REG_PMCOMPARE7_EL1: return "pmcompare7_el1"; + case REG_PMCR_BVRNG4_EL1: return "pmcr_bvrng4_el1"; + case REG_PM_PMI_PC: return "pm_pmi_pc"; + case REG_AON_CPU_MSTALL_CTR6_EL1: return "aon_cpu_mstall_ctr6_el1"; + case REG_REDIR_ACNTV_CVAL_EL0: return "redir_acntv_cval_el0"; + case REG_LCL_ACNTVCT_NOREDIR_EL0: return "lcl_acntvct_noredir_el0"; + case REG_PMCR_BVRNG5_EL1: return "pmcr_bvrng5_el1"; + case REG_AON_CPU_MSTALL_CTR7_EL1: return "aon_cpu_mstall_ctr7_el1"; + case REG_REDIR_ACNTV_TVAL_EL0: return "redir_acntv_tval_el0"; + case REG_LCL_ACNTPCTSS_NOREDIR_EL0: return "lcl_acntpctss_noredir_el0"; + case REG_CSSELR_EL1: return "csselr_el1"; + case REG_PMC0: return "pmc0"; + case REG_UPMCFILTER0: return "upmcfilter0"; + case REG_UPMCFILTER1: return "upmcfilter1"; + case REG_UPMCFILTER2: return "upmcfilter2"; + case REG_UPMCFILTER3: return "upmcfilter3"; + case REG_UPMCFILTER4: return "upmcfilter4"; + case REG_UPMCFILTER5: return "upmcfilter5"; + case REG_UPMCFILTER6: return "upmcfilter6"; + case REG_PMC1: return "pmc1"; + case REG_UPMCFILTER7: return "upmcfilter7"; + case REG_PMC2: return "pmc2"; + case REG_PMC3: return "pmc3"; + case REG_PMC4: return "pmc4"; + case REG_PMC5: return "pmc5"; + case REG_PMC6: return "pmc6"; + case REG_PMC7: return "pmc7"; + case REG_PMC8: return "pmc8"; + case REG_PMC9: return "pmc9"; + case REG_PMTRHLD6_EL1: return "pmtrhld6_el1"; + case REG_PMTRHLD4_EL1: return "pmtrhld4_el1"; + case REG_PMTRHLD2_EL1: return "pmtrhld2_el1"; + case REG_PMMMAP_EL1: return "pmmmap_el1"; + case REG_CTR_EL0: return "ctr_el0"; + case REG_DCZID_EL0: return "dczid_el0"; + case REG_NZCV: return "nzcv"; + case REG_DAIF: return "daif"; + case REG_SVCR: return "svcr"; + case REG_DIT: return "dit"; + case REG_SSBS: return "ssbs"; + case REG_TCO: return "tco"; + case REG_FPCR: return "fpcr"; + case REG_FPSR: return "fpsr"; + case REG_DSPSR_EL0: return "dspsr_el0"; + case REG_DLR_EL0: return "dlr_el0"; + case REG_PMCR_EL0: return "pmcr_el0"; + case REG_PMCNTENSET_EL0: return "pmcntenset_el0"; + case REG_PMCNTENCLR_EL0: return "pmcntenclr_el0"; + case REG_PMOVSCLR_EL0: return "pmovsclr_el0"; + case REG_PMSWINC_EL0: return "pmswinc_el0"; + case REG_PMSELR_EL0: return "pmselr_el0"; + case REG_PMCCNTR_EL0: return "pmccntr_el0"; + case REG_PMXEVTYPER_EL0: return "pmxevtyper_el0"; + case REG_PMXEVCNTR_EL0: return "pmxevcntr_el0"; + case REG_DAIFCLR: return "daifclr"; + case REG_PMUSERENR_EL0: return "pmuserenr_el0"; + case REG_PMOVSSET_EL0: return "pmovsset_el0"; + case REG_TPIDR_EL0: return "tpidr_el0"; + case REG_TPIDRRO_EL0: return "tpidrro_el0"; + case REG_TPIDR2_EL0: return "tpidr2_el0"; + case REG_SCXTNUM_EL0: return "scxtnum_el0"; + case REG_AMCR_EL0: return "amcr_el0"; + case REG_AMUSERENR_EL0: return "amuserenr_el0"; + case REG_AMCNTENCLR0_EL0: return "amcntenclr0_el0"; + case REG_AMCNTENSET0_EL0: return "amcntenset0_el0"; + case REG_AMCNTENCLR1_EL0: return "amcntenclr1_el0"; + case REG_AMCNTENSET1_EL0: return "amcntenset1_el0"; + case REG_AMEVCNTR00_EL0: return "amevcntr00_el0"; + case REG_AMEVCNTR01_EL0: return "amevcntr01_el0"; + case REG_AMEVCNTR02_EL0: return "amevcntr02_el0"; + case REG_AMEVCNTR03_EL0: return "amevcntr03_el0"; + case REG_AMEVCNTR10_EL0: return "amevcntr10_el0"; + case REG_AMEVCNTR11_EL0: return "amevcntr11_el0"; + case REG_AMEVCNTR12_EL0: return "amevcntr12_el0"; + case REG_AMEVCNTR13_EL0: return "amevcntr13_el0"; + case REG_AMEVCNTR14_EL0: return "amevcntr14_el0"; + case REG_AMEVCNTR15_EL0: return "amevcntr15_el0"; + case REG_AMEVCNTR16_EL0: return "amevcntr16_el0"; + case REG_AMEVCNTR17_EL0: return "amevcntr17_el0"; + case REG_AMEVCNTR18_EL0: return "amevcntr18_el0"; + case REG_AMEVCNTR19_EL0: return "amevcntr19_el0"; + case REG_AMEVCNTR110_EL0: return "amevcntr110_el0"; + case REG_AMEVCNTR111_EL0: return "amevcntr111_el0"; + case REG_AMEVCNTR112_EL0: return "amevcntr112_el0"; + case REG_AMEVCNTR113_EL0: return "amevcntr113_el0"; + case REG_AMEVCNTR114_EL0: return "amevcntr114_el0"; + case REG_AMEVCNTR115_EL0: return "amevcntr115_el0"; + case REG_AMEVTYPER10_EL0: return "amevtyper10_el0"; + case REG_AMEVTYPER11_EL0: return "amevtyper11_el0"; + case REG_AMEVTYPER12_EL0: return "amevtyper12_el0"; + case REG_AMEVTYPER13_EL0: return "amevtyper13_el0"; + case REG_AMEVTYPER14_EL0: return "amevtyper14_el0"; + case REG_AMEVTYPER15_EL0: return "amevtyper15_el0"; + case REG_AMEVTYPER16_EL0: return "amevtyper16_el0"; + case REG_AMEVTYPER17_EL0: return "amevtyper17_el0"; + case REG_AMEVTYPER18_EL0: return "amevtyper18_el0"; + case REG_AMEVTYPER19_EL0: return "amevtyper19_el0"; + case REG_AMEVTYPER110_EL0: return "amevtyper110_el0"; + case REG_AMEVTYPER111_EL0: return "amevtyper111_el0"; + case REG_AMEVTYPER112_EL0: return "amevtyper112_el0"; + case REG_AMEVTYPER113_EL0: return "amevtyper113_el0"; + case REG_AMEVTYPER114_EL0: return "amevtyper114_el0"; + case REG_AMEVTYPER115_EL0: return "amevtyper115_el0"; + case REG_REDIR_CNTFRQ_EL0: return "redir_cntfrq_el0"; + case REG_REDIR_LCL_CNTPCT_EL0: return "redir_lcl_cntpct_el0"; + case REG_REDIR_LCL_CNTVCT_EL0: return "redir_lcl_cntvct_el0"; + case REG_REDIR_LCL_CNTPCTSS_EL0: return "redir_lcl_cntpctss_el0"; + case REG_REDIR_LCL_CNTVCTSS_EL0: return "redir_lcl_cntvctss_el0"; + case REG_REDIR_CNTP_TVAL_EL0: return "redir_cntp_tval_el0"; + case REG_REDIR_CNTP_CTL_EL0: return "redir_cntp_ctl_el0"; + case REG_REDIR_CNTP_CVAL_EL0: return "redir_cntp_cval_el0"; + case REG_REDIR_CNTV_TVAL_EL0: return "redir_cntv_tval_el0"; + case REG_REDIR_CNTV_CTL_EL0: return "redir_cntv_ctl_el0"; + case REG_REDIR_CNTV_CVAL_EL0: return "redir_cntv_cval_el0"; + case REG_PMEVCNTR0_EL0: return "pmevcntr0_el0"; + case REG_PMEVCNTR1_EL0: return "pmevcntr1_el0"; + case REG_PMEVCNTR2_EL0: return "pmevcntr2_el0"; + case REG_PMEVCNTR3_EL0: return "pmevcntr3_el0"; + case REG_PMEVCNTR4_EL0: return "pmevcntr4_el0"; + case REG_PMEVCNTR5_EL0: return "pmevcntr5_el0"; + case REG_PMEVCNTR6_EL0: return "pmevcntr6_el0"; + case REG_PMEVCNTR7_EL0: return "pmevcntr7_el0"; + case REG_PMEVCNTR8_EL0: return "pmevcntr8_el0"; + case REG_PMEVCNTR9_EL0: return "pmevcntr9_el0"; + case REG_PMEVCNTR10_EL0: return "pmevcntr10_el0"; + case REG_PMEVCNTR11_EL0: return "pmevcntr11_el0"; + case REG_PMEVCNTR12_EL0: return "pmevcntr12_el0"; + case REG_PMEVCNTR13_EL0: return "pmevcntr13_el0"; + case REG_PMEVCNTR14_EL0: return "pmevcntr14_el0"; + case REG_PMEVCNTR15_EL0: return "pmevcntr15_el0"; + case REG_PMEVCNTR16_EL0: return "pmevcntr16_el0"; + case REG_PMEVCNTR17_EL0: return "pmevcntr17_el0"; + case REG_PMEVCNTR18_EL0: return "pmevcntr18_el0"; + case REG_PMEVCNTR19_EL0: return "pmevcntr19_el0"; + case REG_PMEVCNTR20_EL0: return "pmevcntr20_el0"; + case REG_PMEVCNTR21_EL0: return "pmevcntr21_el0"; + case REG_PMEVCNTR22_EL0: return "pmevcntr22_el0"; + case REG_PMEVCNTR23_EL0: return "pmevcntr23_el0"; + case REG_PMEVCNTR24_EL0: return "pmevcntr24_el0"; + case REG_PMEVCNTR25_EL0: return "pmevcntr25_el0"; + case REG_PMEVCNTR26_EL0: return "pmevcntr26_el0"; + case REG_PMEVCNTR27_EL0: return "pmevcntr27_el0"; + case REG_PMEVCNTR28_EL0: return "pmevcntr28_el0"; + case REG_PMEVCNTR29_EL0: return "pmevcntr29_el0"; + case REG_PMEVCNTR30_EL0: return "pmevcntr30_el0"; + case REG_PMEVTYPER0_EL0: return "pmevtyper0_el0"; + case REG_PMEVTYPER1_EL0: return "pmevtyper1_el0"; + case REG_PMEVTYPER2_EL0: return "pmevtyper2_el0"; + case REG_PMEVTYPER3_EL0: return "pmevtyper3_el0"; + case REG_PMEVTYPER4_EL0: return "pmevtyper4_el0"; + case REG_PMEVTYPER5_EL0: return "pmevtyper5_el0"; + case REG_PMEVTYPER6_EL0: return "pmevtyper6_el0"; + case REG_PMEVTYPER7_EL0: return "pmevtyper7_el0"; + case REG_PMEVTYPER8_EL0: return "pmevtyper8_el0"; + case REG_PMEVTYPER9_EL0: return "pmevtyper9_el0"; + case REG_PMEVTYPER10_EL0: return "pmevtyper10_el0"; + case REG_PMEVTYPER11_EL0: return "pmevtyper11_el0"; + case REG_PMEVTYPER12_EL0: return "pmevtyper12_el0"; + case REG_PMEVTYPER13_EL0: return "pmevtyper13_el0"; + case REG_PMEVTYPER14_EL0: return "pmevtyper14_el0"; + case REG_PMEVTYPER15_EL0: return "pmevtyper15_el0"; + case REG_PMEVTYPER16_EL0: return "pmevtyper16_el0"; + case REG_PMEVTYPER17_EL0: return "pmevtyper17_el0"; + case REG_PMEVTYPER18_EL0: return "pmevtyper18_el0"; + case REG_PMEVTYPER19_EL0: return "pmevtyper19_el0"; + case REG_PMEVTYPER20_EL0: return "pmevtyper20_el0"; + case REG_PMEVTYPER21_EL0: return "pmevtyper21_el0"; + case REG_PMEVTYPER22_EL0: return "pmevtyper22_el0"; + case REG_PMEVTYPER23_EL0: return "pmevtyper23_el0"; + case REG_PMEVTYPER24_EL0: return "pmevtyper24_el0"; + case REG_PMEVTYPER25_EL0: return "pmevtyper25_el0"; + case REG_PMEVTYPER26_EL0: return "pmevtyper26_el0"; + case REG_PMEVTYPER27_EL0: return "pmevtyper27_el0"; + case REG_PMEVTYPER28_EL0: return "pmevtyper28_el0"; + case REG_PMEVTYPER29_EL0: return "pmevtyper29_el0"; + case REG_PMEVTYPER30_EL0: return "pmevtyper30_el0"; + case REG_PMCCFILTR_EL0: return "pmccfiltr_el0"; + case REG_LSU_ERR_STS: return "lsu_err_sts"; + case REG_AFLATCTL1_EL1: return "aflatctl1_el1"; + case REG_AFLATVALBIN0_EL1: return "aflatvalbin0_el1"; + case REG_AFLATINFLO_EL1: return "aflatinflo_el1"; + case REG_LSU_ERR_CTL: return "lsu_err_ctl"; + case REG_AFLATCTL2_EL1: return "aflatctl2_el1"; + case REG_AFLATVALBIN1_EL1: return "aflatvalbin1_el1"; + case REG_AFLATINFHI_EL1: return "aflatinfhi_el1"; + case REG_AFLATCTL3_EL1: return "aflatctl3_el1"; + case REG_AFLATVALBIN2_EL1: return "aflatvalbin2_el1"; + case REG_AFLATCTL4_EL1: return "aflatctl4_el1"; + case REG_AFLATVALBIN3_EL1: return "aflatvalbin3_el1"; + case REG_LLC_FILL_CTL: return "llc_fill_ctl"; + case REG_AFLATCTL5_LO_EL1: return "aflatctl5_lo_el1"; + case REG_AFLATVALBIN4_EL1: return "aflatvalbin4_el1"; + case REG_AFLATCTL5_HI_EL1: return "aflatctl5_hi_el1"; + case REG_LLC_FILL_DAT: return "llc_fill_dat"; + case REG_AFLATVALBIN5_EL1: return "aflatvalbin5_el1"; + case REG_AFLATVALBIN6_EL1: return "aflatvalbin6_el1"; + case REG_LLC_RAM_CONFIG: return "llc_ram_config"; + case REG_AFLATVALBIN7_EL1: return "aflatvalbin7_el1"; + case REG_LLC_ERR_STS: return "llc_err_sts"; + case REG_CMAINT_BCAST_LIST_0: return "cmaint_bcast_list_0"; + case REG_CMAINT_BCAST_LIST_1: return "cmaint_bcast_list_1"; + case REG_CMAINT_BCAST_CTL: return "cmaint_bcast_ctl"; + case REG_LLC_ERR_ADR: return "llc_err_adr"; + case REG_LLC_ERR_CTL: return "llc_err_ctl"; + case REG_LLC_ERR_INJ: return "llc_err_inj"; + case REG_LLC_ERR_INF: return "llc_err_inf"; + case REG_USERTAGSEL_EL1: return "usertagsel_el1"; + case REG_UUSERTAG_EL0: return "uusertag_el0"; + case REG_KUSERTAG_EL1: return "kusertag_el1"; + case REG_HUSERTAG_EL2: return "husertag_el2"; + case REG_LLC_TRACE_CTL0: return "llc_trace_ctl0"; + case REG_LLC_TRACE_CTL1: return "llc_trace_ctl1"; + case REG_LLC_UP_REQ_VC: return "llc_up_req_vc"; + case REG_LLC_UP_REQ_VC_THRESH: return "llc_up_req_vc_thresh"; + case REG_LLC_UP_REQ_VC_2: return "llc_up_req_vc_2"; + case REG_LLC_UP_REQ_VC_THRESH_2: return "llc_up_req_vc_thresh_2"; + case REG_LLC_DRAM_HASH0: return "llc_dram_hash0"; + case REG_LLC_DRAM_HASH1: return "llc_dram_hash1"; + case REG_LLC_DRAM_HASH2: return "llc_dram_hash2"; + case REG_LLC_DRAM_HASH3: return "llc_dram_hash3"; + case REG_LLC_TRACE_CTL2: return "llc_trace_ctl2"; + case REG_LLC_DRAM_HASH4: return "llc_dram_hash4"; + case REG_LLC_UP_REQ_VC_3: return "llc_up_req_vc_3"; + case REG_LLC_UP_REQ_VC_THRESH_3: return "llc_up_req_vc_thresh_3"; + case REG_LLC_UP_REQ_VC_4: return "llc_up_req_vc_4"; + case REG_LLC_UP_REQ_VC_THRESH_4: return "llc_up_req_vc_thresh_4"; + case REG_LLC_HASH0: return "llc_hash0"; + case REG_LLC_HASH1: return "llc_hash1"; + case REG_LLC_HASH2: return "llc_hash2"; + case REG_LLC_HASH3: return "llc_hash3"; + case REG_LLC_WRR: return "llc_wrr"; + case REG_LLC_DRAM_HASH5: return "llc_dram_hash5"; + case REG_LLC_DRAM_HASH6: return "llc_dram_hash6"; + case REG_VPIDR_EL2: return "vpidr_el2"; + case REG_VMPIDR_EL2: return "vmpidr_el2"; + case REG_SCTLR_EL2: return "sctlr_el2"; + case REG_ACTLR_EL2: return "actlr_el2"; + case REG_HCR_EL2: return "hcr_el2"; + case REG_MDCR_EL2: return "mdcr_el2"; + case REG_CPTR_EL2: return "cptr_el2"; + case REG_HSTR_EL2: return "hstr_el2"; + case REG_HFGRTR_EL2: return "hfgrtr_el2"; + case REG_HFGWTR_EL2: return "hfgwtr_el2"; + case REG_HFGITR_EL2: return "hfgitr_el2"; + case REG_HACR_EL2: return "hacr_el2"; + case REG_TRFCR_EL2: return "trfcr_el2"; + case REG_HCRX_EL2: return "hcrx_el2"; + case REG_SMPRIMAP_EL2: return "smprimap_el2"; + case REG_SMCR_EL2: return "smcr_el2"; + case REG_SDER32_EL2: return "sder32_el2"; + case REG_TTBR0_EL2: return "ttbr0_el2"; + case REG_TTBR1_EL2: return "ttbr1_el2"; + case REG_TCR_EL2: return "tcr_el2"; + case REG_VTTBR_EL2: return "vttbr_el2"; + case REG_VTCR_EL2: return "vtcr_el2"; + case REG_VNCR_EL2: return "vncr_el2"; + case REG_VSTTBR_EL2: return "vsttbr_el2"; + case REG_VSTCR_EL2: return "vstcr_el2"; + case REG_DACR32_EL2: return "dacr32_el2"; + case REG_HDFGRTR_EL2: return "hdfgrtr_el2"; + case REG_HDFGWTR_EL2: return "hdfgwtr_el2"; + case REG_SPSR_NV_EL21: return "spsr_nv_el21"; + case REG_ELR_NV_EL21: return "elr_nv_el21"; + case REG_SP_EL1: return "sp_el1"; + case REG_SPSR_IRQ: return "spsr_irq"; + case REG_SPSR_ABT: return "spsr_abt"; + case REG_SPSR_UND: return "spsr_und"; + case REG_SPSR_FIQ: return "spsr_fiq"; + case REG_IFSR32_EL2: return "ifsr32_el2"; + case REG_AFSR0_EL2: return "afsr0_el2"; + case REG_AFSR1_EL2: return "afsr1_el2"; + case REG_ESR_NV_EL21: return "esr_nv_el21"; + case REG_VSESR_EL2: return "vsesr_el2"; + case REG_FPEXC32_EL2: return "fpexc32_el2"; + case REG_TFSR_EL2: return "tfsr_el2"; + case REG_FAR_NV_EL21: return "far_nv_el21"; + case REG_HPFAR_EL2: return "hpfar_el2"; + case REG_PMSCR_EL2: return "pmscr_el2"; + case REG_MAIR_EL2: return "mair_el2"; + case REG_AMAIR_EL2: return "amair_el2"; + case REG_MPAMHCR_EL2: return "mpamhcr_el2"; + case REG_MPAMVPMV_EL2: return "mpamvpmv_el2"; + case REG_MPAM2_EL2: return "mpam2_el2"; + case REG_MPAMVPM0_EL2: return "mpamvpm0_el2"; + case REG_MPAMVPM1_EL2: return "mpamvpm1_el2"; + case REG_MPAMVPM2_EL2: return "mpamvpm2_el2"; + case REG_MPAMVPM3_EL2: return "mpamvpm3_el2"; + case REG_MPAMVPM4_EL2: return "mpamvpm4_el2"; + case REG_MPAMVPM5_EL2: return "mpamvpm5_el2"; + case REG_MPAMVPM6_EL2: return "mpamvpm6_el2"; + case REG_MPAMVPM7_EL2: return "mpamvpm7_el2"; + case REG_VBAR_EL2: return "vbar_el2"; + case REG_RVBAR_EL2: return "rvbar_el2"; + case REG_RMR_EL2: return "rmr_el2"; + case REG_VDISR_EL2: return "vdisr_el2"; + case REG_ICH_AP0R0_EL2: return "ich_ap0r0_el2"; + case REG_ICH_AP0R1_EL2: return "ich_ap0r1_el2"; + case REG_ICH_AP0R2_EL2: return "ich_ap0r2_el2"; + case REG_ICH_AP0R3_EL2: return "ich_ap0r3_el2"; + case REG_ICH_AP1R0_EL2: return "ich_ap1r0_el2"; + case REG_ICH_AP1R1_EL2: return "ich_ap1r1_el2"; + case REG_ICH_AP1R2_EL2: return "ich_ap1r2_el2"; + case REG_ICH_AP1R3_EL2: return "ich_ap1r3_el2"; + case REG_ICH_VSEIR_EL2: return "ich_vseir_el2"; + case REG_ICC_SRE_EL2: return "icc_sre_el2"; + case REG_ICH_HCR_EL2: return "ich_hcr_el2"; + case REG_ICH_VTR_EL2: return "ich_vtr_el2"; + case REG_ICH_MISR_EL2: return "ich_misr_el2"; + case REG_ICH_EISR_EL2: return "ich_eisr_el2"; + case REG_ICH_ELRSR_EL2: return "ich_elrsr_el2"; + case REG_ICH_VMCR_EL2: return "ich_vmcr_el2"; + case REG_ICH_LR0_EL2: return "ich_lr0_el2"; + case REG_ICH_LR1_EL2: return "ich_lr1_el2"; + case REG_ICH_LR2_EL2: return "ich_lr2_el2"; + case REG_ICH_LR3_EL2: return "ich_lr3_el2"; + case REG_ICH_LR4_EL2: return "ich_lr4_el2"; + case REG_ICH_LR5_EL2: return "ich_lr5_el2"; + case REG_ICH_LR6_EL2: return "ich_lr6_el2"; + case REG_ICH_LR7_EL2: return "ich_lr7_el2"; + case REG_ICH_LR8_EL2: return "ich_lr8_el2"; + case REG_ICH_LR9_EL2: return "ich_lr9_el2"; + case REG_ICH_LR10_EL2: return "ich_lr10_el2"; + case REG_ICH_LR11_EL2: return "ich_lr11_el2"; + case REG_ICH_LR12_EL2: return "ich_lr12_el2"; + case REG_ICH_LR13_EL2: return "ich_lr13_el2"; + case REG_ICH_LR14_EL2: return "ich_lr14_el2"; + case REG_ICH_LR15_EL2: return "ich_lr15_el2"; + case REG_CONTEXTIDR_EL2: return "contextidr_el2"; + case REG_TPIDR_EL2: return "tpidr_el2"; + case REG_SCXTNUM_EL2: return "scxtnum_el2"; + case REG_CNTVOFF_EL2: return "cntvoff_el2"; + case REG_REDIR_CNTHCTL_EL2: return "redir_cnthctl_el2"; + case REG_REDIR_CNTHP_TVAL_EL2: return "redir_cnthp_tval_el2"; + case REG_REDIR_CNTHP_CTL_EL2: return "redir_cnthp_ctl_el2"; + case REG_REDIR_CNTHP_CVAL_EL2: return "redir_cnthp_cval_el2"; + case REG_REDIR_CNTHV_TVAL_EL2: return "redir_cnthv_tval_el2"; + case REG_REDIR_CNTHV_CTL_EL2: return "redir_cnthv_ctl_el2"; + case REG_REDIR_CNTHV_CVAL_EL2: return "redir_cnthv_cval_el2"; + case REG_CNTHVS_TVAL_EL2: return "cnthvs_tval_el2"; + case REG_CNTHVS_CTL_EL2: return "cnthvs_ctl_el2"; + case REG_CNTHVS_CVAL_EL2: return "cnthvs_cval_el2"; + case REG_CNTHPS_TVAL_EL2: return "cnthps_tval_el2"; + case REG_CNTHPS_CTL_EL2: return "cnthps_ctl_el2"; + case REG_CNTHPS_CVAL_EL2: return "cnthps_cval_el2"; + case REG_FED_ERR_STS: return "fed_err_sts"; + case REG_FED_ERR_CTL: return "fed_err_ctl"; + case REG_APCTL_EL21: return "apctl_el21"; + case REG_KERNKEYLO_EL21: return "kernkeylo_el21"; + case REG_KERNKEYHI_EL21: return "kernkeyhi_el21"; + case REG_VMSA_LOCK_EL1: return "vmsa_lock_el1"; + case REG_AMX_STATE_T_EL1: return "amx_state_t_el1"; + case REG_AMX_CONFIG_EL21: return "amx_config_el21"; + case REG_VMSA_LOCK_EL2: return "vmsa_lock_el2"; + case REG_CTRR_B_UPR_EL21: return "ctrr_b_upr_el21"; + case REG_CTRR_B_LWR_EL21: return "ctrr_b_lwr_el21"; + case REG_SP_SETUP_GL21: return "sp_setup_gl21"; + case REG_SP_SETUP_GL2: return "sp_setup_gl2"; + case REG_CTRR_B_CTL_EL21: return "ctrr_b_ctl_el21"; + case REG_CTRR_A_LWR_EL21: return "ctrr_a_lwr_el21"; + case REG_CTRR_A_UPR_EL21: return "ctrr_a_upr_el21"; + case REG_CTRR_A_CTL_EL21: return "ctrr_a_ctl_el21"; + case REG_VMSA_LOCK_EL12: return "vmsa_lock_el12"; + case REG_AGTCNTV_CTL_EL02: return "agtcntv_ctl_el02"; + case REG_AMX_STATE_EL1: return "amx_state_el1"; + case REG_AMX_STATUS_EL1: return "amx_status_el1"; + case REG_AGTCNTP_CVAL_EL02: return "agtcntp_cval_el02"; + case REG_REDIR_ACNTP_TVAL_EL02: return "redir_acntp_tval_el02"; + case REG_AGTCNTP_CTL_EL02: return "agtcntp_ctl_el02"; + case REG_AGTCNTV_CVAL_EL02: return "agtcntv_cval_el02"; + case REG_AGTCNTV_TVAL_EL02: return "agtcntv_tval_el02"; + case REG_AMX_CONFIG_EL12: return "amx_config_el12"; + case REG_AMX_CONFIG_EL2: return "amx_config_el2"; + case REG_SPRR_HUPERM_EL0: return "sprr_huperm_el0"; + case REG_SPRR_VUPERM_EL0: return "sprr_vuperm_el0"; + case REG_CTRR_A_CTL_EL2: return "ctrr_a_ctl_el2"; + case REG_CTRR_B_CTL_EL2: return "ctrr_b_ctl_el2"; + case REG_CTRR_A_LWR_EL2: return "ctrr_a_lwr_el2"; + case REG_CTRR_A_UPR_EL2: return "ctrr_a_upr_el2"; + case REG_CTRR_B_LWR_EL2: return "ctrr_b_lwr_el2"; + case REG_CTRR_B_UPR_EL2: return "ctrr_b_upr_el2"; + case REG_SPRR_HUMPRR_EL2: return "sprr_humprr_el2"; + case REG_SPRR_HUPERM_SH01_EL2: return "sprr_huperm_sh01_el2"; + case REG_SPRR_HUPERM_SH02_EL2: return "sprr_huperm_sh02_el2"; + case REG_SPRR_HUPERM_SH03_EL2: return "sprr_huperm_sh03_el2"; + case REG_SPRR_HUPERM_SH04_EL2: return "sprr_huperm_sh04_el2"; + case REG_SPRR_HUPERM_SH05_EL2: return "sprr_huperm_sh05_el2"; + case REG_SPRR_HUPERM_SH06_EL2: return "sprr_huperm_sh06_el2"; + case REG_SPRR_HUPERM_SH07_EL2: return "sprr_huperm_sh07_el2"; + case REG_SPRR_VUMPRR_EL1: return "sprr_vumprr_el1"; + case REG_SPRR_VUPERM_SH01_EL1: return "sprr_vuperm_sh01_el1"; + case REG_SPRR_VUPERM_SH02_EL1: return "sprr_vuperm_sh02_el1"; + case REG_SPRR_VUPERM_SH03_EL1: return "sprr_vuperm_sh03_el1"; + case REG_SPRR_VUPERM_SH04_EL1: return "sprr_vuperm_sh04_el1"; + case REG_SPRR_VUPERM_SH05_EL1: return "sprr_vuperm_sh05_el1"; + case REG_SPRR_VUPERM_SH06_EL1: return "sprr_vuperm_sh06_el1"; + case REG_SPRR_VUPERM_SH07_EL1: return "sprr_vuperm_sh07_el1"; + case REG_CTRR_A_LWR_EL12: return "ctrr_a_lwr_el12"; + case REG_CTRR_A_UPR_EL12: return "ctrr_a_upr_el12"; + case REG_CTRR_B_LWR_EL12: return "ctrr_b_lwr_el12"; + case REG_CTRR_B_UPR_EL12: return "ctrr_b_upr_el12"; + case REG_CTRR_A_CTL_EL12: return "ctrr_a_ctl_el12"; + case REG_CTRR_B_CTL_EL12: return "ctrr_b_ctl_el12"; + case REG_REDIR_ACNTKCTL_EL1: return "redir_acntkctl_el1"; + case REG_AGTCNTKCTL_EL12: return "agtcntkctl_el12"; + case REG_PREDAKEYLO_EL1: return "predakeylo_el1"; + case REG_PREDAKEYHI_EL1: return "predakeyhi_el1"; + case REG_PREDBKEYLO_EL1: return "predbkeylo_el1"; + case REG_PREDBKEYHI_EL1: return "predbkeyhi_el1"; + case REG_SIQ_CFG_EL1: return "siq_cfg_el1"; + case REG_REDIR_LCL_ACNTPCTSS_EL0: return "redir_lcl_acntpctss_el0"; + case REG_REDIR_LCL_ACNTVCTSS_EL0: return "redir_lcl_acntvctss_el0"; + case REG_AVNCR_EL2: return "avncr_el2"; + case REG_ACC_CTRR_A_LWR_EL2: return "acc_ctrr_a_lwr_el2"; + case REG_ACC_CTRR_A_UPR_EL2: return "acc_ctrr_a_upr_el2"; + case REG_ACC_CTRR_B_LWR_EL2: return "acc_ctrr_b_lwr_el2"; + case REG_ACC_CTRR_B_UPR_EL2: return "acc_ctrr_b_upr_el2"; + case REG_ACC_CTRR_A_CTL_EL2: return "acc_ctrr_a_ctl_el2"; + case REG_ACC_CTRR_B_CTL_EL2: return "acc_ctrr_b_ctl_el2"; + case REG_REDIR_LCL_ACNTPCT_EL0: return "redir_lcl_acntpct_el0"; + case REG_REDIR_LCL_ACNTVCT_EL0: return "redir_lcl_acntvct_el0"; + case REG_ACFG_EL1: return "acfg_el1"; + case REG_AHCR_EL2: return "ahcr_el2"; + case REG_APL_INTSTATUS_EL21: return "apl_intstatus_el21"; + case REG_APL_INTSTATUS_EL2: return "apl_intstatus_el2"; + case REG_REDIR_ACNTHCTL_EL2: return "redir_acnthctl_el2"; + case REG_JAPIAKEYLO_NV_EL21: return "japiakeylo_nv_el21"; + case REG_JAPIAKEYHI_NV_EL21: return "japiakeyhi_nv_el21"; + case REG_JAPIBKEYLO_NV_EL21: return "japibkeylo_nv_el21"; + case REG_JAPIBKEYHI_NV_EL21: return "japibkeyhi_nv_el21"; + case REG_JAPIAKEYLO_EL21: return "japiakeylo_el21"; + case REG_JAPIAKEYHI_EL21: return "japiakeyhi_el21"; + case REG_JAPIBKEYLO_EL21: return "japibkeylo_el21"; + case REG_JAPIBKEYHI_EL21: return "japibkeyhi_el21"; + case REG_JAPIAKEYLO_EL12: return "japiakeylo_el12"; + case REG_JAPIAKEYHI_EL12: return "japiakeyhi_el12"; + case REG_JAPIBKEYLO_EL12: return "japibkeylo_el12"; + case REG_JAPIBKEYHI_EL12: return "japibkeyhi_el12"; + case REG_AGTCNTRDIR_EL2: return "agtcntrdir_el2"; + case REG_AGTCNTRDIR_EL12: return "agtcntrdir_el12"; + case REG_JRANGE_EL2: return "jrange_el2"; + case REG_JRANGE_EL21: return "jrange_el21"; + case REG_JRANGE_EL12: return "jrange_el12"; + case REG_JCTL_EL2: return "jctl_el2"; + case REG_JCTL_EL21: return "jctl_el21"; + case REG_JCTL_EL12: return "jctl_el12"; + case REG_JCTL_EL0: return "jctl_el0"; + case REG_AMDSCR_EL1: return "amdscr_el1"; + case REG_SCTLR_EL12: return "sctlr_el12"; + case REG_ACTLR_EL12: return "actlr_el12"; + case REG_CPACR_EL12: return "cpacr_el12"; + case REG_TRFCR_EL12: return "trfcr_el12"; + case REG_SMCR_EL12: return "smcr_el12"; + case REG_TTBR0_EL12: return "ttbr0_el12"; + case REG_TTBR1_EL12: return "ttbr1_el12"; + case REG_TCR_EL12: return "tcr_el12"; + case REG_SPSR_EL12: return "spsr_el12"; + case REG_ELR_EL12: return "elr_el12"; + case REG_AFSR0_EL12: return "afsr0_el12"; + case REG_AFSR1_EL12: return "afsr1_el12"; + case REG_ESR_EL12: return "esr_el12"; + case REG_TFSR_EL12: return "tfsr_el12"; + case REG_FAR_EL12: return "far_el12"; + case REG_PMSCR_EL12: return "pmscr_el12"; + case REG_MAIR_EL12: return "mair_el12"; + case REG_AMAIR_EL12: return "amair_el12"; + case REG_MPAM1_EL12: return "mpam1_el12"; + case REG_VBAR_EL12: return "vbar_el12"; + case REG_CONTEXTIDR_EL12: return "contextidr_el12"; + case REG_SCXTNUM_EL12: return "scxtnum_el12"; + case REG_CNTKCTL_EL12: return "cntkctl_el12"; + case REG_CNTP_TVAL_EL02: return "cntp_tval_el02"; + case REG_CNTP_CTL_EL02: return "cntp_ctl_el02"; + case REG_CNTP_CVAL_EL02: return "cntp_cval_el02"; + case REG_CNTV_TVAL_EL02: return "cntv_tval_el02"; + case REG_CNTV_CTL_EL02: return "cntv_ctl_el02"; + case REG_CNTV_CVAL_EL02: return "cntv_cval_el02"; + case REG_IPI_RR_LOCAL_EL1: return "ipi_rr_local_el1"; + case REG_IPI_RR_GLOBAL_EL1: return "ipi_rr_global_el1"; + case REG_AF_ERR_CFG0: return "af_err_cfg0"; + case REG_AP_ERR_CFG0: return "ap_err_cfg0"; + case REG_AF_ERR_SRC_IDS: return "af_err_src_ids"; + case REG_DPC_ERR_STS: return "dpc_err_sts"; + case REG_DPC_ERR_CTL: return "dpc_err_ctl"; + case REG_PROD_TRC_CORE_CFG_EL21: return "prod_trc_core_cfg_el21"; + case REG_TRACE_CORE_CFG: return "trace_core_cfg"; + case REG_IPI_SR: return "ipi_sr"; + case REG_APL_LRTMR_EL2: return "apl_lrtmr_el2"; + case REG_APL_INTENABLE_EL2: return "apl_intenable_el2"; + case REG_KTRACE_MESSAGE: return "ktrace_message"; + case REG_TRACE_CORE_CFG_EXT: return "trace_core_cfg_ext"; + case REG_PROD_TRC_CORE_CFG_EL2: return "prod_trc_core_cfg_el2"; + case REG_HID_PROD_TRC_CORE_CFG_EL1: return "hid_prod_trc_core_cfg_el1"; + case REG_DBG_WRAP_GLB: return "dbg_wrap_glb"; + case REG_TRACE_STREAM_BASE: return "trace_stream_base"; + case REG_TRACE_STREAM_FILL: return "trace_stream_fill"; + case REG_TRACE_STREAM_BASE1: return "trace_stream_base1"; + case REG_TRACE_STREAM_FILL1: return "trace_stream_fill1"; + case REG_TRACE_STREAM_IRQ: return "trace_stream_irq"; + case REG_WATCHDOGDIAG0: return "watchdogdiag0"; + case REG_WATCHDOGDIAG1: return "watchdogdiag1"; + case REG_TRACE_AUX_CTL: return "trace_aux_ctl"; + case REG_IPI_CR: return "ipi_cr"; + case REG_UTRIG_EVENT: return "utrig_event"; + case REG_HID_PROD_TRC_MASK_EL1: return "hid_prod_trc_mask_el1"; + case REG_TRACE_CTL: return "trace_ctl"; + case REG_TRACE_DAT: return "trace_dat"; + case REG_PROD_TRC_STRM_BASE0_GL2: return "prod_trc_strm_base0_gl2"; + case REG_PROD_TRC_STRM_BASE1_GL2: return "prod_trc_strm_base1_gl2"; + case REG_CPU_CFG: return "cpu_cfg"; + case REG_PBLK_STS: return "pblk_sts"; + case REG_PROD_TRC_CTL_EL21: return "prod_trc_ctl_el21"; + case REG_PROD_TRC_STRM_BASE0_GL21: return "prod_trc_strm_base0_gl21"; + case REG_PROD_TRC_STRM_BASE1_GL21: return "prod_trc_strm_base1_gl21"; + case REG_PROD_TRC_STRM_FIQ_EL21: return "prod_trc_strm_fiq_el21"; + case REG_CPU_OVRD: return "cpu_ovrd"; + case REG_PBLK_EXE_ST: return "pblk_exe_st"; + case REG_PROD_TRC_CORE_GL_CTL_GL21: return "prod_trc_core_gl_ctl_gl21"; + case REG_PROD_TRC_CORE_GL_CTL_GL2: return "prod_trc_core_gl_ctl_gl2"; + case REG_ACC_OVRD: return "acc_ovrd"; + case REG_ACC_OVRD1: return "acc_ovrd1"; + case REG_CPM_PWRDN_CTL: return "cpm_pwrdn_ctl"; + case REG_PROD_TRC_BUF_RESTORE0_GL21: return "prod_trc_buf_restore0_gl21"; + case REG_PROD_TRC_BUF_RESTORE1_GL21: return "prod_trc_buf_restore1_gl21"; + case REG_PROD_TRC_EN_GL21: return "prod_trc_en_gl21"; + case REG_PRE_LLCFLUSH_TMR: return "pre_llcflush_tmr"; + case REG_BIUINTFCTL_CFG: return "biuintfctl_cfg"; + case REG_BIUINTFWRR_CFG: return "biuintfwrr_cfg"; + case REG_PRE_TD_TMR: return "pre_td_tmr"; + case REG_ACC_SLP_WAKE_UP_TMR: return "acc_slp_wake_up_tmr"; + case REG_PBLK_PSW_DLY: return "pblk_psw_dly"; + case REG_CPU_STS: return "cpu_sts"; + case REG_HIST_TRIG: return "hist_trig"; + case REG_PROD_TRC_BUF_RESTORE0_GL2: return "prod_trc_buf_restore0_gl2"; + case REG_PROD_TRC_BUF_RESTORE1_GL2: return "prod_trc_buf_restore1_gl2"; + case REG_PROD_TRC_STRM_FILL0_EL1: return "prod_trc_strm_fill0_el1"; + case REG_PROD_TRC_STRM_FILL1_EL1: return "prod_trc_strm_fill1_el1"; + case REG_ARRAY_INDEX: return "array_index"; + case REG_PROD_TRC_CTL_EL2: return "prod_trc_ctl_el2"; + case REG_PROD_TRC_EN_GL2: return "prod_trc_en_gl2"; + case REG_PROD_TRC_STRM_FIQ_EL2: return "prod_trc_strm_fiq_el2"; + case REG_PROD_TRC_CPMU_DUMP_TRIG_EL1: return "prod_trc_cpmu_dump_trig_el1"; + case REG_PROD_LOSS_COUNT_EL1: return "prod_loss_count_el1"; + case REG_SW_TRACE_DATA_EL0: return "sw_trace_data_el0"; + case REG_IL1_DATA0: return "il1_data0"; + case REG_IL1_DATA1: return "il1_data1"; + case REG_DL1_DATA0: return "dl1_data0"; + case REG_DL1_DATA1: return "dl1_data1"; + case REG_MMUDATA0: return "mmudata0"; + case REG_MMUDATA1: return "mmudata1"; + case REG_DL1_DATA2: return "dl1_data2"; + case REG_IL1_DATA2: return "il1_data2"; + case REG_LLC_DATA0: return "llc_data0"; + case REG_LLC_DATA1: return "llc_data1"; + case REG_SCTLR_EL3: return "sctlr_el3"; + case REG_ACTLR_EL3: return "actlr_el3"; + case REG_SCR_EL3: return "scr_el3"; + case REG_SDER32_EL3: return "sder32_el3"; + case REG_CPTR_EL3: return "cptr_el3"; + case REG_MDCR_EL3: return "mdcr_el3"; + case REG_TTBR0_EL3: return "ttbr0_el3"; + case REG_TCR_EL3: return "tcr_el3"; + case REG_SPSR_EL3: return "spsr_el3"; + case REG_ELR_EL3: return "elr_el3"; + case REG_SP_EL2: return "sp_el2"; + case REG_AFSR0_EL3: return "afsr0_el3"; + case REG_AFSR1_EL3: return "afsr1_el3"; + case REG_ESR_EL3: return "esr_el3"; + case REG_TFSR_EL3: return "tfsr_el3"; + case REG_FAR_EL3: return "far_el3"; + case REG_MAIR_EL3: return "mair_el3"; + case REG_AMAIR_EL3: return "amair_el3"; + case REG_MPAM3_EL3: return "mpam3_el3"; + case REG_VBAR_EL3: return "vbar_el3"; + case REG_RVBAR_EL3: return "rvbar_el3"; + case REG_RMR_EL3: return "rmr_el3"; + case REG_ICC_CTLR_EL3: return "icc_ctlr_el3"; + case REG_ICC_SRE_EL3: return "icc_sre_el3"; + case REG_ICC_IGRPEN1_EL3: return "icc_igrpen1_el3"; + case REG_TPIDR_EL3: return "tpidr_el3"; + case REG_SCXTNUM_EL3: return "scxtnum_el3"; + case REG_MMU_ERR_STS: return "mmu_err_sts"; + case REG_AFSR1_GL21: return "afsr1_gl21"; + case REG_AFSR1_GL2: return "afsr1_gl2"; + case REG_AFSR1_GL12: return "afsr1_gl12"; + case REG_BP_OBJC_ADR_EL1: return "bp_objc_adr_el1"; + case REG_BP_OBJC_CTL_EL1: return "bp_objc_ctl_el1"; + case REG_SP_GL11_GL21: return "sp_gl11_gl21"; + case REG_MMU_SESR_EL2: return "mmu_sesr_el2"; + case REG_SPRR_CONFIG_EL21: return "sprr_config_el21"; + case REG_HPFAR_GL2: return "hpfar_gl2"; + case REG_GXF_CONFIG_EL21: return "gxf_config_el21"; + case REG_SPRR_AMRANGE_EL1: return "sprr_amrange_el1"; + case REG_GXF_CONFIG_EL2: return "gxf_config_el2"; + case REG_SPRR_UPERM_EL02: return "sprr_uperm_el02"; + case REG_SPRR_PPERM_EL21: return "sprr_pperm_el21"; + case REG_SPRR_PPERM_EL2: return "sprr_pperm_el2"; + case REG_APGAKEYLO_EL12: return "apgakeylo_el12"; + case REG_APGAKEYHI_EL12: return "apgakeyhi_el12"; + case REG_KERNKEYLO_EL12: return "kernkeylo_el12"; + case REG_KERNKEYHI_EL12: return "kernkeyhi_el12"; + case REG_AFPCR_EL0: return "afpcr_el0"; + case REG_SP_GL22: return "sp_gl22"; + case REG_AMXIDR_EL1: return "amxidr_el1"; + case REG_SPRR_UMPRR_EL1: return "sprr_umprr_el1"; + case REG_SPRR_PMPRR_EL21: return "sprr_pmprr_el21"; + case REG_SPRR_PMPRR_EL2: return "sprr_pmprr_el2"; + case REG_SPRR_UPERM_SH01_EL1: return "sprr_uperm_sh01_el1"; + case REG_SPRR_UPERM_SH02_EL1: return "sprr_uperm_sh02_el1"; + case REG_SPRR_UPERM_SH03_EL1: return "sprr_uperm_sh03_el1"; + case REG_SPRR_UPERM_SH04_EL1: return "sprr_uperm_sh04_el1"; + case REG_SPRR_UPERM_SH05_EL1: return "sprr_uperm_sh05_el1"; + case REG_SPRR_UPERM_SH06_EL1: return "sprr_uperm_sh06_el1"; + case REG_SPRR_UPERM_SH07_EL1: return "sprr_uperm_sh07_el1"; + case REG_SPRR_PPERM_SH01_EL21: return "sprr_pperm_sh01_el21"; + case REG_SPRR_PPERM_SH02_EL21: return "sprr_pperm_sh02_el21"; + case REG_SPRR_PPERM_SH03_EL21: return "sprr_pperm_sh03_el21"; + case REG_SPRR_PPERM_SH04_EL21: return "sprr_pperm_sh04_el21"; + case REG_SPRR_PPERM_SH05_EL21: return "sprr_pperm_sh05_el21"; + case REG_SPRR_PPERM_SH06_EL21: return "sprr_pperm_sh06_el21"; + case REG_SPRR_PPERM_SH07_EL21: return "sprr_pperm_sh07_el21"; + case REG_SPRR_PPERM_SH01_EL2: return "sprr_pperm_sh01_el2"; + case REG_SPRR_PPERM_SH02_EL2: return "sprr_pperm_sh02_el2"; + case REG_SPRR_PPERM_SH03_EL2: return "sprr_pperm_sh03_el2"; + case REG_SPRR_PPERM_SH04_EL2: return "sprr_pperm_sh04_el2"; + case REG_SPRR_PPERM_SH05_EL2: return "sprr_pperm_sh05_el2"; + case REG_SPRR_PPERM_SH06_EL2: return "sprr_pperm_sh06_el2"; + case REG_SPRR_PPERM_SH07_EL2: return "sprr_pperm_sh07_el2"; + case REG_SPRR_PMPRR_EL12: return "sprr_pmprr_el12"; + case REG_SPRR_PPERM_SH01_EL12: return "sprr_pperm_sh01_el12"; + case REG_SPRR_PPERM_SH02_EL12: return "sprr_pperm_sh02_el12"; + case REG_SPRR_PPERM_SH03_EL12: return "sprr_pperm_sh03_el12"; + case REG_SPRR_PPERM_SH04_EL12: return "sprr_pperm_sh04_el12"; + case REG_SPRR_PPERM_SH05_EL12: return "sprr_pperm_sh05_el12"; + case REG_SPRR_PPERM_SH06_EL12: return "sprr_pperm_sh06_el12"; + case REG_SPRR_PPERM_SH07_EL12: return "sprr_pperm_sh07_el12"; + case REG_APIAKEYLO_EL12: return "apiakeylo_el12"; + case REG_APIAKEYHI_EL12: return "apiakeyhi_el12"; + case REG_APIBKEYLO_EL12: return "apibkeylo_el12"; + case REG_APIBKEYHI_EL12: return "apibkeyhi_el12"; + case REG_APDAKEYLO_EL12: return "apdakeylo_el12"; + case REG_APDAKEYHI_EL12: return "apdakeyhi_el12"; + case REG_APDBKEYLO_EL12: return "apdbkeylo_el12"; + case REG_APDBKEYHI_EL12: return "apdbkeyhi_el12"; + case REG_CURRENTG: return "currentg"; + case REG_GXF_ENTRY_EL21: return "gxf_entry_el21"; + case REG_GXF_PABENTRY_EL21: return "gxf_pabentry_el21"; + case REG_ASPSR_EL21: return "aspsr_el21"; + case REG_ADSPSR_EL0: return "adspsr_el0"; + case REG_PMCR1_GL2: return "pmcr1_gl2"; + case REG_ASPSR_NV_EL21: return "aspsr_nv_el21"; + case REG_PMCR1_GL21: return "pmcr1_gl21"; + case REG_VBAR_GL12: return "vbar_gl12"; + case REG_SPSR_GL12: return "spsr_gl12"; + case REG_ASPSR_GL12: return "aspsr_gl12"; + case REG_ESR_GL12: return "esr_gl12"; + case REG_ELR_GL12: return "elr_gl12"; + case REG_FAR_GL12: return "far_gl12"; + case REG_SP_GL1: return "sp_gl1"; + case REG_TPIDR_GL1: return "tpidr_gl1"; + case REG_VBAR_GL21: return "vbar_gl21"; + case REG_SPSR_GL21: return "spsr_gl21"; + case REG_ASPSR_GL21: return "aspsr_gl21"; + case REG_ESR_GL21: return "esr_gl21"; + case REG_ELR_GL21: return "elr_gl21"; + case REG_FAR_GL21: return "far_gl21"; + case REG_SP_GL2: return "sp_gl2"; + case REG_TPIDR_GL2: return "tpidr_gl2"; + case REG_VBAR_GL2: return "vbar_gl2"; + case REG_SPSR_GL2: return "spsr_gl2"; + case REG_ASPSR_GL2: return "aspsr_gl2"; + case REG_ESR_GL2: return "esr_gl2"; + case REG_ELR_GL2: return "elr_gl2"; + case REG_FAR_GL2: return "far_gl2"; + case REG_GXF_ENTRY_EL2: return "gxf_entry_el2"; + case REG_GXF_PABENTRY_EL2: return "gxf_pabentry_el2"; + case REG_APCTL_EL2: return "apctl_el2"; + case REG_APSTS_EL2: return "apsts_el2"; + case REG_APSTS_NV1_EL1: return "apsts_nv1_el1"; + case REG_KERNKEYLO_NV_EL21: return "kernkeylo_nv_el21"; + case REG_KERNKEYHI_NV_EL21: return "kernkeyhi_nv_el21"; + case REG_ASPSR_EL12: return "aspsr_el12"; + case REG_APIAKEYLO_NV_EL21: return "apiakeylo_nv_el21"; + case REG_APIAKEYHI_NV_EL21: return "apiakeyhi_nv_el21"; + case REG_APIBKEYLO_NV_EL21: return "apibkeylo_nv_el21"; + case REG_APIBKEYHI_NV_EL21: return "apibkeyhi_nv_el21"; + case REG_APDAKEYLO_NV_EL21: return "apdakeylo_nv_el21"; + case REG_APDAKEYHI_NV_EL21: return "apdakeyhi_nv_el21"; + case REG_APDBKEYLO_NV_EL21: return "apdbkeylo_nv_el21"; + case REG_APDBKEYHI_NV_EL21: return "apdbkeyhi_nv_el21"; + case REG_APGAKEYLO_NV_EL21: return "apgakeylo_nv_el21"; + case REG_APGAKEYHI_NV_EL21: return "apgakeyhi_nv_el21"; + case REG_SPRR_CONFIG_EL2: return "sprr_config_el2"; + case REG_SPRR_AMRANGE_EL2: return "sprr_amrange_el2"; + case REG_VMKEYLO_EL2: return "vmkeylo_el2"; + case REG_VMKEYHI_EL2: return "vmkeyhi_el2"; + case REG_MMU_SFAR_EL2: return "mmu_sfar_el2"; + case REG_APSTS_EL12: return "apsts_el12"; + case REG_APCTL_EL12: return "apctl_el12"; + case REG_GXF_CONFIG_EL12: return "gxf_config_el12"; + case REG_GXF_ENTRY_EL12: return "gxf_entry_el12"; + case REG_GXF_PABENTRY_EL12: return "gxf_pabentry_el12"; + case REG_SPRR_CONFIG_EL12: return "sprr_config_el12"; + case REG_SPRR_AMRANGE_EL12: return "sprr_amrange_el12"; + case REG_MMU_SESR_CTL_EL2: return "mmu_sesr_ctl_el2"; + case REG_SPRR_PPERM_EL12: return "sprr_pperm_el12"; + case REG_CNTPS_TVAL_EL1: return "cntps_tval_el1"; + case REG_CNTPS_CTL_EL1: return "cntps_ctl_el1"; + case REG_CNTPS_CVAL_EL1: return "cntps_cval_el1"; + case REG_PSTATE_SPSEL: return "pstate_spsel"; + case REG_PWRDNSAVE0: return "pwrdnsave0"; + case REG_NRG_ACC_CTL: return "nrg_acc_ctl"; + case REG_AON_CNT0: return "aon_cnt0"; + case REG_CPU_CNT0: return "cpu_cnt0"; + case REG_UPMCR0_EL1: return "upmcr0_el1"; + case REG_UPMC8: return "upmc8"; + case REG_AON_CNT8: return "aon_cnt8"; + case REG_PWRDNSAVE1: return "pwrdnsave1"; + case REG_CORE_NRG_ACC_DAT: return "core_nrg_acc_dat"; + case REG_AON_CNT_CTL0: return "aon_cnt_ctl0"; + case REG_CPU_CNT_CTL0: return "cpu_cnt_ctl0"; + case REG_UPMESR0_EL1: return "upmesr0_el1"; + case REG_UPMC9: return "upmc9"; + case REG_AON_CNT_CTL8: return "aon_cnt_ctl8"; + case REG_ACC_PWR_DN_SAVE: return "acc_pwr_dn_save"; + case REG_CPM_NRG_ACC_DAT: return "cpm_nrg_acc_dat"; + case REG_AON_CNT1: return "aon_cnt1"; + case REG_CPU_CNT1: return "cpu_cnt1"; + case REG_UPMSWCTRL_EL1: return "upmswctrl_el1"; + case REG_UPMC10: return "upmc10"; + case REG_AON_CNT9: return "aon_cnt9"; + case REG_CORE_SRM_NRG_ACC_DAT: return "core_srm_nrg_acc_dat"; + case REG_AON_CNT_CTL1: return "aon_cnt_ctl1"; + case REG_CPU_CNT_CTL1: return "cpu_cnt_ctl1"; + case REG_UPMECM0_EL1: return "upmecm0_el1"; + case REG_UPMC11: return "upmc11"; + case REG_AON_CNT_CTL9: return "aon_cnt_ctl9"; + case REG_AON_CNT_CTL: return "aon_cnt_ctl"; + case REG_CPM_SRM_NRG_ACC_DAT: return "cpm_srm_nrg_acc_dat"; + case REG_AON_CNT2: return "aon_cnt2"; + case REG_CPU_CNT2: return "cpu_cnt2"; + case REG_UPMECM1_EL1: return "upmecm1_el1"; + case REG_UPMC12: return "upmc12"; + case REG_AON_CNT10: return "aon_cnt10"; + case REG_CPU_CNT_CTL: return "cpu_cnt_ctl"; + case REG_AON_CNT_CTL2: return "aon_cnt_ctl2"; + case REG_CPU_CNT_CTL2: return "cpu_cnt_ctl2"; + case REG_UPMPCM_EL1: return "upmpcm_el1"; + case REG_UPMC13: return "upmc13"; + case REG_AON_CNT_CTL10: return "aon_cnt_ctl10"; + case REG_AON_CNT3: return "aon_cnt3"; + case REG_CPU_CNT3: return "cpu_cnt3"; + case REG_UPMSR_EL1: return "upmsr_el1"; + case REG_UPMC14: return "upmc14"; + case REG_AON_CNT11: return "aon_cnt11"; + case REG_AON_CNT_CTL3: return "aon_cnt_ctl3"; + case REG_CPU_CNT_CTL3: return "cpu_cnt_ctl3"; + case REG_UPMC0: return "upmc0"; + case REG_UPMC15: return "upmc15"; + case REG_AON_CNT_CTL11: return "aon_cnt_ctl11"; + case REG_AON_CNT4: return "aon_cnt4"; + case REG_CPU_CNT4: return "cpu_cnt4"; + case REG_UPMC1: return "upmc1"; + case REG_UPMECM2_EL1: return "upmecm2_el1"; + case REG_AON_CNT_CTL4: return "aon_cnt_ctl4"; + case REG_CPU_CNT_CTL4: return "cpu_cnt_ctl4"; + case REG_UPMC2: return "upmc2"; + case REG_UPMECM3_EL1: return "upmecm3_el1"; + case REG_AON_CNT5: return "aon_cnt5"; + case REG_CPU_CNT5: return "cpu_cnt5"; + case REG_UPMC3: return "upmc3"; + case REG_UPMCR1_EL1: return "upmcr1_el1"; + case REG_AON_CNT_CTL5: return "aon_cnt_ctl5"; + case REG_CPU_CNT_CTL5: return "cpu_cnt_ctl5"; + case REG_UPMC4: return "upmc4"; + case REG_UPMESR1_EL1: return "upmesr1_el1"; + case REG_AON_CNT6: return "aon_cnt6"; + case REG_CPU_CNT6: return "cpu_cnt6"; + case REG_UPMC5: return "upmc5"; + case REG_AON_CNT_CTL6: return "aon_cnt_ctl6"; + case REG_CPU_CNT_CTL6: return "cpu_cnt_ctl6"; + case REG_UPMC6: return "upmc6"; + case REG_AON_CNT7: return "aon_cnt7"; + case REG_CPU_CNT7: return "cpu_cnt7"; + case REG_UPMC7: return "upmc7"; + case REG_AON_CNT_CTL7: return "aon_cnt_ctl7"; + case REG_CPU_CNT_CTL7: return "cpu_cnt_ctl7"; + default: return ""; + } +} + +const char *get_system_register_name_decomposed(int op0, int op1, int CRn, int CRm, int op2) +{ + enum SystemReg sr = (enum SystemReg)((op0<<14)|(op1<<11)|(CRn<<7)|(CRm<<3)|op2); + return get_system_register_name(sr); +} + diff --git a/arch/arm64/disassembler/sysregs_fmt_gen.h b/arch/arm64/disassembler/sysregs_fmt_gen.h new file mode 100644 index 00000000..aaa54fed --- /dev/null +++ b/arch/arm64/disassembler/sysregs_fmt_gen.h @@ -0,0 +1,12 @@ +#pragma once + +#include "sysregs_gen.h" + +#ifdef __cplusplus +extern "C" { +#endif +const char *get_system_register_name(enum SystemReg); +const char *get_system_register_name_decomposed(int op0, int op1, int CRn, int CRm, int op2); +#ifdef __cplusplus +} +#endif diff --git a/arch/arm64/disassembler/sysregs_gen.c b/arch/arm64/disassembler/sysregs_gen.c new file mode 100644 index 00000000..0ef69869 --- /dev/null +++ b/arch/arm64/disassembler/sysregs_gen.c @@ -0,0 +1,1497 @@ +#include <stddef.h> + +#include "sysregs_gen.h" + +/* must parallel has_system_register_name() from the decode side */ +bool has_system_register_name(enum SystemReg sr) +{ + switch(sr) { + case REG_EDSCR: + case REG_EDPRSR: + case REG_UAOIMM: + case REG_PANIMM: + case REG_SPSELIMM: + case REG_DITIMM: + case REG_SVCRIMM: + case REG_ICIALLUIS: + case REG_ICIALLU: + case REG_DCIVAC: + case REG_DCISW: + case REG_ATS1E1R: + case REG_ATS1E1W: + case REG_ATS1E0R: + case REG_ATS1E0W: + case REG_DCCSW: + case REG_DCCISW: + case REG_TLBIVMALLE1IS: + case REG_TLBIVAE1IS: + case REG_TLBIASIDE1IS: + case REG_TLBIVAAE1IS: + case REG_TLBIVALE1IS: + case REG_TLBIVAALE1IS: + case REG_TLBIVMALLE1: + case REG_TLBIVAE1: + case REG_TLBIASIDE1: + case REG_TLBIVAAE1: + case REG_TLBIVALE1: + case REG_TLBIVAALE1: + case REG_DCZVA: + case REG_ICIVAU: + case REG_DCCVAC: + case REG_DCCVAU: + case REG_DCCIVAC: + case REG_ATS1E2R: + case REG_ATS1E2W: + case REG_ATS12E1R: + case REG_ATS12E1W: + case REG_ATS12E0R: + case REG_ATS12E0W: + case REG_TLBIIPAS2E1IS: + case REG_TLBIIPAS2LE1IS: + case REG_TLBIALLE2IS: + case REG_TLBIVAE2IS: + case REG_TLBIALLE1IS: + case REG_TLBIVALE2IS: + case REG_TLBIVMALLS12E1IS: + case REG_TLBIIPAS2E1: + case REG_TLBIIPAS2LE1: + case REG_TLBIALLE2: + case REG_TLBIVAE2: + case REG_TLBIALLE1: + case REG_TLBIVALE2: + case REG_TLBIVMALLS12E1: + case REG_ATS1E3R: + case REG_ATS1E3W: + case REG_TLBIALLE3IS: + case REG_TLBIVAE3IS: + case REG_TLBIVALE3IS: + case REG_TLBIALLE3: + case REG_TLBIVAE3: + case REG_TLBIVALE3: + case REG_OSDTRRX_EL1: + case REG_DBGBVR0_EL1: + case REG_DBGBCR0_EL1: + case REG_DBGWVR0_EL1: + case REG_DBGWCR0_EL1: + case REG_DBGBVR1_EL1: + case REG_DBGBCR1_EL1: + case REG_DBGWVR1_EL1: + case REG_DBGWCR1_EL1: + case REG_MDCCINT_EL1: + case REG_MDSCR_EL1: + case REG_DBGBVR2_EL1: + case REG_DBGBCR2_EL1: + case REG_DBGWVR2_EL1: + case REG_DBGWCR2_EL1: + case REG_OSDTRTX_EL1: + case REG_DBGBVR3_EL1: + case REG_DBGBCR3_EL1: + case REG_DBGWVR3_EL1: + case REG_DBGWCR3_EL1: + case REG_DBGBVR4_EL1: + case REG_DBGBCR4_EL1: + case REG_DBGWVR4_EL1: + case REG_DBGWCR4_EL1: + case REG_DBGBVR5_EL1: + case REG_DBGBCR5_EL1: + case REG_DBGWVR5_EL1: + case REG_DBGWCR5_EL1: + case REG_DBGWFAR: + case REG_OSECCR_EL1: + case REG_DBGBVR6_EL1: + case REG_DBGBCR6_EL1: + case REG_DBGWVR6_EL1: + case REG_DBGWCR6_EL1: + case REG_DBGBVR7_EL1: + case REG_DBGBCR7_EL1: + case REG_DBGWVR7_EL1: + case REG_DBGWCR7_EL1: + case REG_DBGBVR8_EL1: + case REG_DBGBCR8_EL1: + case REG_DBGWVR8_EL1: + case REG_DBGWCR8_EL1: + case REG_DBGBVR9_EL1: + case REG_DBGBCR9_EL1: + case REG_DBGWVR9_EL1: + case REG_DBGWCR9_EL1: + case REG_DBGBVR10_EL1: + case REG_DBGBCR10_EL1: + case REG_DBGWVR10_EL1: + case REG_DBGWCR10_EL1: + case REG_DBGBVR11_EL1: + case REG_DBGBCR11_EL1: + case REG_DBGWVR11_EL1: + case REG_DBGWCR11_EL1: + case REG_DBGBVR12_EL1: + case REG_DBGBCR12_EL1: + case REG_DBGWVR12_EL1: + case REG_DBGWCR12_EL1: + case REG_DBGBVR13_EL1: + case REG_DBGBCR13_EL1: + case REG_DBGWVR13_EL1: + case REG_DBGWCR13_EL1: + case REG_DBGBVR14_EL1: + case REG_DBGBCR14_EL1: + case REG_DBGWVR14_EL1: + case REG_DBGWCR14_EL1: + case REG_DBGBVR15_EL1: + case REG_DBGBCR15_EL1: + case REG_DBGWVR15_EL1: + case REG_DBGWCR15_EL1: + case REG_MDRAR_EL1: + case REG_OSLAR_EL1: + case REG_OSLSR_EL1: + case REG_OSDLR_EL1: + case REG_DBGPRCR_EL1: + case REG_CLAIMSET_EL1: + case REG_CLAIMCLR_EL1: + case REG_AUTHSTAT_EL1: + case REG_TRCTRACEIDR: + case REG_TRCVICTLR: + case REG_TRCSEQEVR0: + case REG_TRCCNTRLDVR0: + case REG_TRCIMSPEC0: + case REG_TRCPRGCTLR: + case REG_TRCQCTLR: + case REG_TRCVIIECTLR: + case REG_TRCSEQEVR1: + case REG_TRCCNTRLDVR1: + case REG_TRCIMSPEC1: + case REG_TRCPROCSELR: + case REG_TRCVISSCTLR: + case REG_TRCSEQEVR2: + case REG_TRCCNTRLDVR2: + case REG_TRCIMSPEC2: + case REG_TRCVIPCSSCTLR: + case REG_TRCCNTRLDVR3: + case REG_TRCIMSPEC3: + case REG_TRCCONFIGR: + case REG_TRCCNTCTLR0: + case REG_TRCIMSPEC4: + case REG_TRCCNTCTLR1: + case REG_TRCIMSPEC5: + case REG_TRCAUXCTLR: + case REG_TRCSEQRSTEVR: + case REG_TRCCNTCTLR2: + case REG_TRCIMSPEC6: + case REG_TRCSEQSTR: + case REG_TRCCNTCTLR3: + case REG_TRCIMSPEC7: + case REG_TRCEVENTCTL0R: + case REG_TRCVDCTLR: + case REG_TRCEXTINSELR: + case REG_TRCCNTVR0: + case REG_TRCEVENTCTL1R: + case REG_TRCVDSACCTLR: + case REG_TRCEXTINSELR1: + case REG_TRCCNTVR1: + case REG_TRCRSR: + case REG_TRCVDARCCTLR: + case REG_TRCEXTINSELR2: + case REG_TRCCNTVR2: + case REG_TRCSTALLCTLR: + case REG_TRCEXTINSELR3: + case REG_TRCCNTVR3: + case REG_TRCTSCTLR: + case REG_TRCSYNCPR: + case REG_TRCCCCTLR: + case REG_TRCBBCTLR: + case REG_TRCRSCTLR16: + case REG_TRCSSCCR0: + case REG_TRCSSPCICR0: + case REG_TRCOSLAR: + case REG_TRCRSCTLR17: + case REG_TRCSSCCR1: + case REG_TRCSSPCICR1: + case REG_TRCRSCTLR2: + case REG_TRCRSCTLR18: + case REG_TRCSSCCR2: + case REG_TRCSSPCICR2: + case REG_TRCRSCTLR3: + case REG_TRCRSCTLR19: + case REG_TRCSSCCR3: + case REG_TRCSSPCICR3: + case REG_TRCRSCTLR4: + case REG_TRCRSCTLR20: + case REG_TRCSSCCR4: + case REG_TRCSSPCICR4: + case REG_TRCPDCR: + case REG_TRCRSCTLR5: + case REG_TRCRSCTLR21: + case REG_TRCSSCCR5: + case REG_TRCSSPCICR5: + case REG_TRCRSCTLR6: + case REG_TRCRSCTLR22: + case REG_TRCSSCCR6: + case REG_TRCSSPCICR6: + case REG_TRCRSCTLR7: + case REG_TRCRSCTLR23: + case REG_TRCSSCCR7: + case REG_TRCSSPCICR7: + case REG_TRCRSCTLR8: + case REG_TRCRSCTLR24: + case REG_TRCSSCSR0: + case REG_TRCRSCTLR9: + case REG_TRCRSCTLR25: + case REG_TRCSSCSR1: + case REG_TRCRSCTLR10: + case REG_TRCRSCTLR26: + case REG_TRCSSCSR2: + case REG_TRCRSCTLR11: + case REG_TRCRSCTLR27: + case REG_TRCSSCSR3: + case REG_TRCRSCTLR12: + case REG_TRCRSCTLR28: + case REG_TRCSSCSR4: + case REG_TRCRSCTLR13: + case REG_TRCRSCTLR29: + case REG_TRCSSCSR5: + case REG_TRCRSCTLR14: + case REG_TRCRSCTLR30: + case REG_TRCSSCSR6: + case REG_TRCRSCTLR15: + case REG_TRCRSCTLR31: + case REG_TRCSSCSR7: + case REG_TRCACVR0: + case REG_TRCACVR8: + case REG_TRCACATR0: + case REG_TRCACATR8: + case REG_TRCDVCVR0: + case REG_TRCDVCVR4: + case REG_TRCDVCMR0: + case REG_TRCDVCMR4: + case REG_TRCACVR1: + case REG_TRCACVR9: + case REG_TRCACATR1: + case REG_TRCACATR9: + case REG_TRCACVR2: + case REG_TRCACVR10: + case REG_TRCACATR2: + case REG_TRCACATR10: + case REG_TRCDVCVR1: + case REG_TRCDVCVR5: + case REG_TRCDVCMR1: + case REG_TRCDVCMR5: + case REG_TRCACVR3: + case REG_TRCACVR11: + case REG_TRCACATR3: + case REG_TRCACATR11: + case REG_TRCACVR4: + case REG_TRCACVR12: + case REG_TRCACATR4: + case REG_TRCACATR12: + case REG_TRCDVCVR2: + case REG_TRCDVCVR6: + case REG_TRCDVCMR2: + case REG_TRCDVCMR6: + case REG_TRCACVR5: + case REG_TRCACVR13: + case REG_TRCACATR5: + case REG_TRCACATR13: + case REG_TRCACVR6: + case REG_TRCACVR14: + case REG_TRCACATR6: + case REG_TRCACATR14: + case REG_TRCDVCVR3: + case REG_TRCDVCVR7: + case REG_TRCDVCMR3: + case REG_TRCDVCMR7: + case REG_TRCACVR7: + case REG_TRCACVR15: + case REG_TRCACATR7: + case REG_TRCACATR15: + case REG_TRCCIDCVR0: + case REG_TRCVMIDCVR0: + case REG_TRCCIDCCTLR0: + case REG_TRCCIDCCTLR1: + case REG_TRCCIDCVR1: + case REG_TRCVMIDCVR1: + case REG_TRCVMIDCCTLR0: + case REG_TRCVMIDCCTLR1: + case REG_TRCCIDCVR2: + case REG_TRCVMIDCVR2: + case REG_TRCCIDCVR3: + case REG_TRCVMIDCVR3: + case REG_TRCCIDCVR4: + case REG_TRCVMIDCVR4: + case REG_TRCCIDCVR5: + case REG_TRCVMIDCVR5: + case REG_TRCCIDCVR6: + case REG_TRCVMIDCVR6: + case REG_TRCCIDCVR7: + case REG_TRCVMIDCVR7: + case REG_TRCITCTRL: + case REG_TRCCLAIMSET: + case REG_TRCCLAIMCLR: + case REG_TRCLAR: + case REG_TEECR32_EL1: + case REG_TEEHBR32_EL1: + case REG_MDCCSR_EL0: + case REG_MDDTR_EL0: + case REG_MDDTRTX_EL0: + case REG_DBGVCR32_EL2: + case REG_MIDR_EL1: + case REG_MPIDR_EL1: + case REG_REVIDR_EL1: + case REG_ID_PFR0_EL1: + case REG_ID_PFR1_EL1: + case REG_ID_DFR0_EL1: + case REG_ID_AFR0_EL1: + case REG_ID_MMFR0_EL1: + case REG_ID_MMFR1_EL1: + case REG_ID_MMFR2_EL1: + case REG_ID_MMFR3_EL1: + case REG_ID_ISAR0_EL1: + case REG_ID_ISAR1_EL1: + case REG_ID_ISAR2_EL1: + case REG_ID_ISAR3_EL1: + case REG_ID_ISAR4_EL1: + case REG_ID_ISAR5_EL1: + case REG_ID_MMFR4_EL1: + case REG_ID_ISAR6_EL1: + case REG_MVFR0_EL1: + case REG_MVFR1_EL1: + case REG_MVFR2_EL1: + case REG_ID_AA32RES3_EL1: + case REG_ID_PFR2_EL1: + case REG_ID_AA32RES5_EL1: + case REG_ID_AA32RES6_EL1: + case REG_ID_AA32RES7_EL1: + case REG_ID_AA64PFR0_EL1: + case REG_ID_AA64PFR1_EL1: + case REG_ID_AA64PFR2_EL1: + case REG_ID_AA64PFR3_EL1: + case REG_ID_AA64ZFR0_EL1: + case REG_ID_AA64SMFR0_EL1: + case REG_ID_AA64ZFR2_EL1: + case REG_ID_AA64ZFR3_EL1: + case REG_ID_AA64DFR0_EL1: + case REG_ID_AA64DFR1_EL1: + case REG_ID_AA64DFR2_EL1: + case REG_ID_AA64DFR3_EL1: + case REG_ID_AA64AFR0_EL1: + case REG_ID_AA64AFR1_EL1: + case REG_ID_AA64AFR2_EL1: + case REG_ID_AA64AFR3_EL1: + case REG_ID_AA64ISAR0_EL1: + case REG_ID_AA64ISAR1_EL1: + case REG_ID_AA64ISAR2_EL1: + case REG_ID_AA64ISAR3_EL1: + case REG_ID_AA64ISAR4_EL1: + case REG_ID_AA64ISAR5_EL1: + case REG_ID_AA64ISAR6_EL1: + case REG_ID_AA64ISAR7_EL1: + case REG_ID_AA64MMFR0_EL1: + case REG_ID_AA64MMFR1_EL1: + case REG_ID_AA64MMFR2_EL1: + case REG_ID_AA64MMFR3_EL1: + case REG_ID_AA64MMFR4_EL1: + case REG_ID_AA64MMFR5_EL1: + case REG_ID_AA64MMFR6_EL1: + case REG_ID_AA64MMFR7_EL1: + case REG_SCTLR_EL21: + case REG_ACTLR_EL21: + case REG_CPTR_EL21: + case REG_RGSR_EL1: + case REG_GCR_EL1: + case REG_TRFCR_EL1: + case REG_SMPRI_EL1: + case REG_SMCR_EL21: + case REG_TTBR0_EL21: + case REG_TTBR1_EL21: + case REG_TCR_EL21: + case REG_APIAKEYLO_EL21: + case REG_APIAKEYHI_EL21: + case REG_APIBKEYLO_EL21: + case REG_APIBKEYHI_EL21: + case REG_APDAKEYLO_EL21: + case REG_APDAKEYHI_EL21: + case REG_APDBKEYLO_EL21: + case REG_APDBKEYHI_EL21: + case REG_APGAKEYLO_EL21: + case REG_APGAKEYHI_EL21: + case REG_SPSR_EL21: + case REG_ELR_EL21: + case REG_SP_EL0: + case REG_SPSEL: + case REG_NESTEDCURRENTEL: + case REG_PAN: + case REG_UAO: + case REG_ICV_PMR_EL1: + case REG_AFSR0_EL21: + case REG_AFSR1_EL21: + case REG_ESR_EL21: + case REG_ERRIDR_EL1: + case REG_ERRSELR_EL1: + case REG_ERXCTLR_EL1: + case REG_ERXSTATUS_EL1: + case REG_ERXADDR_EL1: + case REG_ERXPFGCTL_EL1: + case REG_ERXPFGCDN_EL1: + case REG_ERXMISC0_EL1: + case REG_ERXMISC1_EL1: + case REG_ERXMISC2_EL1: + case REG_ERXMISC3_EL1: + case REG_ERXTS_EL1: + case REG_TFSR_EL1: + case REG_TFSRE0_EL1: + case REG_FAR_EL21: + case REG_PAR_EL1: + case REG_PMSCR_EL1: + case REG_PMSICR_EL1: + case REG_PMSIRR_EL1: + case REG_PMSFCR_EL1: + case REG_PMSEVFR_EL1: + case REG_PMSLATFR_EL1: + case REG_PMSIDR_EL1: + case REG_PMBLIMITR_EL1: + case REG_PMBPTR_EL1: + case REG_PMBSR_EL1: + case REG_PMBIDR_EL1: + case REG_TRBLIMITR_EL1: + case REG_TRBPTR_EL1: + case REG_TRBBASER_EL1: + case REG_TRBSR_EL1: + case REG_TRBMAR_EL1: + case REG_TRBTRG_EL1: + case REG_PMINTENSET_EL1: + case REG_PMINTENCLR_EL1: + case REG_PMMIR_EL1: + case REG_MAIR_EL21: + case REG_AMAIR_EL21: + case REG_LORSA_EL1: + case REG_LOREA_EL1: + case REG_LORN_EL1: + case REG_LORC_EL1: + case REG_LORID_EL1: + case REG_MPAM1_EL1: + case REG_MPAM0_EL1: + case REG_CTRR_C_LWR_EL21: + case REG_CTRR_C_UPR_EL21: + case REG_CTRR_D_LWR_EL21: + case REG_CTRR_D_UPR_EL21: + case REG_CTRR_C_LWR_EL12: + case REG_CTRR_C_UPR_EL12: + case REG_CTRR_D_LWR_EL12: + case REG_CTRR_D_UPR_EL12: + case REG_CTRR_C_LWR_EL2: + case REG_CTRR_C_UPR_EL2: + case REG_CTRR_D_LWR_EL2: + case REG_CTRR_D_UPR_EL2: + case REG_CTRR_C_CTL_EL21: + case REG_CTRR_D_CTL_EL21: + case REG_CTRR_C_CTL_EL12: + case REG_CTRR_D_CTL_EL12: + case REG_CTRR_C_CTL_EL2: + case REG_CTRR_D_CTL_EL2: + case REG_CTXR_A_LWR_EL21: + case REG_CTXR_A_UPR_EL21: + case REG_CTXR_B_LWR_EL21: + case REG_CTXR_B_UPR_EL21: + case REG_CTXR_C_LWR_EL21: + case REG_CTXR_C_UPR_EL21: + case REG_CTXR_D_LWR_EL21: + case REG_CTXR_D_UPR_EL21: + case REG_CTXR_A_LWR_EL12: + case REG_CTXR_A_UPR_EL12: + case REG_CTXR_B_LWR_EL12: + case REG_CTXR_B_UPR_EL12: + case REG_CTXR_C_LWR_EL12: + case REG_CTXR_C_UPR_EL12: + case REG_CTXR_D_LWR_EL12: + case REG_CTXR_D_UPR_EL12: + case REG_CTXR_A_LWR_EL2: + case REG_CTXR_A_UPR_EL2: + case REG_CTXR_B_LWR_EL2: + case REG_CTXR_B_UPR_EL2: + case REG_CTXR_C_LWR_EL2: + case REG_CTXR_C_UPR_EL2: + case REG_CTXR_D_LWR_EL2: + case REG_CTXR_D_UPR_EL2: + case REG_CTXR_A_CTL_EL21: + case REG_CTXR_B_CTL_EL21: + case REG_CTXR_C_CTL_EL21: + case REG_CTXR_D_CTL_EL21: + case REG_CTXR_A_CTL_EL12: + case REG_CTXR_B_CTL_EL12: + case REG_CTXR_C_CTL_EL12: + case REG_CTXR_D_CTL_EL12: + case REG_CTXR_A_CTL_EL2: + case REG_CTXR_B_CTL_EL2: + case REG_CTXR_C_CTL_EL2: + case REG_CTXR_D_CTL_EL2: + case REG_ACC_CTRR_C_LWR_EL2: + case REG_ACC_CTRR_C_UPR_EL2: + case REG_ACC_CTRR_D_LWR_EL2: + case REG_ACC_CTRR_D_UPR_EL2: + case REG_ACC_CTXR_A_LWR_EL2: + case REG_ACC_CTXR_A_UPR_EL2: + case REG_ACC_CTXR_B_LWR_EL2: + case REG_ACC_CTXR_B_UPR_EL2: + case REG_ACC_CTXR_C_LWR_EL2: + case REG_ACC_CTXR_C_UPR_EL2: + case REG_ACC_CTXR_D_LWR_EL2: + case REG_ACC_CTXR_D_UPR_EL2: + case REG_ACC_CTRR_C_CTL_EL2: + case REG_ACC_CTRR_D_CTL_EL2: + case REG_ACC_CTXR_A_CTL_EL2: + case REG_ACC_CTXR_B_CTL_EL2: + case REG_ACC_CTXR_C_CTL_EL2: + case REG_ACC_CTXR_D_CTL_EL2: + case REG_VBAR_EL21: + case REG_RVBAR_EL1: + case REG_RMR_EL1: + case REG_ISR_EL1: + case REG_DISR_EL1: + case REG_ICV_IAR0_EL1: + case REG_ICV_EOIR0_EL1: + case REG_ICV_HPPIR0_EL1: + case REG_ICV_BPR0_EL1: + case REG_ICC_AP0R0_EL1: + case REG_ICC_AP0R1_EL1: + case REG_ICC_AP0R2_EL1: + case REG_ICC_AP0R3_EL1: + case REG_ICC_AP1R0_EL1: + case REG_ICC_AP1R1_EL1: + case REG_ICC_AP1R2_EL1: + case REG_ICC_AP1R3_EL1: + case REG_ICV_DIR_EL1: + case REG_ICV_RPR_EL1: + case REG_ICC_SGI1R_EL1: + case REG_ICC_ASGI1R_EL1: + case REG_ICC_SGI0R_EL1: + case REG_ICV_IAR1_EL1: + case REG_ICV_EOIR1_EL1: + case REG_ICV_HPPIR1_EL1: + case REG_ICV_BPR1_EL1: + case REG_ICV_CTLR_EL1: + case REG_ICC_SRE_EL1: + case REG_ICV_IGRPEN0_EL1: + case REG_ICV_IGRPEN1_EL1: + case REG_ICC_SEIEN_EL1: + case REG_CONTEXTIDR_EL21: + case REG_TPIDR_EL1: + case REG_SCXTNUM_EL21: + case REG_REDIR_CNTKCTL_EL1: + case REG_HID0: + case REG_HID25: + case REG_HID26: + case REG_HID27: + case REG_HID28: + case REG_HID29: + case REG_HID34: + case REG_HID1: + case REG_HID21: + case REG_BIUVCSCUPCMDCRD: + case REG_BIUVCSCUPDATCRD: + case REG_HID2: + case REG_HID30: + case REG_HID31: + case REG_HID32: + case REG_HID33: + case REG_HID3: + case REG_BIUVCSCUPCMDCRDC2: + case REG_BIUVCSCUPDATCRDC2: + case REG_HID4: + case REG_HID5: + case REG_HID6: + case REG_HID7: + case REG_HID8: + case REG_HID9: + case REG_HID10: + case REG_BLOCK_CMAINT_CFG: + case REG_HID11: + case REG_HID18: + case REG_HID36: + case REG_HID37: + case REG_HID12: + case REG_HID15: + case REG_HID19: + case REG_BIU_TLIMIT: + case REG_HID13: + case REG_HID_RCTX_G0CTL: + case REG_HID_RCTX_G1CTL: + case REG_HID14: + case REG_HID16: + case REG_LLC_WRR2: + case REG_BIU_AFI_CFG: + case REG_HID17: + case REG_HID24: + case REG_HID35: + case REG_CCSIDRPL1_I_EL1: + case REG_CLIDR_EL1: + case REG_SMIDR_EL1: + case REG_AIDR_EL1: + case REG_PMCR0_EL1: + case REG_APPL_CONTEXTPTR: + case REG_LD_LATPROF_CTL_EL21: + case REG_AON_CPU_MSTALL_CTL01_EL1: + case REG_PM_MEMFLT_CTL23_EL1: + case REG_REDIR_ACNTV_CTL_EL0: + case REG_LCL_ACNTVCTSS_NOREDIR_EL0: + case REG_PMCR1_EL21: + case REG_LD_LATPROF_CTR_EL1: + case REG_AON_CPU_MSTALL_CTL23_EL1: + case REG_PM_MEMFLT_CTL45_EL1: + case REG_AGTCNTRDIR_EL21: + case REG_AGTCNTKCTL_NOREDIR_EL1: + case REG_PMCR2_EL1: + case REG_LD_LATPROF_STS_EL1: + case REG_AON_CPU_MSTALL_CTL45_EL1: + case REG_REDIR_ACNTHP_CVAL_EL2: + case REG_LCL_CNTVCT_NOREDIR_EL0: + case REG_AGTCNTP_CVAL_NOREDIR_EL0: + case REG_PMCR3_EL1: + case REG_LD_LATPROF_INF_EL1: + case REG_AON_CPU_MSTALL_CTL67_EL1: + case REG_REDIR_ACNTHP_TVAL_EL2: + case REG_LCL_CNTPCTSS_NOREDIR_EL0: + case REG_AGTCNTP_TVAL_NOREDIR_EL0: + case REG_PMCR4_EL1: + case REG_LD_LATPROF_CTL_EL2: + case REG_AON_CPU_MEMFLT_CTL01_EL1: + case REG_REDIR_ACNTHP_CTL_EL2: + case REG_LCL_CNTVCTSS_NOREDIR_EL0: + case REG_AGTCNTP_CTL_NOREDIR_EL0: + case REG_PMESR0_EL1: + case REG_LD_LATPROF_CMD_EL1: + case REG_AON_CPU_MEMFLT_CTL23_EL1: + case REG_REDIR_ACNTHV_CVAL_EL2: + case REG_AGTCNTV_CVAL_NOREDIR_EL0: + case REG_PMESR1_EL1: + case REG_PMCR1_EL2: + case REG_AON_CPU_MEMFLT_CTL45_EL1: + case REG_REDIR_ACNTHV_TVAL_EL2: + case REG_CNTKCTL_NOREDIR_EL1: + case REG_AGTCNTV_TVAL_NOREDIR_EL0: + case REG_OPMAT0_EL1: + case REG_PMCR1_EL12: + case REG_AON_CPU_MEMFLT_CTL67_EL1: + case REG_REDIR_ACNTHV_CTL_EL2: + case REG_CNTP_CVAL_NOREDIR_EL0: + case REG_AGTCNTV_CTL_NOREDIR_EL0: + case REG_OPMAT1_EL1: + case REG_PMCR1_GL12: + case REG_AON_CPU_MSTALL_CTR0_EL1: + case REG_REDIR_ACNTFRQ_EL0: + case REG_CNTP_TVAL_NOREDIR_EL0: + case REG_LCL_CNTPCT_NOREDIR_EL0: + case REG_OPMSK0_EL1: + case REG_LD_LATPROF_CTL_EL12: + case REG_AON_CPU_MSTALL_CTR1_EL1: + case REG_AGTCNTVOFF_EL2: + case REG_CNTP_CTL_NOREDIR_EL0: + case REG_CNTV_CTL_NOREDIR_EL0: + case REG_OPMSK1_EL1: + case REG_LD_LATPROF_INF_EL2: + case REG_AON_CPU_MSTALL_CTR2_EL1: + case REG_REDIR_ACNTP_CVAL_EL0: + case REG_CNTV_CVAL_NOREDIR_EL0: + case REG_LCL_ACNTPCT_NOREDIR_EL0: + case REG_AON_CPU_MSTALL_CTR3_EL1: + case REG_REDIR_ACNTP_TVAL_EL0: + case REG_CNTV_TVAL_NOREDIR_EL0: + case REG_VMSA_HV_LOCK_EL2: + case REG_PMSWCTRL_EL1: + case REG_PMCR5_EL0: + case REG_AON_CPU_MSTALL_CTR4_EL1: + case REG_PMCOMPARE0_EL1: + case REG_PMCOMPARE1_EL1: + case REG_VMSA_NV_LOCK_EL2: + case REG_PMSR_EL1: + case REG_AON_CPU_MSTALL_CTR5_EL1: + case REG_REDIR_ACNTP_CTL_EL0: + case REG_PMCOMPARE5_EL1: + case REG_PMCOMPARE6_EL1: + case REG_PMCOMPARE7_EL1: + case REG_PMCR_BVRNG4_EL1: + case REG_PM_PMI_PC: + case REG_AON_CPU_MSTALL_CTR6_EL1: + case REG_REDIR_ACNTV_CVAL_EL0: + case REG_LCL_ACNTVCT_NOREDIR_EL0: + case REG_PMCR_BVRNG5_EL1: + case REG_AON_CPU_MSTALL_CTR7_EL1: + case REG_REDIR_ACNTV_TVAL_EL0: + case REG_LCL_ACNTPCTSS_NOREDIR_EL0: + case REG_CSSELR_EL1: + case REG_PMC0: + case REG_UPMCFILTER0: + case REG_UPMCFILTER1: + case REG_UPMCFILTER2: + case REG_UPMCFILTER3: + case REG_UPMCFILTER4: + case REG_UPMCFILTER5: + case REG_UPMCFILTER6: + case REG_PMC1: + case REG_UPMCFILTER7: + case REG_PMC2: + case REG_PMC3: + case REG_PMC4: + case REG_PMC5: + case REG_PMC6: + case REG_PMC7: + case REG_PMC8: + case REG_PMC9: + case REG_PMTRHLD6_EL1: + case REG_PMTRHLD4_EL1: + case REG_PMTRHLD2_EL1: + case REG_PMMMAP_EL1: + case REG_CTR_EL0: + case REG_DCZID_EL0: + case REG_NZCV: + case REG_DAIF: + case REG_SVCR: + case REG_DIT: + case REG_SSBS: + case REG_TCO: + case REG_FPCR: + case REG_FPSR: + case REG_DSPSR_EL0: + case REG_DLR_EL0: + case REG_PMCR_EL0: + case REG_PMCNTENSET_EL0: + case REG_PMCNTENCLR_EL0: + case REG_PMOVSCLR_EL0: + case REG_PMSWINC_EL0: + case REG_PMSELR_EL0: + case REG_PMCCNTR_EL0: + case REG_PMXEVTYPER_EL0: + case REG_PMXEVCNTR_EL0: + case REG_DAIFCLR: + case REG_PMUSERENR_EL0: + case REG_PMOVSSET_EL0: + case REG_TPIDR_EL0: + case REG_TPIDRRO_EL0: + case REG_TPIDR2_EL0: + case REG_SCXTNUM_EL0: + case REG_AMCR_EL0: + case REG_AMUSERENR_EL0: + case REG_AMCNTENCLR0_EL0: + case REG_AMCNTENSET0_EL0: + case REG_AMCNTENCLR1_EL0: + case REG_AMCNTENSET1_EL0: + case REG_AMEVCNTR00_EL0: + case REG_AMEVCNTR01_EL0: + case REG_AMEVCNTR02_EL0: + case REG_AMEVCNTR03_EL0: + case REG_AMEVCNTR10_EL0: + case REG_AMEVCNTR11_EL0: + case REG_AMEVCNTR12_EL0: + case REG_AMEVCNTR13_EL0: + case REG_AMEVCNTR14_EL0: + case REG_AMEVCNTR15_EL0: + case REG_AMEVCNTR16_EL0: + case REG_AMEVCNTR17_EL0: + case REG_AMEVCNTR18_EL0: + case REG_AMEVCNTR19_EL0: + case REG_AMEVCNTR110_EL0: + case REG_AMEVCNTR111_EL0: + case REG_AMEVCNTR112_EL0: + case REG_AMEVCNTR113_EL0: + case REG_AMEVCNTR114_EL0: + case REG_AMEVCNTR115_EL0: + case REG_AMEVTYPER10_EL0: + case REG_AMEVTYPER11_EL0: + case REG_AMEVTYPER12_EL0: + case REG_AMEVTYPER13_EL0: + case REG_AMEVTYPER14_EL0: + case REG_AMEVTYPER15_EL0: + case REG_AMEVTYPER16_EL0: + case REG_AMEVTYPER17_EL0: + case REG_AMEVTYPER18_EL0: + case REG_AMEVTYPER19_EL0: + case REG_AMEVTYPER110_EL0: + case REG_AMEVTYPER111_EL0: + case REG_AMEVTYPER112_EL0: + case REG_AMEVTYPER113_EL0: + case REG_AMEVTYPER114_EL0: + case REG_AMEVTYPER115_EL0: + case REG_REDIR_CNTFRQ_EL0: + case REG_REDIR_LCL_CNTPCT_EL0: + case REG_REDIR_LCL_CNTVCT_EL0: + case REG_REDIR_LCL_CNTPCTSS_EL0: + case REG_REDIR_LCL_CNTVCTSS_EL0: + case REG_REDIR_CNTP_TVAL_EL0: + case REG_REDIR_CNTP_CTL_EL0: + case REG_REDIR_CNTP_CVAL_EL0: + case REG_REDIR_CNTV_TVAL_EL0: + case REG_REDIR_CNTV_CTL_EL0: + case REG_REDIR_CNTV_CVAL_EL0: + case REG_PMEVCNTR0_EL0: + case REG_PMEVCNTR1_EL0: + case REG_PMEVCNTR2_EL0: + case REG_PMEVCNTR3_EL0: + case REG_PMEVCNTR4_EL0: + case REG_PMEVCNTR5_EL0: + case REG_PMEVCNTR6_EL0: + case REG_PMEVCNTR7_EL0: + case REG_PMEVCNTR8_EL0: + case REG_PMEVCNTR9_EL0: + case REG_PMEVCNTR10_EL0: + case REG_PMEVCNTR11_EL0: + case REG_PMEVCNTR12_EL0: + case REG_PMEVCNTR13_EL0: + case REG_PMEVCNTR14_EL0: + case REG_PMEVCNTR15_EL0: + case REG_PMEVCNTR16_EL0: + case REG_PMEVCNTR17_EL0: + case REG_PMEVCNTR18_EL0: + case REG_PMEVCNTR19_EL0: + case REG_PMEVCNTR20_EL0: + case REG_PMEVCNTR21_EL0: + case REG_PMEVCNTR22_EL0: + case REG_PMEVCNTR23_EL0: + case REG_PMEVCNTR24_EL0: + case REG_PMEVCNTR25_EL0: + case REG_PMEVCNTR26_EL0: + case REG_PMEVCNTR27_EL0: + case REG_PMEVCNTR28_EL0: + case REG_PMEVCNTR29_EL0: + case REG_PMEVCNTR30_EL0: + case REG_PMEVTYPER0_EL0: + case REG_PMEVTYPER1_EL0: + case REG_PMEVTYPER2_EL0: + case REG_PMEVTYPER3_EL0: + case REG_PMEVTYPER4_EL0: + case REG_PMEVTYPER5_EL0: + case REG_PMEVTYPER6_EL0: + case REG_PMEVTYPER7_EL0: + case REG_PMEVTYPER8_EL0: + case REG_PMEVTYPER9_EL0: + case REG_PMEVTYPER10_EL0: + case REG_PMEVTYPER11_EL0: + case REG_PMEVTYPER12_EL0: + case REG_PMEVTYPER13_EL0: + case REG_PMEVTYPER14_EL0: + case REG_PMEVTYPER15_EL0: + case REG_PMEVTYPER16_EL0: + case REG_PMEVTYPER17_EL0: + case REG_PMEVTYPER18_EL0: + case REG_PMEVTYPER19_EL0: + case REG_PMEVTYPER20_EL0: + case REG_PMEVTYPER21_EL0: + case REG_PMEVTYPER22_EL0: + case REG_PMEVTYPER23_EL0: + case REG_PMEVTYPER24_EL0: + case REG_PMEVTYPER25_EL0: + case REG_PMEVTYPER26_EL0: + case REG_PMEVTYPER27_EL0: + case REG_PMEVTYPER28_EL0: + case REG_PMEVTYPER29_EL0: + case REG_PMEVTYPER30_EL0: + case REG_PMCCFILTR_EL0: + case REG_LSU_ERR_STS: + case REG_AFLATCTL1_EL1: + case REG_AFLATVALBIN0_EL1: + case REG_AFLATINFLO_EL1: + case REG_LSU_ERR_CTL: + case REG_AFLATCTL2_EL1: + case REG_AFLATVALBIN1_EL1: + case REG_AFLATINFHI_EL1: + case REG_AFLATCTL3_EL1: + case REG_AFLATVALBIN2_EL1: + case REG_AFLATCTL4_EL1: + case REG_AFLATVALBIN3_EL1: + case REG_LLC_FILL_CTL: + case REG_AFLATCTL5_LO_EL1: + case REG_AFLATVALBIN4_EL1: + case REG_AFLATCTL5_HI_EL1: + case REG_LLC_FILL_DAT: + case REG_AFLATVALBIN5_EL1: + case REG_AFLATVALBIN6_EL1: + case REG_LLC_RAM_CONFIG: + case REG_AFLATVALBIN7_EL1: + case REG_LLC_ERR_STS: + case REG_CMAINT_BCAST_LIST_0: + case REG_CMAINT_BCAST_LIST_1: + case REG_CMAINT_BCAST_CTL: + case REG_LLC_ERR_ADR: + case REG_LLC_ERR_CTL: + case REG_LLC_ERR_INJ: + case REG_LLC_ERR_INF: + case REG_USERTAGSEL_EL1: + case REG_UUSERTAG_EL0: + case REG_KUSERTAG_EL1: + case REG_HUSERTAG_EL2: + case REG_LLC_TRACE_CTL0: + case REG_LLC_TRACE_CTL1: + case REG_LLC_UP_REQ_VC: + case REG_LLC_UP_REQ_VC_THRESH: + case REG_LLC_UP_REQ_VC_2: + case REG_LLC_UP_REQ_VC_THRESH_2: + case REG_LLC_DRAM_HASH0: + case REG_LLC_DRAM_HASH1: + case REG_LLC_DRAM_HASH2: + case REG_LLC_DRAM_HASH3: + case REG_LLC_TRACE_CTL2: + case REG_LLC_DRAM_HASH4: + case REG_LLC_UP_REQ_VC_3: + case REG_LLC_UP_REQ_VC_THRESH_3: + case REG_LLC_UP_REQ_VC_4: + case REG_LLC_UP_REQ_VC_THRESH_4: + case REG_LLC_HASH0: + case REG_LLC_HASH1: + case REG_LLC_HASH2: + case REG_LLC_HASH3: + case REG_LLC_WRR: + case REG_LLC_DRAM_HASH5: + case REG_LLC_DRAM_HASH6: + case REG_VPIDR_EL2: + case REG_VMPIDR_EL2: + case REG_SCTLR_EL2: + case REG_ACTLR_EL2: + case REG_HCR_EL2: + case REG_MDCR_EL2: + case REG_CPTR_EL2: + case REG_HSTR_EL2: + case REG_HFGRTR_EL2: + case REG_HFGWTR_EL2: + case REG_HFGITR_EL2: + case REG_HACR_EL2: + case REG_TRFCR_EL2: + case REG_HCRX_EL2: + case REG_SMPRIMAP_EL2: + case REG_SMCR_EL2: + case REG_SDER32_EL2: + case REG_TTBR0_EL2: + case REG_TTBR1_EL2: + case REG_TCR_EL2: + case REG_VTTBR_EL2: + case REG_VTCR_EL2: + case REG_VNCR_EL2: + case REG_VSTTBR_EL2: + case REG_VSTCR_EL2: + case REG_DACR32_EL2: + case REG_HDFGRTR_EL2: + case REG_HDFGWTR_EL2: + case REG_SPSR_NV_EL21: + case REG_ELR_NV_EL21: + case REG_SP_EL1: + case REG_SPSR_IRQ: + case REG_SPSR_ABT: + case REG_SPSR_UND: + case REG_SPSR_FIQ: + case REG_IFSR32_EL2: + case REG_AFSR0_EL2: + case REG_AFSR1_EL2: + case REG_ESR_NV_EL21: + case REG_VSESR_EL2: + case REG_FPEXC32_EL2: + case REG_TFSR_EL2: + case REG_FAR_NV_EL21: + case REG_HPFAR_EL2: + case REG_PMSCR_EL2: + case REG_MAIR_EL2: + case REG_AMAIR_EL2: + case REG_MPAMHCR_EL2: + case REG_MPAMVPMV_EL2: + case REG_MPAM2_EL2: + case REG_MPAMVPM0_EL2: + case REG_MPAMVPM1_EL2: + case REG_MPAMVPM2_EL2: + case REG_MPAMVPM3_EL2: + case REG_MPAMVPM4_EL2: + case REG_MPAMVPM5_EL2: + case REG_MPAMVPM6_EL2: + case REG_MPAMVPM7_EL2: + case REG_VBAR_EL2: + case REG_RVBAR_EL2: + case REG_RMR_EL2: + case REG_VDISR_EL2: + case REG_ICH_AP0R0_EL2: + case REG_ICH_AP0R1_EL2: + case REG_ICH_AP0R2_EL2: + case REG_ICH_AP0R3_EL2: + case REG_ICH_AP1R0_EL2: + case REG_ICH_AP1R1_EL2: + case REG_ICH_AP1R2_EL2: + case REG_ICH_AP1R3_EL2: + case REG_ICH_VSEIR_EL2: + case REG_ICC_SRE_EL2: + case REG_ICH_HCR_EL2: + case REG_ICH_VTR_EL2: + case REG_ICH_MISR_EL2: + case REG_ICH_EISR_EL2: + case REG_ICH_ELRSR_EL2: + case REG_ICH_VMCR_EL2: + case REG_ICH_LR0_EL2: + case REG_ICH_LR1_EL2: + case REG_ICH_LR2_EL2: + case REG_ICH_LR3_EL2: + case REG_ICH_LR4_EL2: + case REG_ICH_LR5_EL2: + case REG_ICH_LR6_EL2: + case REG_ICH_LR7_EL2: + case REG_ICH_LR8_EL2: + case REG_ICH_LR9_EL2: + case REG_ICH_LR10_EL2: + case REG_ICH_LR11_EL2: + case REG_ICH_LR12_EL2: + case REG_ICH_LR13_EL2: + case REG_ICH_LR14_EL2: + case REG_ICH_LR15_EL2: + case REG_CONTEXTIDR_EL2: + case REG_TPIDR_EL2: + case REG_SCXTNUM_EL2: + case REG_CNTVOFF_EL2: + case REG_REDIR_CNTHCTL_EL2: + case REG_REDIR_CNTHP_TVAL_EL2: + case REG_REDIR_CNTHP_CTL_EL2: + case REG_REDIR_CNTHP_CVAL_EL2: + case REG_REDIR_CNTHV_TVAL_EL2: + case REG_REDIR_CNTHV_CTL_EL2: + case REG_REDIR_CNTHV_CVAL_EL2: + case REG_CNTHVS_TVAL_EL2: + case REG_CNTHVS_CTL_EL2: + case REG_CNTHVS_CVAL_EL2: + case REG_CNTHPS_TVAL_EL2: + case REG_CNTHPS_CTL_EL2: + case REG_CNTHPS_CVAL_EL2: + case REG_FED_ERR_STS: + case REG_FED_ERR_CTL: + case REG_APCTL_EL21: + case REG_KERNKEYLO_EL21: + case REG_KERNKEYHI_EL21: + case REG_VMSA_LOCK_EL1: + case REG_AMX_STATE_T_EL1: + case REG_AMX_CONFIG_EL21: + case REG_VMSA_LOCK_EL2: + case REG_CTRR_B_UPR_EL21: + case REG_CTRR_B_LWR_EL21: + case REG_SP_SETUP_GL21: + case REG_SP_SETUP_GL2: + case REG_CTRR_B_CTL_EL21: + case REG_CTRR_A_LWR_EL21: + case REG_CTRR_A_UPR_EL21: + case REG_CTRR_A_CTL_EL21: + case REG_VMSA_LOCK_EL12: + case REG_AGTCNTV_CTL_EL02: + case REG_AMX_STATE_EL1: + case REG_AMX_STATUS_EL1: + case REG_AGTCNTP_CVAL_EL02: + case REG_REDIR_ACNTP_TVAL_EL02: + case REG_AGTCNTP_CTL_EL02: + case REG_AGTCNTV_CVAL_EL02: + case REG_AGTCNTV_TVAL_EL02: + case REG_AMX_CONFIG_EL12: + case REG_AMX_CONFIG_EL2: + case REG_SPRR_HUPERM_EL0: + case REG_SPRR_VUPERM_EL0: + case REG_CTRR_A_CTL_EL2: + case REG_CTRR_B_CTL_EL2: + case REG_CTRR_A_LWR_EL2: + case REG_CTRR_A_UPR_EL2: + case REG_CTRR_B_LWR_EL2: + case REG_CTRR_B_UPR_EL2: + case REG_SPRR_HUMPRR_EL2: + case REG_SPRR_HUPERM_SH01_EL2: + case REG_SPRR_HUPERM_SH02_EL2: + case REG_SPRR_HUPERM_SH03_EL2: + case REG_SPRR_HUPERM_SH04_EL2: + case REG_SPRR_HUPERM_SH05_EL2: + case REG_SPRR_HUPERM_SH06_EL2: + case REG_SPRR_HUPERM_SH07_EL2: + case REG_SPRR_VUMPRR_EL1: + case REG_SPRR_VUPERM_SH01_EL1: + case REG_SPRR_VUPERM_SH02_EL1: + case REG_SPRR_VUPERM_SH03_EL1: + case REG_SPRR_VUPERM_SH04_EL1: + case REG_SPRR_VUPERM_SH05_EL1: + case REG_SPRR_VUPERM_SH06_EL1: + case REG_SPRR_VUPERM_SH07_EL1: + case REG_CTRR_A_LWR_EL12: + case REG_CTRR_A_UPR_EL12: + case REG_CTRR_B_LWR_EL12: + case REG_CTRR_B_UPR_EL12: + case REG_CTRR_A_CTL_EL12: + case REG_CTRR_B_CTL_EL12: + case REG_REDIR_ACNTKCTL_EL1: + case REG_AGTCNTKCTL_EL12: + case REG_PREDAKEYLO_EL1: + case REG_PREDAKEYHI_EL1: + case REG_PREDBKEYLO_EL1: + case REG_PREDBKEYHI_EL1: + case REG_SIQ_CFG_EL1: + case REG_REDIR_LCL_ACNTPCTSS_EL0: + case REG_REDIR_LCL_ACNTVCTSS_EL0: + case REG_AVNCR_EL2: + case REG_ACC_CTRR_A_LWR_EL2: + case REG_ACC_CTRR_A_UPR_EL2: + case REG_ACC_CTRR_B_LWR_EL2: + case REG_ACC_CTRR_B_UPR_EL2: + case REG_ACC_CTRR_A_CTL_EL2: + case REG_ACC_CTRR_B_CTL_EL2: + case REG_REDIR_LCL_ACNTPCT_EL0: + case REG_REDIR_LCL_ACNTVCT_EL0: + case REG_ACFG_EL1: + case REG_AHCR_EL2: + case REG_APL_INTSTATUS_EL21: + case REG_APL_INTSTATUS_EL2: + case REG_REDIR_ACNTHCTL_EL2: + case REG_JAPIAKEYLO_NV_EL21: + case REG_JAPIAKEYHI_NV_EL21: + case REG_JAPIBKEYLO_NV_EL21: + case REG_JAPIBKEYHI_NV_EL21: + case REG_JAPIAKEYLO_EL21: + case REG_JAPIAKEYHI_EL21: + case REG_JAPIBKEYLO_EL21: + case REG_JAPIBKEYHI_EL21: + case REG_JAPIAKEYLO_EL12: + case REG_JAPIAKEYHI_EL12: + case REG_JAPIBKEYLO_EL12: + case REG_JAPIBKEYHI_EL12: + case REG_AGTCNTRDIR_EL2: + case REG_AGTCNTRDIR_EL12: + case REG_JRANGE_EL2: + case REG_JRANGE_EL21: + case REG_JRANGE_EL12: + case REG_JCTL_EL2: + case REG_JCTL_EL21: + case REG_JCTL_EL12: + case REG_JCTL_EL0: + case REG_AMDSCR_EL1: + case REG_SCTLR_EL12: + case REG_ACTLR_EL12: + case REG_CPACR_EL12: + case REG_TRFCR_EL12: + case REG_SMCR_EL12: + case REG_TTBR0_EL12: + case REG_TTBR1_EL12: + case REG_TCR_EL12: + case REG_SPSR_EL12: + case REG_ELR_EL12: + case REG_AFSR0_EL12: + case REG_AFSR1_EL12: + case REG_ESR_EL12: + case REG_TFSR_EL12: + case REG_FAR_EL12: + case REG_PMSCR_EL12: + case REG_MAIR_EL12: + case REG_AMAIR_EL12: + case REG_MPAM1_EL12: + case REG_VBAR_EL12: + case REG_CONTEXTIDR_EL12: + case REG_SCXTNUM_EL12: + case REG_CNTKCTL_EL12: + case REG_CNTP_TVAL_EL02: + case REG_CNTP_CTL_EL02: + case REG_CNTP_CVAL_EL02: + case REG_CNTV_TVAL_EL02: + case REG_CNTV_CTL_EL02: + case REG_CNTV_CVAL_EL02: + case REG_IPI_RR_LOCAL_EL1: + case REG_IPI_RR_GLOBAL_EL1: + case REG_AF_ERR_CFG0: + case REG_AP_ERR_CFG0: + case REG_AF_ERR_SRC_IDS: + case REG_DPC_ERR_STS: + case REG_DPC_ERR_CTL: + case REG_PROD_TRC_CORE_CFG_EL21: + case REG_TRACE_CORE_CFG: + case REG_IPI_SR: + case REG_APL_LRTMR_EL2: + case REG_APL_INTENABLE_EL2: + case REG_KTRACE_MESSAGE: + case REG_TRACE_CORE_CFG_EXT: + case REG_PROD_TRC_CORE_CFG_EL2: + case REG_HID_PROD_TRC_CORE_CFG_EL1: + case REG_DBG_WRAP_GLB: + case REG_TRACE_STREAM_BASE: + case REG_TRACE_STREAM_FILL: + case REG_TRACE_STREAM_BASE1: + case REG_TRACE_STREAM_FILL1: + case REG_TRACE_STREAM_IRQ: + case REG_WATCHDOGDIAG0: + case REG_WATCHDOGDIAG1: + case REG_TRACE_AUX_CTL: + case REG_IPI_CR: + case REG_UTRIG_EVENT: + case REG_HID_PROD_TRC_MASK_EL1: + case REG_TRACE_CTL: + case REG_TRACE_DAT: + case REG_PROD_TRC_STRM_BASE0_GL2: + case REG_PROD_TRC_STRM_BASE1_GL2: + case REG_CPU_CFG: + case REG_PBLK_STS: + case REG_PROD_TRC_CTL_EL21: + case REG_PROD_TRC_STRM_BASE0_GL21: + case REG_PROD_TRC_STRM_BASE1_GL21: + case REG_PROD_TRC_STRM_FIQ_EL21: + case REG_CPU_OVRD: + case REG_PBLK_EXE_ST: + case REG_PROD_TRC_CORE_GL_CTL_GL21: + case REG_PROD_TRC_CORE_GL_CTL_GL2: + case REG_ACC_OVRD: + case REG_ACC_OVRD1: + case REG_CPM_PWRDN_CTL: + case REG_PROD_TRC_BUF_RESTORE0_GL21: + case REG_PROD_TRC_BUF_RESTORE1_GL21: + case REG_PROD_TRC_EN_GL21: + case REG_PRE_LLCFLUSH_TMR: + case REG_BIUINTFCTL_CFG: + case REG_BIUINTFWRR_CFG: + case REG_PRE_TD_TMR: + case REG_ACC_SLP_WAKE_UP_TMR: + case REG_PBLK_PSW_DLY: + case REG_CPU_STS: + case REG_HIST_TRIG: + case REG_PROD_TRC_BUF_RESTORE0_GL2: + case REG_PROD_TRC_BUF_RESTORE1_GL2: + case REG_PROD_TRC_STRM_FILL0_EL1: + case REG_PROD_TRC_STRM_FILL1_EL1: + case REG_ARRAY_INDEX: + case REG_PROD_TRC_CTL_EL2: + case REG_PROD_TRC_EN_GL2: + case REG_PROD_TRC_STRM_FIQ_EL2: + case REG_PROD_TRC_CPMU_DUMP_TRIG_EL1: + case REG_PROD_LOSS_COUNT_EL1: + case REG_SW_TRACE_DATA_EL0: + case REG_IL1_DATA0: + case REG_IL1_DATA1: + case REG_DL1_DATA0: + case REG_DL1_DATA1: + case REG_MMUDATA0: + case REG_MMUDATA1: + case REG_DL1_DATA2: + case REG_IL1_DATA2: + case REG_LLC_DATA0: + case REG_LLC_DATA1: + case REG_SCTLR_EL3: + case REG_ACTLR_EL3: + case REG_SCR_EL3: + case REG_SDER32_EL3: + case REG_CPTR_EL3: + case REG_MDCR_EL3: + case REG_TTBR0_EL3: + case REG_TCR_EL3: + case REG_SPSR_EL3: + case REG_ELR_EL3: + case REG_SP_EL2: + case REG_AFSR0_EL3: + case REG_AFSR1_EL3: + case REG_ESR_EL3: + case REG_TFSR_EL3: + case REG_FAR_EL3: + case REG_MAIR_EL3: + case REG_AMAIR_EL3: + case REG_MPAM3_EL3: + case REG_VBAR_EL3: + case REG_RVBAR_EL3: + case REG_RMR_EL3: + case REG_ICC_CTLR_EL3: + case REG_ICC_SRE_EL3: + case REG_ICC_IGRPEN1_EL3: + case REG_TPIDR_EL3: + case REG_SCXTNUM_EL3: + case REG_MMU_ERR_STS: + case REG_AFSR1_GL21: + case REG_AFSR1_GL2: + case REG_AFSR1_GL12: + case REG_BP_OBJC_ADR_EL1: + case REG_BP_OBJC_CTL_EL1: + case REG_SP_GL11_GL21: + case REG_MMU_SESR_EL2: + case REG_SPRR_CONFIG_EL21: + case REG_HPFAR_GL2: + case REG_GXF_CONFIG_EL21: + case REG_SPRR_AMRANGE_EL1: + case REG_GXF_CONFIG_EL2: + case REG_SPRR_UPERM_EL02: + case REG_SPRR_PPERM_EL21: + case REG_SPRR_PPERM_EL2: + case REG_APGAKEYLO_EL12: + case REG_APGAKEYHI_EL12: + case REG_KERNKEYLO_EL12: + case REG_KERNKEYHI_EL12: + case REG_AFPCR_EL0: + case REG_SP_GL22: + case REG_AMXIDR_EL1: + case REG_SPRR_UMPRR_EL1: + case REG_SPRR_PMPRR_EL21: + case REG_SPRR_PMPRR_EL2: + case REG_SPRR_UPERM_SH01_EL1: + case REG_SPRR_UPERM_SH02_EL1: + case REG_SPRR_UPERM_SH03_EL1: + case REG_SPRR_UPERM_SH04_EL1: + case REG_SPRR_UPERM_SH05_EL1: + case REG_SPRR_UPERM_SH06_EL1: + case REG_SPRR_UPERM_SH07_EL1: + case REG_SPRR_PPERM_SH01_EL21: + case REG_SPRR_PPERM_SH02_EL21: + case REG_SPRR_PPERM_SH03_EL21: + case REG_SPRR_PPERM_SH04_EL21: + case REG_SPRR_PPERM_SH05_EL21: + case REG_SPRR_PPERM_SH06_EL21: + case REG_SPRR_PPERM_SH07_EL21: + case REG_SPRR_PPERM_SH01_EL2: + case REG_SPRR_PPERM_SH02_EL2: + case REG_SPRR_PPERM_SH03_EL2: + case REG_SPRR_PPERM_SH04_EL2: + case REG_SPRR_PPERM_SH05_EL2: + case REG_SPRR_PPERM_SH06_EL2: + case REG_SPRR_PPERM_SH07_EL2: + case REG_SPRR_PMPRR_EL12: + case REG_SPRR_PPERM_SH01_EL12: + case REG_SPRR_PPERM_SH02_EL12: + case REG_SPRR_PPERM_SH03_EL12: + case REG_SPRR_PPERM_SH04_EL12: + case REG_SPRR_PPERM_SH05_EL12: + case REG_SPRR_PPERM_SH06_EL12: + case REG_SPRR_PPERM_SH07_EL12: + case REG_APIAKEYLO_EL12: + case REG_APIAKEYHI_EL12: + case REG_APIBKEYLO_EL12: + case REG_APIBKEYHI_EL12: + case REG_APDAKEYLO_EL12: + case REG_APDAKEYHI_EL12: + case REG_APDBKEYLO_EL12: + case REG_APDBKEYHI_EL12: + case REG_CURRENTG: + case REG_GXF_ENTRY_EL21: + case REG_GXF_PABENTRY_EL21: + case REG_ASPSR_EL21: + case REG_ADSPSR_EL0: + case REG_PMCR1_GL2: + case REG_ASPSR_NV_EL21: + case REG_PMCR1_GL21: + case REG_VBAR_GL12: + case REG_SPSR_GL12: + case REG_ASPSR_GL12: + case REG_ESR_GL12: + case REG_ELR_GL12: + case REG_FAR_GL12: + case REG_SP_GL1: + case REG_TPIDR_GL1: + case REG_VBAR_GL21: + case REG_SPSR_GL21: + case REG_ASPSR_GL21: + case REG_ESR_GL21: + case REG_ELR_GL21: + case REG_FAR_GL21: + case REG_SP_GL2: + case REG_TPIDR_GL2: + case REG_VBAR_GL2: + case REG_SPSR_GL2: + case REG_ASPSR_GL2: + case REG_ESR_GL2: + case REG_ELR_GL2: + case REG_FAR_GL2: + case REG_GXF_ENTRY_EL2: + case REG_GXF_PABENTRY_EL2: + case REG_APCTL_EL2: + case REG_APSTS_EL2: + case REG_APSTS_NV1_EL1: + case REG_KERNKEYLO_NV_EL21: + case REG_KERNKEYHI_NV_EL21: + case REG_ASPSR_EL12: + case REG_APIAKEYLO_NV_EL21: + case REG_APIAKEYHI_NV_EL21: + case REG_APIBKEYLO_NV_EL21: + case REG_APIBKEYHI_NV_EL21: + case REG_APDAKEYLO_NV_EL21: + case REG_APDAKEYHI_NV_EL21: + case REG_APDBKEYLO_NV_EL21: + case REG_APDBKEYHI_NV_EL21: + case REG_APGAKEYLO_NV_EL21: + case REG_APGAKEYHI_NV_EL21: + case REG_SPRR_CONFIG_EL2: + case REG_SPRR_AMRANGE_EL2: + case REG_VMKEYLO_EL2: + case REG_VMKEYHI_EL2: + case REG_MMU_SFAR_EL2: + case REG_APSTS_EL12: + case REG_APCTL_EL12: + case REG_GXF_CONFIG_EL12: + case REG_GXF_ENTRY_EL12: + case REG_GXF_PABENTRY_EL12: + case REG_SPRR_CONFIG_EL12: + case REG_SPRR_AMRANGE_EL12: + case REG_MMU_SESR_CTL_EL2: + case REG_SPRR_PPERM_EL12: + case REG_CNTPS_TVAL_EL1: + case REG_CNTPS_CTL_EL1: + case REG_CNTPS_CVAL_EL1: + case REG_PSTATE_SPSEL: + case REG_PWRDNSAVE0: + case REG_NRG_ACC_CTL: + case REG_AON_CNT0: + case REG_CPU_CNT0: + case REG_UPMCR0_EL1: + case REG_UPMC8: + case REG_AON_CNT8: + case REG_PWRDNSAVE1: + case REG_CORE_NRG_ACC_DAT: + case REG_AON_CNT_CTL0: + case REG_CPU_CNT_CTL0: + case REG_UPMESR0_EL1: + case REG_UPMC9: + case REG_AON_CNT_CTL8: + case REG_ACC_PWR_DN_SAVE: + case REG_CPM_NRG_ACC_DAT: + case REG_AON_CNT1: + case REG_CPU_CNT1: + case REG_UPMSWCTRL_EL1: + case REG_UPMC10: + case REG_AON_CNT9: + case REG_CORE_SRM_NRG_ACC_DAT: + case REG_AON_CNT_CTL1: + case REG_CPU_CNT_CTL1: + case REG_UPMECM0_EL1: + case REG_UPMC11: + case REG_AON_CNT_CTL9: + case REG_AON_CNT_CTL: + case REG_CPM_SRM_NRG_ACC_DAT: + case REG_AON_CNT2: + case REG_CPU_CNT2: + case REG_UPMECM1_EL1: + case REG_UPMC12: + case REG_AON_CNT10: + case REG_CPU_CNT_CTL: + case REG_AON_CNT_CTL2: + case REG_CPU_CNT_CTL2: + case REG_UPMPCM_EL1: + case REG_UPMC13: + case REG_AON_CNT_CTL10: + case REG_AON_CNT3: + case REG_CPU_CNT3: + case REG_UPMSR_EL1: + case REG_UPMC14: + case REG_AON_CNT11: + case REG_AON_CNT_CTL3: + case REG_CPU_CNT_CTL3: + case REG_UPMC0: + case REG_UPMC15: + case REG_AON_CNT_CTL11: + case REG_AON_CNT4: + case REG_CPU_CNT4: + case REG_UPMC1: + case REG_UPMECM2_EL1: + case REG_AON_CNT_CTL4: + case REG_CPU_CNT_CTL4: + case REG_UPMC2: + case REG_UPMECM3_EL1: + case REG_AON_CNT5: + case REG_CPU_CNT5: + case REG_UPMC3: + case REG_UPMCR1_EL1: + case REG_AON_CNT_CTL5: + case REG_CPU_CNT_CTL5: + case REG_UPMC4: + case REG_UPMESR1_EL1: + case REG_AON_CNT6: + case REG_CPU_CNT6: + case REG_UPMC5: + case REG_AON_CNT_CTL6: + case REG_CPU_CNT_CTL6: + case REG_UPMC6: + case REG_AON_CNT7: + case REG_CPU_CNT7: + case REG_UPMC7: + case REG_AON_CNT_CTL7: + case REG_CPU_CNT_CTL7: + return true; + default: return false; + } +} + + diff --git a/arch/arm64/disassembler/sysregs_gen.h b/arch/arm64/disassembler/sysregs_gen.h new file mode 100644 index 00000000..b7a16cd5 --- /dev/null +++ b/arch/arm64/disassembler/sysregs_gen.h @@ -0,0 +1,1560 @@ +#pragma once + +#include <stdbool.h> + +enum SystemReg { + SYSREG_NONE=0, + REG_EDSCR =4 /* 4 */, // S0_0_c0_c0_4 at min EL0: EDSCR + REG_EDPRSR =24 /* 24 */, // S0_0_c0_c3_0 at min EL0: EDPRSR + REG_UAOIMM =515 /* 515 */, // S0_0_c4_c0_3 at min EL1: UAOIMM + REG_PANIMM =516 /* 516 */, // S0_0_c4_c0_4 at min EL1: PANIMM + REG_SPSELIMM =517 /* 517 */, // S0_0_c4_c0_5 at min EL1: SPSELIMM + REG_DITIMM =6658 /* 6658 */, // S0_3_c4_c0_2 at min EL1: DITIMM + REG_SVCRIMM =6659 /* 6659 */, // S0_3_c4_c0_3 at min EL1: SVCRIMM + REG_ICIALLUIS =17288 /* 17288 */, // S1_0_c7_c1_0 at min EL1: ICIALLUIS + REG_ICIALLU =17320 /* 17320 */, // S1_0_c7_c5_0 at min EL1: ICIALLU + REG_DCIVAC =17329 /* 17329 */, // S1_0_c7_c6_1 at min EL1: DCIVAC + REG_DCISW =17330 /* 17330 */, // S1_0_c7_c6_2 at min EL1: DCISW + REG_ATS1E1R =17344 /* 17344 */, // S1_0_c7_c8_0 at min EL1: ATS1E1R + REG_ATS1E1W =17345 /* 17345 */, // S1_0_c7_c8_1 at min EL1: ATS1E1W + REG_ATS1E0R =17346 /* 17346 */, // S1_0_c7_c8_2 at min EL1: ATS1E0R + REG_ATS1E0W =17347 /* 17347 */, // S1_0_c7_c8_3 at min EL1: ATS1E0W + REG_DCCSW =17362 /* 17362 */, // S1_0_c7_c10_2 at min EL1: DCCSW + REG_DCCISW =17394 /* 17394 */, // S1_0_c7_c14_2 at min EL1: DCCISW + REG_TLBIVMALLE1IS =17432 /* 17432 */, // S1_0_c8_c3_0 at min EL1: TLBIVMALLE1IS + REG_TLBIVAE1IS =17433 /* 17433 */, // S1_0_c8_c3_1 at min EL1: TLBIVAE1IS + REG_TLBIASIDE1IS =17434 /* 17434 */, // S1_0_c8_c3_2 at min EL1: TLBIASIDE1IS + REG_TLBIVAAE1IS =17435 /* 17435 */, // S1_0_c8_c3_3 at min EL1: TLBIVAAE1IS + REG_TLBIVALE1IS =17437 /* 17437 */, // S1_0_c8_c3_5 at min EL1: TLBIVALE1IS + REG_TLBIVAALE1IS =17439 /* 17439 */, // S1_0_c8_c3_7 at min EL1: TLBIVAALE1IS + REG_TLBIVMALLE1 =17464 /* 17464 */, // S1_0_c8_c7_0 at min EL1: TLBIVMALLE1 + REG_TLBIVAE1 =17465 /* 17465 */, // S1_0_c8_c7_1 at min EL1: TLBIVAE1 + REG_TLBIASIDE1 =17466 /* 17466 */, // S1_0_c8_c7_2 at min EL1: TLBIASIDE1 + REG_TLBIVAAE1 =17467 /* 17467 */, // S1_0_c8_c7_3 at min EL1: TLBIVAAE1 + REG_TLBIVALE1 =17469 /* 17469 */, // S1_0_c8_c7_5 at min EL1: TLBIVALE1 + REG_TLBIVAALE1 =17471 /* 17471 */, // S1_0_c8_c7_7 at min EL1: TLBIVAALE1 + REG_DCZVA =23457 /* 23457 */, // S1_3_c7_c4_1 at min EL1: DCZVA + REG_ICIVAU =23465 /* 23465 */, // S1_3_c7_c5_1 at min EL1: ICIVAU + REG_DCCVAC =23505 /* 23505 */, // S1_3_c7_c10_1 at min EL1: DCCVAC + REG_DCCVAU =23513 /* 23513 */, // S1_3_c7_c11_1 at min EL1: DCCVAU + REG_DCCIVAC =23537 /* 23537 */, // S1_3_c7_c14_1 at min EL1: DCCIVAC + REG_ATS1E2R =25536 /* 25536 */, // S1_4_c7_c8_0 at min EL1: ATS1E2R + REG_ATS1E2W =25537 /* 25537 */, // S1_4_c7_c8_1 at min EL1: ATS1E2W + REG_ATS12E1R =25540 /* 25540 */, // S1_4_c7_c8_4 at min EL1: ATS12E1R + REG_ATS12E1W =25541 /* 25541 */, // S1_4_c7_c8_5 at min EL1: ATS12E1W + REG_ATS12E0R =25542 /* 25542 */, // S1_4_c7_c8_6 at min EL1: ATS12E0R + REG_ATS12E0W =25543 /* 25543 */, // S1_4_c7_c8_7 at min EL1: ATS12E0W + REG_TLBIIPAS2E1IS =25601 /* 25601 */, // S1_4_c8_c0_1 at min EL1: TLBIIPAS2E1IS + REG_TLBIIPAS2LE1IS =25605 /* 25605 */, // S1_4_c8_c0_5 at min EL1: TLBIIPAS2LE1IS + REG_TLBIALLE2IS =25624 /* 25624 */, // S1_4_c8_c3_0 at min EL1: TLBIALLE2IS + REG_TLBIVAE2IS =25625 /* 25625 */, // S1_4_c8_c3_1 at min EL1: TLBIVAE2IS + REG_TLBIALLE1IS =25628 /* 25628 */, // S1_4_c8_c3_4 at min EL1: TLBIALLE1IS + REG_TLBIVALE2IS =25629 /* 25629 */, // S1_4_c8_c3_5 at min EL1: TLBIVALE2IS + REG_TLBIVMALLS12E1IS =25630 /* 25630 */, // S1_4_c8_c3_6 at min EL1: TLBIVMALLS12E1IS + REG_TLBIIPAS2E1 =25633 /* 25633 */, // S1_4_c8_c4_1 at min EL1: TLBIIPAS2E1 + REG_TLBIIPAS2LE1 =25637 /* 25637 */, // S1_4_c8_c4_5 at min EL1: TLBIIPAS2LE1 + REG_TLBIALLE2 =25656 /* 25656 */, // S1_4_c8_c7_0 at min EL1: TLBIALLE2 + REG_TLBIVAE2 =25657 /* 25657 */, // S1_4_c8_c7_1 at min EL1: TLBIVAE2 + REG_TLBIALLE1 =25660 /* 25660 */, // S1_4_c8_c7_4 at min EL1: TLBIALLE1 + REG_TLBIVALE2 =25661 /* 25661 */, // S1_4_c8_c7_5 at min EL1: TLBIVALE2 + REG_TLBIVMALLS12E1 =25662 /* 25662 */, // S1_4_c8_c7_6 at min EL1: TLBIVMALLS12E1 + REG_ATS1E3R =29632 /* 29632 */, // S1_6_c7_c8_0 at min EL1: ATS1E3R + REG_ATS1E3W =29633 /* 29633 */, // S1_6_c7_c8_1 at min EL1: ATS1E3W + REG_TLBIALLE3IS =29720 /* 29720 */, // S1_6_c8_c3_0 at min EL1: TLBIALLE3IS + REG_TLBIVAE3IS =29721 /* 29721 */, // S1_6_c8_c3_1 at min EL1: TLBIVAE3IS + REG_TLBIVALE3IS =29725 /* 29725 */, // S1_6_c8_c3_5 at min EL1: TLBIVALE3IS + REG_TLBIALLE3 =29752 /* 29752 */, // S1_6_c8_c7_0 at min EL1: TLBIALLE3 + REG_TLBIVAE3 =29753 /* 29753 */, // S1_6_c8_c7_1 at min EL1: TLBIVAE3 + REG_TLBIVALE3 =29757 /* 29757 */, // S1_6_c8_c7_5 at min EL1: TLBIVALE3 + REG_OSDTRRX_EL1 =32770 /* 32770 */, // S2_0_c0_c0_2 at min EL1: OSDTRRX_EL1 + REG_DBGBVR0_EL1 =32772 /* 32772 */, // S2_0_c0_c0_4 at min EL1: DBGBVR0_EL1 + REG_DBGBCR0_EL1 =32773 /* 32773 */, // S2_0_c0_c0_5 at min EL1: DBGBCR0_EL1 + REG_DBGWVR0_EL1 =32774 /* 32774 */, // S2_0_c0_c0_6 at min EL1: DBGWVR0_EL1 + REG_DBGWCR0_EL1 =32775 /* 32775 */, // S2_0_c0_c0_7 at min EL1: DBGWCR0_EL1 + REG_DBGBVR1_EL1 =32780 /* 32780 */, // S2_0_c0_c1_4 at min EL1: DBGBVR1_EL1 + REG_DBGBCR1_EL1 =32781 /* 32781 */, // S2_0_c0_c1_5 at min EL1: DBGBCR1_EL1 + REG_DBGWVR1_EL1 =32782 /* 32782 */, // S2_0_c0_c1_6 at min EL1: DBGWVR1_EL1 + REG_DBGWCR1_EL1 =32783 /* 32783 */, // S2_0_c0_c1_7 at min EL1: DBGWCR1_EL1 + REG_MDCCINT_EL1 =32784 /* 32784 */, // S2_0_c0_c2_0 at min EL1: MDCCINT_EL1 + REG_MDSCR_EL1 =32786 /* 32786 */, // S2_0_c0_c2_2 at min EL1: MDSCR_EL1 + REG_DBGBVR2_EL1 =32788 /* 32788 */, // S2_0_c0_c2_4 at min EL1: DBGBVR2_EL1 + REG_DBGBCR2_EL1 =32789 /* 32789 */, // S2_0_c0_c2_5 at min EL1: DBGBCR2_EL1 + REG_DBGWVR2_EL1 =32790 /* 32790 */, // S2_0_c0_c2_6 at min EL1: DBGWVR2_EL1 + REG_DBGWCR2_EL1 =32791 /* 32791 */, // S2_0_c0_c2_7 at min EL1: DBGWCR2_EL1 + REG_OSDTRTX_EL1 =32794 /* 32794 */, // S2_0_c0_c3_2 at min EL1: OSDTRTX_EL1 + REG_DBGBVR3_EL1 =32796 /* 32796 */, // S2_0_c0_c3_4 at min EL1: DBGBVR3_EL1 + REG_DBGBCR3_EL1 =32797 /* 32797 */, // S2_0_c0_c3_5 at min EL1: DBGBCR3_EL1 + REG_DBGWVR3_EL1 =32798 /* 32798 */, // S2_0_c0_c3_6 at min EL1: DBGWVR3_EL1 + REG_DBGWCR3_EL1 =32799 /* 32799 */, // S2_0_c0_c3_7 at min EL1: DBGWCR3_EL1 + REG_DBGBVR4_EL1 =32804 /* 32804 */, // S2_0_c0_c4_4 at min EL1: DBGBVR4_EL1 + REG_DBGBCR4_EL1 =32805 /* 32805 */, // S2_0_c0_c4_5 at min EL1: DBGBCR4_EL1 + REG_DBGWVR4_EL1 =32806 /* 32806 */, // S2_0_c0_c4_6 at min EL1: DBGWVR4_EL1 + REG_DBGWCR4_EL1 =32807 /* 32807 */, // S2_0_c0_c4_7 at min EL1: DBGWCR4_EL1 + REG_DBGBVR5_EL1 =32812 /* 32812 */, // S2_0_c0_c5_4 at min EL1: DBGBVR5_EL1 + REG_DBGBCR5_EL1 =32813 /* 32813 */, // S2_0_c0_c5_5 at min EL1: DBGBCR5_EL1 + REG_DBGWVR5_EL1 =32814 /* 32814 */, // S2_0_c0_c5_6 at min EL1: DBGWVR5_EL1 + REG_DBGWCR5_EL1 =32815 /* 32815 */, // S2_0_c0_c5_7 at min EL1: DBGWCR5_EL1 + REG_DBGWFAR =32816 /* 32816 */, // S2_0_c0_c6_0 at min EL1: DBGWFAR + REG_OSECCR_EL1 =32818 /* 32818 */, // S2_0_c0_c6_2 at min EL1: OSECCR_EL1 + REG_DBGBVR6_EL1 =32820 /* 32820 */, // S2_0_c0_c6_4 at min EL1: DBGBVR6_EL1 + REG_DBGBCR6_EL1 =32821 /* 32821 */, // S2_0_c0_c6_5 at min EL1: DBGBCR6_EL1 + REG_DBGWVR6_EL1 =32822 /* 32822 */, // S2_0_c0_c6_6 at min EL1: DBGWVR6_EL1 + REG_DBGWCR6_EL1 =32823 /* 32823 */, // S2_0_c0_c6_7 at min EL1: DBGWCR6_EL1 + REG_DBGBVR7_EL1 =32828 /* 32828 */, // S2_0_c0_c7_4 at min EL1: DBGBVR7_EL1 + REG_DBGBCR7_EL1 =32829 /* 32829 */, // S2_0_c0_c7_5 at min EL1: DBGBCR7_EL1 + REG_DBGWVR7_EL1 =32830 /* 32830 */, // S2_0_c0_c7_6 at min EL1: DBGWVR7_EL1 + REG_DBGWCR7_EL1 =32831 /* 32831 */, // S2_0_c0_c7_7 at min EL1: DBGWCR7_EL1 + REG_DBGBVR8_EL1 =32836 /* 32836 */, // S2_0_c0_c8_4 at min EL1: DBGBVR8_EL1 + REG_DBGBCR8_EL1 =32837 /* 32837 */, // S2_0_c0_c8_5 at min EL1: DBGBCR8_EL1 + REG_DBGWVR8_EL1 =32838 /* 32838 */, // S2_0_c0_c8_6 at min EL1: DBGWVR8_EL1 + REG_DBGWCR8_EL1 =32839 /* 32839 */, // S2_0_c0_c8_7 at min EL1: DBGWCR8_EL1 + REG_DBGBVR9_EL1 =32844 /* 32844 */, // S2_0_c0_c9_4 at min EL1: DBGBVR9_EL1 + REG_DBGBCR9_EL1 =32845 /* 32845 */, // S2_0_c0_c9_5 at min EL1: DBGBCR9_EL1 + REG_DBGWVR9_EL1 =32846 /* 32846 */, // S2_0_c0_c9_6 at min EL1: DBGWVR9_EL1 + REG_DBGWCR9_EL1 =32847 /* 32847 */, // S2_0_c0_c9_7 at min EL1: DBGWCR9_EL1 + REG_DBGBVR10_EL1 =32852 /* 32852 */, // S2_0_c0_c10_4 at min EL1: DBGBVR10_EL1 + REG_DBGBCR10_EL1 =32853 /* 32853 */, // S2_0_c0_c10_5 at min EL1: DBGBCR10_EL1 + REG_DBGWVR10_EL1 =32854 /* 32854 */, // S2_0_c0_c10_6 at min EL1: DBGWVR10_EL1 + REG_DBGWCR10_EL1 =32855 /* 32855 */, // S2_0_c0_c10_7 at min EL1: DBGWCR10_EL1 + REG_DBGBVR11_EL1 =32860 /* 32860 */, // S2_0_c0_c11_4 at min EL1: DBGBVR11_EL1 + REG_DBGBCR11_EL1 =32861 /* 32861 */, // S2_0_c0_c11_5 at min EL1: DBGBCR11_EL1 + REG_DBGWVR11_EL1 =32862 /* 32862 */, // S2_0_c0_c11_6 at min EL1: DBGWVR11_EL1 + REG_DBGWCR11_EL1 =32863 /* 32863 */, // S2_0_c0_c11_7 at min EL1: DBGWCR11_EL1 + REG_DBGBVR12_EL1 =32868 /* 32868 */, // S2_0_c0_c12_4 at min EL1: DBGBVR12_EL1 + REG_DBGBCR12_EL1 =32869 /* 32869 */, // S2_0_c0_c12_5 at min EL1: DBGBCR12_EL1 + REG_DBGWVR12_EL1 =32870 /* 32870 */, // S2_0_c0_c12_6 at min EL1: DBGWVR12_EL1 + REG_DBGWCR12_EL1 =32871 /* 32871 */, // S2_0_c0_c12_7 at min EL1: DBGWCR12_EL1 + REG_DBGBVR13_EL1 =32876 /* 32876 */, // S2_0_c0_c13_4 at min EL1: DBGBVR13_EL1 + REG_DBGBCR13_EL1 =32877 /* 32877 */, // S2_0_c0_c13_5 at min EL1: DBGBCR13_EL1 + REG_DBGWVR13_EL1 =32878 /* 32878 */, // S2_0_c0_c13_6 at min EL1: DBGWVR13_EL1 + REG_DBGWCR13_EL1 =32879 /* 32879 */, // S2_0_c0_c13_7 at min EL1: DBGWCR13_EL1 + REG_DBGBVR14_EL1 =32884 /* 32884 */, // S2_0_c0_c14_4 at min EL1: DBGBVR14_EL1 + REG_DBGBCR14_EL1 =32885 /* 32885 */, // S2_0_c0_c14_5 at min EL1: DBGBCR14_EL1 + REG_DBGWVR14_EL1 =32886 /* 32886 */, // S2_0_c0_c14_6 at min EL1: DBGWVR14_EL1 + REG_DBGWCR14_EL1 =32887 /* 32887 */, // S2_0_c0_c14_7 at min EL1: DBGWCR14_EL1 + REG_DBGBVR15_EL1 =32892 /* 32892 */, // S2_0_c0_c15_4 at min EL1: DBGBVR15_EL1 + REG_DBGBCR15_EL1 =32893 /* 32893 */, // S2_0_c0_c15_5 at min EL1: DBGBCR15_EL1 + REG_DBGWVR15_EL1 =32894 /* 32894 */, // S2_0_c0_c15_6 at min EL1: DBGWVR15_EL1 + REG_DBGWCR15_EL1 =32895 /* 32895 */, // S2_0_c0_c15_7 at min EL1: DBGWCR15_EL1 + REG_MDRAR_EL1 =32896 /* 32896 */, // S2_0_c1_c0_0 at min EL1: MDRAR_EL1 + REG_OSLAR_EL1 =32900 /* 32900 */, // S2_0_c1_c0_4 at min EL1: OSLAR_EL1 + REG_OSLSR_EL1 =32908 /* 32908 */, // S2_0_c1_c1_4 at min EL1: OSLSR_EL1 + REG_OSDLR_EL1 =32924 /* 32924 */, // S2_0_c1_c3_4 at min EL1: OSDLR_EL1 + REG_DBGPRCR_EL1 =32932 /* 32932 */, // S2_0_c1_c4_4 at min EL1: DBGPRCR_EL1 + REG_CLAIMSET_EL1 =33734 /* 33734 */, // S2_0_c7_c8_6 at min EL1: CLAIMSET_EL1 + REG_DBGCLAIMSET_EL1 =33734 /* 33734 */, + REG_CLAIMCLR_EL1 =33742 /* 33742 */, // S2_0_c7_c9_6 at min EL1: CLAIMCLR_EL1 + REG_DBGCLAIMCLR_EL1 =33742 /* 33742 */, + REG_AUTHSTAT_EL1 =33782 /* 33782 */, // S2_0_c7_c14_6 at min EL1: AUTHSTAT_EL1 + REG_TRCTRACEIDR =34817 /* 34817 */, + REG_TRCVICTLR =34818 /* 34818 */, + REG_TRCSEQEVR0 =34820 /* 34820 */, + REG_TRCCNTRLDVR0 =34821 /* 34821 */, + REG_TRCIMSPEC0 =34823 /* 34823 */, + REG_TRCPRGCTLR =34824 /* 34824 */, + REG_TRCQCTLR =34825 /* 34825 */, + REG_TRCVIIECTLR =34826 /* 34826 */, + REG_TRCSEQEVR1 =34828 /* 34828 */, + REG_TRCCNTRLDVR1 =34829 /* 34829 */, + REG_TRCIMSPEC1 =34831 /* 34831 */, + REG_TRCPROCSELR =34832 /* 34832 */, + REG_TRCVISSCTLR =34834 /* 34834 */, + REG_TRCSEQEVR2 =34836 /* 34836 */, + REG_TRCCNTRLDVR2 =34837 /* 34837 */, + REG_TRCIMSPEC2 =34839 /* 34839 */, + REG_TRCVIPCSSCTLR =34842 /* 34842 */, + REG_TRCCNTRLDVR3 =34845 /* 34845 */, + REG_TRCIMSPEC3 =34847 /* 34847 */, + REG_TRCCONFIGR =34848 /* 34848 */, + REG_TRCCNTCTLR0 =34853 /* 34853 */, + REG_TRCIMSPEC4 =34855 /* 34855 */, + REG_TRCCNTCTLR1 =34861 /* 34861 */, + REG_TRCIMSPEC5 =34863 /* 34863 */, + REG_TRCAUXCTLR =34864 /* 34864 */, + REG_TRCSEQRSTEVR =34868 /* 34868 */, + REG_TRCCNTCTLR2 =34869 /* 34869 */, + REG_TRCIMSPEC6 =34871 /* 34871 */, + REG_TRCSEQSTR =34876 /* 34876 */, + REG_TRCCNTCTLR3 =34877 /* 34877 */, + REG_TRCIMSPEC7 =34879 /* 34879 */, + REG_TRCEVENTCTL0R =34880 /* 34880 */, + REG_TRCVDCTLR =34882 /* 34882 */, + REG_TRCEXTINSELR =34884 /* 34884 */, + REG_TRCCNTVR0 =34885 /* 34885 */, + REG_TRCEVENTCTL1R =34888 /* 34888 */, + REG_TRCVDSACCTLR =34890 /* 34890 */, + REG_TRCEXTINSELR1 =34892 /* 34892 */, + REG_TRCCNTVR1 =34893 /* 34893 */, + REG_TRCRSR =34896 /* 34896 */, + REG_TRCVDARCCTLR =34898 /* 34898 */, + REG_TRCEXTINSELR2 =34900 /* 34900 */, + REG_TRCCNTVR2 =34901 /* 34901 */, + REG_TRCSTALLCTLR =34904 /* 34904 */, + REG_TRCEXTINSELR3 =34908 /* 34908 */, + REG_TRCCNTVR3 =34909 /* 34909 */, + REG_TRCTSCTLR =34912 /* 34912 */, + REG_TRCSYNCPR =34920 /* 34920 */, + REG_TRCCCCTLR =34928 /* 34928 */, + REG_TRCBBCTLR =34936 /* 34936 */, + REG_TRCRSCTLR16 =34945 /* 34945 */, + REG_TRCSSCCR0 =34946 /* 34946 */, + REG_TRCSSPCICR0 =34947 /* 34947 */, + REG_TRCOSLAR =34948 /* 34948 */, + REG_TRCRSCTLR17 =34953 /* 34953 */, + REG_TRCSSCCR1 =34954 /* 34954 */, + REG_TRCSSPCICR1 =34955 /* 34955 */, + REG_TRCRSCTLR2 =34960 /* 34960 */, + REG_TRCRSCTLR18 =34961 /* 34961 */, + REG_TRCSSCCR2 =34962 /* 34962 */, + REG_TRCSSPCICR2 =34963 /* 34963 */, + REG_TRCRSCTLR3 =34968 /* 34968 */, + REG_TRCRSCTLR19 =34969 /* 34969 */, + REG_TRCSSCCR3 =34970 /* 34970 */, + REG_TRCSSPCICR3 =34971 /* 34971 */, + REG_TRCRSCTLR4 =34976 /* 34976 */, + REG_TRCRSCTLR20 =34977 /* 34977 */, + REG_TRCSSCCR4 =34978 /* 34978 */, + REG_TRCSSPCICR4 =34979 /* 34979 */, + REG_TRCPDCR =34980 /* 34980 */, + REG_TRCRSCTLR5 =34984 /* 34984 */, + REG_TRCRSCTLR21 =34985 /* 34985 */, + REG_TRCSSCCR5 =34986 /* 34986 */, + REG_TRCSSPCICR5 =34987 /* 34987 */, + REG_TRCRSCTLR6 =34992 /* 34992 */, + REG_TRCRSCTLR22 =34993 /* 34993 */, + REG_TRCSSCCR6 =34994 /* 34994 */, + REG_TRCSSPCICR6 =34995 /* 34995 */, + REG_TRCRSCTLR7 =35000 /* 35000 */, + REG_TRCRSCTLR23 =35001 /* 35001 */, + REG_TRCSSCCR7 =35002 /* 35002 */, + REG_TRCSSPCICR7 =35003 /* 35003 */, + REG_TRCRSCTLR8 =35008 /* 35008 */, + REG_TRCRSCTLR24 =35009 /* 35009 */, + REG_TRCSSCSR0 =35010 /* 35010 */, + REG_TRCRSCTLR9 =35016 /* 35016 */, + REG_TRCRSCTLR25 =35017 /* 35017 */, + REG_TRCSSCSR1 =35018 /* 35018 */, + REG_TRCRSCTLR10 =35024 /* 35024 */, + REG_TRCRSCTLR26 =35025 /* 35025 */, + REG_TRCSSCSR2 =35026 /* 35026 */, + REG_TRCRSCTLR11 =35032 /* 35032 */, + REG_TRCRSCTLR27 =35033 /* 35033 */, + REG_TRCSSCSR3 =35034 /* 35034 */, + REG_TRCRSCTLR12 =35040 /* 35040 */, + REG_TRCRSCTLR28 =35041 /* 35041 */, + REG_TRCSSCSR4 =35042 /* 35042 */, + REG_TRCRSCTLR13 =35048 /* 35048 */, + REG_TRCRSCTLR29 =35049 /* 35049 */, + REG_TRCSSCSR5 =35050 /* 35050 */, + REG_TRCRSCTLR14 =35056 /* 35056 */, + REG_TRCRSCTLR30 =35057 /* 35057 */, + REG_TRCSSCSR6 =35058 /* 35058 */, + REG_TRCRSCTLR15 =35064 /* 35064 */, + REG_TRCRSCTLR31 =35065 /* 35065 */, + REG_TRCSSCSR7 =35066 /* 35066 */, + REG_TRCACVR0 =35072 /* 35072 */, + REG_TRCACVR8 =35073 /* 35073 */, + REG_TRCACATR0 =35074 /* 35074 */, + REG_TRCACATR8 =35075 /* 35075 */, + REG_TRCDVCVR0 =35076 /* 35076 */, + REG_TRCDVCVR4 =35077 /* 35077 */, + REG_TRCDVCMR0 =35078 /* 35078 */, + REG_TRCDVCMR4 =35079 /* 35079 */, + REG_TRCACVR1 =35088 /* 35088 */, + REG_TRCACVR9 =35089 /* 35089 */, + REG_TRCACATR1 =35090 /* 35090 */, + REG_TRCACATR9 =35091 /* 35091 */, + REG_TRCACVR2 =35104 /* 35104 */, + REG_TRCACVR10 =35105 /* 35105 */, + REG_TRCACATR2 =35106 /* 35106 */, + REG_TRCACATR10 =35107 /* 35107 */, + REG_TRCDVCVR1 =35108 /* 35108 */, + REG_TRCDVCVR5 =35109 /* 35109 */, + REG_TRCDVCMR1 =35110 /* 35110 */, + REG_TRCDVCMR5 =35111 /* 35111 */, + REG_TRCACVR3 =35120 /* 35120 */, + REG_TRCACVR11 =35121 /* 35121 */, + REG_TRCACATR3 =35122 /* 35122 */, + REG_TRCACATR11 =35123 /* 35123 */, + REG_TRCACVR4 =35136 /* 35136 */, + REG_TRCACVR12 =35137 /* 35137 */, + REG_TRCACATR4 =35138 /* 35138 */, + REG_TRCACATR12 =35139 /* 35139 */, + REG_TRCDVCVR2 =35140 /* 35140 */, + REG_TRCDVCVR6 =35141 /* 35141 */, + REG_TRCDVCMR2 =35142 /* 35142 */, + REG_TRCDVCMR6 =35143 /* 35143 */, + REG_TRCACVR5 =35152 /* 35152 */, + REG_TRCACVR13 =35153 /* 35153 */, + REG_TRCACATR5 =35154 /* 35154 */, + REG_TRCACATR13 =35155 /* 35155 */, + REG_TRCACVR6 =35168 /* 35168 */, + REG_TRCACVR14 =35169 /* 35169 */, + REG_TRCACATR6 =35170 /* 35170 */, + REG_TRCACATR14 =35171 /* 35171 */, + REG_TRCDVCVR3 =35172 /* 35172 */, + REG_TRCDVCVR7 =35173 /* 35173 */, + REG_TRCDVCMR3 =35174 /* 35174 */, + REG_TRCDVCMR7 =35175 /* 35175 */, + REG_TRCACVR7 =35184 /* 35184 */, + REG_TRCACVR15 =35185 /* 35185 */, + REG_TRCACATR7 =35186 /* 35186 */, + REG_TRCACATR15 =35187 /* 35187 */, + REG_TRCCIDCVR0 =35200 /* 35200 */, + REG_TRCVMIDCVR0 =35201 /* 35201 */, + REG_TRCCIDCCTLR0 =35202 /* 35202 */, + REG_TRCCIDCCTLR1 =35210 /* 35210 */, + REG_TRCCIDCVR1 =35216 /* 35216 */, + REG_TRCVMIDCVR1 =35217 /* 35217 */, + REG_TRCVMIDCCTLR0 =35218 /* 35218 */, + REG_TRCVMIDCCTLR1 =35226 /* 35226 */, + REG_TRCCIDCVR2 =35232 /* 35232 */, + REG_TRCVMIDCVR2 =35233 /* 35233 */, + REG_TRCCIDCVR3 =35248 /* 35248 */, + REG_TRCVMIDCVR3 =35249 /* 35249 */, + REG_TRCCIDCVR4 =35264 /* 35264 */, + REG_TRCVMIDCVR4 =35265 /* 35265 */, + REG_TRCCIDCVR5 =35280 /* 35280 */, + REG_TRCVMIDCVR5 =35281 /* 35281 */, + REG_TRCCIDCVR6 =35296 /* 35296 */, + REG_TRCVMIDCVR6 =35297 /* 35297 */, + REG_TRCCIDCVR7 =35312 /* 35312 */, + REG_TRCVMIDCVR7 =35313 /* 35313 */, + REG_TRCITCTRL =35716 /* 35716 */, + REG_TRCCLAIMSET =35782 /* 35782 */, + REG_TRCCLAIMCLR =35790 /* 35790 */, + REG_TRCLAR =35814 /* 35814 */, + REG_TEECR32_EL1 =36864 /* 36864 */, // S2_2_c0_c0_0 at min EL1: TEECR32_EL1 + REG_TEEHBR32_EL1 =36992 /* 36992 */, // S2_2_c1_c0_0 at min EL1: TEEHBR32_EL1 + REG_MDCCSR_EL0 =38920 /* 38920 */, // S2_3_c0_c1_0 at min EL1: MDCCSR_EL0 + REG_MDDTR_EL0 =38944 /* 38944 */, // S2_3_c0_c4_0 at min EL1: MDDTR_EL0 + REG_DBGDTR_EL0 =38944 /* 38944 */, + REG_MDDTRTX_EL0 =38952 /* 38952 */, // S2_3_c0_c5_0 at min EL1: MDDTRTX_EL0 + REG_DBGDTRTX_EL0 =38952 /* 38952 */, + REG_DBGVCR32_EL2 =41016 /* 41016 */, // S2_4_c0_c7_0 at min EL2: DBGVCR32_EL2 + REG_MIDR_EL1 =49152 /* 49152 */, // S3_0_c0_c0_0 at min EL1: MIDR_EL1 + REG_MPIDR_EL1 =49157 /* 49157 */, // S3_0_c0_c0_5 at min EL1: MPIDR_EL1 + REG_REVIDR_EL1 =49158 /* 49158 */, // S3_0_c0_c0_6 at min EL1: REVIDR_EL1 + REG_ID_PFR0_EL1 =49160 /* 49160 */, // S3_0_c0_c1_0 at min EL1: ID_PFR0_EL1 + REG_ID_PFR1_EL1 =49161 /* 49161 */, // S3_0_c0_c1_1 at min EL1: ID_PFR1_EL1 + REG_ID_DFR0_EL1 =49162 /* 49162 */, // S3_0_c0_c1_2 at min EL1: ID_DFR0_EL1 + REG_ID_AFR0_EL1 =49163 /* 49163 */, // S3_0_c0_c1_3 at min EL1: ID_AFR0_EL1 + REG_ID_MMFR0_EL1 =49164 /* 49164 */, // S3_0_c0_c1_4 at min EL1: ID_MMFR0_EL1 + REG_ID_MMFR1_EL1 =49165 /* 49165 */, // S3_0_c0_c1_5 at min EL1: ID_MMFR1_EL1 + REG_ID_MMFR2_EL1 =49166 /* 49166 */, // S3_0_c0_c1_6 at min EL1: ID_MMFR2_EL1 + REG_ID_MMFR3_EL1 =49167 /* 49167 */, // S3_0_c0_c1_7 at min EL1: ID_MMFR3_EL1 + REG_ID_ISAR0_EL1 =49168 /* 49168 */, // S3_0_c0_c2_0 at min EL1: ID_ISAR0_EL1 + REG_ID_ISAR1_EL1 =49169 /* 49169 */, // S3_0_c0_c2_1 at min EL1: ID_ISAR1_EL1 + REG_ID_ISAR2_EL1 =49170 /* 49170 */, // S3_0_c0_c2_2 at min EL1: ID_ISAR2_EL1 + REG_ID_ISAR3_EL1 =49171 /* 49171 */, // S3_0_c0_c2_3 at min EL1: ID_ISAR3_EL1 + REG_ID_ISAR4_EL1 =49172 /* 49172 */, // S3_0_c0_c2_4 at min EL1: ID_ISAR4_EL1 + REG_ID_ISAR5_EL1 =49173 /* 49173 */, // S3_0_c0_c2_5 at min EL1: ID_ISAR5_EL1 + REG_ID_MMFR4_EL1 =49174 /* 49174 */, // S3_0_c0_c2_6 at min EL1: ID_MMFR4_EL1 + REG_ID_ISAR6_EL1 =49175 /* 49175 */, // S3_0_c0_c2_7 at min EL1: ID_ISAR6_EL1 + REG_MVFR0_EL1 =49176 /* 49176 */, // S3_0_c0_c3_0 at min EL1: MVFR0_EL1 + REG_MVFR1_EL1 =49177 /* 49177 */, // S3_0_c0_c3_1 at min EL1: MVFR1_EL1 + REG_MVFR2_EL1 =49178 /* 49178 */, // S3_0_c0_c3_2 at min EL1: MVFR2_EL1 + REG_ID_AA32RES3_EL1 =49179 /* 49179 */, // S3_0_c0_c3_3 at min EL1: ID_AA32RES3_EL1 + REG_ID_PFR2_EL1 =49180 /* 49180 */, // S3_0_c0_c3_4 at min EL1: ID_PFR2_EL1 + REG_ID_AA32RES5_EL1 =49181 /* 49181 */, // S3_0_c0_c3_5 at min EL1: ID_AA32RES5_EL1 + REG_ID_AA32RES6_EL1 =49182 /* 49182 */, // S3_0_c0_c3_6 at min EL1: ID_AA32RES6_EL1 + REG_ID_AA32RES7_EL1 =49183 /* 49183 */, // S3_0_c0_c3_7 at min EL1: ID_AA32RES7_EL1 + REG_ID_AA64PFR0_EL1 =49184 /* 49184 */, // S3_0_c0_c4_0 at min EL1: ID_AA64PFR0_EL1 + REG_ID_AA64PFR1_EL1 =49185 /* 49185 */, // S3_0_c0_c4_1 at min EL1: ID_AA64PFR1_EL1 + REG_ID_AA64PFR2_EL1 =49186 /* 49186 */, // S3_0_c0_c4_2 at min EL1: ID_AA64PFR2_EL1 + REG_ID_AA64PFR3_EL1 =49187 /* 49187 */, // S3_0_c0_c4_3 at min EL1: ID_AA64PFR3_EL1 + REG_ID_AA64ZFR0_EL1 =49188 /* 49188 */, // S3_0_c0_c4_4 at min EL1: ID_AA64ZFR0_EL1 + REG_ID_AA64SMFR0_EL1 =49189 /* 49189 */, // S3_0_c0_c4_5 at min EL1: ID_AA64SMFR0_EL1 + REG_ID_AA64ZFR2_EL1 =49190 /* 49190 */, // S3_0_c0_c4_6 at min EL1: ID_AA64ZFR2_EL1 + REG_ID_AA64ZFR3_EL1 =49191 /* 49191 */, // S3_0_c0_c4_7 at min EL1: ID_AA64ZFR3_EL1 + REG_ID_AA64DFR0_EL1 =49192 /* 49192 */, // S3_0_c0_c5_0 at min EL1: ID_AA64DFR0_EL1 + REG_ID_AA64DFR1_EL1 =49193 /* 49193 */, // S3_0_c0_c5_1 at min EL1: ID_AA64DFR1_EL1 + REG_ID_AA64DFR2_EL1 =49194 /* 49194 */, // S3_0_c0_c5_2 at min EL1: ID_AA64DFR2_EL1 + REG_ID_AA64DFR3_EL1 =49195 /* 49195 */, // S3_0_c0_c5_3 at min EL1: ID_AA64DFR3_EL1 + REG_ID_AA64AFR0_EL1 =49196 /* 49196 */, // S3_0_c0_c5_4 at min EL1: ID_AA64AFR0_EL1 + REG_ID_AA64AFR1_EL1 =49197 /* 49197 */, // S3_0_c0_c5_5 at min EL1: ID_AA64AFR1_EL1 + REG_ID_AA64AFR2_EL1 =49198 /* 49198 */, // S3_0_c0_c5_6 at min EL1: ID_AA64AFR2_EL1 + REG_ID_AA64AFR3_EL1 =49199 /* 49199 */, // S3_0_c0_c5_7 at min EL1: ID_AA64AFR3_EL1 + REG_ID_AA64ISAR0_EL1 =49200 /* 49200 */, // S3_0_c0_c6_0 at min EL1: ID_AA64ISAR0_EL1 + REG_ID_AA64ISAR1_EL1 =49201 /* 49201 */, // S3_0_c0_c6_1 at min EL1: ID_AA64ISAR1_EL1 + REG_ID_AA64ISAR2_EL1 =49202 /* 49202 */, // S3_0_c0_c6_2 at min EL1: ID_AA64ISAR2_EL1 + REG_ID_AA64ISAR3_EL1 =49203 /* 49203 */, // S3_0_c0_c6_3 at min EL1: ID_AA64ISAR3_EL1 + REG_ID_AA64ISAR4_EL1 =49204 /* 49204 */, // S3_0_c0_c6_4 at min EL1: ID_AA64ISAR4_EL1 + REG_ID_AA64ISAR5_EL1 =49205 /* 49205 */, // S3_0_c0_c6_5 at min EL1: ID_AA64ISAR5_EL1 + REG_ID_AA64ISAR6_EL1 =49206 /* 49206 */, // S3_0_c0_c6_6 at min EL1: ID_AA64ISAR6_EL1 + REG_ID_AA64ISAR7_EL1 =49207 /* 49207 */, // S3_0_c0_c6_7 at min EL1: ID_AA64ISAR7_EL1 + REG_ID_AA64MMFR0_EL1 =49208 /* 49208 */, // S3_0_c0_c7_0 at min EL1: ID_AA64MMFR0_EL1 + REG_ID_AA64MMFR1_EL1 =49209 /* 49209 */, // S3_0_c0_c7_1 at min EL1: ID_AA64MMFR1_EL1 + REG_ID_AA64MMFR2_EL1 =49210 /* 49210 */, // S3_0_c0_c7_2 at min EL1: ID_AA64MMFR2_EL1 + REG_ID_AA64MMFR3_EL1 =49211 /* 49211 */, // S3_0_c0_c7_3 at min EL1: ID_AA64MMFR3_EL1 + REG_ID_AA64MMFR4_EL1 =49212 /* 49212 */, // S3_0_c0_c7_4 at min EL1: ID_AA64MMFR4_EL1 + REG_ID_AA64MMFR5_EL1 =49213 /* 49213 */, // S3_0_c0_c7_5 at min EL1: ID_AA64MMFR5_EL1 + REG_ID_AA64MMFR6_EL1 =49214 /* 49214 */, // S3_0_c0_c7_6 at min EL1: ID_AA64MMFR6_EL1 + REG_ID_AA64MMFR7_EL1 =49215 /* 49215 */, // S3_0_c0_c7_7 at min EL1: ID_AA64MMFR7_EL1 + REG_SCTLR_EL21 =49280 /* 49280 */, // S3_0_c1_c0_0 at min EL1: SCTLR_EL21 + REG_SCTLR_EL1 =49280 /* 49280 */, + REG_ACTLR_EL21 =49281 /* 49281 */, // S3_0_c1_c0_1 at min EL1: ACTLR_EL21 + REG_ACTLR_EL1 =49281 /* 49281 */, + REG_CPTR_EL21 =49282 /* 49282 */, // S3_0_c1_c0_2 at min EL1: CPTR_EL21 + REG_CPACR_EL1 =49282 /* 49282 */, + REG_RGSR_EL1 =49285 /* 49285 */, + REG_GCR_EL1 =49286 /* 49286 */, + REG_TRFCR_EL1 =49297 /* 49297 */, + REG_SMPRI_EL1 =49300 /* 49300 */, // S3_0_c1_c2_4 at min EL1: SMPRI_EL1 + REG_SMCR_EL21 =49302 /* 49302 */, // S3_0_c1_c2_6 at min EL1: SMCR_EL21 + REG_TTBR0_EL21 =49408 /* 49408 */, // S3_0_c2_c0_0 at min EL1: TTBR0_EL21 + REG_TTBR0_EL1 =49408 /* 49408 */, + REG_TTBR1_EL21 =49409 /* 49409 */, // S3_0_c2_c0_1 at min EL1: TTBR1_EL21 + REG_TTBR1_EL1 =49409 /* 49409 */, + REG_TCR_EL21 =49410 /* 49410 */, // S3_0_c2_c0_2 at min EL1: TCR_EL21 + REG_TCR_EL1 =49410 /* 49410 */, + REG_APIAKEYLO_EL21 =49416 /* 49416 */, // S3_0_c2_c1_0 at min EL1: APIAKeyLo_EL21 + REG_APIAKEYLO_EL1 =49416 /* 49416 */, + REG_APIAKEYHI_EL21 =49417 /* 49417 */, // S3_0_c2_c1_1 at min EL1: APIAKeyHi_EL21 + REG_APIAKEYHI_EL1 =49417 /* 49417 */, + REG_APIBKEYLO_EL21 =49418 /* 49418 */, // S3_0_c2_c1_2 at min EL1: APIBKeyLo_EL21 + REG_APIBKEYLO_EL1 =49418 /* 49418 */, + REG_APIBKEYHI_EL21 =49419 /* 49419 */, // S3_0_c2_c1_3 at min EL1: APIBKeyHi_EL21 + REG_APIBKEYHI_EL1 =49419 /* 49419 */, + REG_APDAKEYLO_EL21 =49424 /* 49424 */, // S3_0_c2_c2_0 at min EL1: APDAKeyLo_EL21 + REG_APDAKEYLO_EL1 =49424 /* 49424 */, + REG_APDAKEYHI_EL21 =49425 /* 49425 */, // S3_0_c2_c2_1 at min EL1: APDAKeyHi_EL21 + REG_APDAKEYHI_EL1 =49425 /* 49425 */, + REG_APDBKEYLO_EL21 =49426 /* 49426 */, // S3_0_c2_c2_2 at min EL1: APDBKeyLo_EL21 + REG_APDBKEYLO_EL1 =49426 /* 49426 */, + REG_APDBKEYHI_EL21 =49427 /* 49427 */, // S3_0_c2_c2_3 at min EL1: APDBKeyHi_EL21 + REG_APDBKEYHI_EL1 =49427 /* 49427 */, + REG_APGAKEYLO_EL21 =49432 /* 49432 */, // S3_0_c2_c3_0 at min EL1: APGAKeyLo_EL21 + REG_APGAKEYLO_EL1 =49432 /* 49432 */, + REG_APGAKEYHI_EL21 =49433 /* 49433 */, // S3_0_c2_c3_1 at min EL1: APGAKeyHi_EL21 + REG_APGAKEYHI_EL1 =49433 /* 49433 */, + REG_SPSR_EL21 =49664 /* 49664 */, // S3_0_c4_c0_0 at min EL1: SPSR_EL21 + REG_SPSR_EL1 =49664 /* 49664 */, + REG_ELR_EL21 =49665 /* 49665 */, // S3_0_c4_c0_1 at min EL1: ELR_EL21 + REG_ELR_EL1 =49665 /* 49665 */, + REG_SP_EL0 =49672 /* 49672 */, // S3_0_c4_c1_0 at min EL1: SP_EL0 + REG_SPSEL =49680 /* 49680 */, // S3_0_c4_c2_0 at min EL1: SPSEL + REG_NESTEDCURRENTEL =49682 /* 49682 */, // S3_0_c4_c2_2 at min EL1: NestedCurrentEL + REG_CURRENTEL =49682 /* 49682 */, + REG_PAN =49683 /* 49683 */, // S3_0_c4_c2_3 at min EL1: PAN + REG_UAO =49684 /* 49684 */, // S3_0_c4_c2_4 at min EL1: UAO + REG_ICV_PMR_EL1 =49712 /* 49712 */, // S3_0_c4_c6_0 at min EL1: ICV_PMR_EL1 + REG_ICC_PMR_EL1 =49712 /* 49712 */, + REG_AFSR0_EL21 =49800 /* 49800 */, // S3_0_c5_c1_0 at min EL1: AFSR0_EL21 + REG_AFSR0_EL1 =49800 /* 49800 */, + REG_AFSR1_EL21 =49801 /* 49801 */, // S3_0_c5_c1_1 at min EL1: AFSR1_EL21 + REG_AFSR1_EL1 =49801 /* 49801 */, + REG_ESR_EL21 =49808 /* 49808 */, // S3_0_c5_c2_0 at min EL1: ESR_EL21 + REG_ESR_EL1 =49808 /* 49808 */, + REG_ERRIDR_EL1 =49816 /* 49816 */, // S3_0_c5_c3_0 at min EL1: ERRIDR_EL1 + REG_ERRSELR_EL1 =49817 /* 49817 */, + REG_ERXCTLR_EL1 =49825 /* 49825 */, + REG_ERXSTATUS_EL1 =49826 /* 49826 */, + REG_ERXADDR_EL1 =49827 /* 49827 */, + REG_ERXPFGCTL_EL1 =49829 /* 49829 */, + REG_ERXPFGCDN_EL1 =49830 /* 49830 */, + REG_ERXMISC0_EL1 =49832 /* 49832 */, + REG_ERXMISC1_EL1 =49833 /* 49833 */, + REG_ERXMISC2_EL1 =49834 /* 49834 */, + REG_ERXMISC3_EL1 =49835 /* 49835 */, + REG_ERXTS_EL1 =49839 /* 49839 */, + REG_TFSR_EL1 =49840 /* 49840 */, + REG_TFSRE0_EL1 =49841 /* 49841 */, + REG_FAR_EL21 =49920 /* 49920 */, // S3_0_c6_c0_0 at min EL1: FAR_EL21 + REG_FAR_EL1 =49920 /* 49920 */, + REG_PAR_EL1 =50080 /* 50080 */, // S3_0_c7_c4_0 at min EL1: PAR_EL1 + REG_PMSCR_EL1 =50376 /* 50376 */, + REG_PMSICR_EL1 =50378 /* 50378 */, + REG_PMSIRR_EL1 =50379 /* 50379 */, + REG_PMSFCR_EL1 =50380 /* 50380 */, + REG_PMSEVFR_EL1 =50381 /* 50381 */, + REG_PMSLATFR_EL1 =50382 /* 50382 */, + REG_PMSIDR_EL1 =50383 /* 50383 */, + REG_PMBLIMITR_EL1 =50384 /* 50384 */, + REG_PMBPTR_EL1 =50385 /* 50385 */, + REG_PMBSR_EL1 =50387 /* 50387 */, + REG_PMBIDR_EL1 =50391 /* 50391 */, + REG_TRBLIMITR_EL1 =50392 /* 50392 */, + REG_TRBPTR_EL1 =50393 /* 50393 */, + REG_TRBBASER_EL1 =50394 /* 50394 */, + REG_TRBSR_EL1 =50395 /* 50395 */, + REG_TRBMAR_EL1 =50396 /* 50396 */, + REG_TRBTRG_EL1 =50398 /* 50398 */, + REG_PMINTENSET_EL1 =50417 /* 50417 */, + REG_PMINTENCLR_EL1 =50418 /* 50418 */, + REG_PMMIR_EL1 =50422 /* 50422 */, + REG_MAIR_EL21 =50448 /* 50448 */, // S3_0_c10_c2_0 at min EL1: MAIR_EL21 + REG_MAIR_EL1 =50448 /* 50448 */, + REG_AMAIR_EL21 =50456 /* 50456 */, // S3_0_c10_c3_0 at min EL1: AMAIR_EL21 + REG_AMAIR_EL1 =50456 /* 50456 */, + REG_LORSA_EL1 =50464 /* 50464 */, // S3_0_c10_c4_0 at min EL1: LORSA_EL1 + REG_LOREA_EL1 =50465 /* 50465 */, // S3_0_c10_c4_1 at min EL1: LOREA_EL1 + REG_LORN_EL1 =50466 /* 50466 */, // S3_0_c10_c4_2 at min EL1: LORN_EL1 + REG_LORC_EL1 =50467 /* 50467 */, // S3_0_c10_c4_3 at min EL1: LORC_EL1 + REG_LORID_EL1 =50471 /* 50471 */, // S3_0_c10_c4_7 at min EL1: LORID_EL1 + REG_MPAM1_EL1 =50472 /* 50472 */, + REG_MPAM0_EL1 =50473 /* 50473 */, + REG_CTRR_C_LWR_EL21 =50560 /* 50560 */, // S3_0_c11_c0_0 at min EL1: CTRR_C_LWR_EL21 + REG_CTRR_C_UPR_EL21 =50561 /* 50561 */, // S3_0_c11_c0_1 at min EL1: CTRR_C_UPR_EL21 + REG_CTRR_D_LWR_EL21 =50562 /* 50562 */, // S3_0_c11_c0_2 at min EL1: CTRR_D_LWR_EL21 + REG_CTRR_D_UPR_EL21 =50563 /* 50563 */, // S3_0_c11_c0_3 at min EL1: CTRR_D_UPR_EL21 + REG_CTRR_C_LWR_EL12 =50564 /* 50564 */, // S3_0_c11_c0_4 at min EL2: CTRR_C_LWR_EL12 + REG_CTRR_C_UPR_EL12 =50565 /* 50565 */, // S3_0_c11_c0_5 at min EL2: CTRR_C_UPR_EL12 + REG_CTRR_D_LWR_EL12 =50566 /* 50566 */, // S3_0_c11_c0_6 at min EL2: CTRR_D_LWR_EL12 + REG_CTRR_D_UPR_EL12 =50567 /* 50567 */, // S3_0_c11_c0_7 at min EL2: CTRR_D_UPR_EL12 + REG_CTRR_C_LWR_EL2 =50568 /* 50568 */, // S3_0_c11_c1_0 at min EL2: CTRR_C_LWR_EL2 + REG_CTRR_C_UPR_EL2 =50569 /* 50569 */, // S3_0_c11_c1_1 at min EL2: CTRR_C_UPR_EL2 + REG_CTRR_D_LWR_EL2 =50570 /* 50570 */, // S3_0_c11_c1_2 at min EL2: CTRR_D_LWR_EL2 + REG_CTRR_D_UPR_EL2 =50571 /* 50571 */, // S3_0_c11_c1_3 at min EL2: CTRR_D_UPR_EL2 + REG_CTRR_C_CTL_EL21 =50572 /* 50572 */, // S3_0_c11_c1_4 at min EL1: CTRR_C_CTL_EL21 + REG_CTRR_D_CTL_EL21 =50573 /* 50573 */, // S3_0_c11_c1_5 at min EL1: CTRR_D_CTL_EL21 + REG_CTRR_C_CTL_EL12 =50574 /* 50574 */, // S3_0_c11_c1_6 at min EL2: CTRR_C_CTL_EL12 + REG_CTRR_D_CTL_EL12 =50575 /* 50575 */, // S3_0_c11_c1_7 at min EL2: CTRR_D_CTL_EL12 + REG_CTRR_C_CTL_EL2 =50576 /* 50576 */, // S3_0_c11_c2_0 at min EL2: CTRR_C_CTL_EL2 + REG_CTRR_D_CTL_EL2 =50577 /* 50577 */, // S3_0_c11_c2_1 at min EL2: CTRR_D_CTL_EL2 + REG_CTXR_A_LWR_EL21 =50578 /* 50578 */, // S3_0_c11_c2_2 at min EL1: CTXR_A_LWR_EL21 + REG_CTXR_A_UPR_EL21 =50579 /* 50579 */, // S3_0_c11_c2_3 at min EL1: CTXR_A_UPR_EL21 + REG_CTXR_B_LWR_EL21 =50580 /* 50580 */, // S3_0_c11_c2_4 at min EL1: CTXR_B_LWR_EL21 + REG_CTXR_B_UPR_EL21 =50581 /* 50581 */, // S3_0_c11_c2_5 at min EL1: CTXR_B_UPR_EL21 + REG_CTXR_C_LWR_EL21 =50582 /* 50582 */, // S3_0_c11_c2_6 at min EL1: CTXR_C_LWR_EL21 + REG_CTXR_C_UPR_EL21 =50583 /* 50583 */, // S3_0_c11_c2_7 at min EL1: CTXR_C_UPR_EL21 + REG_CTXR_D_LWR_EL21 =50584 /* 50584 */, // S3_0_c11_c3_0 at min EL1: CTXR_D_LWR_EL21 + REG_CTXR_D_UPR_EL21 =50585 /* 50585 */, // S3_0_c11_c3_1 at min EL1: CTXR_D_UPR_EL21 + REG_CTXR_A_LWR_EL12 =50586 /* 50586 */, // S3_0_c11_c3_2 at min EL2: CTXR_A_LWR_EL12 + REG_CTXR_A_UPR_EL12 =50587 /* 50587 */, // S3_0_c11_c3_3 at min EL2: CTXR_A_UPR_EL12 + REG_CTXR_B_LWR_EL12 =50588 /* 50588 */, // S3_0_c11_c3_4 at min EL2: CTXR_B_LWR_EL12 + REG_CTXR_B_UPR_EL12 =50589 /* 50589 */, // S3_0_c11_c3_5 at min EL2: CTXR_B_UPR_EL12 + REG_CTXR_C_LWR_EL12 =50590 /* 50590 */, // S3_0_c11_c3_6 at min EL2: CTXR_C_LWR_EL12 + REG_CTXR_C_UPR_EL12 =50591 /* 50591 */, // S3_0_c11_c3_7 at min EL2: CTXR_C_UPR_EL12 + REG_CTXR_D_LWR_EL12 =50592 /* 50592 */, // S3_0_c11_c4_0 at min EL2: CTXR_D_LWR_EL12 + REG_CTXR_D_UPR_EL12 =50593 /* 50593 */, // S3_0_c11_c4_1 at min EL2: CTXR_D_UPR_EL12 + REG_CTXR_A_LWR_EL2 =50594 /* 50594 */, // S3_0_c11_c4_2 at min EL2: CTXR_A_LWR_EL2 + REG_CTXR_A_UPR_EL2 =50595 /* 50595 */, // S3_0_c11_c4_3 at min EL2: CTXR_A_UPR_EL2 + REG_CTXR_B_LWR_EL2 =50596 /* 50596 */, // S3_0_c11_c4_4 at min EL2: CTXR_B_LWR_EL2 + REG_CTXR_B_UPR_EL2 =50597 /* 50597 */, // S3_0_c11_c4_5 at min EL2: CTXR_B_UPR_EL2 + REG_CTXR_C_LWR_EL2 =50598 /* 50598 */, // S3_0_c11_c4_6 at min EL2: CTXR_C_LWR_EL2 + REG_CTXR_C_UPR_EL2 =50599 /* 50599 */, // S3_0_c11_c4_7 at min EL2: CTXR_C_UPR_EL2 + REG_CTXR_D_LWR_EL2 =50600 /* 50600 */, // S3_0_c11_c5_0 at min EL2: CTXR_D_LWR_EL2 + REG_CTXR_D_UPR_EL2 =50601 /* 50601 */, // S3_0_c11_c5_1 at min EL2: CTXR_D_UPR_EL2 + REG_CTXR_A_CTL_EL21 =50602 /* 50602 */, // S3_0_c11_c5_2 at min EL1: CTXR_A_CTL_EL21 + REG_CTXR_B_CTL_EL21 =50603 /* 50603 */, // S3_0_c11_c5_3 at min EL1: CTXR_B_CTL_EL21 + REG_CTXR_C_CTL_EL21 =50604 /* 50604 */, // S3_0_c11_c5_4 at min EL1: CTXR_C_CTL_EL21 + REG_CTXR_D_CTL_EL21 =50605 /* 50605 */, // S3_0_c11_c5_5 at min EL1: CTXR_D_CTL_EL21 + REG_CTXR_A_CTL_EL12 =50606 /* 50606 */, // S3_0_c11_c5_6 at min EL2: CTXR_A_CTL_EL12 + REG_CTXR_B_CTL_EL12 =50607 /* 50607 */, // S3_0_c11_c5_7 at min EL2: CTXR_B_CTL_EL12 + REG_CTXR_C_CTL_EL12 =50608 /* 50608 */, // S3_0_c11_c6_0 at min EL2: CTXR_C_CTL_EL12 + REG_CTXR_D_CTL_EL12 =50609 /* 50609 */, // S3_0_c11_c6_1 at min EL2: CTXR_D_CTL_EL12 + REG_CTXR_A_CTL_EL2 =50610 /* 50610 */, // S3_0_c11_c6_2 at min EL2: CTXR_A_CTL_EL2 + REG_CTXR_B_CTL_EL2 =50611 /* 50611 */, // S3_0_c11_c6_3 at min EL2: CTXR_B_CTL_EL2 + REG_CTXR_C_CTL_EL2 =50612 /* 50612 */, // S3_0_c11_c6_4 at min EL2: CTXR_C_CTL_EL2 + REG_CTXR_D_CTL_EL2 =50613 /* 50613 */, // S3_0_c11_c6_5 at min EL2: CTXR_D_CTL_EL2 + REG_ACC_CTRR_C_LWR_EL2 =50614 /* 50614 */, // S3_0_c11_c6_6 at min EL2: ACC_CTRR_C_LWR_EL2 + REG_ACC_CTRR_C_UPR_EL2 =50615 /* 50615 */, // S3_0_c11_c6_7 at min EL2: ACC_CTRR_C_UPR_EL2 + REG_ACC_CTRR_D_LWR_EL2 =50616 /* 50616 */, // S3_0_c11_c7_0 at min EL2: ACC_CTRR_D_LWR_EL2 + REG_ACC_CTRR_D_UPR_EL2 =50617 /* 50617 */, // S3_0_c11_c7_1 at min EL2: ACC_CTRR_D_UPR_EL2 + REG_ACC_CTXR_A_LWR_EL2 =50618 /* 50618 */, // S3_0_c11_c7_2 at min EL2: ACC_CTXR_A_LWR_EL2 + REG_ACC_CTXR_A_UPR_EL2 =50619 /* 50619 */, // S3_0_c11_c7_3 at min EL2: ACC_CTXR_A_UPR_EL2 + REG_ACC_CTXR_B_LWR_EL2 =50620 /* 50620 */, // S3_0_c11_c7_4 at min EL2: ACC_CTXR_B_LWR_EL2 + REG_ACC_CTXR_B_UPR_EL2 =50621 /* 50621 */, // S3_0_c11_c7_5 at min EL2: ACC_CTXR_B_UPR_EL2 + REG_ACC_CTXR_C_LWR_EL2 =50622 /* 50622 */, // S3_0_c11_c7_6 at min EL2: ACC_CTXR_C_LWR_EL2 + REG_ACC_CTXR_C_UPR_EL2 =50623 /* 50623 */, // S3_0_c11_c7_7 at min EL2: ACC_CTXR_C_UPR_EL2 + REG_ACC_CTXR_D_LWR_EL2 =50624 /* 50624 */, // S3_0_c11_c8_0 at min EL2: ACC_CTXR_D_LWR_EL2 + REG_ACC_CTXR_D_UPR_EL2 =50625 /* 50625 */, // S3_0_c11_c8_1 at min EL2: ACC_CTXR_D_UPR_EL2 + REG_ACC_CTRR_C_CTL_EL2 =50626 /* 50626 */, // S3_0_c11_c8_2 at min EL2: ACC_CTRR_C_CTL_EL2 + REG_ACC_CTRR_D_CTL_EL2 =50627 /* 50627 */, // S3_0_c11_c8_3 at min EL2: ACC_CTRR_D_CTL_EL2 + REG_ACC_CTXR_A_CTL_EL2 =50628 /* 50628 */, // S3_0_c11_c8_4 at min EL2: ACC_CTXR_A_CTL_EL2 + REG_ACC_CTXR_B_CTL_EL2 =50629 /* 50629 */, // S3_0_c11_c8_5 at min EL2: ACC_CTXR_B_CTL_EL2 + REG_ACC_CTXR_C_CTL_EL2 =50630 /* 50630 */, // S3_0_c11_c8_6 at min EL2: ACC_CTXR_C_CTL_EL2 + REG_ACC_CTXR_D_CTL_EL2 =50631 /* 50631 */, // S3_0_c11_c8_7 at min EL2: ACC_CTXR_D_CTL_EL2 + REG_VBAR_EL21 =50688 /* 50688 */, // S3_0_c12_c0_0 at min EL1: VBAR_EL21 + REG_VBAR_EL1 =50688 /* 50688 */, + REG_RVBAR_EL1 =50689 /* 50689 */, // S3_0_c12_c0_1 at min EL1: RVBAR_EL1 + REG_RMR_EL1 =50690 /* 50690 */, // S3_0_c12_c0_2 at min EL1: RMR_EL1 + REG_ISR_EL1 =50696 /* 50696 */, // S3_0_c12_c1_0 at min EL1: ISR_EL1 + REG_DISR_EL1 =50697 /* 50697 */, // S3_0_c12_c1_1 at min EL1: DISR_EL1 + REG_ICV_IAR0_EL1 =50752 /* 50752 */, // S3_0_c12_c8_0 at min EL1: ICV_IAR0_EL1 + REG_ICV_EOIR0_EL1 =50753 /* 50753 */, // S3_0_c12_c8_1 at min EL1: ICV_EOIR0_EL1 + REG_ICC_EOIR0_EL1 =50753 /* 50753 */, + REG_ICV_HPPIR0_EL1 =50754 /* 50754 */, // S3_0_c12_c8_2 at min EL1: ICV_HPPIR0_EL1 + REG_ICV_BPR0_EL1 =50755 /* 50755 */, // S3_0_c12_c8_3 at min EL1: ICV_BPR0_EL1 + REG_ICC_BPR0_EL1 =50755 /* 50755 */, + REG_ICC_AP0R0_EL1 =50756 /* 50756 */, // S3_0_c12_c8_4 at min EL1: ICC_AP0R0_EL1 + REG_ICC_AP0R1_EL1 =50757 /* 50757 */, + REG_ICC_AP0R2_EL1 =50758 /* 50758 */, + REG_ICC_AP0R3_EL1 =50759 /* 50759 */, + REG_ICC_AP1R0_EL1 =50760 /* 50760 */, // S3_0_c12_c9_0 at min EL1: ICC_AP1R0_EL1 + REG_ICC_AP1R1_EL1 =50761 /* 50761 */, + REG_ICC_AP1R2_EL1 =50762 /* 50762 */, + REG_ICC_AP1R3_EL1 =50763 /* 50763 */, + REG_ICV_DIR_EL1 =50777 /* 50777 */, // S3_0_c12_c11_1 at min EL1: ICV_DIR_EL1 + REG_ICC_DIR_EL1 =50777 /* 50777 */, + REG_ICV_RPR_EL1 =50779 /* 50779 */, // S3_0_c12_c11_3 at min EL1: ICV_RPR_EL1 + REG_ICC_SGI1R_EL1 =50781 /* 50781 */, // S3_0_c12_c11_5 at min EL1: ICC_SGI1R_EL1 + REG_ICC_ASGI1R_EL1 =50782 /* 50782 */, // S3_0_c12_c11_6 at min EL1: ICC_ASGI1R_EL1 + REG_ICC_SGI0R_EL1 =50783 /* 50783 */, // S3_0_c12_c11_7 at min EL1: ICC_SGI0R_EL1 + REG_ICV_IAR1_EL1 =50784 /* 50784 */, // S3_0_c12_c12_0 at min EL1: ICV_IAR1_EL1 + REG_ICV_EOIR1_EL1 =50785 /* 50785 */, // S3_0_c12_c12_1 at min EL1: ICV_EOIR1_EL1 + REG_ICC_EOIR1_EL1 =50785 /* 50785 */, + REG_ICV_HPPIR1_EL1 =50786 /* 50786 */, // S3_0_c12_c12_2 at min EL1: ICV_HPPIR1_EL1 + REG_ICV_BPR1_EL1 =50787 /* 50787 */, // S3_0_c12_c12_3 at min EL1: ICV_BPR1_EL1 + REG_ICC_BPR1_EL1 =50787 /* 50787 */, + REG_ICV_CTLR_EL1 =50788 /* 50788 */, // S3_0_c12_c12_4 at min EL1: ICV_CTLR_EL1 + REG_ICC_CTLR_EL1 =50788 /* 50788 */, + REG_ICC_SRE_EL1 =50789 /* 50789 */, // S3_0_c12_c12_5 at min EL1: ICC_SRE_EL1 + REG_ICV_IGRPEN0_EL1 =50790 /* 50790 */, // S3_0_c12_c12_6 at min EL1: ICV_IGRPEN0_EL1 + REG_ICC_IGRPEN0_EL1 =50790 /* 50790 */, + REG_ICV_IGRPEN1_EL1 =50791 /* 50791 */, // S3_0_c12_c12_7 at min EL1: ICV_IGRPEN1_EL1 + REG_ICC_IGRPEN1_EL1 =50791 /* 50791 */, + REG_ICC_SEIEN_EL1 =50792 /* 50792 */, + REG_CONTEXTIDR_EL21 =50817 /* 50817 */, // S3_0_c13_c0_1 at min EL1: CONTEXTIDR_EL21 + REG_CONTEXTIDR_EL1 =50817 /* 50817 */, + REG_TPIDR_EL1 =50820 /* 50820 */, // S3_0_c13_c0_4 at min EL1: TPIDR_EL1 + REG_SCXTNUM_EL21 =50823 /* 50823 */, // S3_0_c13_c0_7 at min EL1: SCXTNUM_EL21 + REG_SCXTNUM_EL1 =50823 /* 50823 */, + REG_REDIR_CNTKCTL_EL1 =50952 /* 50952 */, // S3_0_c14_c1_0 at min EL1: REDIR_CNTKCTL_EL1 + REG_CNTKCTL_EL1 =50952 /* 50952 */, + REG_HID0 =51072 /* 51072 */, // S3_0_c15_c0_0 at min EL1: HID0 + REG_HID25 =51074 /* 51074 */, // S3_0_c15_c0_2 at min EL1: HID25 + REG_HID26 =51075 /* 51075 */, // S3_0_c15_c0_3 at min EL1: HID26 + REG_HID27 =51076 /* 51076 */, // S3_0_c15_c0_4 at min EL1: HID27 + REG_HID28 =51077 /* 51077 */, // S3_0_c15_c0_5 at min EL1: HID28 + REG_HID29 =51078 /* 51078 */, // S3_0_c15_c0_6 at min EL1: HID29 + REG_HID34 =51079 /* 51079 */, // S3_0_c15_c0_7 at min EL1: HID34 + REG_HID1 =51080 /* 51080 */, // S3_0_c15_c1_0 at min EL1: HID1 + REG_HID21 =51083 /* 51083 */, // S3_0_c15_c1_3 at min EL1: HID21 + REG_BIUVCSCUPCMDCRD =51084 /* 51084 */, // S3_0_c15_c1_4 at min EL1: BiuVCSCUpCmdCrd + REG_BIUVCSCUPDATCRD =51085 /* 51085 */, // S3_0_c15_c1_5 at min EL1: BiuVCSCUpDatCrd + REG_HID2 =51088 /* 51088 */, // S3_0_c15_c2_0 at min EL1: HID2 + REG_HID30 =51091 /* 51091 */, // S3_0_c15_c2_3 at min EL1: HID30 + REG_HID31 =51092 /* 51092 */, // S3_0_c15_c2_4 at min EL1: HID31 + REG_HID32 =51093 /* 51093 */, // S3_0_c15_c2_5 at min EL1: HID32 + REG_HID33 =51095 /* 51095 */, // S3_0_c15_c2_7 at min EL1: HID33 + REG_HID3 =51096 /* 51096 */, // S3_0_c15_c3_0 at min EL1: HID3 + REG_BIUVCSCUPCMDCRDC2 =51098 /* 51098 */, // S3_0_c15_c3_2 at min EL1: BiuVCSCUpCmdCrdC2 + REG_BIUVCSCUPDATCRDC2 =51099 /* 51099 */, // S3_0_c15_c3_3 at min EL1: BiuVCSCUpDatCrdC2 + REG_HID4 =51104 /* 51104 */, // S3_0_c15_c4_0 at min EL1: HID4 + REG_HID5 =51112 /* 51112 */, // S3_0_c15_c5_0 at min EL1: HID5 + REG_HID6 =51120 /* 51120 */, // S3_0_c15_c6_0 at min EL1: HID6 + REG_HID7 =51128 /* 51128 */, // S3_0_c15_c7_0 at min EL1: HID7 + REG_HID8 =51136 /* 51136 */, // S3_0_c15_c8_0 at min EL1: HID8 + REG_HID9 =51144 /* 51144 */, // S3_0_c15_c9_0 at min EL1: HID9 + REG_HID10 =51152 /* 51152 */, // S3_0_c15_c10_0 at min EL1: HID10 + REG_BLOCK_CMAINT_CFG =51154 /* 51154 */, // S3_0_c15_c10_2 at min EL1: BLOCK_CMAINT_CFG + REG_HID11 =51160 /* 51160 */, // S3_0_c15_c11_0 at min EL1: HID11 + REG_HID18 =51162 /* 51162 */, // S3_0_c15_c11_2 at min EL1: HID18 + REG_HID36 =51164 /* 51164 */, // S3_0_c15_c11_4 at min EL1: HID36 + REG_HID37 =51165 /* 51165 */, // S3_0_c15_c11_5 at min EL1: HID37 + REG_HID12 =51168 /* 51168 */, // S3_0_c15_c12_0 at min EL1: HID12 + REG_HID15 =51169 /* 51169 */, // S3_0_c15_c12_1 at min EL1: HID15 + REG_HID19 =51170 /* 51170 */, // S3_0_c15_c12_2 at min EL1: HID19 + REG_BIU_TLIMIT =51176 /* 51176 */, // S3_0_c15_c13_0 at min EL1: BIU_TLIMIT + REG_HID13 =51184 /* 51184 */, // S3_0_c15_c14_0 at min EL1: HID13 + REG_HID_RCTX_G0CTL =51186 /* 51186 */, // S3_0_c15_c14_2 at min EL1: HID_RCTX_G0CTL + REG_HID_RCTX_G1CTL =51187 /* 51187 */, // S3_0_c15_c14_3 at min EL1: HID_RCTX_G1CTL + REG_HID14 =51192 /* 51192 */, // S3_0_c15_c15_0 at min EL1: HID14 + REG_HID16 =51194 /* 51194 */, // S3_0_c15_c15_2 at min EL1: HID16 + REG_LLC_WRR2 =51195 /* 51195 */, // S3_0_c15_c15_3 at min EL1: LLC_WRR2 + REG_BIU_AFI_CFG =51196 /* 51196 */, // S3_0_c15_c15_4 at min EL1: BIU_AFI_CFG + REG_HID17 =51197 /* 51197 */, // S3_0_c15_c15_5 at min EL1: HID17 + REG_HID24 =51198 /* 51198 */, // S3_0_c15_c15_6 at min EL1: HID24 + REG_HID35 =51199 /* 51199 */, // S3_0_c15_c15_7 at min EL1: HID35 + REG_CCSIDRPL1_I_EL1 =51200 /* 51200 */, // S3_1_c0_c0_0 at min EL1: CCSIDRPL1_I_EL1 + REG_CLIDR_EL1 =51201 /* 51201 */, // S3_1_c0_c0_1 at min EL1: CLIDR_EL1 + REG_SMIDR_EL1 =51206 /* 51206 */, // S3_1_c0_c0_6 at min EL1: SMIDR_EL1 + REG_AIDR_EL1 =51207 /* 51207 */, // S3_1_c0_c0_7 at min EL1: AIDR_EL1 + REG_PMCR0_EL1 =53120 /* 53120 */, // S3_1_c15_c0_0 at min EL1: PMCR0_EL1 + REG_APPL_CONTEXTPTR =53121 /* 53121 */, // S3_1_c15_c0_1 at min EL1: APPL_CONTEXTPTR + REG_LD_LATPROF_CTL_EL21 =53122 /* 53122 */, // S3_1_c15_c0_2 at min EL1: LD_LATPROF_CTL_EL21 + REG_AON_CPU_MSTALL_CTL01_EL1 =53123 /* 53123 */, // S3_1_c15_c0_3 at min EL1: AON_CPU_MSTALL_CTL01_EL1 + REG_PM_MEMFLT_CTL23_EL1 =53124 /* 53124 */, // S3_1_c15_c0_4 at min EL1: PM_MEMFLT_CTL23_EL1 + REG_REDIR_ACNTV_CTL_EL0 =53125 /* 53125 */, // S3_1_c15_c0_5 at min EL1: REDIR_ACNTV_CTL_EL0 + REG_LCL_ACNTVCTSS_NOREDIR_EL0 =53126 /* 53126 */, // S3_1_c15_c0_6 at min EL1: LCL_ACNTVCTSS_NOREDIR_EL0 + REG_PMCR1_EL21 =53128 /* 53128 */, // S3_1_c15_c1_0 at min EL1: PMCR1_EL21 + REG_LD_LATPROF_CTR_EL1 =53130 /* 53130 */, // S3_1_c15_c1_2 at min EL1: LD_LATPROF_CTR_EL1 + REG_AON_CPU_MSTALL_CTL23_EL1 =53131 /* 53131 */, // S3_1_c15_c1_3 at min EL1: AON_CPU_MSTALL_CTL23_EL1 + REG_PM_MEMFLT_CTL45_EL1 =53132 /* 53132 */, // S3_1_c15_c1_4 at min EL1: PM_MEMFLT_CTL45_EL1 + REG_AGTCNTRDIR_EL21 =53133 /* 53133 */, // S3_1_c15_c1_5 at min EL1: AGTCNTRDIR_EL21 + REG_AGTCNTKCTL_NOREDIR_EL1 =53134 /* 53134 */, // S3_1_c15_c1_6 at min EL1: AGTCNTKCTL_NOREDIR_EL1 + REG_PMCR2_EL1 =53136 /* 53136 */, // S3_1_c15_c2_0 at min EL1: PMCR2_EL1 + REG_LD_LATPROF_STS_EL1 =53138 /* 53138 */, // S3_1_c15_c2_2 at min EL1: LD_LATPROF_STS_EL1 + REG_AON_CPU_MSTALL_CTL45_EL1 =53139 /* 53139 */, // S3_1_c15_c2_3 at min EL1: AON_CPU_MSTALL_CTL45_EL1 + REG_REDIR_ACNTHP_CVAL_EL2 =53140 /* 53140 */, // S3_1_c15_c2_4 at min EL2: REDIR_ACNTHP_CVAL_EL2 + REG_LCL_CNTVCT_NOREDIR_EL0 =53141 /* 53141 */, // S3_1_c15_c2_5 at min EL1: LCL_CNTVCT_NOREDIR_EL0 + REG_AGTCNTP_CVAL_NOREDIR_EL0 =53142 /* 53142 */, // S3_1_c15_c2_6 at min EL1: AGTCNTP_CVAL_NOREDIR_EL0 + REG_PMCR3_EL1 =53144 /* 53144 */, // S3_1_c15_c3_0 at min EL1: PMCR3_EL1 + REG_LD_LATPROF_INF_EL1 =53146 /* 53146 */, // S3_1_c15_c3_2 at min EL1: LD_LATPROF_INF_EL1 + REG_AON_CPU_MSTALL_CTL67_EL1 =53147 /* 53147 */, // S3_1_c15_c3_3 at min EL1: AON_CPU_MSTALL_CTL67_EL1 + REG_REDIR_ACNTHP_TVAL_EL2 =53148 /* 53148 */, // S3_1_c15_c3_4 at min EL2: REDIR_ACNTHP_TVAL_EL2 + REG_LCL_CNTPCTSS_NOREDIR_EL0 =53149 /* 53149 */, // S3_1_c15_c3_5 at min EL1: LCL_CNTPCTSS_NOREDIR_EL0 + REG_AGTCNTP_TVAL_NOREDIR_EL0 =53150 /* 53150 */, // S3_1_c15_c3_6 at min EL1: AGTCNTP_TVAL_NOREDIR_EL0 + REG_PMCR4_EL1 =53152 /* 53152 */, // S3_1_c15_c4_0 at min EL1: PMCR4_EL1 + REG_LD_LATPROF_CTL_EL2 =53154 /* 53154 */, // S3_1_c15_c4_2 at min EL2: LD_LATPROF_CTL_EL2 + REG_AON_CPU_MEMFLT_CTL01_EL1 =53155 /* 53155 */, // S3_1_c15_c4_3 at min EL1: AON_CPU_MEMFLT_CTL01_EL1 + REG_REDIR_ACNTHP_CTL_EL2 =53156 /* 53156 */, // S3_1_c15_c4_4 at min EL2: REDIR_ACNTHP_CTL_EL2 + REG_LCL_CNTVCTSS_NOREDIR_EL0 =53157 /* 53157 */, // S3_1_c15_c4_5 at min EL1: LCL_CNTVCTSS_NOREDIR_EL0 + REG_AGTCNTP_CTL_NOREDIR_EL0 =53158 /* 53158 */, // S3_1_c15_c4_6 at min EL1: AGTCNTP_CTL_NOREDIR_EL0 + REG_PMESR0_EL1 =53160 /* 53160 */, // S3_1_c15_c5_0 at min EL1: PMESR0_EL1 + REG_LD_LATPROF_CMD_EL1 =53162 /* 53162 */, // S3_1_c15_c5_2 at min EL1: LD_LATPROF_CMD_EL1 + REG_AON_CPU_MEMFLT_CTL23_EL1 =53163 /* 53163 */, // S3_1_c15_c5_3 at min EL1: AON_CPU_MEMFLT_CTL23_EL1 + REG_REDIR_ACNTHV_CVAL_EL2 =53164 /* 53164 */, // S3_1_c15_c5_4 at min EL2: REDIR_ACNTHV_CVAL_EL2 + REG_AGTCNTV_CVAL_NOREDIR_EL0 =53166 /* 53166 */, // S3_1_c15_c5_6 at min EL1: AGTCNTV_CVAL_NOREDIR_EL0 + REG_PMESR1_EL1 =53168 /* 53168 */, // S3_1_c15_c6_0 at min EL1: PMESR1_EL1 + REG_PMCR1_EL2 =53170 /* 53170 */, // S3_1_c15_c6_2 at min EL2: PMCR1_EL2 + REG_AON_CPU_MEMFLT_CTL45_EL1 =53171 /* 53171 */, // S3_1_c15_c6_3 at min EL1: AON_CPU_MEMFLT_CTL45_EL1 + REG_REDIR_ACNTHV_TVAL_EL2 =53172 /* 53172 */, // S3_1_c15_c6_4 at min EL2: REDIR_ACNTHV_TVAL_EL2 + REG_CNTKCTL_NOREDIR_EL1 =53173 /* 53173 */, // S3_1_c15_c6_5 at min EL1: CNTKCTL_NOREDIR_EL1 + REG_AGTCNTV_TVAL_NOREDIR_EL0 =53174 /* 53174 */, // S3_1_c15_c6_6 at min EL1: AGTCNTV_TVAL_NOREDIR_EL0 + REG_OPMAT0_EL1 =53176 /* 53176 */, // S3_1_c15_c7_0 at min EL1: OPMAT0_EL1 + REG_PMCR1_EL12 =53178 /* 53178 */, // S3_1_c15_c7_2 at min EL2: PMCR1_EL12 + REG_AON_CPU_MEMFLT_CTL67_EL1 =53179 /* 53179 */, // S3_1_c15_c7_3 at min EL1: AON_CPU_MEMFLT_CTL67_EL1 + REG_REDIR_ACNTHV_CTL_EL2 =53180 /* 53180 */, // S3_1_c15_c7_4 at min EL2: REDIR_ACNTHV_CTL_EL2 + REG_CNTP_CVAL_NOREDIR_EL0 =53181 /* 53181 */, // S3_1_c15_c7_5 at min EL1: CNTP_CVAL_NOREDIR_EL0 + REG_AGTCNTV_CTL_NOREDIR_EL0 =53182 /* 53182 */, // S3_1_c15_c7_6 at min EL1: AGTCNTV_CTL_NOREDIR_EL0 + REG_OPMAT1_EL1 =53184 /* 53184 */, // S3_1_c15_c8_0 at min EL1: OPMAT1_EL1 + REG_PMCR1_GL12 =53186 /* 53186 */, // S3_1_c15_c8_2 at min EL2: PMCR1_GL12 + REG_AON_CPU_MSTALL_CTR0_EL1 =53187 /* 53187 */, // S3_1_c15_c8_3 at min EL1: AON_CPU_MSTALL_CTR0_EL1 + REG_REDIR_ACNTFRQ_EL0 =53188 /* 53188 */, // S3_1_c15_c8_4 at min EL1: REDIR_ACNTFRQ_EL0 + REG_CNTP_TVAL_NOREDIR_EL0 =53189 /* 53189 */, // S3_1_c15_c8_5 at min EL1: CNTP_TVAL_NOREDIR_EL0 + REG_LCL_CNTPCT_NOREDIR_EL0 =53190 /* 53190 */, // S3_1_c15_c8_6 at min EL1: LCL_CNTPCT_NOREDIR_EL0 + REG_OPMSK0_EL1 =53192 /* 53192 */, // S3_1_c15_c9_0 at min EL1: OPMSK0_EL1 + REG_LD_LATPROF_CTL_EL12 =53194 /* 53194 */, // S3_1_c15_c9_2 at min EL2: LD_LATPROF_CTL_EL12 + REG_AON_CPU_MSTALL_CTR1_EL1 =53195 /* 53195 */, // S3_1_c15_c9_3 at min EL1: AON_CPU_MSTALL_CTR1_EL1 + REG_AGTCNTVOFF_EL2 =53196 /* 53196 */, // S3_1_c15_c9_4 at min EL2: AGTCNTVOFF_EL2 + REG_CNTP_CTL_NOREDIR_EL0 =53197 /* 53197 */, // S3_1_c15_c9_5 at min EL1: CNTP_CTL_NOREDIR_EL0 + REG_CNTV_CTL_NOREDIR_EL0 =53198 /* 53198 */, // S3_1_c15_c9_6 at min EL1: CNTV_CTL_NOREDIR_EL0 + REG_OPMSK1_EL1 =53200 /* 53200 */, // S3_1_c15_c10_0 at min EL1: OPMSK1_EL1 + REG_LD_LATPROF_INF_EL2 =53202 /* 53202 */, // S3_1_c15_c10_2 at min EL2: LD_LATPROF_INF_EL2 + REG_AON_CPU_MSTALL_CTR2_EL1 =53203 /* 53203 */, // S3_1_c15_c10_3 at min EL1: AON_CPU_MSTALL_CTR2_EL1 + REG_REDIR_ACNTP_CVAL_EL0 =53204 /* 53204 */, // S3_1_c15_c10_4 at min EL1: REDIR_ACNTP_CVAL_EL0 + REG_CNTV_CVAL_NOREDIR_EL0 =53205 /* 53205 */, // S3_1_c15_c10_5 at min EL1: CNTV_CVAL_NOREDIR_EL0 + REG_LCL_ACNTPCT_NOREDIR_EL0 =53206 /* 53206 */, // S3_1_c15_c10_6 at min EL1: LCL_ACNTPCT_NOREDIR_EL0 + REG_AON_CPU_MSTALL_CTR3_EL1 =53211 /* 53211 */, // S3_1_c15_c11_3 at min EL1: AON_CPU_MSTALL_CTR3_EL1 + REG_REDIR_ACNTP_TVAL_EL0 =53212 /* 53212 */, // S3_1_c15_c11_4 at min EL1: REDIR_ACNTP_TVAL_EL0 + REG_CNTV_TVAL_NOREDIR_EL0 =53213 /* 53213 */, // S3_1_c15_c11_5 at min EL1: CNTV_TVAL_NOREDIR_EL0 + REG_VMSA_HV_LOCK_EL2 =53214 /* 53214 */, // S3_1_c15_c11_6 at min EL2: VMSA_HV_LOCK_EL2 + REG_PMSWCTRL_EL1 =53216 /* 53216 */, // S3_1_c15_c12_0 at min EL1: PMSWCTRL_EL1 + REG_PMCR5_EL0 =53217 /* 53217 */, // S3_1_c15_c12_1 at min EL1: PMCR5_EL0 + REG_AON_CPU_MSTALL_CTR4_EL1 =53219 /* 53219 */, // S3_1_c15_c12_3 at min EL1: AON_CPU_MSTALL_CTR4_EL1 + REG_PMCOMPARE0_EL1 =53220 /* 53220 */, // S3_1_c15_c12_4 at min EL1: PMCompare0_EL1 + REG_PMCOMPARE1_EL1 =53221 /* 53221 */, // S3_1_c15_c12_5 at min EL1: PMCompare1_EL1 + REG_VMSA_NV_LOCK_EL2 =53222 /* 53222 */, // S3_1_c15_c12_6 at min EL2: VMSA_NV_LOCK_EL2 + REG_PMSR_EL1 =53224 /* 53224 */, // S3_1_c15_c13_0 at min EL1: PMSR_EL1 + REG_AON_CPU_MSTALL_CTR5_EL1 =53227 /* 53227 */, // S3_1_c15_c13_3 at min EL1: AON_CPU_MSTALL_CTR5_EL1 + REG_REDIR_ACNTP_CTL_EL0 =53228 /* 53228 */, // S3_1_c15_c13_4 at min EL1: REDIR_ACNTP_CTL_EL0 + REG_PMCOMPARE5_EL1 =53229 /* 53229 */, // S3_1_c15_c13_5 at min EL1: PMCompare5_EL1 + REG_PMCOMPARE6_EL1 =53230 /* 53230 */, // S3_1_c15_c13_6 at min EL1: PMCompare6_EL1 + REG_PMCOMPARE7_EL1 =53231 /* 53231 */, // S3_1_c15_c13_7 at min EL1: PMCompare7_EL1 + REG_PMCR_BVRNG4_EL1 =53232 /* 53232 */, // S3_1_c15_c14_0 at min EL1: PMCR_BVRNG4_EL1 + REG_PM_PMI_PC =53233 /* 53233 */, // S3_1_c15_c14_1 at min EL1: PM_PMI_PC + REG_AON_CPU_MSTALL_CTR6_EL1 =53235 /* 53235 */, // S3_1_c15_c14_3 at min EL1: AON_CPU_MSTALL_CTR6_EL1 + REG_REDIR_ACNTV_CVAL_EL0 =53236 /* 53236 */, // S3_1_c15_c14_4 at min EL1: REDIR_ACNTV_CVAL_EL0 + REG_LCL_ACNTVCT_NOREDIR_EL0 =53237 /* 53237 */, // S3_1_c15_c14_5 at min EL1: LCL_ACNTVCT_NOREDIR_EL0 + REG_PMCR_BVRNG5_EL1 =53240 /* 53240 */, // S3_1_c15_c15_0 at min EL1: PMCR_BVRNG5_EL1 + REG_AON_CPU_MSTALL_CTR7_EL1 =53243 /* 53243 */, // S3_1_c15_c15_3 at min EL1: AON_CPU_MSTALL_CTR7_EL1 + REG_REDIR_ACNTV_TVAL_EL0 =53244 /* 53244 */, // S3_1_c15_c15_4 at min EL1: REDIR_ACNTV_TVAL_EL0 + REG_LCL_ACNTPCTSS_NOREDIR_EL0 =53245 /* 53245 */, // S3_1_c15_c15_5 at min EL1: LCL_ACNTPCTSS_NOREDIR_EL0 + REG_CSSELR_EL1 =53248 /* 53248 */, // S3_2_c0_c0_0 at min EL1: CSSELR_EL1 + REG_PMC0 =55168 /* 55168 */, // S3_2_c15_c0_0 at min EL1: PMC0 + REG_UPMCFILTER0 =55169 /* 55169 */, // S3_2_c15_c0_1 at min EL1: UPMCFILTER0 + REG_UPMCFILTER1 =55170 /* 55170 */, // S3_2_c15_c0_2 at min EL1: UPMCFILTER1 + REG_UPMCFILTER2 =55171 /* 55171 */, // S3_2_c15_c0_3 at min EL1: UPMCFILTER2 + REG_UPMCFILTER3 =55172 /* 55172 */, // S3_2_c15_c0_4 at min EL1: UPMCFILTER3 + REG_UPMCFILTER4 =55173 /* 55173 */, // S3_2_c15_c0_5 at min EL1: UPMCFILTER4 + REG_UPMCFILTER5 =55174 /* 55174 */, // S3_2_c15_c0_6 at min EL1: UPMCFILTER5 + REG_UPMCFILTER6 =55175 /* 55175 */, // S3_2_c15_c0_7 at min EL1: UPMCFILTER6 + REG_PMC1 =55176 /* 55176 */, // S3_2_c15_c1_0 at min EL1: PMC1 + REG_UPMCFILTER7 =55177 /* 55177 */, // S3_2_c15_c1_1 at min EL1: UPMCFILTER7 + REG_PMC2 =55184 /* 55184 */, // S3_2_c15_c2_0 at min EL1: PMC2 + REG_PMC3 =55192 /* 55192 */, // S3_2_c15_c3_0 at min EL1: PMC3 + REG_PMC4 =55200 /* 55200 */, // S3_2_c15_c4_0 at min EL1: PMC4 + REG_PMC5 =55208 /* 55208 */, // S3_2_c15_c5_0 at min EL1: PMC5 + REG_PMC6 =55216 /* 55216 */, // S3_2_c15_c6_0 at min EL1: PMC6 + REG_PMC7 =55224 /* 55224 */, // S3_2_c15_c7_0 at min EL1: PMC7 + REG_PMC8 =55240 /* 55240 */, // S3_2_c15_c9_0 at min EL1: PMC8 + REG_PMC9 =55248 /* 55248 */, // S3_2_c15_c10_0 at min EL1: PMC9 + REG_PMTRHLD6_EL1 =55264 /* 55264 */, // S3_2_c15_c12_0 at min EL1: PMTRHLD6_EL1 + REG_PMTRHLD4_EL1 =55272 /* 55272 */, // S3_2_c15_c13_0 at min EL1: PMTRHLD4_EL1 + REG_PMTRHLD2_EL1 =55280 /* 55280 */, // S3_2_c15_c14_0 at min EL1: PMTRHLD2_EL1 + REG_PMMMAP_EL1 =55288 /* 55288 */, // S3_2_c15_c15_0 at min EL1: PMMMAP_EL1 + REG_CTR_EL0 =55297 /* 55297 */, // S3_3_c0_c0_1 at min EL1: CTR_EL0 + REG_DCZID_EL0 =55303 /* 55303 */, // S3_3_c0_c0_7 at min EL1: DCZID_EL0 + REG_NZCV =55824 /* 55824 */, // S3_3_c4_c2_0 at min EL1: NZCV + REG_DAIF =55825 /* 55825 */, // S3_3_c4_c2_1 at min EL1: DAIF + REG_DAIFSET =55825 /* 55825 */, + REG_SVCR =55826 /* 55826 */, // S3_3_c4_c2_2 at min EL1: SVCR + REG_DIT =55829 /* 55829 */, // S3_3_c4_c2_5 at min EL1: DIT + REG_SSBS =55830 /* 55830 */, + REG_TCO =55831 /* 55831 */, + REG_FPCR =55840 /* 55840 */, // S3_3_c4_c4_0 at min EL1: FPCR + REG_FPSR =55841 /* 55841 */, // S3_3_c4_c4_1 at min EL1: FPSR + REG_DSPSR_EL0 =55848 /* 55848 */, // S3_3_c4_c5_0 at min EL1: DSPSR_EL0 + REG_DLR_EL0 =55849 /* 55849 */, // S3_3_c4_c5_1 at min EL1: DLR_EL0 + REG_PMCR_EL0 =56544 /* 56544 */, + REG_PMCNTENSET_EL0 =56545 /* 56545 */, + REG_PMCNTENCLR_EL0 =56546 /* 56546 */, + REG_PMOVSCLR_EL0 =56547 /* 56547 */, + REG_PMSWINC_EL0 =56548 /* 56548 */, + REG_PMSELR_EL0 =56549 /* 56549 */, + REG_PMCCNTR_EL0 =56552 /* 56552 */, + REG_PMXEVTYPER_EL0 =56553 /* 56553 */, + REG_PMXEVCNTR_EL0 =56554 /* 56554 */, + REG_DAIFCLR =56557 /* 56557 */, + REG_PMUSERENR_EL0 =56560 /* 56560 */, + REG_PMOVSSET_EL0 =56563 /* 56563 */, + REG_TPIDR_EL0 =56962 /* 56962 */, // S3_3_c13_c0_2 at min EL1: TPIDR_EL0 + REG_TPIDRRO_EL0 =56963 /* 56963 */, // S3_3_c13_c0_3 at min EL1: TPIDRRO_EL0 + REG_TPIDR2_EL0 =56965 /* 56965 */, // S3_3_c13_c0_5 at min EL1: TPIDR2_EL0 + REG_SCXTNUM_EL0 =56967 /* 56967 */, // S3_3_c13_c0_7 at min EL1: SCXTNUM_EL0 + REG_AMCR_EL0 =56976 /* 56976 */, + REG_AMUSERENR_EL0 =56979 /* 56979 */, + REG_AMCNTENCLR0_EL0 =56980 /* 56980 */, + REG_AMCNTENSET0_EL0 =56981 /* 56981 */, + REG_AMCNTENCLR1_EL0 =56984 /* 56984 */, + REG_AMCNTENSET1_EL0 =56985 /* 56985 */, + REG_AMEVCNTR00_EL0 =56992 /* 56992 */, + REG_AMEVCNTR01_EL0 =56993 /* 56993 */, + REG_AMEVCNTR02_EL0 =56994 /* 56994 */, + REG_AMEVCNTR03_EL0 =56995 /* 56995 */, + REG_AMEVCNTR10_EL0 =57056 /* 57056 */, + REG_AMEVCNTR11_EL0 =57057 /* 57057 */, + REG_AMEVCNTR12_EL0 =57058 /* 57058 */, + REG_AMEVCNTR13_EL0 =57059 /* 57059 */, + REG_AMEVCNTR14_EL0 =57060 /* 57060 */, + REG_AMEVCNTR15_EL0 =57061 /* 57061 */, + REG_AMEVCNTR16_EL0 =57062 /* 57062 */, + REG_AMEVCNTR17_EL0 =57063 /* 57063 */, + REG_AMEVCNTR18_EL0 =57064 /* 57064 */, + REG_AMEVCNTR19_EL0 =57065 /* 57065 */, + REG_AMEVCNTR110_EL0 =57066 /* 57066 */, + REG_AMEVCNTR111_EL0 =57067 /* 57067 */, + REG_AMEVCNTR112_EL0 =57068 /* 57068 */, + REG_AMEVCNTR113_EL0 =57069 /* 57069 */, + REG_AMEVCNTR114_EL0 =57070 /* 57070 */, + REG_AMEVCNTR115_EL0 =57071 /* 57071 */, + REG_AMEVTYPER10_EL0 =57072 /* 57072 */, + REG_AMEVTYPER11_EL0 =57073 /* 57073 */, + REG_AMEVTYPER12_EL0 =57074 /* 57074 */, + REG_AMEVTYPER13_EL0 =57075 /* 57075 */, + REG_AMEVTYPER14_EL0 =57076 /* 57076 */, + REG_AMEVTYPER15_EL0 =57077 /* 57077 */, + REG_AMEVTYPER16_EL0 =57078 /* 57078 */, + REG_AMEVTYPER17_EL0 =57079 /* 57079 */, + REG_AMEVTYPER18_EL0 =57080 /* 57080 */, + REG_AMEVTYPER19_EL0 =57081 /* 57081 */, + REG_AMEVTYPER110_EL0 =57082 /* 57082 */, + REG_AMEVTYPER111_EL0 =57083 /* 57083 */, + REG_AMEVTYPER112_EL0 =57084 /* 57084 */, + REG_AMEVTYPER113_EL0 =57085 /* 57085 */, + REG_AMEVTYPER114_EL0 =57086 /* 57086 */, + REG_AMEVTYPER115_EL0 =57087 /* 57087 */, + REG_REDIR_CNTFRQ_EL0 =57088 /* 57088 */, // S3_3_c14_c0_0 at min EL1: REDIR_CNTFRQ_EL0 + REG_CNTFRQ_EL0 =57088 /* 57088 */, + REG_REDIR_LCL_CNTPCT_EL0 =57089 /* 57089 */, // S3_3_c14_c0_1 at min EL1: REDIR_LCL_CNTPCT_EL0 + REG_CNTPCT_EL0 =57089 /* 57089 */, + REG_REDIR_LCL_CNTVCT_EL0 =57090 /* 57090 */, // S3_3_c14_c0_2 at min EL1: REDIR_LCL_CNTVCT_EL0 + REG_REDIR_LCL_CNTPCTSS_EL0 =57093 /* 57093 */, // S3_3_c14_c0_5 at min EL1: REDIR_LCL_CNTPCTSS_EL0 + REG_REDIR_LCL_CNTVCTSS_EL0 =57094 /* 57094 */, // S3_3_c14_c0_6 at min EL1: REDIR_LCL_CNTVCTSS_EL0 + REG_REDIR_CNTP_TVAL_EL0 =57104 /* 57104 */, // S3_3_c14_c2_0 at min EL1: REDIR_CNTP_TVAL_EL0 + REG_CNTP_TVAL_EL0 =57104 /* 57104 */, + REG_REDIR_CNTP_CTL_EL0 =57105 /* 57105 */, // S3_3_c14_c2_1 at min EL1: REDIR_CNTP_CTL_EL0 + REG_CNTP_CTL_EL0 =57105 /* 57105 */, + REG_REDIR_CNTP_CVAL_EL0 =57106 /* 57106 */, // S3_3_c14_c2_2 at min EL1: REDIR_CNTP_CVAL_EL0 + REG_CNTP_CVAL_EL0 =57106 /* 57106 */, + REG_REDIR_CNTV_TVAL_EL0 =57112 /* 57112 */, // S3_3_c14_c3_0 at min EL1: REDIR_CNTV_TVAL_EL0 + REG_CNTV_TVAL_EL0 =57112 /* 57112 */, + REG_REDIR_CNTV_CTL_EL0 =57113 /* 57113 */, // S3_3_c14_c3_1 at min EL1: REDIR_CNTV_CTL_EL0 + REG_CNTV_CTL_EL0 =57113 /* 57113 */, + REG_REDIR_CNTV_CVAL_EL0 =57114 /* 57114 */, // S3_3_c14_c3_2 at min EL1: REDIR_CNTV_CVAL_EL0 + REG_CNTV_CVAL_EL0 =57114 /* 57114 */, + REG_PMEVCNTR0_EL0 =57152 /* 57152 */, + REG_PMEVCNTR1_EL0 =57153 /* 57153 */, + REG_PMEVCNTR2_EL0 =57154 /* 57154 */, + REG_PMEVCNTR3_EL0 =57155 /* 57155 */, + REG_PMEVCNTR4_EL0 =57156 /* 57156 */, + REG_PMEVCNTR5_EL0 =57157 /* 57157 */, + REG_PMEVCNTR6_EL0 =57158 /* 57158 */, + REG_PMEVCNTR7_EL0 =57159 /* 57159 */, + REG_PMEVCNTR8_EL0 =57160 /* 57160 */, + REG_PMEVCNTR9_EL0 =57161 /* 57161 */, + REG_PMEVCNTR10_EL0 =57162 /* 57162 */, + REG_PMEVCNTR11_EL0 =57163 /* 57163 */, + REG_PMEVCNTR12_EL0 =57164 /* 57164 */, + REG_PMEVCNTR13_EL0 =57165 /* 57165 */, + REG_PMEVCNTR14_EL0 =57166 /* 57166 */, + REG_PMEVCNTR15_EL0 =57167 /* 57167 */, + REG_PMEVCNTR16_EL0 =57168 /* 57168 */, + REG_PMEVCNTR17_EL0 =57169 /* 57169 */, + REG_PMEVCNTR18_EL0 =57170 /* 57170 */, + REG_PMEVCNTR19_EL0 =57171 /* 57171 */, + REG_PMEVCNTR20_EL0 =57172 /* 57172 */, + REG_PMEVCNTR21_EL0 =57173 /* 57173 */, + REG_PMEVCNTR22_EL0 =57174 /* 57174 */, + REG_PMEVCNTR23_EL0 =57175 /* 57175 */, + REG_PMEVCNTR24_EL0 =57176 /* 57176 */, + REG_PMEVCNTR25_EL0 =57177 /* 57177 */, + REG_PMEVCNTR26_EL0 =57178 /* 57178 */, + REG_PMEVCNTR27_EL0 =57179 /* 57179 */, + REG_PMEVCNTR28_EL0 =57180 /* 57180 */, + REG_PMEVCNTR29_EL0 =57181 /* 57181 */, + REG_PMEVCNTR30_EL0 =57182 /* 57182 */, + REG_PMEVTYPER0_EL0 =57184 /* 57184 */, + REG_PMEVTYPER1_EL0 =57185 /* 57185 */, + REG_PMEVTYPER2_EL0 =57186 /* 57186 */, + REG_PMEVTYPER3_EL0 =57187 /* 57187 */, + REG_PMEVTYPER4_EL0 =57188 /* 57188 */, + REG_PMEVTYPER5_EL0 =57189 /* 57189 */, + REG_PMEVTYPER6_EL0 =57190 /* 57190 */, + REG_PMEVTYPER7_EL0 =57191 /* 57191 */, + REG_PMEVTYPER8_EL0 =57192 /* 57192 */, + REG_PMEVTYPER9_EL0 =57193 /* 57193 */, + REG_PMEVTYPER10_EL0 =57194 /* 57194 */, + REG_PMEVTYPER11_EL0 =57195 /* 57195 */, + REG_PMEVTYPER12_EL0 =57196 /* 57196 */, + REG_PMEVTYPER13_EL0 =57197 /* 57197 */, + REG_PMEVTYPER14_EL0 =57198 /* 57198 */, + REG_PMEVTYPER15_EL0 =57199 /* 57199 */, + REG_PMEVTYPER16_EL0 =57200 /* 57200 */, + REG_PMEVTYPER17_EL0 =57201 /* 57201 */, + REG_PMEVTYPER18_EL0 =57202 /* 57202 */, + REG_PMEVTYPER19_EL0 =57203 /* 57203 */, + REG_PMEVTYPER20_EL0 =57204 /* 57204 */, + REG_PMEVTYPER21_EL0 =57205 /* 57205 */, + REG_PMEVTYPER22_EL0 =57206 /* 57206 */, + REG_PMEVTYPER23_EL0 =57207 /* 57207 */, + REG_PMEVTYPER24_EL0 =57208 /* 57208 */, + REG_PMEVTYPER25_EL0 =57209 /* 57209 */, + REG_PMEVTYPER26_EL0 =57210 /* 57210 */, + REG_PMEVTYPER27_EL0 =57211 /* 57211 */, + REG_PMEVTYPER28_EL0 =57212 /* 57212 */, + REG_PMEVTYPER29_EL0 =57213 /* 57213 */, + REG_PMEVTYPER30_EL0 =57214 /* 57214 */, + REG_PMCCFILTR_EL0 =57215 /* 57215 */, + REG_LSU_ERR_STS =57216 /* 57216 */, // S3_3_c15_c0_0 at min EL1: LSU_ERR_STS + REG_AFLATCTL1_EL1 =57220 /* 57220 */, // S3_3_c15_c0_4 at min EL1: AFLATCTL1_EL1 + REG_AFLATVALBIN0_EL1 =57221 /* 57221 */, // S3_3_c15_c0_5 at min EL1: AFLATVALBIN0_EL1 + REG_AFLATINFLO_EL1 =57222 /* 57222 */, // S3_3_c15_c0_6 at min EL1: AFLATINFLO_EL1 + REG_LSU_ERR_CTL =57224 /* 57224 */, // S3_3_c15_c1_0 at min EL1: LSU_ERR_CTL + REG_AFLATCTL2_EL1 =57228 /* 57228 */, // S3_3_c15_c1_4 at min EL1: AFLATCTL2_EL1 + REG_AFLATVALBIN1_EL1 =57229 /* 57229 */, // S3_3_c15_c1_5 at min EL1: AFLATVALBIN1_EL1 + REG_AFLATINFHI_EL1 =57230 /* 57230 */, // S3_3_c15_c1_6 at min EL1: AFLATINFHI_EL1 + REG_AFLATCTL3_EL1 =57236 /* 57236 */, // S3_3_c15_c2_4 at min EL1: AFLATCTL3_EL1 + REG_AFLATVALBIN2_EL1 =57237 /* 57237 */, // S3_3_c15_c2_5 at min EL1: AFLATVALBIN2_EL1 + REG_AFLATCTL4_EL1 =57244 /* 57244 */, // S3_3_c15_c3_4 at min EL1: AFLATCTL4_EL1 + REG_AFLATVALBIN3_EL1 =57245 /* 57245 */, // S3_3_c15_c3_5 at min EL1: AFLATVALBIN3_EL1 + REG_LLC_FILL_CTL =57248 /* 57248 */, // S3_3_c15_c4_0 at min EL1: LLC_FILL_CTL + REG_AFLATCTL5_LO_EL1 =57252 /* 57252 */, // S3_3_c15_c4_4 at min EL1: AFLATCTL5_LO_EL1 + REG_AFLATVALBIN4_EL1 =57253 /* 57253 */, // S3_3_c15_c4_5 at min EL1: AFLATVALBIN4_EL1 + REG_AFLATCTL5_HI_EL1 =57254 /* 57254 */, // S3_3_c15_c4_6 at min EL1: AFLATCTL5_HI_EL1 + REG_LLC_FILL_DAT =57256 /* 57256 */, // S3_3_c15_c5_0 at min EL1: LLC_FILL_DAT + REG_AFLATVALBIN5_EL1 =57261 /* 57261 */, // S3_3_c15_c5_5 at min EL1: AFLATVALBIN5_EL1 + REG_AFLATVALBIN6_EL1 =57269 /* 57269 */, // S3_3_c15_c6_5 at min EL1: AFLATVALBIN6_EL1 + REG_LLC_RAM_CONFIG =57272 /* 57272 */, // S3_3_c15_c7_0 at min EL1: LLC_RAM_CONFIG + REG_AFLATVALBIN7_EL1 =57277 /* 57277 */, // S3_3_c15_c7_5 at min EL1: AFLATVALBIN7_EL1 + REG_LLC_ERR_STS =57280 /* 57280 */, // S3_3_c15_c8_0 at min EL1: LLC_ERR_STS + REG_CMAINT_BCAST_LIST_0 =57281 /* 57281 */, // S3_3_c15_c8_1 at min EL1: CMAINT_BCAST_LIST_0 + REG_CMAINT_BCAST_LIST_1 =57282 /* 57282 */, // S3_3_c15_c8_2 at min EL1: CMAINT_BCAST_LIST_1 + REG_CMAINT_BCAST_CTL =57283 /* 57283 */, // S3_3_c15_c8_3 at min EL1: CMAINT_BCAST_CTL + REG_LLC_ERR_ADR =57288 /* 57288 */, // S3_3_c15_c9_0 at min EL1: LLC_ERR_ADR + REG_LLC_ERR_CTL =57289 /* 57289 */, // S3_3_c15_c9_1 at min EL1: LLC_ERR_CTL + REG_LLC_ERR_INJ =57290 /* 57290 */, // S3_3_c15_c9_2 at min EL1: LLC_ERR_INJ + REG_LLC_ERR_INF =57296 /* 57296 */, // S3_3_c15_c10_0 at min EL1: LLC_ERR_INF + REG_USERTAGSEL_EL1 =57297 /* 57297 */, // S3_3_c15_c10_1 at min EL1: USERTAGSEL_EL1 + REG_UUSERTAG_EL0 =57298 /* 57298 */, // S3_3_c15_c10_2 at min EL1: UUSERTAG_EL0 + REG_KUSERTAG_EL1 =57299 /* 57299 */, // S3_3_c15_c10_3 at min EL1: KUSERTAG_EL1 + REG_HUSERTAG_EL2 =57300 /* 57300 */, // S3_3_c15_c10_4 at min EL2: HUSERTAG_EL2 + REG_LLC_TRACE_CTL0 =57304 /* 57304 */, // S3_3_c15_c11_0 at min EL1: LLC_TRACE_CTL0 + REG_LLC_TRACE_CTL1 =57312 /* 57312 */, // S3_3_c15_c12_0 at min EL1: LLC_TRACE_CTL1 + REG_LLC_UP_REQ_VC =57320 /* 57320 */, // S3_3_c15_c13_0 at min EL1: LLC_UP_REQ_VC + REG_LLC_UP_REQ_VC_THRESH =57321 /* 57321 */, // S3_3_c15_c13_1 at min EL1: LLC_UP_REQ_VC_THRESH + REG_LLC_UP_REQ_VC_2 =57322 /* 57322 */, // S3_3_c15_c13_2 at min EL1: LLC_UP_REQ_VC_2 + REG_LLC_UP_REQ_VC_THRESH_2 =57323 /* 57323 */, // S3_3_c15_c13_3 at min EL1: LLC_UP_REQ_VC_THRESH_2 + REG_LLC_DRAM_HASH0 =57324 /* 57324 */, // S3_3_c15_c13_4 at min EL1: LLC_DRAM_HASH0 + REG_LLC_DRAM_HASH1 =57325 /* 57325 */, // S3_3_c15_c13_5 at min EL1: LLC_DRAM_HASH1 + REG_LLC_DRAM_HASH2 =57326 /* 57326 */, // S3_3_c15_c13_6 at min EL1: LLC_DRAM_HASH2 + REG_LLC_DRAM_HASH3 =57327 /* 57327 */, // S3_3_c15_c13_7 at min EL1: LLC_DRAM_HASH3 + REG_LLC_TRACE_CTL2 =57328 /* 57328 */, // S3_3_c15_c14_0 at min EL1: LLC_TRACE_CTL2 + REG_LLC_DRAM_HASH4 =57329 /* 57329 */, // S3_3_c15_c14_1 at min EL1: LLC_DRAM_HASH4 + REG_LLC_UP_REQ_VC_3 =57330 /* 57330 */, // S3_3_c15_c14_2 at min EL1: LLC_UP_REQ_VC_3 + REG_LLC_UP_REQ_VC_THRESH_3 =57331 /* 57331 */, // S3_3_c15_c14_3 at min EL1: LLC_UP_REQ_VC_THRESH_3 + REG_LLC_UP_REQ_VC_4 =57332 /* 57332 */, // S3_3_c15_c14_4 at min EL1: LLC_UP_REQ_VC_4 + REG_LLC_UP_REQ_VC_THRESH_4 =57333 /* 57333 */, // S3_3_c15_c14_5 at min EL1: LLC_UP_REQ_VC_THRESH_4 + REG_LLC_HASH0 =57336 /* 57336 */, // S3_3_c15_c15_0 at min EL1: LLC_HASH0 + REG_LLC_HASH1 =57337 /* 57337 */, // S3_3_c15_c15_1 at min EL1: LLC_HASH1 + REG_LLC_HASH2 =57338 /* 57338 */, // S3_3_c15_c15_2 at min EL1: LLC_HASH2 + REG_LLC_HASH3 =57339 /* 57339 */, // S3_3_c15_c15_3 at min EL1: LLC_HASH3 + REG_LLC_WRR =57340 /* 57340 */, // S3_3_c15_c15_4 at min EL1: LLC_WRR + REG_LLC_DRAM_HASH5 =57341 /* 57341 */, // S3_3_c15_c15_5 at min EL1: LLC_DRAM_HASH5 + REG_LLC_DRAM_HASH6 =57342 /* 57342 */, // S3_3_c15_c15_6 at min EL1: LLC_DRAM_HASH6 + REG_VPIDR_EL2 =57344 /* 57344 */, // S3_4_c0_c0_0 at min EL2: VPIDR_EL2 + REG_VMPIDR_EL2 =57349 /* 57349 */, // S3_4_c0_c0_5 at min EL2: VMPIDR_EL2 + REG_SCTLR_EL2 =57472 /* 57472 */, // S3_4_c1_c0_0 at min EL2: SCTLR_EL2 + REG_ACTLR_EL2 =57473 /* 57473 */, // S3_4_c1_c0_1 at min EL2: ACTLR_EL2 + REG_HCR_EL2 =57480 /* 57480 */, // S3_4_c1_c1_0 at min EL2: HCR_EL2 + REG_MDCR_EL2 =57481 /* 57481 */, // S3_4_c1_c1_1 at min EL2: MDCR_EL2 + REG_CPTR_EL2 =57482 /* 57482 */, // S3_4_c1_c1_2 at min EL2: CPTR_EL2 + REG_HSTR_EL2 =57483 /* 57483 */, // S3_4_c1_c1_3 at min EL2: HSTR_EL2 + REG_HFGRTR_EL2 =57484 /* 57484 */, // S3_4_c1_c1_4 at min EL2: HFGRTR_EL2 + REG_HFGWTR_EL2 =57485 /* 57485 */, // S3_4_c1_c1_5 at min EL2: HFGWTR_EL2 + REG_HFGITR_EL2 =57486 /* 57486 */, // S3_4_c1_c1_6 at min EL2: HFGITR_EL2 + REG_HACR_EL2 =57487 /* 57487 */, // S3_4_c1_c1_7 at min EL2: HACR_EL2 + REG_TRFCR_EL2 =57489 /* 57489 */, + REG_HCRX_EL2 =57490 /* 57490 */, // S3_4_c1_c2_2 at min EL2: HCRX_EL2 + REG_SMPRIMAP_EL2 =57493 /* 57493 */, // S3_4_c1_c2_5 at min EL2: SMPRIMAP_EL2 + REG_SMCR_EL2 =57494 /* 57494 */, // S3_4_c1_c2_6 at min EL2: SMCR_EL2 + REG_SDER32_EL2 =57497 /* 57497 */, + REG_TTBR0_EL2 =57600 /* 57600 */, // S3_4_c2_c0_0 at min EL2: TTBR0_EL2 + REG_TTBR1_EL2 =57601 /* 57601 */, // S3_4_c2_c0_1 at min EL2: TTBR1_EL2 + REG_TCR_EL2 =57602 /* 57602 */, // S3_4_c2_c0_2 at min EL2: TCR_EL2 + REG_VTTBR_EL2 =57608 /* 57608 */, // S3_4_c2_c1_0 at min EL2: VTTBR_EL2 + REG_VTCR_EL2 =57610 /* 57610 */, // S3_4_c2_c1_2 at min EL2: VTCR_EL2 + REG_VNCR_EL2 =57616 /* 57616 */, // S3_4_c2_c2_0 at min EL2: VNCR_EL2 + REG_VSTTBR_EL2 =57648 /* 57648 */, + REG_VSTCR_EL2 =57650 /* 57650 */, + REG_DACR32_EL2 =57728 /* 57728 */, // S3_4_c3_c0_0 at min EL2: DACR32_EL2 + REG_HDFGRTR_EL2 =57740 /* 57740 */, // S3_4_c3_c1_4 at min EL2: HDFGRTR_EL2 + REG_HDFGWTR_EL2 =57741 /* 57741 */, // S3_4_c3_c1_5 at min EL2: HDFGWTR_EL2 + REG_SPSR_NV_EL21 =57856 /* 57856 */, // S3_4_c4_c0_0 at min EL1: SPSR_NV_EL21 + REG_SPSR_EL2 =57856 /* 57856 */, + REG_ELR_NV_EL21 =57857 /* 57857 */, // S3_4_c4_c0_1 at min EL1: ELR_NV_EL21 + REG_ELR_EL2 =57857 /* 57857 */, + REG_SP_EL1 =57864 /* 57864 */, // S3_4_c4_c1_0 at min EL1: SP_EL1 + REG_SPSR_IRQ =57880 /* 57880 */, // S3_4_c4_c3_0 at min EL1: SPSR_irq + REG_SPSR_ABT =57881 /* 57881 */, // S3_4_c4_c3_1 at min EL1: SPSR_abt + REG_SPSR_UND =57882 /* 57882 */, // S3_4_c4_c3_2 at min EL1: SPSR_und + REG_SPSR_FIQ =57883 /* 57883 */, // S3_4_c4_c3_3 at min EL1: SPSR_fiq + REG_IFSR32_EL2 =57985 /* 57985 */, // S3_4_c5_c0_1 at min EL2: IFSR32_EL2 + REG_AFSR0_EL2 =57992 /* 57992 */, // S3_4_c5_c1_0 at min EL2: AFSR0_EL2 + REG_AFSR1_EL2 =57993 /* 57993 */, // S3_4_c5_c1_1 at min EL2: AFSR1_EL2 + REG_ESR_NV_EL21 =58000 /* 58000 */, // S3_4_c5_c2_0 at min EL1: ESR_NV_EL21 + REG_ESR_EL2 =58000 /* 58000 */, + REG_VSESR_EL2 =58003 /* 58003 */, // S3_4_c5_c2_3 at min EL2: VSESR_EL2 + REG_FPEXC32_EL2 =58008 /* 58008 */, // S3_4_c5_c3_0 at min EL2: FPEXC32_EL2 + REG_TFSR_EL2 =58032 /* 58032 */, + REG_FAR_NV_EL21 =58112 /* 58112 */, // S3_4_c6_c0_0 at min EL1: FAR_NV_EL21 + REG_FAR_EL2 =58112 /* 58112 */, + REG_HPFAR_EL2 =58116 /* 58116 */, // S3_4_c6_c0_4 at min EL2: HPFAR_EL2 + REG_PMSCR_EL2 =58568 /* 58568 */, + REG_MAIR_EL2 =58640 /* 58640 */, // S3_4_c10_c2_0 at min EL2: MAIR_EL2 + REG_AMAIR_EL2 =58648 /* 58648 */, // S3_4_c10_c3_0 at min EL2: AMAIR_EL2 + REG_MPAMHCR_EL2 =58656 /* 58656 */, + REG_MPAMVPMV_EL2 =58657 /* 58657 */, + REG_MPAM2_EL2 =58664 /* 58664 */, + REG_MPAMVPM0_EL2 =58672 /* 58672 */, + REG_MPAMVPM1_EL2 =58673 /* 58673 */, + REG_MPAMVPM2_EL2 =58674 /* 58674 */, + REG_MPAMVPM3_EL2 =58675 /* 58675 */, + REG_MPAMVPM4_EL2 =58676 /* 58676 */, + REG_MPAMVPM5_EL2 =58677 /* 58677 */, + REG_MPAMVPM6_EL2 =58678 /* 58678 */, + REG_MPAMVPM7_EL2 =58679 /* 58679 */, + REG_VBAR_EL2 =58880 /* 58880 */, // S3_4_c12_c0_0 at min EL2: VBAR_EL2 + REG_RVBAR_EL2 =58881 /* 58881 */, // S3_4_c12_c0_1 at min EL2: RVBAR_EL2 + REG_RMR_EL2 =58882 /* 58882 */, // S3_4_c12_c0_2 at min EL2: RMR_EL2 + REG_VDISR_EL2 =58889 /* 58889 */, // S3_4_c12_c1_1 at min EL2: VDISR_EL2 + REG_ICH_AP0R0_EL2 =58944 /* 58944 */, // S3_4_c12_c8_0 at min EL2: ICH_AP0R0_EL2 + REG_ICH_AP0R1_EL2 =58945 /* 58945 */, + REG_ICH_AP0R2_EL2 =58946 /* 58946 */, + REG_ICH_AP0R3_EL2 =58947 /* 58947 */, + REG_ICH_AP1R0_EL2 =58952 /* 58952 */, // S3_4_c12_c9_0 at min EL2: ICH_AP1R0_EL2 + REG_ICH_AP1R1_EL2 =58953 /* 58953 */, + REG_ICH_AP1R2_EL2 =58954 /* 58954 */, + REG_ICH_AP1R3_EL2 =58955 /* 58955 */, + REG_ICH_VSEIR_EL2 =58956 /* 58956 */, + REG_ICC_SRE_EL2 =58957 /* 58957 */, // S3_4_c12_c9_5 at min EL2: ICC_SRE_EL2 + REG_ICH_HCR_EL2 =58968 /* 58968 */, // S3_4_c12_c11_0 at min EL2: ICH_HCR_EL2 + REG_ICH_VTR_EL2 =58969 /* 58969 */, // S3_4_c12_c11_1 at min EL2: ICH_VTR_EL2 + REG_ICH_MISR_EL2 =58970 /* 58970 */, // S3_4_c12_c11_2 at min EL2: ICH_MISR_EL2 + REG_ICH_EISR_EL2 =58971 /* 58971 */, // S3_4_c12_c11_3 at min EL2: ICH_EISR_EL2 + REG_ICH_ELRSR_EL2 =58973 /* 58973 */, // S3_4_c12_c11_5 at min EL2: ICH_ELRSR_EL2 + REG_ICH_VMCR_EL2 =58975 /* 58975 */, // S3_4_c12_c11_7 at min EL2: ICH_VMCR_EL2 + REG_ICH_LR0_EL2 =58976 /* 58976 */, // S3_4_c12_c12_0 at min EL2: ICH_LR0_EL2 + REG_ICH_LR1_EL2 =58977 /* 58977 */, // S3_4_c12_c12_1 at min EL2: ICH_LR1_EL2 + REG_ICH_LR2_EL2 =58978 /* 58978 */, // S3_4_c12_c12_2 at min EL2: ICH_LR2_EL2 + REG_ICH_LR3_EL2 =58979 /* 58979 */, // S3_4_c12_c12_3 at min EL2: ICH_LR3_EL2 + REG_ICH_LR4_EL2 =58980 /* 58980 */, // S3_4_c12_c12_4 at min EL2: ICH_LR4_EL2 + REG_ICH_LR5_EL2 =58981 /* 58981 */, // S3_4_c12_c12_5 at min EL2: ICH_LR5_EL2 + REG_ICH_LR6_EL2 =58982 /* 58982 */, // S3_4_c12_c12_6 at min EL2: ICH_LR6_EL2 + REG_ICH_LR7_EL2 =58983 /* 58983 */, // S3_4_c12_c12_7 at min EL2: ICH_LR7_EL2 + REG_ICH_LR8_EL2 =58984 /* 58984 */, + REG_ICH_LR9_EL2 =58985 /* 58985 */, + REG_ICH_LR10_EL2 =58986 /* 58986 */, + REG_ICH_LR11_EL2 =58987 /* 58987 */, + REG_ICH_LR12_EL2 =58988 /* 58988 */, + REG_ICH_LR13_EL2 =58989 /* 58989 */, + REG_ICH_LR14_EL2 =58990 /* 58990 */, + REG_ICH_LR15_EL2 =58991 /* 58991 */, + REG_CONTEXTIDR_EL2 =59009 /* 59009 */, // S3_4_c13_c0_1 at min EL2: CONTEXTIDR_EL2 + REG_TPIDR_EL2 =59010 /* 59010 */, // S3_4_c13_c0_2 at min EL2: TPIDR_EL2 + REG_SCXTNUM_EL2 =59015 /* 59015 */, // S3_4_c13_c0_7 at min EL2: SCXTNUM_EL2 + REG_CNTVOFF_EL2 =59139 /* 59139 */, // S3_4_c14_c0_3 at min EL2: CNTVOFF_EL2 + REG_REDIR_CNTHCTL_EL2 =59144 /* 59144 */, // S3_4_c14_c1_0 at min EL2: REDIR_CNTHCTL_EL2 + REG_CNTHCTL_EL2 =59144 /* 59144 */, + REG_REDIR_CNTHP_TVAL_EL2 =59152 /* 59152 */, // S3_4_c14_c2_0 at min EL2: REDIR_CNTHP_TVAL_EL2 + REG_CNTHP_TVAL_EL2 =59152 /* 59152 */, + REG_REDIR_CNTHP_CTL_EL2 =59153 /* 59153 */, // S3_4_c14_c2_1 at min EL2: REDIR_CNTHP_CTL_EL2 + REG_CNTHP_CTL_EL2 =59153 /* 59153 */, + REG_REDIR_CNTHP_CVAL_EL2 =59154 /* 59154 */, // S3_4_c14_c2_2 at min EL2: REDIR_CNTHP_CVAL_EL2 + REG_CNTHP_CVAL_EL2 =59154 /* 59154 */, + REG_REDIR_CNTHV_TVAL_EL2 =59160 /* 59160 */, // S3_4_c14_c3_0 at min EL2: REDIR_CNTHV_TVAL_EL2 + REG_CNTHV_TVAL_EL2 =59160 /* 59160 */, + REG_REDIR_CNTHV_CTL_EL2 =59161 /* 59161 */, // S3_4_c14_c3_1 at min EL2: REDIR_CNTHV_CTL_EL2 + REG_CNTHV_CTL_EL2 =59161 /* 59161 */, + REG_REDIR_CNTHV_CVAL_EL2 =59162 /* 59162 */, // S3_4_c14_c3_2 at min EL2: REDIR_CNTHV_CVAL_EL2 + REG_CNTHV_CVAL_EL2 =59162 /* 59162 */, + REG_CNTHVS_TVAL_EL2 =59168 /* 59168 */, + REG_CNTHVS_CTL_EL2 =59169 /* 59169 */, + REG_CNTHVS_CVAL_EL2 =59170 /* 59170 */, + REG_CNTHPS_TVAL_EL2 =59176 /* 59176 */, + REG_CNTHPS_CTL_EL2 =59177 /* 59177 */, + REG_CNTHPS_CVAL_EL2 =59178 /* 59178 */, + REG_FED_ERR_STS =59264 /* 59264 */, // S3_4_c15_c0_0 at min EL1: FED_ERR_STS + REG_FED_ERR_CTL =59265 /* 59265 */, // S3_4_c15_c0_1 at min EL1: FED_ERR_CTL + REG_APCTL_EL21 =59268 /* 59268 */, // S3_4_c15_c0_4 at min EL1: APCTL_EL21 + REG_KERNKEYLO_EL21 =59272 /* 59272 */, // S3_4_c15_c1_0 at min EL1: KERNKEYLo_EL21 + REG_KERNKEYHI_EL21 =59273 /* 59273 */, // S3_4_c15_c1_1 at min EL1: KERNKEYHi_EL21 + REG_VMSA_LOCK_EL1 =59274 /* 59274 */, // S3_4_c15_c1_2 at min EL1: VMSA_LOCK_EL1 + REG_AMX_STATE_T_EL1 =59275 /* 59275 */, // S3_4_c15_c1_3 at min EL1: AMX_STATE_T_EL1 + REG_AMX_CONFIG_EL21 =59276 /* 59276 */, // S3_4_c15_c1_4 at min EL1: AMX_CONFIG_EL21 + REG_VMSA_LOCK_EL2 =59277 /* 59277 */, // S3_4_c15_c1_5 at min EL2: VMSA_LOCK_EL2 + REG_CTRR_B_UPR_EL21 =59278 /* 59278 */, // S3_4_c15_c1_6 at min EL1: CTRR_B_UPR_EL21 + REG_CTRR_B_LWR_EL21 =59279 /* 59279 */, // S3_4_c15_c1_7 at min EL1: CTRR_B_LWR_EL21 + REG_SP_SETUP_GL21 =59280 /* 59280 */, // S3_4_c15_c2_0 at min EL1: SP_SETUP_GL21 + REG_SP_SETUP_GL2 =59281 /* 59281 */, // S3_4_c15_c2_1 at min EL2: SP_SETUP_GL2 + REG_CTRR_B_CTL_EL21 =59282 /* 59282 */, // S3_4_c15_c2_2 at min EL1: CTRR_B_CTL_EL21 + REG_CTRR_A_LWR_EL21 =59283 /* 59283 */, // S3_4_c15_c2_3 at min EL1: CTRR_A_LWR_EL21 + REG_CTRR_A_UPR_EL21 =59284 /* 59284 */, // S3_4_c15_c2_4 at min EL1: CTRR_A_UPR_EL21 + REG_CTRR_A_CTL_EL21 =59285 /* 59285 */, // S3_4_c15_c2_5 at min EL1: CTRR_A_CTL_EL21 + REG_VMSA_LOCK_EL12 =59286 /* 59286 */, // S3_4_c15_c2_6 at min EL2: VMSA_LOCK_EL12 + REG_AGTCNTV_CTL_EL02 =59287 /* 59287 */, // S3_4_c15_c2_7 at min EL1: AGTCNTV_CTL_EL02 + REG_AMX_STATE_EL1 =59288 /* 59288 */, // S3_4_c15_c3_0 at min EL1: AMX_STATE_EL1 + REG_AMX_STATUS_EL1 =59294 /* 59294 */, // S3_4_c15_c3_6 at min EL1: AMX_STATUS_EL1 + REG_AGTCNTP_CVAL_EL02 =59297 /* 59297 */, // S3_4_c15_c4_1 at min EL1: AGTCNTP_CVAL_EL02 + REG_REDIR_ACNTP_TVAL_EL02 =59298 /* 59298 */, // S3_4_c15_c4_2 at min EL1: REDIR_ACNTP_TVAL_EL02 + REG_AGTCNTP_CTL_EL02 =59299 /* 59299 */, // S3_4_c15_c4_3 at min EL1: AGTCNTP_CTL_EL02 + REG_AGTCNTV_CVAL_EL02 =59300 /* 59300 */, // S3_4_c15_c4_4 at min EL1: AGTCNTV_CVAL_EL02 + REG_AGTCNTV_TVAL_EL02 =59301 /* 59301 */, // S3_4_c15_c4_5 at min EL1: AGTCNTV_TVAL_EL02 + REG_AMX_CONFIG_EL12 =59302 /* 59302 */, // S3_4_c15_c4_6 at min EL2: AMX_CONFIG_EL12 + REG_AMX_CONFIG_EL2 =59303 /* 59303 */, // S3_4_c15_c4_7 at min EL2: AMX_CONFIG_EL2 + REG_SPRR_HUPERM_EL0 =59305 /* 59305 */, // S3_4_c15_c5_1 at min EL1: SPRR_HUPERM_EL0 + REG_SPRR_VUPERM_EL0 =59306 /* 59306 */, // S3_4_c15_c5_2 at min EL1: SPRR_VUPERM_EL0 + REG_CTRR_A_CTL_EL2 =59314 /* 59314 */, // S3_4_c15_c6_2 at min EL2: CTRR_A_CTL_EL2 + REG_CTRR_B_CTL_EL2 =59315 /* 59315 */, // S3_4_c15_c6_3 at min EL2: CTRR_B_CTL_EL2 + REG_CTRR_A_LWR_EL2 =59316 /* 59316 */, // S3_4_c15_c6_4 at min EL2: CTRR_A_LWR_EL2 + REG_CTRR_A_UPR_EL2 =59317 /* 59317 */, // S3_4_c15_c6_5 at min EL2: CTRR_A_UPR_EL2 + REG_CTRR_B_LWR_EL2 =59318 /* 59318 */, // S3_4_c15_c6_6 at min EL2: CTRR_B_LWR_EL2 + REG_CTRR_B_UPR_EL2 =59319 /* 59319 */, // S3_4_c15_c6_7 at min EL2: CTRR_B_UPR_EL2 + REG_SPRR_HUMPRR_EL2 =59320 /* 59320 */, // S3_4_c15_c7_0 at min EL2: SPRR_HUMPRR_EL2 + REG_SPRR_HUPERM_SH01_EL2 =59321 /* 59321 */, // S3_4_c15_c7_1 at min EL2: SPRR_HUPERM_SH01_EL2 + REG_SPRR_HUPERM_SH02_EL2 =59322 /* 59322 */, // S3_4_c15_c7_2 at min EL2: SPRR_HUPERM_SH02_EL2 + REG_SPRR_HUPERM_SH03_EL2 =59323 /* 59323 */, // S3_4_c15_c7_3 at min EL2: SPRR_HUPERM_SH03_EL2 + REG_SPRR_HUPERM_SH04_EL2 =59324 /* 59324 */, // S3_4_c15_c7_4 at min EL2: SPRR_HUPERM_SH04_EL2 + REG_SPRR_HUPERM_SH05_EL2 =59325 /* 59325 */, // S3_4_c15_c7_5 at min EL2: SPRR_HUPERM_SH05_EL2 + REG_SPRR_HUPERM_SH06_EL2 =59326 /* 59326 */, // S3_4_c15_c7_6 at min EL2: SPRR_HUPERM_SH06_EL2 + REG_SPRR_HUPERM_SH07_EL2 =59327 /* 59327 */, // S3_4_c15_c7_7 at min EL2: SPRR_HUPERM_SH07_EL2 + REG_SPRR_VUMPRR_EL1 =59328 /* 59328 */, // S3_4_c15_c8_0 at min EL1: SPRR_VUMPRR_EL1 + REG_SPRR_VUPERM_SH01_EL1 =59329 /* 59329 */, // S3_4_c15_c8_1 at min EL1: SPRR_VUPERM_SH01_EL1 + REG_SPRR_VUPERM_SH02_EL1 =59330 /* 59330 */, // S3_4_c15_c8_2 at min EL1: SPRR_VUPERM_SH02_EL1 + REG_SPRR_VUPERM_SH03_EL1 =59331 /* 59331 */, // S3_4_c15_c8_3 at min EL1: SPRR_VUPERM_SH03_EL1 + REG_SPRR_VUPERM_SH04_EL1 =59332 /* 59332 */, // S3_4_c15_c8_4 at min EL1: SPRR_VUPERM_SH04_EL1 + REG_SPRR_VUPERM_SH05_EL1 =59333 /* 59333 */, // S3_4_c15_c8_5 at min EL1: SPRR_VUPERM_SH05_EL1 + REG_SPRR_VUPERM_SH06_EL1 =59334 /* 59334 */, // S3_4_c15_c8_6 at min EL1: SPRR_VUPERM_SH06_EL1 + REG_SPRR_VUPERM_SH07_EL1 =59335 /* 59335 */, // S3_4_c15_c8_7 at min EL1: SPRR_VUPERM_SH07_EL1 + REG_CTRR_A_LWR_EL12 =59336 /* 59336 */, // S3_4_c15_c9_0 at min EL2: CTRR_A_LWR_EL12 + REG_CTRR_A_UPR_EL12 =59337 /* 59337 */, // S3_4_c15_c9_1 at min EL2: CTRR_A_UPR_EL12 + REG_CTRR_B_LWR_EL12 =59338 /* 59338 */, // S3_4_c15_c9_2 at min EL2: CTRR_B_LWR_EL12 + REG_CTRR_B_UPR_EL12 =59339 /* 59339 */, // S3_4_c15_c9_3 at min EL2: CTRR_B_UPR_EL12 + REG_CTRR_A_CTL_EL12 =59340 /* 59340 */, // S3_4_c15_c9_4 at min EL2: CTRR_A_CTL_EL12 + REG_CTRR_B_CTL_EL12 =59341 /* 59341 */, // S3_4_c15_c9_5 at min EL2: CTRR_B_CTL_EL12 + REG_REDIR_ACNTKCTL_EL1 =59342 /* 59342 */, // S3_4_c15_c9_6 at min EL1: REDIR_ACNTKCTL_EL1 + REG_AGTCNTKCTL_EL12 =59343 /* 59343 */, // S3_4_c15_c9_7 at min EL2: AGTCNTKCTL_EL12 + REG_PREDAKEYLO_EL1 =59344 /* 59344 */, // S3_4_c15_c10_0 at min EL1: PREDAKEYLo_EL1 + REG_PREDAKEYHI_EL1 =59345 /* 59345 */, // S3_4_c15_c10_1 at min EL1: PREDAKEYHi_EL1 + REG_PREDBKEYLO_EL1 =59346 /* 59346 */, // S3_4_c15_c10_2 at min EL1: PREDBKEYLo_EL1 + REG_PREDBKEYHI_EL1 =59347 /* 59347 */, // S3_4_c15_c10_3 at min EL1: PREDBKEYHi_EL1 + REG_SIQ_CFG_EL1 =59348 /* 59348 */, // S3_4_c15_c10_4 at min EL1: SIQ_CFG_EL1 + REG_REDIR_LCL_ACNTPCTSS_EL0 =59349 /* 59349 */, // S3_4_c15_c10_5 at min EL1: REDIR_LCL_ACNTPCTSS_EL0 + REG_REDIR_LCL_ACNTVCTSS_EL0 =59350 /* 59350 */, // S3_4_c15_c10_6 at min EL1: REDIR_LCL_ACNTVCTSS_EL0 + REG_AVNCR_EL2 =59351 /* 59351 */, // S3_4_c15_c10_7 at min EL2: AVNCR_EL2 + REG_ACC_CTRR_A_LWR_EL2 =59352 /* 59352 */, // S3_4_c15_c11_0 at min EL2: ACC_CTRR_A_LWR_EL2 + REG_ACC_CTRR_A_UPR_EL2 =59353 /* 59353 */, // S3_4_c15_c11_1 at min EL2: ACC_CTRR_A_UPR_EL2 + REG_ACC_CTRR_B_LWR_EL2 =59354 /* 59354 */, // S3_4_c15_c11_2 at min EL2: ACC_CTRR_B_LWR_EL2 + REG_ACC_CTRR_B_UPR_EL2 =59355 /* 59355 */, // S3_4_c15_c11_3 at min EL2: ACC_CTRR_B_UPR_EL2 + REG_ACC_CTRR_A_CTL_EL2 =59356 /* 59356 */, // S3_4_c15_c11_4 at min EL2: ACC_CTRR_A_CTL_EL2 + REG_ACC_CTRR_B_CTL_EL2 =59357 /* 59357 */, // S3_4_c15_c11_5 at min EL2: ACC_CTRR_B_CTL_EL2 + REG_REDIR_LCL_ACNTPCT_EL0 =59358 /* 59358 */, // S3_4_c15_c11_6 at min EL1: REDIR_LCL_ACNTPCT_EL0 + REG_REDIR_LCL_ACNTVCT_EL0 =59359 /* 59359 */, // S3_4_c15_c11_7 at min EL1: REDIR_LCL_ACNTVCT_EL0 + REG_ACFG_EL1 =59360 /* 59360 */, // S3_4_c15_c12_0 at min EL1: ACFG_EL1 + REG_AHCR_EL2 =59361 /* 59361 */, // S3_4_c15_c12_1 at min EL2: AHCR_EL2 + REG_APL_INTSTATUS_EL21 =59362 /* 59362 */, // S3_4_c15_c12_2 at min EL1: APL_INTSTATUS_EL21 + REG_APL_INTSTATUS_EL2 =59363 /* 59363 */, // S3_4_c15_c12_3 at min EL2: APL_INTSTATUS_EL2 + REG_REDIR_ACNTHCTL_EL2 =59366 /* 59366 */, // S3_4_c15_c12_6 at min EL2: REDIR_ACNTHCTL_EL2 + REG_JAPIAKEYLO_NV_EL21 =59368 /* 59368 */, // S3_4_c15_c13_0 at min EL1: JAPIAKeyLo_NV_EL21 + REG_JAPIAKEYHI_NV_EL21 =59369 /* 59369 */, // S3_4_c15_c13_1 at min EL1: JAPIAKeyHi_NV_EL21 + REG_JAPIBKEYLO_NV_EL21 =59370 /* 59370 */, // S3_4_c15_c13_2 at min EL1: JAPIBKeyLo_NV_EL21 + REG_JAPIBKEYHI_NV_EL21 =59371 /* 59371 */, // S3_4_c15_c13_3 at min EL1: JAPIBKeyHi_NV_EL21 + REG_JAPIAKEYLO_EL21 =59372 /* 59372 */, // S3_4_c15_c13_4 at min EL1: JAPIAKeyLo_EL21 + REG_JAPIAKEYHI_EL21 =59373 /* 59373 */, // S3_4_c15_c13_5 at min EL1: JAPIAKeyHi_EL21 + REG_JAPIBKEYLO_EL21 =59374 /* 59374 */, // S3_4_c15_c13_6 at min EL1: JAPIBKeyLo_EL21 + REG_JAPIBKEYHI_EL21 =59375 /* 59375 */, // S3_4_c15_c13_7 at min EL1: JAPIBKeyHi_EL21 + REG_JAPIAKEYLO_EL12 =59376 /* 59376 */, // S3_4_c15_c14_0 at min EL2: JAPIAKeyLo_EL12 + REG_JAPIAKEYHI_EL12 =59377 /* 59377 */, // S3_4_c15_c14_1 at min EL2: JAPIAKeyHi_EL12 + REG_JAPIBKEYLO_EL12 =59378 /* 59378 */, // S3_4_c15_c14_2 at min EL2: JAPIBKeyLo_EL12 + REG_JAPIBKEYHI_EL12 =59379 /* 59379 */, // S3_4_c15_c14_3 at min EL2: JAPIBKeyHi_EL12 + REG_AGTCNTRDIR_EL2 =59381 /* 59381 */, // S3_4_c15_c14_5 at min EL2: AGTCNTRDIR_EL2 + REG_AGTCNTRDIR_EL12 =59382 /* 59382 */, // S3_4_c15_c14_6 at min EL2: AGTCNTRDIR_EL12 + REG_JRANGE_EL2 =59384 /* 59384 */, // S3_4_c15_c15_0 at min EL2: JRANGE_EL2 + REG_JRANGE_EL21 =59385 /* 59385 */, // S3_4_c15_c15_1 at min EL1: JRANGE_EL21 + REG_JRANGE_EL12 =59386 /* 59386 */, // S3_4_c15_c15_2 at min EL2: JRANGE_EL12 + REG_JCTL_EL2 =59387 /* 59387 */, // S3_4_c15_c15_3 at min EL2: JCTL_EL2 + REG_JCTL_EL21 =59388 /* 59388 */, // S3_4_c15_c15_4 at min EL1: JCTL_EL21 + REG_JCTL_EL12 =59389 /* 59389 */, // S3_4_c15_c15_5 at min EL2: JCTL_EL12 + REG_JCTL_EL0 =59390 /* 59390 */, // S3_4_c15_c15_6 at min EL1: JCTL_EL0 + REG_AMDSCR_EL1 =59391 /* 59391 */, // S3_4_c15_c15_7 at min EL1: AMDSCR_EL1 + REG_SCTLR_EL12 =59520 /* 59520 */, // S3_5_c1_c0_0 at min EL2: SCTLR_EL12 + REG_ACTLR_EL12 =59521 /* 59521 */, // S3_5_c1_c0_1 at min EL2: ACTLR_EL12 + REG_CPACR_EL12 =59522 /* 59522 */, // S3_5_c1_c0_2 at min EL2: CPACR_EL12 + REG_TRFCR_EL12 =59537 /* 59537 */, + REG_SMCR_EL12 =59542 /* 59542 */, // S3_5_c1_c2_6 at min EL2: SMCR_EL12 + REG_TTBR0_EL12 =59648 /* 59648 */, // S3_5_c2_c0_0 at min EL2: TTBR0_EL12 + REG_TTBR1_EL12 =59649 /* 59649 */, // S3_5_c2_c0_1 at min EL2: TTBR1_EL12 + REG_TCR_EL12 =59650 /* 59650 */, // S3_5_c2_c0_2 at min EL2: TCR_EL12 + REG_SPSR_EL12 =59904 /* 59904 */, // S3_5_c4_c0_0 at min EL2: SPSR_EL12 + REG_ELR_EL12 =59905 /* 59905 */, // S3_5_c4_c0_1 at min EL2: ELR_EL12 + REG_AFSR0_EL12 =60040 /* 60040 */, // S3_5_c5_c1_0 at min EL2: AFSR0_EL12 + REG_AFSR1_EL12 =60041 /* 60041 */, // S3_5_c5_c1_1 at min EL2: AFSR1_EL12 + REG_ESR_EL12 =60048 /* 60048 */, // S3_5_c5_c2_0 at min EL2: ESR_EL12 + REG_TFSR_EL12 =60080 /* 60080 */, + REG_FAR_EL12 =60160 /* 60160 */, // S3_5_c6_c0_0 at min EL2: FAR_EL12 + REG_PMSCR_EL12 =60616 /* 60616 */, + REG_MAIR_EL12 =60688 /* 60688 */, // S3_5_c10_c2_0 at min EL2: MAIR_EL12 + REG_AMAIR_EL12 =60696 /* 60696 */, // S3_5_c10_c3_0 at min EL2: AMAIR_EL12 + REG_MPAM1_EL12 =60712 /* 60712 */, + REG_VBAR_EL12 =60928 /* 60928 */, // S3_5_c12_c0_0 at min EL2: VBAR_EL12 + REG_CONTEXTIDR_EL12 =61057 /* 61057 */, // S3_5_c13_c0_1 at min EL2: CONTEXTIDR_EL12 + REG_SCXTNUM_EL12 =61063 /* 61063 */, // S3_5_c13_c0_7 at min EL2: SCXTNUM_EL12 + REG_CNTKCTL_EL12 =61192 /* 61192 */, // S3_5_c14_c1_0 at min EL2: CNTKCTL_EL12 + REG_CNTP_TVAL_EL02 =61200 /* 61200 */, // S3_5_c14_c2_0 at min EL1: CNTP_TVAL_EL02 + REG_CNTP_CTL_EL02 =61201 /* 61201 */, // S3_5_c14_c2_1 at min EL1: CNTP_CTL_EL02 + REG_CNTP_CVAL_EL02 =61202 /* 61202 */, // S3_5_c14_c2_2 at min EL1: CNTP_CVAL_EL02 + REG_CNTV_TVAL_EL02 =61208 /* 61208 */, // S3_5_c14_c3_0 at min EL1: CNTV_TVAL_EL02 + REG_CNTV_CTL_EL02 =61209 /* 61209 */, // S3_5_c14_c3_1 at min EL1: CNTV_CTL_EL02 + REG_CNTV_CVAL_EL02 =61210 /* 61210 */, // S3_5_c14_c3_2 at min EL1: CNTV_CVAL_EL02 + REG_IPI_RR_LOCAL_EL1 =61312 /* 61312 */, // S3_5_c15_c0_0 at min EL1: IPI_RR_LOCAL_EL1 + REG_IPI_RR_GLOBAL_EL1 =61313 /* 61313 */, // S3_5_c15_c0_1 at min EL1: IPI_RR_GLOBAL_EL1 + REG_AF_ERR_CFG0 =61314 /* 61314 */, // S3_5_c15_c0_2 at min EL1: AF_ERR_CFG0 + REG_AP_ERR_CFG0 =61315 /* 61315 */, // S3_5_c15_c0_3 at min EL1: AP_ERR_CFG0 + REG_AF_ERR_SRC_IDS =61316 /* 61316 */, // S3_5_c15_c0_4 at min EL1: AF_ERR_SRC_IDS + REG_DPC_ERR_STS =61317 /* 61317 */, // S3_5_c15_c0_5 at min EL1: DPC_ERR_STS + REG_DPC_ERR_CTL =61318 /* 61318 */, // S3_5_c15_c0_6 at min EL1: DPC_ERR_CTL + REG_PROD_TRC_CORE_CFG_EL21 =61319 /* 61319 */, // S3_5_c15_c0_7 at min EL1: PROD_TRC_CORE_CFG_EL21 + REG_TRACE_CORE_CFG =61320 /* 61320 */, // S3_5_c15_c1_0 at min EL1: TRACE_CORE_CFG + REG_IPI_SR =61321 /* 61321 */, // S3_5_c15_c1_1 at min EL1: IPI_SR + REG_APL_LRTMR_EL2 =61322 /* 61322 */, // S3_5_c15_c1_2 at min EL2: APL_LRTMR_EL2 + REG_APL_INTENABLE_EL2 =61323 /* 61323 */, // S3_5_c15_c1_3 at min EL2: APL_INTENABLE_EL2 + REG_KTRACE_MESSAGE =61324 /* 61324 */, // S3_5_c15_c1_4 at min EL1: KTRACE_MESSAGE + REG_TRACE_CORE_CFG_EXT =61325 /* 61325 */, // S3_5_c15_c1_5 at min EL1: TRACE_CORE_CFG_EXT + REG_PROD_TRC_CORE_CFG_EL2 =61326 /* 61326 */, // S3_5_c15_c1_6 at min EL2: PROD_TRC_CORE_CFG_EL2 + REG_HID_PROD_TRC_CORE_CFG_EL1 =61327 /* 61327 */, // S3_5_c15_c1_7 at min EL1: HID_PROD_TRC_CORE_CFG_EL1 + REG_DBG_WRAP_GLB =61328 /* 61328 */, // S3_5_c15_c2_0 at min EL1: DBG_WRAP_GLB + REG_TRACE_STREAM_BASE =61329 /* 61329 */, // S3_5_c15_c2_1 at min EL1: TRACE_STREAM_BASE + REG_TRACE_STREAM_FILL =61330 /* 61330 */, // S3_5_c15_c2_2 at min EL1: TRACE_STREAM_FILL + REG_TRACE_STREAM_BASE1 =61331 /* 61331 */, // S3_5_c15_c2_3 at min EL1: TRACE_STREAM_BASE1 + REG_TRACE_STREAM_FILL1 =61332 /* 61332 */, // S3_5_c15_c2_4 at min EL1: TRACE_STREAM_FILL1 + REG_TRACE_STREAM_IRQ =61333 /* 61333 */, // S3_5_c15_c2_5 at min EL1: TRACE_STREAM_IRQ + REG_WATCHDOGDIAG0 =61334 /* 61334 */, // S3_5_c15_c2_6 at min EL1: WatchDogDiag0 + REG_WATCHDOGDIAG1 =61335 /* 61335 */, // S3_5_c15_c2_7 at min EL1: WatchDogDiag1 + REG_TRACE_AUX_CTL =61336 /* 61336 */, // S3_5_c15_c3_0 at min EL1: TRACE_AUX_CTL + REG_IPI_CR =61337 /* 61337 */, // S3_5_c15_c3_1 at min EL1: IPI_CR + REG_UTRIG_EVENT =61338 /* 61338 */, // S3_5_c15_c3_2 at min EL1: UTRIG_EVENT + REG_HID_PROD_TRC_MASK_EL1 =61339 /* 61339 */, // S3_5_c15_c3_3 at min EL1: HID_PROD_TRC_MASK_EL1 + REG_TRACE_CTL =61340 /* 61340 */, // S3_5_c15_c3_4 at min EL1: TRACE_CTL + REG_TRACE_DAT =61341 /* 61341 */, // S3_5_c15_c3_5 at min EL1: TRACE_DAT + REG_PROD_TRC_STRM_BASE0_GL2 =61342 /* 61342 */, // S3_5_c15_c3_6 at min EL2: PROD_TRC_STRM_BASE0_GL2 + REG_PROD_TRC_STRM_BASE1_GL2 =61343 /* 61343 */, // S3_5_c15_c3_7 at min EL2: PROD_TRC_STRM_BASE1_GL2 + REG_CPU_CFG =61344 /* 61344 */, // S3_5_c15_c4_0 at min EL1: CPU_CFG + REG_PBLK_STS =61345 /* 61345 */, // S3_5_c15_c4_1 at min EL1: PBLK_STS + REG_PROD_TRC_CTL_EL21 =61347 /* 61347 */, // S3_5_c15_c4_3 at min EL1: PROD_TRC_CTL_EL21 + REG_PROD_TRC_STRM_BASE0_GL21 =61348 /* 61348 */, // S3_5_c15_c4_4 at min EL1: PROD_TRC_STRM_BASE0_GL21 + REG_PROD_TRC_STRM_BASE1_GL21 =61349 /* 61349 */, // S3_5_c15_c4_5 at min EL1: PROD_TRC_STRM_BASE1_GL21 + REG_PROD_TRC_STRM_FIQ_EL21 =61350 /* 61350 */, // S3_5_c15_c4_6 at min EL1: PROD_TRC_STRM_FIQ_EL21 + REG_CPU_OVRD =61352 /* 61352 */, // S3_5_c15_c5_0 at min EL1: CPU_OVRD + REG_PBLK_EXE_ST =61354 /* 61354 */, // S3_5_c15_c5_2 at min EL1: PBLK_EXE_ST + REG_PROD_TRC_CORE_GL_CTL_GL21 =61357 /* 61357 */, // S3_5_c15_c5_5 at min EL1: PROD_TRC_CORE_GL_CTL_GL21 + REG_PROD_TRC_CORE_GL_CTL_GL2 =61358 /* 61358 */, // S3_5_c15_c5_6 at min EL2: PROD_TRC_CORE_GL_CTL_GL2 + REG_ACC_OVRD =61360 /* 61360 */, // S3_5_c15_c6_0 at min EL1: ACC_OVRD + REG_ACC_OVRD1 =61361 /* 61361 */, // S3_5_c15_c6_1 at min EL1: ACC_OVRD1 + REG_CPM_PWRDN_CTL =61362 /* 61362 */, // S3_5_c15_c6_2 at min EL1: CPM_PWRDN_CTL + REG_PROD_TRC_BUF_RESTORE0_GL21 =61364 /* 61364 */, // S3_5_c15_c6_4 at min EL1: PROD_TRC_BUF_RESTORE0_GL21 + REG_PROD_TRC_BUF_RESTORE1_GL21 =61365 /* 61365 */, // S3_5_c15_c6_5 at min EL1: PROD_TRC_BUF_RESTORE1_GL21 + REG_PROD_TRC_EN_GL21 =61366 /* 61366 */, // S3_5_c15_c6_6 at min EL1: PROD_TRC_EN_GL21 + REG_PRE_LLCFLUSH_TMR =61368 /* 61368 */, // S3_5_c15_c7_0 at min EL1: PRE_LLCFLUSH_TMR + REG_BIUINTFCTL_CFG =61372 /* 61372 */, // S3_5_c15_c7_4 at min EL1: BIUINTFCTL_CFG + REG_BIUINTFWRR_CFG =61373 /* 61373 */, // S3_5_c15_c7_5 at min EL1: BIUINTFWRR_CFG + REG_PRE_TD_TMR =61376 /* 61376 */, // S3_5_c15_c8_0 at min EL1: PRE_TD_TMR + REG_ACC_SLP_WAKE_UP_TMR =61377 /* 61377 */, // S3_5_c15_c8_1 at min EL1: ACC_SLP_WAKE_UP_TMR + REG_PBLK_PSW_DLY =61384 /* 61384 */, // S3_5_c15_c9_0 at min EL1: PBLK_PSW_DLY + REG_CPU_STS =61392 /* 61392 */, // S3_5_c15_c10_0 at min EL1: CPU_STS + REG_HIST_TRIG =61393 /* 61393 */, // S3_5_c15_c10_1 at min EL1: HIST_TRIG + REG_PROD_TRC_BUF_RESTORE0_GL2 =61396 /* 61396 */, // S3_5_c15_c10_4 at min EL2: PROD_TRC_BUF_RESTORE0_GL2 + REG_PROD_TRC_BUF_RESTORE1_GL2 =61397 /* 61397 */, // S3_5_c15_c10_5 at min EL2: PROD_TRC_BUF_RESTORE1_GL2 + REG_PROD_TRC_STRM_FILL0_EL1 =61398 /* 61398 */, // S3_5_c15_c10_6 at min EL1: PROD_TRC_STRM_FILL0_EL1 + REG_PROD_TRC_STRM_FILL1_EL1 =61399 /* 61399 */, // S3_5_c15_c10_7 at min EL1: PROD_TRC_STRM_FILL1_EL1 + REG_ARRAY_INDEX =61400 /* 61400 */, // S3_5_c15_c11_0 at min EL1: ARRAY_INDEX + REG_PROD_TRC_CTL_EL2 =61401 /* 61401 */, // S3_5_c15_c11_1 at min EL2: PROD_TRC_CTL_EL2 + REG_PROD_TRC_EN_GL2 =61402 /* 61402 */, // S3_5_c15_c11_2 at min EL2: PROD_TRC_EN_GL2 + REG_PROD_TRC_STRM_FIQ_EL2 =61403 /* 61403 */, // S3_5_c15_c11_3 at min EL2: PROD_TRC_STRM_FIQ_EL2 + REG_PROD_TRC_CPMU_DUMP_TRIG_EL1=61404 /* 61404 */, // S3_5_c15_c11_4 at min EL1: PROD_TRC_CPMU_DUMP_TRIG_EL1 + REG_PROD_LOSS_COUNT_EL1 =61405 /* 61405 */, // S3_5_c15_c11_5 at min EL1: PROD_LOSS_COUNT_EL1 + REG_SW_TRACE_DATA_EL0 =61406 /* 61406 */, // S3_5_c15_c11_6 at min EL1: SW_TRACE_DATA_EL0 + REG_IL1_DATA0 =61408 /* 61408 */, // S3_5_c15_c12_0 at min EL1: IL1_DATA0 + REG_IL1_DATA1 =61409 /* 61409 */, // S3_5_c15_c12_1 at min EL1: IL1_DATA1 + REG_DL1_DATA0 =61410 /* 61410 */, // S3_5_c15_c12_2 at min EL1: DL1_DATA0 + REG_DL1_DATA1 =61411 /* 61411 */, // S3_5_c15_c12_3 at min EL1: DL1_DATA1 + REG_MMUDATA0 =61412 /* 61412 */, // S3_5_c15_c12_4 at min EL1: MMUDATA0 + REG_MMUDATA1 =61413 /* 61413 */, // S3_5_c15_c12_5 at min EL1: MMUDATA1 + REG_DL1_DATA2 =61414 /* 61414 */, // S3_5_c15_c12_6 at min EL1: DL1_DATA2 + REG_IL1_DATA2 =61415 /* 61415 */, // S3_5_c15_c12_7 at min EL1: IL1_DATA2 + REG_LLC_DATA0 =61420 /* 61420 */, // S3_5_c15_c13_4 at min EL1: LLC_DATA0 + REG_LLC_DATA1 =61421 /* 61421 */, // S3_5_c15_c13_5 at min EL1: LLC_DATA1 + REG_SCTLR_EL3 =61568 /* 61568 */, // S3_6_c1_c0_0 at min EL3: SCTLR_EL3 + REG_ACTLR_EL3 =61569 /* 61569 */, // S3_6_c1_c0_1 at min EL3: ACTLR_EL3 + REG_SCR_EL3 =61576 /* 61576 */, // S3_6_c1_c1_0 at min EL3: SCR_EL3 + REG_SDER32_EL3 =61577 /* 61577 */, // S3_6_c1_c1_1 at min EL3: SDER32_EL3 + REG_CPTR_EL3 =61578 /* 61578 */, // S3_6_c1_c1_2 at min EL3: CPTR_EL3 + REG_MDCR_EL3 =61593 /* 61593 */, // S3_6_c1_c3_1 at min EL3: MDCR_EL3 + REG_TTBR0_EL3 =61696 /* 61696 */, // S3_6_c2_c0_0 at min EL3: TTBR0_EL3 + REG_TCR_EL3 =61698 /* 61698 */, // S3_6_c2_c0_2 at min EL3: TCR_EL3 + REG_SPSR_EL3 =61952 /* 61952 */, // S3_6_c4_c0_0 at min EL3: SPSR_EL3 + REG_ELR_EL3 =61953 /* 61953 */, // S3_6_c4_c0_1 at min EL3: ELR_EL3 + REG_SP_EL2 =61960 /* 61960 */, // S3_6_c4_c1_0 at min EL2: SP_EL2 + REG_AFSR0_EL3 =62088 /* 62088 */, // S3_6_c5_c1_0 at min EL3: AFSR0_EL3 + REG_AFSR1_EL3 =62089 /* 62089 */, // S3_6_c5_c1_1 at min EL3: AFSR1_EL3 + REG_ESR_EL3 =62096 /* 62096 */, // S3_6_c5_c2_0 at min EL3: ESR_EL3 + REG_TFSR_EL3 =62128 /* 62128 */, + REG_FAR_EL3 =62208 /* 62208 */, // S3_6_c6_c0_0 at min EL3: FAR_EL3 + REG_MAIR_EL3 =62736 /* 62736 */, // S3_6_c10_c2_0 at min EL3: MAIR_EL3 + REG_AMAIR_EL3 =62744 /* 62744 */, // S3_6_c10_c3_0 at min EL3: AMAIR_EL3 + REG_MPAM3_EL3 =62760 /* 62760 */, + REG_VBAR_EL3 =62976 /* 62976 */, // S3_6_c12_c0_0 at min EL3: VBAR_EL3 + REG_RVBAR_EL3 =62977 /* 62977 */, // S3_6_c12_c0_1 at min EL3: RVBAR_EL3 + REG_RMR_EL3 =62978 /* 62978 */, // S3_6_c12_c0_2 at min EL3: RMR_EL3 + REG_ICC_CTLR_EL3 =63076 /* 63076 */, + REG_ICC_SRE_EL3 =63077 /* 63077 */, + REG_ICC_IGRPEN1_EL3 =63079 /* 63079 */, + REG_TPIDR_EL3 =63106 /* 63106 */, // S3_6_c13_c0_2 at min EL3: TPIDR_EL3 + REG_SCXTNUM_EL3 =63111 /* 63111 */, + REG_MMU_ERR_STS =63360 /* 63360 */, // S3_6_c15_c0_0 at min EL1: MMU_ERR_STS + REG_AFSR1_GL21 =63361 /* 63361 */, // S3_6_c15_c0_1 at min EL1: AFSR1_GL21 + REG_AFSR1_GL2 =63362 /* 63362 */, // S3_6_c15_c0_2 at min EL2: AFSR1_GL2 + REG_AFSR1_GL12 =63363 /* 63363 */, // S3_6_c15_c0_3 at min EL2: AFSR1_GL12 + REG_BP_OBJC_ADR_EL1 =63364 /* 63364 */, // S3_6_c15_c0_4 at min EL1: BP_OBJC_ADR_EL1 + REG_BP_OBJC_CTL_EL1 =63365 /* 63365 */, // S3_6_c15_c0_5 at min EL1: BP_OBJC_CTL_EL1 + REG_SP_GL11_GL21 =63366 /* 63366 */, // S3_6_c15_c0_6 at min EL1: SP_GL11_GL21 + REG_MMU_SESR_EL2 =63367 /* 63367 */, // S3_6_c15_c0_7 at min EL2: MMU_SESR_EL2 + REG_SPRR_CONFIG_EL21 =63368 /* 63368 */, // S3_6_c15_c1_0 at min EL1: SPRR_CONFIG_EL21 + REG_HPFAR_GL2 =63369 /* 63369 */, // S3_6_c15_c1_1 at min EL2: HPFAR_GL2 + REG_GXF_CONFIG_EL21 =63370 /* 63370 */, // S3_6_c15_c1_2 at min EL1: GXF_CONFIG_EL21 + REG_SPRR_AMRANGE_EL1 =63371 /* 63371 */, // S3_6_c15_c1_3 at min EL1: SPRR_AMRANGE_EL1 + REG_GXF_CONFIG_EL2 =63372 /* 63372 */, // S3_6_c15_c1_4 at min EL2: GXF_CONFIG_EL2 + REG_SPRR_UPERM_EL02 =63373 /* 63373 */, // S3_6_c15_c1_5 at min EL1: SPRR_UPERM_EL02 + REG_SPRR_PPERM_EL21 =63374 /* 63374 */, // S3_6_c15_c1_6 at min EL1: SPRR_PPERM_EL21 + REG_SPRR_PPERM_EL2 =63375 /* 63375 */, // S3_6_c15_c1_7 at min EL2: SPRR_PPERM_EL2 + REG_APGAKEYLO_EL12 =63377 /* 63377 */, // S3_6_c15_c2_1 at min EL2: APGAKeyLo_EL12 + REG_APGAKEYHI_EL12 =63378 /* 63378 */, // S3_6_c15_c2_2 at min EL2: APGAKeyHi_EL12 + REG_KERNKEYLO_EL12 =63379 /* 63379 */, // S3_6_c15_c2_3 at min EL2: KERNKEYLo_EL12 + REG_KERNKEYHI_EL12 =63380 /* 63380 */, // S3_6_c15_c2_4 at min EL2: KERNKEYHi_EL12 + REG_AFPCR_EL0 =63381 /* 63381 */, // S3_6_c15_c2_5 at min EL1: AFPCR_EL0 + REG_SP_GL22 =63382 /* 63382 */, // S3_6_c15_c2_6 at min EL2: SP_GL22 + REG_AMXIDR_EL1 =63383 /* 63383 */, // S3_6_c15_c2_7 at min EL1: AMXIDR_EL1 + REG_SPRR_UMPRR_EL1 =63384 /* 63384 */, // S3_6_c15_c3_0 at min EL1: SPRR_UMPRR_EL1 + REG_SPRR_PMPRR_EL21 =63385 /* 63385 */, // S3_6_c15_c3_1 at min EL1: SPRR_PMPRR_EL21 + REG_SPRR_PMPRR_EL2 =63386 /* 63386 */, // S3_6_c15_c3_2 at min EL2: SPRR_PMPRR_EL2 + REG_SPRR_UPERM_SH01_EL1 =63387 /* 63387 */, // S3_6_c15_c3_3 at min EL1: SPRR_UPERM_SH01_EL1 + REG_SPRR_UPERM_SH02_EL1 =63388 /* 63388 */, // S3_6_c15_c3_4 at min EL1: SPRR_UPERM_SH02_EL1 + REG_SPRR_UPERM_SH03_EL1 =63389 /* 63389 */, // S3_6_c15_c3_5 at min EL1: SPRR_UPERM_SH03_EL1 + REG_SPRR_UPERM_SH04_EL1 =63390 /* 63390 */, // S3_6_c15_c3_6 at min EL1: SPRR_UPERM_SH04_EL1 + REG_SPRR_UPERM_SH05_EL1 =63391 /* 63391 */, // S3_6_c15_c3_7 at min EL1: SPRR_UPERM_SH05_EL1 + REG_SPRR_UPERM_SH06_EL1 =63392 /* 63392 */, // S3_6_c15_c4_0 at min EL1: SPRR_UPERM_SH06_EL1 + REG_SPRR_UPERM_SH07_EL1 =63393 /* 63393 */, // S3_6_c15_c4_1 at min EL1: SPRR_UPERM_SH07_EL1 + REG_SPRR_PPERM_SH01_EL21 =63394 /* 63394 */, // S3_6_c15_c4_2 at min EL1: SPRR_PPERM_SH01_EL21 + REG_SPRR_PPERM_SH02_EL21 =63395 /* 63395 */, // S3_6_c15_c4_3 at min EL1: SPRR_PPERM_SH02_EL21 + REG_SPRR_PPERM_SH03_EL21 =63396 /* 63396 */, // S3_6_c15_c4_4 at min EL1: SPRR_PPERM_SH03_EL21 + REG_SPRR_PPERM_SH04_EL21 =63397 /* 63397 */, // S3_6_c15_c4_5 at min EL1: SPRR_PPERM_SH04_EL21 + REG_SPRR_PPERM_SH05_EL21 =63398 /* 63398 */, // S3_6_c15_c4_6 at min EL1: SPRR_PPERM_SH05_EL21 + REG_SPRR_PPERM_SH06_EL21 =63399 /* 63399 */, // S3_6_c15_c4_7 at min EL1: SPRR_PPERM_SH06_EL21 + REG_SPRR_PPERM_SH07_EL21 =63400 /* 63400 */, // S3_6_c15_c5_0 at min EL1: SPRR_PPERM_SH07_EL21 + REG_SPRR_PPERM_SH01_EL2 =63401 /* 63401 */, // S3_6_c15_c5_1 at min EL2: SPRR_PPERM_SH01_EL2 + REG_SPRR_PPERM_SH02_EL2 =63402 /* 63402 */, // S3_6_c15_c5_2 at min EL2: SPRR_PPERM_SH02_EL2 + REG_SPRR_PPERM_SH03_EL2 =63403 /* 63403 */, // S3_6_c15_c5_3 at min EL2: SPRR_PPERM_SH03_EL2 + REG_SPRR_PPERM_SH04_EL2 =63404 /* 63404 */, // S3_6_c15_c5_4 at min EL2: SPRR_PPERM_SH04_EL2 + REG_SPRR_PPERM_SH05_EL2 =63405 /* 63405 */, // S3_6_c15_c5_5 at min EL2: SPRR_PPERM_SH05_EL2 + REG_SPRR_PPERM_SH06_EL2 =63406 /* 63406 */, // S3_6_c15_c5_6 at min EL2: SPRR_PPERM_SH06_EL2 + REG_SPRR_PPERM_SH07_EL2 =63407 /* 63407 */, // S3_6_c15_c5_7 at min EL2: SPRR_PPERM_SH07_EL2 + REG_SPRR_PMPRR_EL12 =63408 /* 63408 */, // S3_6_c15_c6_0 at min EL2: SPRR_PMPRR_EL12 + REG_SPRR_PPERM_SH01_EL12 =63409 /* 63409 */, // S3_6_c15_c6_1 at min EL2: SPRR_PPERM_SH01_EL12 + REG_SPRR_PPERM_SH02_EL12 =63410 /* 63410 */, // S3_6_c15_c6_2 at min EL2: SPRR_PPERM_SH02_EL12 + REG_SPRR_PPERM_SH03_EL12 =63411 /* 63411 */, // S3_6_c15_c6_3 at min EL2: SPRR_PPERM_SH03_EL12 + REG_SPRR_PPERM_SH04_EL12 =63412 /* 63412 */, // S3_6_c15_c6_4 at min EL2: SPRR_PPERM_SH04_EL12 + REG_SPRR_PPERM_SH05_EL12 =63413 /* 63413 */, // S3_6_c15_c6_5 at min EL2: SPRR_PPERM_SH05_EL12 + REG_SPRR_PPERM_SH06_EL12 =63414 /* 63414 */, // S3_6_c15_c6_6 at min EL2: SPRR_PPERM_SH06_EL12 + REG_SPRR_PPERM_SH07_EL12 =63415 /* 63415 */, // S3_6_c15_c6_7 at min EL2: SPRR_PPERM_SH07_EL12 + REG_APIAKEYLO_EL12 =63416 /* 63416 */, // S3_6_c15_c7_0 at min EL2: APIAKeyLo_EL12 + REG_APIAKEYHI_EL12 =63417 /* 63417 */, // S3_6_c15_c7_1 at min EL2: APIAKeyHi_EL12 + REG_APIBKEYLO_EL12 =63418 /* 63418 */, // S3_6_c15_c7_2 at min EL2: APIBKeyLo_EL12 + REG_APIBKEYHI_EL12 =63419 /* 63419 */, // S3_6_c15_c7_3 at min EL2: APIBKeyHi_EL12 + REG_APDAKEYLO_EL12 =63420 /* 63420 */, // S3_6_c15_c7_4 at min EL2: APDAKeyLo_EL12 + REG_APDAKEYHI_EL12 =63421 /* 63421 */, // S3_6_c15_c7_5 at min EL2: APDAKeyHi_EL12 + REG_APDBKEYLO_EL12 =63422 /* 63422 */, // S3_6_c15_c7_6 at min EL2: APDBKeyLo_EL12 + REG_APDBKEYHI_EL12 =63423 /* 63423 */, // S3_6_c15_c7_7 at min EL2: APDBKeyHi_EL12 + REG_CURRENTG =63424 /* 63424 */, // S3_6_c15_c8_0 at min EL1: CurrentG + REG_GXF_ENTRY_EL21 =63425 /* 63425 */, // S3_6_c15_c8_1 at min EL1: GXF_ENTRY_EL21 + REG_GXF_PABENTRY_EL21 =63426 /* 63426 */, // S3_6_c15_c8_2 at min EL1: GXF_PABENTRY_EL21 + REG_ASPSR_EL21 =63427 /* 63427 */, // S3_6_c15_c8_3 at min EL1: ASPSR_EL21 + REG_ADSPSR_EL0 =63428 /* 63428 */, // S3_6_c15_c8_4 at min EL1: ADSPSR_EL0 + REG_PMCR1_GL2 =63429 /* 63429 */, // S3_6_c15_c8_5 at min EL2: PMCR1_GL2 + REG_ASPSR_NV_EL21 =63430 /* 63430 */, // S3_6_c15_c8_6 at min EL1: ASPSR_NV_EL21 + REG_PMCR1_GL21 =63431 /* 63431 */, // S3_6_c15_c8_7 at min EL1: PMCR1_GL21 + REG_VBAR_GL12 =63434 /* 63434 */, // S3_6_c15_c9_2 at min EL2: VBAR_GL12 + REG_SPSR_GL12 =63435 /* 63435 */, // S3_6_c15_c9_3 at min EL2: SPSR_GL12 + REG_ASPSR_GL12 =63436 /* 63436 */, // S3_6_c15_c9_4 at min EL2: ASPSR_GL12 + REG_ESR_GL12 =63437 /* 63437 */, // S3_6_c15_c9_5 at min EL2: ESR_GL12 + REG_ELR_GL12 =63438 /* 63438 */, // S3_6_c15_c9_6 at min EL2: ELR_GL12 + REG_FAR_GL12 =63439 /* 63439 */, // S3_6_c15_c9_7 at min EL2: FAR_GL12 + REG_SP_GL1 =63440 /* 63440 */, // S3_6_c15_c10_0 at min EL1: SP_GL1 + REG_TPIDR_GL1 =63441 /* 63441 */, // S3_6_c15_c10_1 at min EL1: TPIDR_GL1 + REG_VBAR_GL21 =63442 /* 63442 */, // S3_6_c15_c10_2 at min EL1: VBAR_GL21 + REG_SPSR_GL21 =63443 /* 63443 */, // S3_6_c15_c10_3 at min EL1: SPSR_GL21 + REG_ASPSR_GL21 =63444 /* 63444 */, // S3_6_c15_c10_4 at min EL1: ASPSR_GL21 + REG_ESR_GL21 =63445 /* 63445 */, // S3_6_c15_c10_5 at min EL1: ESR_GL21 + REG_ELR_GL21 =63446 /* 63446 */, // S3_6_c15_c10_6 at min EL1: ELR_GL21 + REG_FAR_GL21 =63447 /* 63447 */, // S3_6_c15_c10_7 at min EL1: FAR_GL21 + REG_SP_GL2 =63448 /* 63448 */, // S3_6_c15_c11_0 at min EL2: SP_GL2 + REG_TPIDR_GL2 =63449 /* 63449 */, // S3_6_c15_c11_1 at min EL2: TPIDR_GL2 + REG_VBAR_GL2 =63450 /* 63450 */, // S3_6_c15_c11_2 at min EL2: VBAR_GL2 + REG_SPSR_GL2 =63451 /* 63451 */, // S3_6_c15_c11_3 at min EL2: SPSR_GL2 + REG_ASPSR_GL2 =63452 /* 63452 */, // S3_6_c15_c11_4 at min EL2: ASPSR_GL2 + REG_ESR_GL2 =63453 /* 63453 */, // S3_6_c15_c11_5 at min EL2: ESR_GL2 + REG_ELR_GL2 =63454 /* 63454 */, // S3_6_c15_c11_6 at min EL2: ELR_GL2 + REG_FAR_GL2 =63455 /* 63455 */, // S3_6_c15_c11_7 at min EL2: FAR_GL2 + REG_GXF_ENTRY_EL2 =63456 /* 63456 */, // S3_6_c15_c12_0 at min EL2: GXF_ENTRY_EL2 + REG_GXF_PABENTRY_EL2 =63457 /* 63457 */, // S3_6_c15_c12_1 at min EL2: GXF_PABENTRY_EL2 + REG_APCTL_EL2 =63458 /* 63458 */, // S3_6_c15_c12_2 at min EL2: APCTL_EL2 + REG_APSTS_EL2 =63459 /* 63459 */, // S3_6_c15_c12_3 at min EL2: APSTS_EL2 + REG_APSTS_NV1_EL1 =63460 /* 63460 */, // S3_6_c15_c12_4 at min EL1: APSTS_NV1_EL1 + REG_KERNKEYLO_NV_EL21 =63461 /* 63461 */, // S3_6_c15_c12_5 at min EL1: KERNKEYLo_NV_EL21 + REG_KERNKEYHI_NV_EL21 =63462 /* 63462 */, // S3_6_c15_c12_6 at min EL1: KERNKEYHi_NV_EL21 + REG_ASPSR_EL12 =63463 /* 63463 */, // S3_6_c15_c12_7 at min EL2: ASPSR_EL12 + REG_APIAKEYLO_NV_EL21 =63464 /* 63464 */, // S3_6_c15_c13_0 at min EL1: APIAKeyLo_NV_EL21 + REG_APIAKEYHI_NV_EL21 =63465 /* 63465 */, // S3_6_c15_c13_1 at min EL1: APIAKeyHi_NV_EL21 + REG_APIBKEYLO_NV_EL21 =63466 /* 63466 */, // S3_6_c15_c13_2 at min EL1: APIBKeyLo_NV_EL21 + REG_APIBKEYHI_NV_EL21 =63467 /* 63467 */, // S3_6_c15_c13_3 at min EL1: APIBKeyHi_NV_EL21 + REG_APDAKEYLO_NV_EL21 =63468 /* 63468 */, // S3_6_c15_c13_4 at min EL1: APDAKeyLo_NV_EL21 + REG_APDAKEYHI_NV_EL21 =63469 /* 63469 */, // S3_6_c15_c13_5 at min EL1: APDAKeyHi_NV_EL21 + REG_APDBKEYLO_NV_EL21 =63470 /* 63470 */, // S3_6_c15_c13_6 at min EL1: APDBKeyLo_NV_EL21 + REG_APDBKEYHI_NV_EL21 =63471 /* 63471 */, // S3_6_c15_c13_7 at min EL1: APDBKeyHi_NV_EL21 + REG_APGAKEYLO_NV_EL21 =63472 /* 63472 */, // S3_6_c15_c14_0 at min EL1: APGAKeyLo_NV_EL21 + REG_APGAKEYHI_NV_EL21 =63473 /* 63473 */, // S3_6_c15_c14_1 at min EL1: APGAKeyHi_NV_EL21 + REG_SPRR_CONFIG_EL2 =63474 /* 63474 */, // S3_6_c15_c14_2 at min EL2: SPRR_CONFIG_EL2 + REG_SPRR_AMRANGE_EL2 =63475 /* 63475 */, // S3_6_c15_c14_3 at min EL2: SPRR_AMRANGE_EL2 + REG_VMKEYLO_EL2 =63476 /* 63476 */, // S3_6_c15_c14_4 at min EL2: VMKEYLo_EL2 + REG_VMKEYHI_EL2 =63477 /* 63477 */, // S3_6_c15_c14_5 at min EL2: VMKEYHi_EL2 + REG_MMU_SFAR_EL2 =63478 /* 63478 */, // S3_6_c15_c14_6 at min EL2: MMU_SFAR_EL2 + REG_APSTS_EL12 =63479 /* 63479 */, // S3_6_c15_c14_7 at min EL2: APSTS_EL12 + REG_APCTL_EL12 =63480 /* 63480 */, // S3_6_c15_c15_0 at min EL2: APCTL_EL12 + REG_GXF_CONFIG_EL12 =63481 /* 63481 */, // S3_6_c15_c15_1 at min EL2: GXF_CONFIG_EL12 + REG_GXF_ENTRY_EL12 =63482 /* 63482 */, // S3_6_c15_c15_2 at min EL2: GXF_ENTRY_EL12 + REG_GXF_PABENTRY_EL12 =63483 /* 63483 */, // S3_6_c15_c15_3 at min EL2: GXF_PABENTRY_EL12 + REG_SPRR_CONFIG_EL12 =63484 /* 63484 */, // S3_6_c15_c15_4 at min EL2: SPRR_CONFIG_EL12 + REG_SPRR_AMRANGE_EL12 =63485 /* 63485 */, // S3_6_c15_c15_5 at min EL2: SPRR_AMRANGE_EL12 + REG_MMU_SESR_CTL_EL2 =63486 /* 63486 */, // S3_6_c15_c15_6 at min EL2: MMU_SESR_CTL_EL2 + REG_SPRR_PPERM_EL12 =63487 /* 63487 */, // S3_6_c15_c15_7 at min EL2: SPRR_PPERM_EL12 + REG_CNTPS_TVAL_EL1 =65296 /* 65296 */, // S3_7_c14_c2_0 at min EL1: CNTPS_TVAL_EL1 + REG_CNTPS_CTL_EL1 =65297 /* 65297 */, // S3_7_c14_c2_1 at min EL1: CNTPS_CTL_EL1 + REG_CNTPS_CVAL_EL1 =65298 /* 65298 */, // S3_7_c14_c2_2 at min EL1: CNTPS_CVAL_EL1 + REG_PSTATE_SPSEL =65299 /* 65299 */, // (op0,op1,crn,crm,op2)=(0,0,4,9,5) doesn't map to [SYSREG_NONE+1, SYSREG_END) + REG_PWRDNSAVE0 =65408 /* 65408 */, // S3_7_c15_c0_0 at min EL1: PWRDNSAVE0 + REG_NRG_ACC_CTL =65409 /* 65409 */, // S3_7_c15_c0_1 at min EL1: NRG_ACC_CTL + REG_AON_CNT0 =65410 /* 65410 */, // S3_7_c15_c0_2 at min EL1: AON_CNT0 + REG_CPU_CNT0 =65411 /* 65411 */, // S3_7_c15_c0_3 at min EL1: CPU_CNT0 + REG_UPMCR0_EL1 =65412 /* 65412 */, // S3_7_c15_c0_4 at min EL1: UPMCR0_EL1 + REG_UPMC8 =65413 /* 65413 */, // S3_7_c15_c0_5 at min EL1: UPMC8 + REG_AON_CNT8 =65414 /* 65414 */, // S3_7_c15_c0_6 at min EL1: AON_CNT8 + REG_PWRDNSAVE1 =65416 /* 65416 */, // S3_7_c15_c1_0 at min EL1: PWRDNSAVE1 + REG_CORE_NRG_ACC_DAT =65417 /* 65417 */, // S3_7_c15_c1_1 at min EL1: CORE_NRG_ACC_DAT + REG_AON_CNT_CTL0 =65418 /* 65418 */, // S3_7_c15_c1_2 at min EL1: AON_CNT_CTL0 + REG_CPU_CNT_CTL0 =65419 /* 65419 */, // S3_7_c15_c1_3 at min EL1: CPU_CNT_CTL0 + REG_UPMESR0_EL1 =65420 /* 65420 */, // S3_7_c15_c1_4 at min EL1: UPMESR0_EL1 + REG_UPMC9 =65421 /* 65421 */, // S3_7_c15_c1_5 at min EL1: UPMC9 + REG_AON_CNT_CTL8 =65422 /* 65422 */, // S3_7_c15_c1_6 at min EL1: AON_CNT_CTL8 + REG_ACC_PWR_DN_SAVE =65424 /* 65424 */, // S3_7_c15_c2_0 at min EL1: ACC_PWR_DN_SAVE + REG_CPM_NRG_ACC_DAT =65425 /* 65425 */, // S3_7_c15_c2_1 at min EL1: CPM_NRG_ACC_DAT + REG_AON_CNT1 =65426 /* 65426 */, // S3_7_c15_c2_2 at min EL1: AON_CNT1 + REG_CPU_CNT1 =65427 /* 65427 */, // S3_7_c15_c2_3 at min EL1: CPU_CNT1 + REG_UPMSWCTRL_EL1 =65428 /* 65428 */, // S3_7_c15_c2_4 at min EL1: UPMSWCTRL_EL1 + REG_UPMC10 =65429 /* 65429 */, // S3_7_c15_c2_5 at min EL1: UPMC10 + REG_AON_CNT9 =65430 /* 65430 */, // S3_7_c15_c2_6 at min EL1: AON_CNT9 + REG_CORE_SRM_NRG_ACC_DAT =65433 /* 65433 */, // S3_7_c15_c3_1 at min EL1: CORE_SRM_NRG_ACC_DAT + REG_AON_CNT_CTL1 =65434 /* 65434 */, // S3_7_c15_c3_2 at min EL1: AON_CNT_CTL1 + REG_CPU_CNT_CTL1 =65435 /* 65435 */, // S3_7_c15_c3_3 at min EL1: CPU_CNT_CTL1 + REG_UPMECM0_EL1 =65436 /* 65436 */, // S3_7_c15_c3_4 at min EL1: UPMECM0_EL1 + REG_UPMC11 =65437 /* 65437 */, // S3_7_c15_c3_5 at min EL1: UPMC11 + REG_AON_CNT_CTL9 =65438 /* 65438 */, // S3_7_c15_c3_6 at min EL1: AON_CNT_CTL9 + REG_AON_CNT_CTL =65440 /* 65440 */, // S3_7_c15_c4_0 at min EL1: AON_CNT_CTL + REG_CPM_SRM_NRG_ACC_DAT =65441 /* 65441 */, // S3_7_c15_c4_1 at min EL1: CPM_SRM_NRG_ACC_DAT + REG_AON_CNT2 =65442 /* 65442 */, // S3_7_c15_c4_2 at min EL1: AON_CNT2 + REG_CPU_CNT2 =65443 /* 65443 */, // S3_7_c15_c4_3 at min EL1: CPU_CNT2 + REG_UPMECM1_EL1 =65444 /* 65444 */, // S3_7_c15_c4_4 at min EL1: UPMECM1_EL1 + REG_UPMC12 =65445 /* 65445 */, // S3_7_c15_c4_5 at min EL1: UPMC12 + REG_AON_CNT10 =65446 /* 65446 */, // S3_7_c15_c4_6 at min EL1: AON_CNT10 + REG_CPU_CNT_CTL =65448 /* 65448 */, // S3_7_c15_c5_0 at min EL1: CPU_CNT_CTL + REG_AON_CNT_CTL2 =65450 /* 65450 */, // S3_7_c15_c5_2 at min EL1: AON_CNT_CTL2 + REG_CPU_CNT_CTL2 =65451 /* 65451 */, // S3_7_c15_c5_3 at min EL1: CPU_CNT_CTL2 + REG_UPMPCM_EL1 =65452 /* 65452 */, // S3_7_c15_c5_4 at min EL1: UPMPCM_EL1 + REG_UPMC13 =65453 /* 65453 */, // S3_7_c15_c5_5 at min EL1: UPMC13 + REG_AON_CNT_CTL10 =65454 /* 65454 */, // S3_7_c15_c5_6 at min EL1: AON_CNT_CTL10 + REG_AON_CNT3 =65458 /* 65458 */, // S3_7_c15_c6_2 at min EL1: AON_CNT3 + REG_CPU_CNT3 =65459 /* 65459 */, // S3_7_c15_c6_3 at min EL1: CPU_CNT3 + REG_UPMSR_EL1 =65460 /* 65460 */, // S3_7_c15_c6_4 at min EL1: UPMSR_EL1 + REG_UPMC14 =65461 /* 65461 */, // S3_7_c15_c6_5 at min EL1: UPMC14 + REG_AON_CNT11 =65462 /* 65462 */, // S3_7_c15_c6_6 at min EL1: AON_CNT11 + REG_AON_CNT_CTL3 =65466 /* 65466 */, // S3_7_c15_c7_2 at min EL1: AON_CNT_CTL3 + REG_CPU_CNT_CTL3 =65467 /* 65467 */, // S3_7_c15_c7_3 at min EL1: CPU_CNT_CTL3 + REG_UPMC0 =65468 /* 65468 */, // S3_7_c15_c7_4 at min EL1: UPMC0 + REG_UPMC15 =65469 /* 65469 */, // S3_7_c15_c7_5 at min EL1: UPMC15 + REG_AON_CNT_CTL11 =65470 /* 65470 */, // S3_7_c15_c7_6 at min EL1: AON_CNT_CTL11 + REG_AON_CNT4 =65474 /* 65474 */, // S3_7_c15_c8_2 at min EL1: AON_CNT4 + REG_CPU_CNT4 =65475 /* 65475 */, // S3_7_c15_c8_3 at min EL1: CPU_CNT4 + REG_UPMC1 =65476 /* 65476 */, // S3_7_c15_c8_4 at min EL1: UPMC1 + REG_UPMECM2_EL1 =65477 /* 65477 */, // S3_7_c15_c8_5 at min EL1: UPMECM2_EL1 + REG_AON_CNT_CTL4 =65482 /* 65482 */, // S3_7_c15_c9_2 at min EL1: AON_CNT_CTL4 + REG_CPU_CNT_CTL4 =65483 /* 65483 */, // S3_7_c15_c9_3 at min EL1: CPU_CNT_CTL4 + REG_UPMC2 =65484 /* 65484 */, // S3_7_c15_c9_4 at min EL1: UPMC2 + REG_UPMECM3_EL1 =65485 /* 65485 */, // S3_7_c15_c9_5 at min EL1: UPMECM3_EL1 + REG_AON_CNT5 =65490 /* 65490 */, // S3_7_c15_c10_2 at min EL1: AON_CNT5 + REG_CPU_CNT5 =65491 /* 65491 */, // S3_7_c15_c10_3 at min EL1: CPU_CNT5 + REG_UPMC3 =65492 /* 65492 */, // S3_7_c15_c10_4 at min EL1: UPMC3 + REG_UPMCR1_EL1 =65493 /* 65493 */, // S3_7_c15_c10_5 at min EL1: UPMCR1_EL1 + REG_AON_CNT_CTL5 =65498 /* 65498 */, // S3_7_c15_c11_2 at min EL1: AON_CNT_CTL5 + REG_CPU_CNT_CTL5 =65499 /* 65499 */, // S3_7_c15_c11_3 at min EL1: CPU_CNT_CTL5 + REG_UPMC4 =65500 /* 65500 */, // S3_7_c15_c11_4 at min EL1: UPMC4 + REG_UPMESR1_EL1 =65501 /* 65501 */, // S3_7_c15_c11_5 at min EL1: UPMESR1_EL1 + REG_AON_CNT6 =65506 /* 65506 */, // S3_7_c15_c12_2 at min EL1: AON_CNT6 + REG_CPU_CNT6 =65507 /* 65507 */, // S3_7_c15_c12_3 at min EL1: CPU_CNT6 + REG_UPMC5 =65508 /* 65508 */, // S3_7_c15_c12_4 at min EL1: UPMC5 + REG_AON_CNT_CTL6 =65514 /* 65514 */, // S3_7_c15_c13_2 at min EL1: AON_CNT_CTL6 + REG_CPU_CNT_CTL6 =65515 /* 65515 */, // S3_7_c15_c13_3 at min EL1: CPU_CNT_CTL6 + REG_UPMC6 =65516 /* 65516 */, // S3_7_c15_c13_4 at min EL1: UPMC6 + REG_AON_CNT7 =65522 /* 65522 */, // S3_7_c15_c14_2 at min EL1: AON_CNT7 + REG_CPU_CNT7 =65523 /* 65523 */, // S3_7_c15_c14_3 at min EL1: CPU_CNT7 + REG_UPMC7 =65524 /* 65524 */, // S3_7_c15_c14_4 at min EL1: UPMC7 + REG_AON_CNT_CTL7 =65530 /* 65530 */, // S3_7_c15_c15_2 at min EL1: AON_CNT_CTL7 + REG_CPU_CNT_CTL7 =65531 /* 65531 */, // S3_7_c15_c15_3 at min EL1: CPU_CNT_CTL7 + SYSREG_END=65532 +}; +#ifdef __cplusplus +extern "C" { +#endif +bool has_system_register_name(enum SystemReg); +#ifdef __cplusplus +} +#endif diff --git a/arch/arm64/il.cpp b/arch/arm64/il.cpp index 977b57d5..9d99a7ff 100644 --- a/arch/arm64/il.cpp +++ b/arch/arm64/il.cpp @@ -5,7 +5,7 @@ #include "il.h" #include "neon_intrinsics.h" -#include "sysregs.h" +#include "sysregs_gen.h" using namespace BinaryNinja; @@ -1184,6 +1184,16 @@ bool GetLowLevelILForInstruction( switch (instr.operation) { case ARM64_ADD: + switch (instr.encoding) + { + case ENC_ADD_Z_P_ZZ_: + case ENC_ADD_Z_ZI_: + case ENC_ADD_Z_ZZ_: + if (!preferIntrinsics()) + il.AddInstruction(il.Unimplemented()); + return true; + default: break; + } case ARM64_ADDS: il.AddInstruction( ILSETREG_O(operand1, il.Add(REGSZ_O(operand1), ILREG_O(operand2), @@ -1197,26 +1207,100 @@ bool GetLowLevelILForInstruction( break; case ARM64_AND: case ARM64_ANDS: + switch (instr.encoding) + { + case ENC_AND_P_P_PP_Z: + case ENC_AND_Z_P_ZZ_: + case ENC_AND_Z_ZI_: + case ENC_AND_Z_ZZ_: + case ENC_ANDS_P_P_PP_Z: + if (!preferIntrinsics()) + il.AddInstruction(il.Unimplemented()); + return true; + default: break; + } il.AddInstruction( ILSETREG_O(operand1, il.And(REGSZ_O(operand1), ILREG_O(operand2), ReadILOperand(il, operand3, REGSZ_O(operand1)), SETFLAGS))); break; case ARM64_ADR: + switch (instr.encoding) + { + case ENC_ADR_Z_AZ_SD_SAME_SCALED: + case ENC_ADR_Z_AZ_D_S32_SCALED: + case ENC_ADR_Z_AZ_D_U32_SCALED: + if (!preferIntrinsics()) + il.AddInstruction(il.Unimplemented()); + return true; + default: break; + } case ARM64_ADRP: il.AddInstruction(ILSETREG_O(operand1, il.ConstPointer(REGSZ_O(operand1), IMM_O(operand2)))); break; case ARM64_ASR: + switch (instr.encoding) + { + case ENC_ASR_Z_P_ZI_: + case ENC_ASR_Z_P_ZW_: + case ENC_ASR_Z_P_ZZ_: + case ENC_ASR_Z_ZI_: + case ENC_ASR_Z_ZW_: + if (!preferIntrinsics()) + il.AddInstruction(il.Unimplemented()); + return true; + default: break; + } il.AddInstruction(ILSETREG_O(operand1, il.ArithShiftRight(REGSZ_O(operand2), ILREG_O(operand2), ReadILOperand(il, operand3, REGSZ_O(operand2))))); break; case ARM64_AESD: + switch (instr.encoding) + { + case ENC_AESD_Z_ZZ_: + if (!preferIntrinsics()) + il.AddInstruction(il.Unimplemented()); + return true; + default: break; + } il.AddInstruction(il.Intrinsic({RegisterOrFlag::Register(REG_O(operand1))}, ARM64_INTRIN_AESD, {ILREG_O(operand1), ILREG_O(operand2)})); break; case ARM64_AESE: + switch (instr.encoding) + { + case ENC_AESE_Z_ZZ_: + if (!preferIntrinsics()) + il.AddInstruction(il.Unimplemented()); + return true; + default: break; + } il.AddInstruction(il.Intrinsic({RegisterOrFlag::Register(REG_O(operand1))}, ARM64_INTRIN_AESE, {ILREG_O(operand1), ILREG_O(operand2)})); break; + case ARM64_AESIMC: + switch (instr.encoding) + { + case ENC_AESIMC_Z_Z_: + if (!preferIntrinsics()) + il.AddInstruction(il.Unimplemented()); + return true; + default: break; + } + il.AddInstruction(il.Intrinsic({RegisterOrFlag::Register(REG_O(operand1))}, ARM64_INTRIN_AESIMC, + {ILREG_O(operand1), ILREG_O(operand2)})); + break; + case ARM64_AESMC: + switch (instr.encoding) + { + case ENC_AESMC_Z_Z_: + if (!preferIntrinsics()) + il.AddInstruction(il.Unimplemented()); + return true; + default: break; + } + il.AddInstruction(il.Intrinsic({RegisterOrFlag::Register(REG_O(operand1))}, ARM64_INTRIN_AESMC, + {ILREG_O(operand1), ILREG_O(operand2)})); + break; case ARM64_BTI: il.AddInstruction(il.Intrinsic({}, ARM64_INTRIN_HINT_BTI, {})); break; @@ -1317,7 +1401,16 @@ bool GetLowLevelILForInstruction( return false; case ARM64_BIC: case ARM64_BICS: - switch (instr.encoding) { + switch (instr.encoding) + { + case ENC_BIC_AND_Z_ZI_: + case ENC_BIC_P_P_PP_Z: + case ENC_BIC_Z_P_ZZ_: + case ENC_BIC_Z_ZZ_: + case ENC_BICS_P_P_PP_Z: + if (!preferIntrinsics()) + il.AddInstruction(il.Unimplemented()); + return true; case ENC_BIC_ASIMDIMM_L_HL: case ENC_BIC_ASIMDIMM_L_SL: il.AddInstruction(ILSETREG_O(operand1, @@ -1512,8 +1605,9 @@ bool GetLowLevelILForInstruction( {RegisterOrFlag::Register(REG_O(operand1))}, ARM64_INTRIN_CLZ, {ILREG_O(operand2)})); break; case ARM64_DC: - il.AddInstruction( - il.Intrinsic({}, ARM64_INTRIN_DC, {ILREG_O(operand2)})); /* operand1 is <dc_op> */ + // il.AddInstruction( + // il.Intrinsic({}, ARM64_INTRIN_DC, {ILREG_O(operand2)})); /* operand1 is <dc_op> */ + il.AddInstruction(il.Intrinsic({}, ARM64_INTRIN_DC, {il.Const(4, operand1.immediate), ReadILOperand(il, operand2, 8)})); break; case ARM64_DMB: il.AddInstruction(il.Intrinsic({}, ARM64_INTRIN_DMB, {})); @@ -1522,11 +1616,30 @@ bool GetLowLevelILForInstruction( il.AddInstruction(il.Intrinsic({}, ARM64_INTRIN_DSB, {})); break; case ARM64_EON: + switch (instr.encoding) + { + case ENC_EON_EOR_Z_ZI_: + if (!preferIntrinsics()) + il.AddInstruction(il.Unimplemented()); + return true; + default: break; + } il.AddInstruction(ILSETREG_O( operand1, il.Xor(REGSZ_O(operand1), ILREG_O(operand2), il.Not(REGSZ_O(operand1), ReadILOperand(il, operand3, REGSZ_O(operand1)))))); break; case ARM64_EOR: + switch (instr.encoding) + { + case ENC_EOR_P_P_PP_Z: + case ENC_EOR_Z_P_ZZ_: + case ENC_EOR_Z_ZI_: + case ENC_EOR_Z_ZZ_: + if (!preferIntrinsics()) + il.AddInstruction(il.Unimplemented()); + return true; + default: break; + } il.AddInstruction(ILSETREG_O(operand1, il.Xor(REGSZ_O(operand1), ILREG_O(operand2), ReadILOperand(il, operand3, REGSZ_O(operand1))))); break; @@ -1601,8 +1714,8 @@ bool GetLowLevelILForInstruction( for (int i = 0; i < dst_n; ++i) il.AddInstruction(ILSETREG( dsts[i], il.FloatAdd(rsize, ILREG(srcs1[i]), ILREG(srcs2[i])))); + break; } - break; default: ABORT_LIFT; } @@ -1649,7 +1762,6 @@ bool GetLowLevelILForInstruction( break; } case ENC_FADDP_Z_P_ZZ_: - il.AddInstruction(il.Unimplemented()); default: ABORT_LIFT; } @@ -1781,8 +1893,9 @@ bool GetLowLevelILForInstruction( dsts[i], il.FloatDiv(rsize, ILREG(srcs1[i]), ILREG(srcs2[i])))); break; } + case ENC_FDIV_Z_P_ZZ_: default: - il.AddInstruction(il.Unimplemented()); + ABORT_LIFT; } break; case ARM64_FMOV: @@ -1855,7 +1968,7 @@ bool GetLowLevelILForInstruction( break; } default: - il.AddInstruction(il.Unimplemented()); + ABORT_LIFT; } break; case ARM64_FMUL: @@ -1906,7 +2019,7 @@ bool GetLowLevelILForInstruction( break; } default: - il.AddInstruction(il.Unimplemented()); + ABORT_LIFT; } break; case ARM64_FNEG: @@ -1936,7 +2049,7 @@ bool GetLowLevelILForInstruction( break; } default: - il.AddInstruction(il.Unimplemented()); + ABORT_LIFT; } break; case ARM64_FNMUL: @@ -1979,6 +2092,16 @@ bool GetLowLevelILForInstruction( case ARM64_LDRAB: SetPacAttr = true; case ARM64_LDR: + switch (instr.encoding) + { + case ENC_LDR_P_BI_: + case ENC_LDR_Z_BI_: + case ENC_LDR_ZA_RI_: + if (!preferIntrinsics()) + il.AddInstruction(il.Unimplemented()); + return true; + default: break; + } case ARM64_LDUR: LoadStoreOperand(il, true, instr.operands[0], instr.operands[1], 0); if (SetPacAttr) @@ -2131,8 +2254,39 @@ bool GetLowLevelILForInstruction( ILSETREG_O(operand1, il.LogicalShiftRight(REGSZ_O(operand2), ILREG_O(operand2), ReadILOperand(il, operand3, REGSZ_O(operand2))))); break; - case ARM64_DUP: case ARM64_MOV: + switch (instr.encoding) + { + case ENC_MOV_AND_P_P_PP_Z: + case ENC_MOV_CPY_Z_O_I_: + case ENC_MOV_CPY_Z_P_I_: + case ENC_MOV_CPY_Z_P_R_: + case ENC_MOV_CPY_Z_P_V_: + case ENC_MOV_DUP_Z_I_: + case ENC_MOV_DUP_Z_R_: + case ENC_MOV_DUP_Z_ZI_: + case ENC_MOV_DUP_Z_ZI_2: + case ENC_MOV_DUPM_Z_I_: + case ENC_MOV_MOVA_Z_P_RZA_B: + case ENC_MOV_MOVA_Z_P_RZA_H: + case ENC_MOV_MOVA_Z_P_RZA_W: + case ENC_MOV_MOVA_Z_P_RZA_D: + case ENC_MOV_MOVA_Z_P_RZA_Q: + case ENC_MOV_MOVA_ZA_P_RZ_B: + case ENC_MOV_MOVA_ZA_P_RZ_H: + case ENC_MOV_MOVA_ZA_P_RZ_W: + case ENC_MOV_MOVA_ZA_P_RZ_D: + case ENC_MOV_MOVA_ZA_P_RZ_Q: + case ENC_MOV_ORR_P_P_PP_Z: + case ENC_MOV_ORR_Z_ZZ_: + case ENC_MOV_SEL_P_P_PP_: + case ENC_MOV_SEL_Z_P_ZZ_: + if (!preferIntrinsics()) + il.AddInstruction(il.Unimplemented()); + return true; + default: break; + } + case ARM64_DUP: case ARM64_MOVN: case ARM64_UMOV: case ARM64_INS: @@ -2217,6 +2371,10 @@ bool GetLowLevelILForInstruction( } break; } + case ENC_DUP_P_P_PI_: + case ENC_DUP_Z_I_: + case ENC_DUP_Z_R_: + case ENC_DUP_Z_ZI_: default: // case ENC_MOVS_ORRS_P_P_PP_Z: // il.AddInstruction(il.Unimplemented()); @@ -2254,12 +2412,20 @@ bool GetLowLevelILForInstruction( case ARM64_MUL: switch (instr.encoding) { - case ENC_MUL_ASIMDSAME_ONLY: - case ENC_MUL_ASIMDELEM_R: - break; - default: - il.AddInstruction( - ILSETREG_O(operand1, il.Mult(REGSZ_O(operand1), ILREG_O(operand2), ILREG_O(operand3)))); + case ENC_MUL_Z_P_ZZ_: + case ENC_MUL_Z_ZI_: + case ENC_MUL_Z_ZZ_: + case ENC_MUL_Z_ZZI_H: + case ENC_MUL_Z_ZZI_S: + case ENC_MUL_Z_ZZI_D: + case ENC_MUL_ASIMDSAME_ONLY: + case ENC_MUL_ASIMDELEM_R: + if (!preferIntrinsics()) + il.AddInstruction(il.Unimplemented()); + return true; + default: + il.AddInstruction( + ILSETREG_O(operand1, il.Mult(REGSZ_O(operand1), ILREG_O(operand2), ILREG_O(operand3)))); } break; case ARM64_MADD: @@ -2268,20 +2434,19 @@ bool GetLowLevelILForInstruction( break; case ARM64_MRS: { - ExprId reg = ILREG_O(operand2); - const char* name = get_system_register_name((SystemReg)operand2.sysreg); + uint32_t reg = operand2.sysreg; + const char* name = get_system_register_name((SystemReg)(reg)); if (strlen(name) == 0) { - LogWarn("Unknown system register %d @ 0x%" PRIx64 - ": S%d_%d_c%d_c%d_%d, using generic system register instead\n", - operand2.sysreg, addr, operand2.implspec[0], operand2.implspec[1], operand2.implspec[2], - operand2.implspec[3], operand2.implspec[4]); - reg = il.Register(8, FAKEREG_SYSREG_UNKNOWN); + LogDebug("MSR Unknown system register %d @ 0x%" PRIx64 + ": S%d_%d_c%d_c%d_%d", + operand2.sysreg, addr, operand2.implspec[0], operand2.implspec[1], operand2.implspec[2], + operand2.implspec[3], operand2.implspec[4]); } il.AddInstruction( - il.Intrinsic({RegisterOrFlag::Register(REG_O(operand1))}, ARM64_INTRIN_MRS, {reg})); + il.Intrinsic({RegisterOrFlag::Register(REG_O(operand1))}, ARM64_INTRIN_MRS, {il.Const(4, reg)})); break; } case ARM64_MSUB: @@ -2297,26 +2462,23 @@ bool GetLowLevelILForInstruction( case ARM64_MSR: { uint32_t dst = operand1.sysreg; - const char* name = get_system_register_name((SystemReg)dst); + const char* name = get_system_register_name((SystemReg)(dst)); if (strlen(name) == 0) { - LogWarn("Unknown system register %d @ 0x%" PRIx64 - ": S%d_%d_c%d_c%d_%d, using generic system register instead\n", - dst, addr, operand1.implspec[0], operand1.implspec[1], operand1.implspec[2], + LogDebug("MSR Unknown system register %d @ 0x%" PRIx64 + ": S%d_%d_c%d_c%d_%d", + operand1.sysreg, addr, operand1.implspec[0], operand1.implspec[1], operand1.implspec[2], operand1.implspec[3], operand1.implspec[4]); - dst = FAKEREG_SYSREG_UNKNOWN; } switch (operand2.operandClass) { case IMM32: - il.AddInstruction(il.Intrinsic( - {RegisterOrFlag::Register(dst)}, ARM64_INTRIN_MSR, {il.Const(4, IMM_O(operand2))})); + il.AddInstruction(il.Intrinsic({}, ARM64_INTRIN_MSR, {il.Const(4, dst), il.Const(4, IMM_O(operand2))})); break; case REG: - il.AddInstruction( - il.Intrinsic({RegisterOrFlag::Register(dst)}, ARM64_INTRIN_MSR, {ILREG_O(operand2)})); + il.AddInstruction( il.Intrinsic({}, ARM64_INTRIN_MSR, {il.Const(4, dst), ILREG_O(operand2)})); break; default: LogError("unknown MSR operand class: %x\n", operand2.operandClass); @@ -2325,6 +2487,16 @@ bool GetLowLevelILForInstruction( break; } case ARM64_NEG: + switch (instr.encoding) + { + case ENC_NEG_ASISDMISC_R: + case ENC_NEG_ASIMDMISC_R: + case ENC_NEG_Z_P_Z_: + if (!preferIntrinsics()) + il.AddInstruction(il.Unimplemented()); + return true; + default: break; + } case ARM64_NEGS: il.AddInstruction(ILSETREG_O( operand1, il.Neg(REGSZ_O(operand1), ReadILOperand(il, instr.operands[1], REGSZ_O(operand1)), @@ -2452,6 +2624,15 @@ bool GetLowLevelILForInstruction( il.AddInstruction(il.Intrinsic({}, ARM64_INTRIN_PRFM, {ReadILOperand(il, operand2, 8)})); break; case ARM64_ORN: + switch (instr.encoding) + { + case ENC_ORN_ORR_Z_ZI_: + case ENC_ORN_P_P_PP_Z: + if (!preferIntrinsics()) + il.AddInstruction(il.Unimplemented()); + return true; + default: break; + } il.AddInstruction(ILSETREG_O( operand1, il.Or(REGSZ_O(operand1), ILREG_O(operand2), il.Not(REGSZ_O(operand1), ReadILOperand(il, operand3, REGSZ_O(operand1)))))); @@ -2480,9 +2661,12 @@ bool GetLowLevelILForInstruction( case ENC_ORR_ASIMDSAME_ONLY: // Let the neon intrinsic lifter take over. break; + case ENC_ORR_P_P_PP_Z: + case ENC_ORR_Z_P_ZZ_: + case ENC_ORR_Z_ZI_: + case ENC_ORR_Z_ZZ_: default: - il.AddInstruction(il.Unimplemented()); - break; + ABORT_LIFT; } break; case ARM64_PSB: @@ -2676,7 +2860,7 @@ bool GetLowLevelILForInstruction( case ENC_UCVTF_Z_P_Z_X2D: case ENC_UCVTF_Z_P_Z_X2FP16: case ENC_UCVTF_Z_P_Z_X2S: - break; + ABORT_LIFT; default: break; } @@ -2814,6 +2998,16 @@ bool GetLowLevelILForInstruction( LoadStoreOperandPair(il, false, instr.operands[0], instr.operands[1], instr.operands[2]); break; case ARM64_STR: + switch (instr.encoding) + { + case ENC_STR_P_BI_: + case ENC_STR_Z_BI_: + case ENC_STR_ZA_RI_: + if (!preferIntrinsics()) + il.AddInstruction(il.Unimplemented()); + return true; + default: break; + } case ARM64_STLR: case ARM64_STUR: case ARM64_STLUR: @@ -2832,6 +3026,16 @@ bool GetLowLevelILForInstruction( LoadStoreOperandSize(il, false, false, 2, instr.operands[0], instr.operands[1]); break; case ARM64_SUB: + switch (instr.encoding) + { + case ENC_SUB_Z_P_ZZ_: + case ENC_SUB_Z_ZI_: + case ENC_SUB_Z_ZZ_: + if (!preferIntrinsics()) + il.AddInstruction(il.Unimplemented()); + return true; + default: break; + } case ARM64_SUBS: il.AddInstruction(ILSETREG_O( operand1, il.Sub(REGSZ_O(operand1), ILREG_O(operand2), @@ -2890,14 +3094,38 @@ bool GetLowLevelILForInstruction( il.AddInstruction(il.Store(2, ILREG_O(operand3), il.LowPart(2, ILREG_O(operand1)))); break; case ARM64_SXTB: + switch (instr.encoding) + { + case ENC_SXTB_Z_P_Z_: + if (!preferIntrinsics()) + il.AddInstruction(il.Unimplemented()); + return true; + default: break; + } il.AddInstruction( ILSETREG_O(operand1, ExtractRegister(il, operand2, 0, 1, true, REGSZ_O(operand1)))); break; case ARM64_SXTH: + switch (instr.encoding) + { + case ENC_SXTH_Z_P_Z_: + if (!preferIntrinsics()) + il.AddInstruction(il.Unimplemented()); + return true; + default: break; + } il.AddInstruction( ILSETREG_O(operand1, ExtractRegister(il, operand2, 0, 2, true, REGSZ_O(operand1)))); break; case ARM64_SXTW: + switch (instr.encoding) + { + case ENC_SXTW_Z_P_Z_: + if (!preferIntrinsics()) + il.AddInstruction(il.Unimplemented()); + return true; + default: break; + } il.AddInstruction( ILSETREG_O(operand1, ExtractRegister(il, operand2, 0, 4, true, REGSZ_O(operand1)))); break; @@ -2917,6 +3145,15 @@ bool GetLowLevelILForInstruction( il.AddInstruction(il.And(REGSZ_O(operand1), ILREG_O(operand1), ReadILOperand(il, operand2, REGSZ_O(operand1)), SETFLAGS)); break; + case ARM64_TLBI: + if (operand2.operandClass == REG) + il.AddInstruction(il.Intrinsic({}, ARM64_INTRIN_TLBI_REG, {il.Const(4, operand1.immediate), ReadILOperand(il, operand2, 8)})); + else + il.AddInstruction(il.Intrinsic({}, ARM64_INTRIN_TLBI, {il.Const(4, operand1.immediate)})); + break; + case ARM64_AT: + il.AddInstruction(il.Intrinsic({}, ARM64_INTRIN_AT, {il.Const(4, operand1.immediate), ReadILOperand(il, operand2, 8)})); + break; case ARM64_UMADDL: il.AddInstruction(ILSETREG_O(operand1, il.Add(REGSZ_O(operand1), ILREG_O(operand4), @@ -3072,6 +3309,14 @@ bool GetLowLevelILForInstruction( il.Const(1, 64))))); break; case ARM64_UDIV: + switch (instr.encoding) + { + case ENC_UDIV_Z_P_ZZ_: + if (!preferIntrinsics()) + il.AddInstruction(il.Unimplemented()); + return true; + default: break; + } il.AddInstruction(ILSETREG_O( operand1, il.DivUnsigned(REGSZ_O(operand2), ILREG_O(operand2), ILREG_O(operand3)))); break; @@ -3104,10 +3349,26 @@ bool GetLowLevelILForInstruction( break; } case ARM64_UXTB: + switch (instr.encoding) + { + case ENC_UXTB_Z_P_Z_: + if (!preferIntrinsics()) + il.AddInstruction(il.Unimplemented()); + return true; + default: break; + } il.AddInstruction( ILSETREG_O(operand1, ExtractRegister(il, operand2, 0, 1, false, REGSZ_O(operand1)))); break; case ARM64_UXTH: + switch (instr.encoding) + { + case ENC_UXTH_Z_P_Z_: + if (!preferIntrinsics()) + il.AddInstruction(il.Unimplemented()); + return true; + default: break; + } il.AddInstruction( ILSETREG_O(operand1, ExtractRegister(il, operand2, 0, 2, false, REGSZ_O(operand1)))); break; diff --git a/arch/arm64/il.h b/arch/arm64/il.h index e345e395..6be7cfe7 100644 --- a/arch/arm64/il.h +++ b/arch/arm64/il.h @@ -1,6 +1,7 @@ #pragma once #include "binaryninjaapi.h" +#include "sysregs_enum.h" #include "disassembler/arm64dis.h" #include "disassembler/encodings_dec.h" #include "disassembler/encodings_fmt.h" @@ -77,6 +78,8 @@ enum Arm64Intrinsic : uint32_t ARM64_INTRIN_RBIT, ARM64_INTRIN_AESD, ARM64_INTRIN_AESE, + ARM64_INTRIN_AESIMC, + ARM64_INTRIN_AESMC, ARM64_INTRIN_LDXR, ARM64_INTRIN_LDXRB, ARM64_INTRIN_LDXRH, @@ -89,6 +92,9 @@ enum Arm64Intrinsic : uint32_t ARM64_INTRIN_STLXR, ARM64_INTRIN_STLXRB, ARM64_INTRIN_STLXRH, + ARM64_INTRIN_TLBI, + ARM64_INTRIN_TLBI_REG, + ARM64_INTRIN_AT, ARM64_INTRIN_NORMAL_END, /* needed so intrinsics can be extended by other lists, like neon intrinsics */ ARM64_INTRIN_INVALID = 0xFFFFFFFF, diff --git a/arch/arm64/neon_intrinsics.cpp b/arch/arm64/neon_intrinsics.cpp index 9557fd27..02e13047 100644 --- a/arch/arm64/neon_intrinsics.cpp +++ b/arch/arm64/neon_intrinsics.cpp @@ -1,6 +1,253 @@ #include "neon_intrinsics.h" #include "il_macros.h" + +Ref<Enumeration> get_tlbi_op_enum() +{ + EnumerationBuilder builder; + builder.AddMemberWithValue("invalid", TLBI_INVALID); + builder.AddMemberWithValue("vmalle1os", TLBI_VMALLE1OS); + builder.AddMemberWithValue("vae1os", TLBI_VAE1OS); + builder.AddMemberWithValue("aside1os", TLBI_ASIDE1OS); + builder.AddMemberWithValue("vaae1os", TLBI_VAAE1OS); + builder.AddMemberWithValue("vale1os", TLBI_VALE1OS); + builder.AddMemberWithValue("vaale1os", TLBI_VAALE1OS); + builder.AddMemberWithValue("rvae1is", TLBI_RVAE1IS); + builder.AddMemberWithValue("rvaae1is", TLBI_RVAAE1IS); + builder.AddMemberWithValue("rvale1is", TLBI_RVALE1IS); + builder.AddMemberWithValue("rvaale1is", TLBI_RVAALE1IS); + builder.AddMemberWithValue("vmalle1is", TLBI_VMALLE1IS); + builder.AddMemberWithValue("vae1is", TLBI_VAE1IS); + builder.AddMemberWithValue("aside1is", TLBI_ASIDE1IS); + builder.AddMemberWithValue("vaae1is", TLBI_VAAE1IS); + builder.AddMemberWithValue("vale1is", TLBI_VALE1IS); + builder.AddMemberWithValue("vaale1is", TLBI_VAALE1IS); + builder.AddMemberWithValue("rvae1os", TLBI_RVAE1OS); + builder.AddMemberWithValue("rvaae1os", TLBI_RVAAE1OS); + builder.AddMemberWithValue("rvale1os", TLBI_RVALE1OS); + builder.AddMemberWithValue("rvaale1os", TLBI_RVAALE1OS); + builder.AddMemberWithValue("rvae1", TLBI_RVAE1); + builder.AddMemberWithValue("rvaae1", TLBI_RVAAE1); + builder.AddMemberWithValue("rvale1", TLBI_RVALE1); + builder.AddMemberWithValue("rvaale1", TLBI_RVAALE1); + builder.AddMemberWithValue("vmalle1", TLBI_VMALLE1); + builder.AddMemberWithValue("vae1", TLBI_VAE1); + builder.AddMemberWithValue("aside1", TLBI_ASIDE1); + builder.AddMemberWithValue("vaae1", TLBI_VAAE1); + builder.AddMemberWithValue("vale1", TLBI_VALE1); + builder.AddMemberWithValue("vaale1", TLBI_VAALE1); + builder.AddMemberWithValue("vmalle1osnxs", TLBI_VMALLE1OSNXS); + builder.AddMemberWithValue("vae1osnxs", TLBI_VAE1OSNXS); + builder.AddMemberWithValue("aside1osnxs", TLBI_ASIDE1OSNXS); + builder.AddMemberWithValue("vaae1osnxs", TLBI_VAAE1OSNXS); + builder.AddMemberWithValue("vale1osnxs", TLBI_VALE1OSNXS); + builder.AddMemberWithValue("vaale1osnxs", TLBI_VAALE1OSNXS); + builder.AddMemberWithValue("rvae1isnxs", TLBI_RVAE1ISNXS); + builder.AddMemberWithValue("rvaae1isnxs", TLBI_RVAAE1ISNXS); + builder.AddMemberWithValue("rvale1isnxs", TLBI_RVALE1ISNXS); + builder.AddMemberWithValue("rvaale1isnxs", TLBI_RVAALE1ISNXS); + builder.AddMemberWithValue("vmalle1isnxs", TLBI_VMALLE1ISNXS); + builder.AddMemberWithValue("vae1isnxs", TLBI_VAE1ISNXS); + builder.AddMemberWithValue("aside1isnxs", TLBI_ASIDE1ISNXS); + builder.AddMemberWithValue("vaae1isnxs", TLBI_VAAE1ISNXS); + builder.AddMemberWithValue("vale1isnxs", TLBI_VALE1ISNXS); + builder.AddMemberWithValue("vaale1isnxs", TLBI_VAALE1ISNXS); + builder.AddMemberWithValue("rvae1osnxs", TLBI_RVAE1OSNXS); + builder.AddMemberWithValue("rvaae1osnxs", TLBI_RVAAE1OSNXS); + builder.AddMemberWithValue("rvale1osnxs", TLBI_RVALE1OSNXS); + builder.AddMemberWithValue("rvaale1osnxs", TLBI_RVAALE1OSNXS); + builder.AddMemberWithValue("rvae1nxs", TLBI_RVAE1NXS); + builder.AddMemberWithValue("rvaae1nxs", TLBI_RVAAE1NXS); + builder.AddMemberWithValue("rvale1nxs", TLBI_RVALE1NXS); + builder.AddMemberWithValue("rvaale1nxs", TLBI_RVAALE1NXS); + builder.AddMemberWithValue("vmalle1nxs", TLBI_VMALLE1NXS); + builder.AddMemberWithValue("vae1nxs", TLBI_VAE1NXS); + builder.AddMemberWithValue("aside1nxs", TLBI_ASIDE1NXS); + builder.AddMemberWithValue("vaae1nxs", TLBI_VAAE1NXS); + builder.AddMemberWithValue("vale1nxs", TLBI_VALE1NXS); + builder.AddMemberWithValue("vaale1nxs", TLBI_VAALE1NXS); + builder.AddMemberWithValue("ipas2e1is", TLBI_IPAS2E1IS); + builder.AddMemberWithValue("ripas2e1is", TLBI_RIPAS2E1IS); + builder.AddMemberWithValue("ipas2le1is", TLBI_IPAS2LE1IS); + builder.AddMemberWithValue("ripas2le1is", TLBI_RIPAS2LE1IS); + builder.AddMemberWithValue("alle2os", TLBI_ALLE2OS); + builder.AddMemberWithValue("vae2os", TLBI_VAE2OS); + builder.AddMemberWithValue("alle1os", TLBI_ALLE1OS); + builder.AddMemberWithValue("vale2os", TLBI_VALE2OS); + builder.AddMemberWithValue("vmalls12e1os", TLBI_VMALLS12E1OS); + builder.AddMemberWithValue("rvae2is", TLBI_RVAE2IS); + builder.AddMemberWithValue("vmallws2e1is", TLBI_VMALLWS2E1IS); + builder.AddMemberWithValue("rvale2is", TLBI_RVALE2IS); + builder.AddMemberWithValue("alle2is", TLBI_ALLE2IS); + builder.AddMemberWithValue("vae2is", TLBI_VAE2IS); + builder.AddMemberWithValue("alle1is", TLBI_ALLE1IS); + builder.AddMemberWithValue("vale2is", TLBI_VALE2IS); + builder.AddMemberWithValue("vmalls12e1is", TLBI_VMALLS12E1IS); + builder.AddMemberWithValue("ipas2e1os", TLBI_IPAS2E1OS); + builder.AddMemberWithValue("ipas2e1", TLBI_IPAS2E1); + builder.AddMemberWithValue("ripas2e1", TLBI_RIPAS2E1); + builder.AddMemberWithValue("ripas2e1os", TLBI_RIPAS2E1OS); + builder.AddMemberWithValue("ipas2le1os", TLBI_IPAS2LE1OS); + builder.AddMemberWithValue("ipas2le1", TLBI_IPAS2LE1); + builder.AddMemberWithValue("ripas2le1", TLBI_RIPAS2LE1); + builder.AddMemberWithValue("ripas2le1os", TLBI_RIPAS2LE1OS); + builder.AddMemberWithValue("rvae2os", TLBI_RVAE2OS); + builder.AddMemberWithValue("vmallws2e1os", TLBI_VMALLWS2E1OS); + builder.AddMemberWithValue("rvale2os", TLBI_RVALE2OS); + builder.AddMemberWithValue("rvae2", TLBI_RVAE2); + builder.AddMemberWithValue("vmallws2e1", TLBI_VMALLWS2E1); + builder.AddMemberWithValue("rvale2", TLBI_RVALE2); + builder.AddMemberWithValue("alle2", TLBI_ALLE2); + builder.AddMemberWithValue("vae2", TLBI_VAE2); + builder.AddMemberWithValue("alle1", TLBI_ALLE1); + builder.AddMemberWithValue("vale2", TLBI_VALE2); + builder.AddMemberWithValue("vmalls12e1", TLBI_VMALLS12E1); + builder.AddMemberWithValue("ipas2e1isnxs", TLBI_IPAS2E1ISNXS); + builder.AddMemberWithValue("ripas2e1isnxs", TLBI_RIPAS2E1ISNXS); + builder.AddMemberWithValue("ipas2le1isnxs", TLBI_IPAS2LE1ISNXS); + builder.AddMemberWithValue("ripas2le1isnxs", TLBI_RIPAS2LE1ISNXS); + builder.AddMemberWithValue("alle2osnxs", TLBI_ALLE2OSNXS); + builder.AddMemberWithValue("vae2osnxs", TLBI_VAE2OSNXS); + builder.AddMemberWithValue("alle1osnxs", TLBI_ALLE1OSNXS); + builder.AddMemberWithValue("vale2osnxs", TLBI_VALE2OSNXS); + builder.AddMemberWithValue("vmalls12e1osnxs", TLBI_VMALLS12E1OSNXS); + builder.AddMemberWithValue("rvae2isnxs", TLBI_RVAE2ISNXS); + builder.AddMemberWithValue("vmallws2e1isnxs", TLBI_VMALLWS2E1ISNXS); + builder.AddMemberWithValue("rvale2isnxs", TLBI_RVALE2ISNXS); + builder.AddMemberWithValue("alle2isnxs", TLBI_ALLE2ISNXS); + builder.AddMemberWithValue("vae2isnxs", TLBI_VAE2ISNXS); + builder.AddMemberWithValue("alle1isnxs", TLBI_ALLE1ISNXS); + builder.AddMemberWithValue("vale2isnxs", TLBI_VALE2ISNXS); + builder.AddMemberWithValue("vmalls12e1isnxs", TLBI_VMALLS12E1ISNXS); + builder.AddMemberWithValue("ipas2e1osnxs", TLBI_IPAS2E1OSNXS); + builder.AddMemberWithValue("ipas2e1nxs", TLBI_IPAS2E1NXS); + builder.AddMemberWithValue("ripas2e1nxs", TLBI_RIPAS2E1NXS); + builder.AddMemberWithValue("ripas2e1osnxs", TLBI_RIPAS2E1OSNXS); + builder.AddMemberWithValue("ipas2le1osnxs", TLBI_IPAS2LE1OSNXS); + builder.AddMemberWithValue("ipas2le1nxs", TLBI_IPAS2LE1NXS); + builder.AddMemberWithValue("ripas2le1nxs", TLBI_RIPAS2LE1NXS); + builder.AddMemberWithValue("ripas2le1osnxs", TLBI_RIPAS2LE1OSNXS); + builder.AddMemberWithValue("rvae2osnxs", TLBI_RVAE2OSNXS); + builder.AddMemberWithValue("vmallws2e1osnxs", TLBI_VMALLWS2E1OSNXS); + builder.AddMemberWithValue("rvale2osnxs", TLBI_RVALE2OSNXS); + builder.AddMemberWithValue("rvae2nxs", TLBI_RVAE2NXS); + builder.AddMemberWithValue("vmallws2e1nxs", TLBI_VMALLWS2E1NXS); + builder.AddMemberWithValue("rvale2nxs", TLBI_RVALE2NXS); + builder.AddMemberWithValue("alle2nxs", TLBI_ALLE2NXS); + builder.AddMemberWithValue("vae2nxs", TLBI_VAE2NXS); + builder.AddMemberWithValue("alle1nxs", TLBI_ALLE1NXS); + builder.AddMemberWithValue("vale2nxs", TLBI_VALE2NXS); + builder.AddMemberWithValue("vmalls12e1nxs", TLBI_VMALLS12E1NXS); + builder.AddMemberWithValue("alle3os", TLBI_ALLE3OS); + builder.AddMemberWithValue("vae3os", TLBI_VAE3OS); + builder.AddMemberWithValue("paallos", TLBI_PAALLOS); + builder.AddMemberWithValue("vale3os", TLBI_VALE3OS); + builder.AddMemberWithValue("rvae3is", TLBI_RVAE3IS); + builder.AddMemberWithValue("rvale3is", TLBI_RVALE3IS); + builder.AddMemberWithValue("alle3is", TLBI_ALLE3IS); + builder.AddMemberWithValue("vae3is", TLBI_VAE3IS); + builder.AddMemberWithValue("vale3is", TLBI_VALE3IS); + builder.AddMemberWithValue("rpaos", TLBI_RPAOS); + builder.AddMemberWithValue("rpalos", TLBI_RPALOS); + builder.AddMemberWithValue("rvae3os", TLBI_RVAE3OS); + builder.AddMemberWithValue("rvale3os", TLBI_RVALE3OS); + builder.AddMemberWithValue("rvae3", TLBI_RVAE3); + builder.AddMemberWithValue("rvale3", TLBI_RVALE3); + builder.AddMemberWithValue("alle3", TLBI_ALLE3); + builder.AddMemberWithValue("vae3", TLBI_VAE3); + builder.AddMemberWithValue("paall", TLBI_PAALL); + builder.AddMemberWithValue("vale3", TLBI_VALE3); + builder.AddMemberWithValue("alle3osnxs", TLBI_ALLE3OSNXS); + builder.AddMemberWithValue("vae3osnxs", TLBI_VAE3OSNXS); + builder.AddMemberWithValue("vale3osnxs", TLBI_VALE3OSNXS); + builder.AddMemberWithValue("rvae3isnxs", TLBI_RVAE3ISNXS); + builder.AddMemberWithValue("rvale3isnxs", TLBI_RVALE3ISNXS); + builder.AddMemberWithValue("alle3isnxs", TLBI_ALLE3ISNXS); + builder.AddMemberWithValue("vae3isnxs", TLBI_VAE3ISNXS); + builder.AddMemberWithValue("vale3isnxs", TLBI_VALE3ISNXS); + builder.AddMemberWithValue("rvae3osnxs", TLBI_RVAE3OSNXS); + builder.AddMemberWithValue("rvale3osnxs", TLBI_RVALE3OSNXS); + builder.AddMemberWithValue("rvae3nxs", TLBI_RVAE3NXS); + builder.AddMemberWithValue("rvale3nxs", TLBI_RVALE3NXS); + builder.AddMemberWithValue("alle3nxs", TLBI_ALLE3NXS); + builder.AddMemberWithValue("vae3nxs", TLBI_VAE3NXS); + builder.AddMemberWithValue("vale3nxs", TLBI_VALE3NXS); + + Ref<Enumeration> _enum = builder.Finalize(); + return _enum; +} + +Ref<Enumeration> get_at_op_enum() +{ + EnumerationBuilder builder; + builder.AddMemberWithValue("invalid", AT_OP_INVALID); + builder.AddMemberWithValue("s1e1r", AT_OP_S1E1R); + builder.AddMemberWithValue("s1e1w", AT_OP_S1E1W); + builder.AddMemberWithValue("s1e0r", AT_OP_S1E0R); + builder.AddMemberWithValue("s1e0w", AT_OP_S1E0W); + builder.AddMemberWithValue("s1e1rp", AT_OP_S1E1RP); + builder.AddMemberWithValue("s1e1wp", AT_OP_S1E1WP); + builder.AddMemberWithValue("s1e1a", AT_OP_S1E1A); + builder.AddMemberWithValue("s1e2r", AT_OP_S1E2R); + builder.AddMemberWithValue("s1e2w", AT_OP_S1E2W); + builder.AddMemberWithValue("s12e1r", AT_OP_S12E1R); + builder.AddMemberWithValue("s12e1w", AT_OP_S12E1W); + builder.AddMemberWithValue("s12e0r", AT_OP_S12E0R); + builder.AddMemberWithValue("s12e0w", AT_OP_S12E0W); + builder.AddMemberWithValue("s1e2a", AT_OP_S1E2A); + builder.AddMemberWithValue("s1e3r", AT_OP_S1E3R); + builder.AddMemberWithValue("s1e3w", AT_OP_S1E3W); + builder.AddMemberWithValue("s1e3a", AT_OP_S1E3A); + Ref<Enumeration> _enum = builder.Finalize(); + return _enum; +} + +Ref<Enumeration> get_dc_op_enum() +{ + EnumerationBuilder builder; + builder.AddMemberWithValue("invalid", DC_OP_INVALID); + builder.AddMemberWithValue("IVAC", DC_OP_IVAC); + builder.AddMemberWithValue("ISW", DC_OP_ISW); + builder.AddMemberWithValue("IGVAC", DC_OP_IGVAC); + builder.AddMemberWithValue("IGSW", DC_OP_IGSW); + builder.AddMemberWithValue("IGDVAC", DC_OP_IGDVAC); + builder.AddMemberWithValue("IGDSW", DC_OP_IGDSW); + builder.AddMemberWithValue("CSW", DC_OP_CSW); + builder.AddMemberWithValue("CGSW", DC_OP_CGSW); + builder.AddMemberWithValue("CGDSW", DC_OP_CGDSW); + builder.AddMemberWithValue("CISW", DC_OP_CISW); + builder.AddMemberWithValue("CIGSW", DC_OP_CIGSW); + builder.AddMemberWithValue("CIGDSW", DC_OP_CIGDSW); + builder.AddMemberWithValue("CIVAPS", DC_OP_CIVAPS); + builder.AddMemberWithValue("CIGDVAPS", DC_OP_CIGDVAPS); + builder.AddMemberWithValue("ZVA", DC_OP_ZVA); + builder.AddMemberWithValue("GVA", DC_OP_GVA); + builder.AddMemberWithValue("GZVA", DC_OP_GZVA); + builder.AddMemberWithValue("CVAC", DC_OP_CVAC); + builder.AddMemberWithValue("CGVAC", DC_OP_CGVAC); + builder.AddMemberWithValue("CGDVAC", DC_OP_CGDVAC); + builder.AddMemberWithValue("CVAOC", DC_OP_CVAOC); + builder.AddMemberWithValue("CVAU", DC_OP_CVAU); + builder.AddMemberWithValue("CGDVAOC", DC_OP_CGDVAOC); + builder.AddMemberWithValue("CVAP", DC_OP_CVAP); + builder.AddMemberWithValue("CGVAP", DC_OP_CGVAP); + builder.AddMemberWithValue("CGDVAP", DC_OP_CGDVAP); + builder.AddMemberWithValue("CVADP", DC_OP_CVADP); + builder.AddMemberWithValue("CGVADP", DC_OP_CGVADP); + builder.AddMemberWithValue("CGDVADP", DC_OP_CGDVADP); + builder.AddMemberWithValue("CIVAC", DC_OP_CIVAC); + builder.AddMemberWithValue("CIGVAC", DC_OP_CIGVAC); + builder.AddMemberWithValue("CIGDVAC", DC_OP_CIGDVAC); + builder.AddMemberWithValue("CIVAOC", DC_OP_CIVAOC); + builder.AddMemberWithValue("CIGDVAOC", DC_OP_CIGDVAOC); + builder.AddMemberWithValue("CIPAE", DC_OP_CIPAE); + builder.AddMemberWithValue("CIGDPAE", DC_OP_CIGDPAE); + builder.AddMemberWithValue("CIPAPA", DC_OP_CIPAPA); + builder.AddMemberWithValue("CIGDPAPA", DC_OP_CIGDPAPA); + Ref<Enumeration> _enum = builder.Finalize(); + return _enum; +} + string NeonGetIntrinsicName(uint32_t intrinsic) { switch (intrinsic) diff --git a/arch/arm64/neon_intrinsics.h b/arch/arm64/neon_intrinsics.h index 087b8664..9cade45f 100644 --- a/arch/arm64/neon_intrinsics.h +++ b/arch/arm64/neon_intrinsics.h @@ -3991,3 +3991,6 @@ vector<NameAndType> NeonGetIntrinsicInputs(uint32_t intrinsic); vector<Confidence<Ref<Type>>> NeonGetIntrinsicOutputs(uint32_t intrinsic); bool NeonGetLowLevelILForInstruction( Architecture* arch, uint64_t addr, LowLevelILFunction& il, Instruction& instr, size_t addrSize); +Ref<Enumeration> get_tlbi_op_enum(); +Ref<Enumeration> get_at_op_enum(); +Ref<Enumeration> get_dc_op_enum(); diff --git a/arch/arm64/sysregs_enum.cpp b/arch/arm64/sysregs_enum.cpp new file mode 100644 index 00000000..b06e168d --- /dev/null +++ b/arch/arm64/sysregs_enum.cpp @@ -0,0 +1,3002 @@ +#include "sysregs_enum.h" + +using namespace BinaryNinja; +using namespace std; + +Ref<Enumeration> get_system_register_enum() +{ + EnumerationBuilder builder; + builder.AddMemberWithValue(get_system_register_name(REG_EDSCR), REG_EDSCR); + builder.AddMemberWithValue(get_system_register_name(REG_EDPRSR), REG_EDPRSR); + builder.AddMemberWithValue(get_system_register_name(REG_UAOIMM), REG_UAOIMM); + builder.AddMemberWithValue(get_system_register_name(REG_PANIMM), REG_PANIMM); + builder.AddMemberWithValue(get_system_register_name(REG_SPSELIMM), REG_SPSELIMM); + builder.AddMemberWithValue(get_system_register_name(REG_DITIMM), REG_DITIMM); + builder.AddMemberWithValue(get_system_register_name(REG_SVCRIMM), REG_SVCRIMM); + builder.AddMemberWithValue(get_system_register_name(REG_ICIALLUIS), REG_ICIALLUIS); + builder.AddMemberWithValue(get_system_register_name(REG_ICIALLU), REG_ICIALLU); + builder.AddMemberWithValue(get_system_register_name(REG_DCIVAC), REG_DCIVAC); + builder.AddMemberWithValue(get_system_register_name(REG_DCISW), REG_DCISW); + builder.AddMemberWithValue(get_system_register_name(REG_ATS1E1R), REG_ATS1E1R); + builder.AddMemberWithValue(get_system_register_name(REG_ATS1E1W), REG_ATS1E1W); + builder.AddMemberWithValue(get_system_register_name(REG_ATS1E0R), REG_ATS1E0R); + builder.AddMemberWithValue(get_system_register_name(REG_ATS1E0W), REG_ATS1E0W); + builder.AddMemberWithValue(get_system_register_name(REG_DCCSW), REG_DCCSW); + builder.AddMemberWithValue(get_system_register_name(REG_DCCISW), REG_DCCISW); + builder.AddMemberWithValue(get_system_register_name(REG_TLBIVMALLE1IS), REG_TLBIVMALLE1IS); + builder.AddMemberWithValue(get_system_register_name(REG_TLBIVAE1IS), REG_TLBIVAE1IS); + builder.AddMemberWithValue(get_system_register_name(REG_TLBIASIDE1IS), REG_TLBIASIDE1IS); + builder.AddMemberWithValue(get_system_register_name(REG_TLBIVAAE1IS), REG_TLBIVAAE1IS); + builder.AddMemberWithValue(get_system_register_name(REG_TLBIVALE1IS), REG_TLBIVALE1IS); + builder.AddMemberWithValue(get_system_register_name(REG_TLBIVAALE1IS), REG_TLBIVAALE1IS); + builder.AddMemberWithValue(get_system_register_name(REG_TLBIVMALLE1), REG_TLBIVMALLE1); + builder.AddMemberWithValue(get_system_register_name(REG_TLBIVAE1), REG_TLBIVAE1); + builder.AddMemberWithValue(get_system_register_name(REG_TLBIASIDE1), REG_TLBIASIDE1); + builder.AddMemberWithValue(get_system_register_name(REG_TLBIVAAE1), REG_TLBIVAAE1); + builder.AddMemberWithValue(get_system_register_name(REG_TLBIVALE1), REG_TLBIVALE1); + builder.AddMemberWithValue(get_system_register_name(REG_TLBIVAALE1), REG_TLBIVAALE1); + builder.AddMemberWithValue(get_system_register_name(REG_DCZVA), REG_DCZVA); + builder.AddMemberWithValue(get_system_register_name(REG_ICIVAU), REG_ICIVAU); + builder.AddMemberWithValue(get_system_register_name(REG_DCCVAC), REG_DCCVAC); + builder.AddMemberWithValue(get_system_register_name(REG_DCCVAU), REG_DCCVAU); + builder.AddMemberWithValue(get_system_register_name(REG_DCCIVAC), REG_DCCIVAC); + builder.AddMemberWithValue(get_system_register_name(REG_ATS1E2R), REG_ATS1E2R); + builder.AddMemberWithValue(get_system_register_name(REG_ATS1E2W), REG_ATS1E2W); + builder.AddMemberWithValue(get_system_register_name(REG_ATS12E1R), REG_ATS12E1R); + builder.AddMemberWithValue(get_system_register_name(REG_ATS12E1W), REG_ATS12E1W); + builder.AddMemberWithValue(get_system_register_name(REG_ATS12E0R), REG_ATS12E0R); + builder.AddMemberWithValue(get_system_register_name(REG_ATS12E0W), REG_ATS12E0W); + builder.AddMemberWithValue(get_system_register_name(REG_TLBIIPAS2E1IS), REG_TLBIIPAS2E1IS); + builder.AddMemberWithValue(get_system_register_name(REG_TLBIIPAS2LE1IS), REG_TLBIIPAS2LE1IS); + builder.AddMemberWithValue(get_system_register_name(REG_TLBIALLE2IS), REG_TLBIALLE2IS); + builder.AddMemberWithValue(get_system_register_name(REG_TLBIVAE2IS), REG_TLBIVAE2IS); + builder.AddMemberWithValue(get_system_register_name(REG_TLBIALLE1IS), REG_TLBIALLE1IS); + builder.AddMemberWithValue(get_system_register_name(REG_TLBIVALE2IS), REG_TLBIVALE2IS); + builder.AddMemberWithValue(get_system_register_name(REG_TLBIVMALLS12E1IS), REG_TLBIVMALLS12E1IS); + builder.AddMemberWithValue(get_system_register_name(REG_TLBIIPAS2E1), REG_TLBIIPAS2E1); + builder.AddMemberWithValue(get_system_register_name(REG_TLBIIPAS2LE1), REG_TLBIIPAS2LE1); + builder.AddMemberWithValue(get_system_register_name(REG_TLBIALLE2), REG_TLBIALLE2); + builder.AddMemberWithValue(get_system_register_name(REG_TLBIVAE2), REG_TLBIVAE2); + builder.AddMemberWithValue(get_system_register_name(REG_TLBIALLE1), REG_TLBIALLE1); + builder.AddMemberWithValue(get_system_register_name(REG_TLBIVALE2), REG_TLBIVALE2); + builder.AddMemberWithValue(get_system_register_name(REG_TLBIVMALLS12E1), REG_TLBIVMALLS12E1); + builder.AddMemberWithValue(get_system_register_name(REG_ATS1E3R), REG_ATS1E3R); + builder.AddMemberWithValue(get_system_register_name(REG_ATS1E3W), REG_ATS1E3W); + builder.AddMemberWithValue(get_system_register_name(REG_TLBIALLE3IS), REG_TLBIALLE3IS); + builder.AddMemberWithValue(get_system_register_name(REG_TLBIVAE3IS), REG_TLBIVAE3IS); + builder.AddMemberWithValue(get_system_register_name(REG_TLBIVALE3IS), REG_TLBIVALE3IS); + builder.AddMemberWithValue(get_system_register_name(REG_TLBIALLE3), REG_TLBIALLE3); + builder.AddMemberWithValue(get_system_register_name(REG_TLBIVAE3), REG_TLBIVAE3); + builder.AddMemberWithValue(get_system_register_name(REG_TLBIVALE3), REG_TLBIVALE3); + builder.AddMemberWithValue(get_system_register_name(REG_OSDTRRX_EL1), REG_OSDTRRX_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_DBGBVR0_EL1), REG_DBGBVR0_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_DBGBCR0_EL1), REG_DBGBCR0_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_DBGWVR0_EL1), REG_DBGWVR0_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_DBGWCR0_EL1), REG_DBGWCR0_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_DBGBVR1_EL1), REG_DBGBVR1_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_DBGBCR1_EL1), REG_DBGBCR1_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_DBGWVR1_EL1), REG_DBGWVR1_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_DBGWCR1_EL1), REG_DBGWCR1_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_MDCCINT_EL1), REG_MDCCINT_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_MDSCR_EL1), REG_MDSCR_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_DBGBVR2_EL1), REG_DBGBVR2_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_DBGBCR2_EL1), REG_DBGBCR2_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_DBGWVR2_EL1), REG_DBGWVR2_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_DBGWCR2_EL1), REG_DBGWCR2_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_OSDTRTX_EL1), REG_OSDTRTX_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_DBGBVR3_EL1), REG_DBGBVR3_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_DBGBCR3_EL1), REG_DBGBCR3_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_DBGWVR3_EL1), REG_DBGWVR3_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_DBGWCR3_EL1), REG_DBGWCR3_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_DBGBVR4_EL1), REG_DBGBVR4_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_DBGBCR4_EL1), REG_DBGBCR4_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_DBGWVR4_EL1), REG_DBGWVR4_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_DBGWCR4_EL1), REG_DBGWCR4_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_DBGBVR5_EL1), REG_DBGBVR5_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_DBGBCR5_EL1), REG_DBGBCR5_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_DBGWVR5_EL1), REG_DBGWVR5_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_DBGWCR5_EL1), REG_DBGWCR5_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_DBGWFAR), REG_DBGWFAR); + builder.AddMemberWithValue(get_system_register_name(REG_OSECCR_EL1), REG_OSECCR_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_DBGBVR6_EL1), REG_DBGBVR6_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_DBGBCR6_EL1), REG_DBGBCR6_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_DBGWVR6_EL1), REG_DBGWVR6_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_DBGWCR6_EL1), REG_DBGWCR6_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_DBGBVR7_EL1), REG_DBGBVR7_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_DBGBCR7_EL1), REG_DBGBCR7_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_DBGWVR7_EL1), REG_DBGWVR7_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_DBGWCR7_EL1), REG_DBGWCR7_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_DBGBVR8_EL1), REG_DBGBVR8_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_DBGBCR8_EL1), REG_DBGBCR8_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_DBGWVR8_EL1), REG_DBGWVR8_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_DBGWCR8_EL1), REG_DBGWCR8_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_DBGBVR9_EL1), REG_DBGBVR9_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_DBGBCR9_EL1), REG_DBGBCR9_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_DBGWVR9_EL1), REG_DBGWVR9_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_DBGWCR9_EL1), REG_DBGWCR9_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_DBGBVR10_EL1), REG_DBGBVR10_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_DBGBCR10_EL1), REG_DBGBCR10_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_DBGWVR10_EL1), REG_DBGWVR10_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_DBGWCR10_EL1), REG_DBGWCR10_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_DBGBVR11_EL1), REG_DBGBVR11_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_DBGBCR11_EL1), REG_DBGBCR11_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_DBGWVR11_EL1), REG_DBGWVR11_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_DBGWCR11_EL1), REG_DBGWCR11_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_DBGBVR12_EL1), REG_DBGBVR12_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_DBGBCR12_EL1), REG_DBGBCR12_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_DBGWVR12_EL1), REG_DBGWVR12_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_DBGWCR12_EL1), REG_DBGWCR12_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_DBGBVR13_EL1), REG_DBGBVR13_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_DBGBCR13_EL1), REG_DBGBCR13_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_DBGWVR13_EL1), REG_DBGWVR13_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_DBGWCR13_EL1), REG_DBGWCR13_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_DBGBVR14_EL1), REG_DBGBVR14_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_DBGBCR14_EL1), REG_DBGBCR14_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_DBGWVR14_EL1), REG_DBGWVR14_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_DBGWCR14_EL1), REG_DBGWCR14_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_DBGBVR15_EL1), REG_DBGBVR15_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_DBGBCR15_EL1), REG_DBGBCR15_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_DBGWVR15_EL1), REG_DBGWVR15_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_DBGWCR15_EL1), REG_DBGWCR15_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_MDRAR_EL1), REG_MDRAR_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_OSLAR_EL1), REG_OSLAR_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_OSLSR_EL1), REG_OSLSR_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_OSDLR_EL1), REG_OSDLR_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_DBGPRCR_EL1), REG_DBGPRCR_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_CLAIMSET_EL1), REG_CLAIMSET_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_CLAIMCLR_EL1), REG_CLAIMCLR_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_AUTHSTAT_EL1), REG_AUTHSTAT_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_TRCTRACEIDR), REG_TRCTRACEIDR); + builder.AddMemberWithValue(get_system_register_name(REG_TRCVICTLR), REG_TRCVICTLR); + builder.AddMemberWithValue(get_system_register_name(REG_TRCSEQEVR0), REG_TRCSEQEVR0); + builder.AddMemberWithValue(get_system_register_name(REG_TRCCNTRLDVR0), REG_TRCCNTRLDVR0); + builder.AddMemberWithValue(get_system_register_name(REG_TRCIMSPEC0), REG_TRCIMSPEC0); + builder.AddMemberWithValue(get_system_register_name(REG_TRCPRGCTLR), REG_TRCPRGCTLR); + builder.AddMemberWithValue(get_system_register_name(REG_TRCQCTLR), REG_TRCQCTLR); + builder.AddMemberWithValue(get_system_register_name(REG_TRCVIIECTLR), REG_TRCVIIECTLR); + builder.AddMemberWithValue(get_system_register_name(REG_TRCSEQEVR1), REG_TRCSEQEVR1); + builder.AddMemberWithValue(get_system_register_name(REG_TRCCNTRLDVR1), REG_TRCCNTRLDVR1); + builder.AddMemberWithValue(get_system_register_name(REG_TRCIMSPEC1), REG_TRCIMSPEC1); + builder.AddMemberWithValue(get_system_register_name(REG_TRCPROCSELR), REG_TRCPROCSELR); + builder.AddMemberWithValue(get_system_register_name(REG_TRCVISSCTLR), REG_TRCVISSCTLR); + builder.AddMemberWithValue(get_system_register_name(REG_TRCSEQEVR2), REG_TRCSEQEVR2); + builder.AddMemberWithValue(get_system_register_name(REG_TRCCNTRLDVR2), REG_TRCCNTRLDVR2); + builder.AddMemberWithValue(get_system_register_name(REG_TRCIMSPEC2), REG_TRCIMSPEC2); + builder.AddMemberWithValue(get_system_register_name(REG_TRCVIPCSSCTLR), REG_TRCVIPCSSCTLR); + builder.AddMemberWithValue(get_system_register_name(REG_TRCCNTRLDVR3), REG_TRCCNTRLDVR3); + builder.AddMemberWithValue(get_system_register_name(REG_TRCIMSPEC3), REG_TRCIMSPEC3); + builder.AddMemberWithValue(get_system_register_name(REG_TRCCONFIGR), REG_TRCCONFIGR); + builder.AddMemberWithValue(get_system_register_name(REG_TRCCNTCTLR0), REG_TRCCNTCTLR0); + builder.AddMemberWithValue(get_system_register_name(REG_TRCIMSPEC4), REG_TRCIMSPEC4); + builder.AddMemberWithValue(get_system_register_name(REG_TRCCNTCTLR1), REG_TRCCNTCTLR1); + builder.AddMemberWithValue(get_system_register_name(REG_TRCIMSPEC5), REG_TRCIMSPEC5); + builder.AddMemberWithValue(get_system_register_name(REG_TRCAUXCTLR), REG_TRCAUXCTLR); + builder.AddMemberWithValue(get_system_register_name(REG_TRCSEQRSTEVR), REG_TRCSEQRSTEVR); + builder.AddMemberWithValue(get_system_register_name(REG_TRCCNTCTLR2), REG_TRCCNTCTLR2); + builder.AddMemberWithValue(get_system_register_name(REG_TRCIMSPEC6), REG_TRCIMSPEC6); + builder.AddMemberWithValue(get_system_register_name(REG_TRCSEQSTR), REG_TRCSEQSTR); + builder.AddMemberWithValue(get_system_register_name(REG_TRCCNTCTLR3), REG_TRCCNTCTLR3); + builder.AddMemberWithValue(get_system_register_name(REG_TRCIMSPEC7), REG_TRCIMSPEC7); + builder.AddMemberWithValue(get_system_register_name(REG_TRCEVENTCTL0R), REG_TRCEVENTCTL0R); + builder.AddMemberWithValue(get_system_register_name(REG_TRCVDCTLR), REG_TRCVDCTLR); + builder.AddMemberWithValue(get_system_register_name(REG_TRCEXTINSELR), REG_TRCEXTINSELR); + builder.AddMemberWithValue(get_system_register_name(REG_TRCCNTVR0), REG_TRCCNTVR0); + builder.AddMemberWithValue(get_system_register_name(REG_TRCEVENTCTL1R), REG_TRCEVENTCTL1R); + builder.AddMemberWithValue(get_system_register_name(REG_TRCVDSACCTLR), REG_TRCVDSACCTLR); + builder.AddMemberWithValue(get_system_register_name(REG_TRCEXTINSELR1), REG_TRCEXTINSELR1); + builder.AddMemberWithValue(get_system_register_name(REG_TRCCNTVR1), REG_TRCCNTVR1); + builder.AddMemberWithValue(get_system_register_name(REG_TRCRSR), REG_TRCRSR); + builder.AddMemberWithValue(get_system_register_name(REG_TRCVDARCCTLR), REG_TRCVDARCCTLR); + builder.AddMemberWithValue(get_system_register_name(REG_TRCEXTINSELR2), REG_TRCEXTINSELR2); + builder.AddMemberWithValue(get_system_register_name(REG_TRCCNTVR2), REG_TRCCNTVR2); + builder.AddMemberWithValue(get_system_register_name(REG_TRCSTALLCTLR), REG_TRCSTALLCTLR); + builder.AddMemberWithValue(get_system_register_name(REG_TRCEXTINSELR3), REG_TRCEXTINSELR3); + builder.AddMemberWithValue(get_system_register_name(REG_TRCCNTVR3), REG_TRCCNTVR3); + builder.AddMemberWithValue(get_system_register_name(REG_TRCTSCTLR), REG_TRCTSCTLR); + builder.AddMemberWithValue(get_system_register_name(REG_TRCSYNCPR), REG_TRCSYNCPR); + builder.AddMemberWithValue(get_system_register_name(REG_TRCCCCTLR), REG_TRCCCCTLR); + builder.AddMemberWithValue(get_system_register_name(REG_TRCBBCTLR), REG_TRCBBCTLR); + builder.AddMemberWithValue(get_system_register_name(REG_TRCRSCTLR16), REG_TRCRSCTLR16); + builder.AddMemberWithValue(get_system_register_name(REG_TRCSSCCR0), REG_TRCSSCCR0); + builder.AddMemberWithValue(get_system_register_name(REG_TRCSSPCICR0), REG_TRCSSPCICR0); + builder.AddMemberWithValue(get_system_register_name(REG_TRCOSLAR), REG_TRCOSLAR); + builder.AddMemberWithValue(get_system_register_name(REG_TRCRSCTLR17), REG_TRCRSCTLR17); + builder.AddMemberWithValue(get_system_register_name(REG_TRCSSCCR1), REG_TRCSSCCR1); + builder.AddMemberWithValue(get_system_register_name(REG_TRCSSPCICR1), REG_TRCSSPCICR1); + builder.AddMemberWithValue(get_system_register_name(REG_TRCRSCTLR2), REG_TRCRSCTLR2); + builder.AddMemberWithValue(get_system_register_name(REG_TRCRSCTLR18), REG_TRCRSCTLR18); + builder.AddMemberWithValue(get_system_register_name(REG_TRCSSCCR2), REG_TRCSSCCR2); + builder.AddMemberWithValue(get_system_register_name(REG_TRCSSPCICR2), REG_TRCSSPCICR2); + builder.AddMemberWithValue(get_system_register_name(REG_TRCRSCTLR3), REG_TRCRSCTLR3); + builder.AddMemberWithValue(get_system_register_name(REG_TRCRSCTLR19), REG_TRCRSCTLR19); + builder.AddMemberWithValue(get_system_register_name(REG_TRCSSCCR3), REG_TRCSSCCR3); + builder.AddMemberWithValue(get_system_register_name(REG_TRCSSPCICR3), REG_TRCSSPCICR3); + builder.AddMemberWithValue(get_system_register_name(REG_TRCRSCTLR4), REG_TRCRSCTLR4); + builder.AddMemberWithValue(get_system_register_name(REG_TRCRSCTLR20), REG_TRCRSCTLR20); + builder.AddMemberWithValue(get_system_register_name(REG_TRCSSCCR4), REG_TRCSSCCR4); + builder.AddMemberWithValue(get_system_register_name(REG_TRCSSPCICR4), REG_TRCSSPCICR4); + builder.AddMemberWithValue(get_system_register_name(REG_TRCPDCR), REG_TRCPDCR); + builder.AddMemberWithValue(get_system_register_name(REG_TRCRSCTLR5), REG_TRCRSCTLR5); + builder.AddMemberWithValue(get_system_register_name(REG_TRCRSCTLR21), REG_TRCRSCTLR21); + builder.AddMemberWithValue(get_system_register_name(REG_TRCSSCCR5), REG_TRCSSCCR5); + builder.AddMemberWithValue(get_system_register_name(REG_TRCSSPCICR5), REG_TRCSSPCICR5); + builder.AddMemberWithValue(get_system_register_name(REG_TRCRSCTLR6), REG_TRCRSCTLR6); + builder.AddMemberWithValue(get_system_register_name(REG_TRCRSCTLR22), REG_TRCRSCTLR22); + builder.AddMemberWithValue(get_system_register_name(REG_TRCSSCCR6), REG_TRCSSCCR6); + builder.AddMemberWithValue(get_system_register_name(REG_TRCSSPCICR6), REG_TRCSSPCICR6); + builder.AddMemberWithValue(get_system_register_name(REG_TRCRSCTLR7), REG_TRCRSCTLR7); + builder.AddMemberWithValue(get_system_register_name(REG_TRCRSCTLR23), REG_TRCRSCTLR23); + builder.AddMemberWithValue(get_system_register_name(REG_TRCSSCCR7), REG_TRCSSCCR7); + builder.AddMemberWithValue(get_system_register_name(REG_TRCSSPCICR7), REG_TRCSSPCICR7); + builder.AddMemberWithValue(get_system_register_name(REG_TRCRSCTLR8), REG_TRCRSCTLR8); + builder.AddMemberWithValue(get_system_register_name(REG_TRCRSCTLR24), REG_TRCRSCTLR24); + builder.AddMemberWithValue(get_system_register_name(REG_TRCSSCSR0), REG_TRCSSCSR0); + builder.AddMemberWithValue(get_system_register_name(REG_TRCRSCTLR9), REG_TRCRSCTLR9); + builder.AddMemberWithValue(get_system_register_name(REG_TRCRSCTLR25), REG_TRCRSCTLR25); + builder.AddMemberWithValue(get_system_register_name(REG_TRCSSCSR1), REG_TRCSSCSR1); + builder.AddMemberWithValue(get_system_register_name(REG_TRCRSCTLR10), REG_TRCRSCTLR10); + builder.AddMemberWithValue(get_system_register_name(REG_TRCRSCTLR26), REG_TRCRSCTLR26); + builder.AddMemberWithValue(get_system_register_name(REG_TRCSSCSR2), REG_TRCSSCSR2); + builder.AddMemberWithValue(get_system_register_name(REG_TRCRSCTLR11), REG_TRCRSCTLR11); + builder.AddMemberWithValue(get_system_register_name(REG_TRCRSCTLR27), REG_TRCRSCTLR27); + builder.AddMemberWithValue(get_system_register_name(REG_TRCSSCSR3), REG_TRCSSCSR3); + builder.AddMemberWithValue(get_system_register_name(REG_TRCRSCTLR12), REG_TRCRSCTLR12); + builder.AddMemberWithValue(get_system_register_name(REG_TRCRSCTLR28), REG_TRCRSCTLR28); + builder.AddMemberWithValue(get_system_register_name(REG_TRCSSCSR4), REG_TRCSSCSR4); + builder.AddMemberWithValue(get_system_register_name(REG_TRCRSCTLR13), REG_TRCRSCTLR13); + builder.AddMemberWithValue(get_system_register_name(REG_TRCRSCTLR29), REG_TRCRSCTLR29); + builder.AddMemberWithValue(get_system_register_name(REG_TRCSSCSR5), REG_TRCSSCSR5); + builder.AddMemberWithValue(get_system_register_name(REG_TRCRSCTLR14), REG_TRCRSCTLR14); + builder.AddMemberWithValue(get_system_register_name(REG_TRCRSCTLR30), REG_TRCRSCTLR30); + builder.AddMemberWithValue(get_system_register_name(REG_TRCSSCSR6), REG_TRCSSCSR6); + builder.AddMemberWithValue(get_system_register_name(REG_TRCRSCTLR15), REG_TRCRSCTLR15); + builder.AddMemberWithValue(get_system_register_name(REG_TRCRSCTLR31), REG_TRCRSCTLR31); + builder.AddMemberWithValue(get_system_register_name(REG_TRCSSCSR7), REG_TRCSSCSR7); + builder.AddMemberWithValue(get_system_register_name(REG_TRCACVR0), REG_TRCACVR0); + builder.AddMemberWithValue(get_system_register_name(REG_TRCACVR8), REG_TRCACVR8); + builder.AddMemberWithValue(get_system_register_name(REG_TRCACATR0), REG_TRCACATR0); + builder.AddMemberWithValue(get_system_register_name(REG_TRCACATR8), REG_TRCACATR8); + builder.AddMemberWithValue(get_system_register_name(REG_TRCDVCVR0), REG_TRCDVCVR0); + builder.AddMemberWithValue(get_system_register_name(REG_TRCDVCVR4), REG_TRCDVCVR4); + builder.AddMemberWithValue(get_system_register_name(REG_TRCDVCMR0), REG_TRCDVCMR0); + builder.AddMemberWithValue(get_system_register_name(REG_TRCDVCMR4), REG_TRCDVCMR4); + builder.AddMemberWithValue(get_system_register_name(REG_TRCACVR1), REG_TRCACVR1); + builder.AddMemberWithValue(get_system_register_name(REG_TRCACVR9), REG_TRCACVR9); + builder.AddMemberWithValue(get_system_register_name(REG_TRCACATR1), REG_TRCACATR1); + builder.AddMemberWithValue(get_system_register_name(REG_TRCACATR9), REG_TRCACATR9); + builder.AddMemberWithValue(get_system_register_name(REG_TRCACVR2), REG_TRCACVR2); + builder.AddMemberWithValue(get_system_register_name(REG_TRCACVR10), REG_TRCACVR10); + builder.AddMemberWithValue(get_system_register_name(REG_TRCACATR2), REG_TRCACATR2); + builder.AddMemberWithValue(get_system_register_name(REG_TRCACATR10), REG_TRCACATR10); + builder.AddMemberWithValue(get_system_register_name(REG_TRCDVCVR1), REG_TRCDVCVR1); + builder.AddMemberWithValue(get_system_register_name(REG_TRCDVCVR5), REG_TRCDVCVR5); + builder.AddMemberWithValue(get_system_register_name(REG_TRCDVCMR1), REG_TRCDVCMR1); + builder.AddMemberWithValue(get_system_register_name(REG_TRCDVCMR5), REG_TRCDVCMR5); + builder.AddMemberWithValue(get_system_register_name(REG_TRCACVR3), REG_TRCACVR3); + builder.AddMemberWithValue(get_system_register_name(REG_TRCACVR11), REG_TRCACVR11); + builder.AddMemberWithValue(get_system_register_name(REG_TRCACATR3), REG_TRCACATR3); + builder.AddMemberWithValue(get_system_register_name(REG_TRCACATR11), REG_TRCACATR11); + builder.AddMemberWithValue(get_system_register_name(REG_TRCACVR4), REG_TRCACVR4); + builder.AddMemberWithValue(get_system_register_name(REG_TRCACVR12), REG_TRCACVR12); + builder.AddMemberWithValue(get_system_register_name(REG_TRCACATR4), REG_TRCACATR4); + builder.AddMemberWithValue(get_system_register_name(REG_TRCACATR12), REG_TRCACATR12); + builder.AddMemberWithValue(get_system_register_name(REG_TRCDVCVR2), REG_TRCDVCVR2); + builder.AddMemberWithValue(get_system_register_name(REG_TRCDVCVR6), REG_TRCDVCVR6); + builder.AddMemberWithValue(get_system_register_name(REG_TRCDVCMR2), REG_TRCDVCMR2); + builder.AddMemberWithValue(get_system_register_name(REG_TRCDVCMR6), REG_TRCDVCMR6); + builder.AddMemberWithValue(get_system_register_name(REG_TRCACVR5), REG_TRCACVR5); + builder.AddMemberWithValue(get_system_register_name(REG_TRCACVR13), REG_TRCACVR13); + builder.AddMemberWithValue(get_system_register_name(REG_TRCACATR5), REG_TRCACATR5); + builder.AddMemberWithValue(get_system_register_name(REG_TRCACATR13), REG_TRCACATR13); + builder.AddMemberWithValue(get_system_register_name(REG_TRCACVR6), REG_TRCACVR6); + builder.AddMemberWithValue(get_system_register_name(REG_TRCACVR14), REG_TRCACVR14); + builder.AddMemberWithValue(get_system_register_name(REG_TRCACATR6), REG_TRCACATR6); + builder.AddMemberWithValue(get_system_register_name(REG_TRCACATR14), REG_TRCACATR14); + builder.AddMemberWithValue(get_system_register_name(REG_TRCDVCVR3), REG_TRCDVCVR3); + builder.AddMemberWithValue(get_system_register_name(REG_TRCDVCVR7), REG_TRCDVCVR7); + builder.AddMemberWithValue(get_system_register_name(REG_TRCDVCMR3), REG_TRCDVCMR3); + builder.AddMemberWithValue(get_system_register_name(REG_TRCDVCMR7), REG_TRCDVCMR7); + builder.AddMemberWithValue(get_system_register_name(REG_TRCACVR7), REG_TRCACVR7); + builder.AddMemberWithValue(get_system_register_name(REG_TRCACVR15), REG_TRCACVR15); + builder.AddMemberWithValue(get_system_register_name(REG_TRCACATR7), REG_TRCACATR7); + builder.AddMemberWithValue(get_system_register_name(REG_TRCACATR15), REG_TRCACATR15); + builder.AddMemberWithValue(get_system_register_name(REG_TRCCIDCVR0), REG_TRCCIDCVR0); + builder.AddMemberWithValue(get_system_register_name(REG_TRCVMIDCVR0), REG_TRCVMIDCVR0); + builder.AddMemberWithValue(get_system_register_name(REG_TRCCIDCCTLR0), REG_TRCCIDCCTLR0); + builder.AddMemberWithValue(get_system_register_name(REG_TRCCIDCCTLR1), REG_TRCCIDCCTLR1); + builder.AddMemberWithValue(get_system_register_name(REG_TRCCIDCVR1), REG_TRCCIDCVR1); + builder.AddMemberWithValue(get_system_register_name(REG_TRCVMIDCVR1), REG_TRCVMIDCVR1); + builder.AddMemberWithValue(get_system_register_name(REG_TRCVMIDCCTLR0), REG_TRCVMIDCCTLR0); + builder.AddMemberWithValue(get_system_register_name(REG_TRCVMIDCCTLR1), REG_TRCVMIDCCTLR1); + builder.AddMemberWithValue(get_system_register_name(REG_TRCCIDCVR2), REG_TRCCIDCVR2); + builder.AddMemberWithValue(get_system_register_name(REG_TRCVMIDCVR2), REG_TRCVMIDCVR2); + builder.AddMemberWithValue(get_system_register_name(REG_TRCCIDCVR3), REG_TRCCIDCVR3); + builder.AddMemberWithValue(get_system_register_name(REG_TRCVMIDCVR3), REG_TRCVMIDCVR3); + builder.AddMemberWithValue(get_system_register_name(REG_TRCCIDCVR4), REG_TRCCIDCVR4); + builder.AddMemberWithValue(get_system_register_name(REG_TRCVMIDCVR4), REG_TRCVMIDCVR4); + builder.AddMemberWithValue(get_system_register_name(REG_TRCCIDCVR5), REG_TRCCIDCVR5); + builder.AddMemberWithValue(get_system_register_name(REG_TRCVMIDCVR5), REG_TRCVMIDCVR5); + builder.AddMemberWithValue(get_system_register_name(REG_TRCCIDCVR6), REG_TRCCIDCVR6); + builder.AddMemberWithValue(get_system_register_name(REG_TRCVMIDCVR6), REG_TRCVMIDCVR6); + builder.AddMemberWithValue(get_system_register_name(REG_TRCCIDCVR7), REG_TRCCIDCVR7); + builder.AddMemberWithValue(get_system_register_name(REG_TRCVMIDCVR7), REG_TRCVMIDCVR7); + builder.AddMemberWithValue(get_system_register_name(REG_TRCITCTRL), REG_TRCITCTRL); + builder.AddMemberWithValue(get_system_register_name(REG_TRCCLAIMSET), REG_TRCCLAIMSET); + builder.AddMemberWithValue(get_system_register_name(REG_TRCCLAIMCLR), REG_TRCCLAIMCLR); + builder.AddMemberWithValue(get_system_register_name(REG_TRCLAR), REG_TRCLAR); + builder.AddMemberWithValue(get_system_register_name(REG_TEECR32_EL1), REG_TEECR32_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_TEEHBR32_EL1), REG_TEEHBR32_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_MDCCSR_EL0), REG_MDCCSR_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_MDDTR_EL0), REG_MDDTR_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_MDDTRTX_EL0), REG_MDDTRTX_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_DBGVCR32_EL2), REG_DBGVCR32_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_MIDR_EL1), REG_MIDR_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_MPIDR_EL1), REG_MPIDR_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_REVIDR_EL1), REG_REVIDR_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_ID_PFR0_EL1), REG_ID_PFR0_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_ID_PFR1_EL1), REG_ID_PFR1_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_ID_DFR0_EL1), REG_ID_DFR0_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_ID_AFR0_EL1), REG_ID_AFR0_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_ID_MMFR0_EL1), REG_ID_MMFR0_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_ID_MMFR1_EL1), REG_ID_MMFR1_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_ID_MMFR2_EL1), REG_ID_MMFR2_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_ID_MMFR3_EL1), REG_ID_MMFR3_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_ID_ISAR0_EL1), REG_ID_ISAR0_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_ID_ISAR1_EL1), REG_ID_ISAR1_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_ID_ISAR2_EL1), REG_ID_ISAR2_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_ID_ISAR3_EL1), REG_ID_ISAR3_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_ID_ISAR4_EL1), REG_ID_ISAR4_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_ID_ISAR5_EL1), REG_ID_ISAR5_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_ID_MMFR4_EL1), REG_ID_MMFR4_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_ID_ISAR6_EL1), REG_ID_ISAR6_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_MVFR0_EL1), REG_MVFR0_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_MVFR1_EL1), REG_MVFR1_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_MVFR2_EL1), REG_MVFR2_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_ID_AA32RES3_EL1), REG_ID_AA32RES3_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_ID_PFR2_EL1), REG_ID_PFR2_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_ID_AA32RES5_EL1), REG_ID_AA32RES5_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_ID_AA32RES6_EL1), REG_ID_AA32RES6_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_ID_AA32RES7_EL1), REG_ID_AA32RES7_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_ID_AA64PFR0_EL1), REG_ID_AA64PFR0_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_ID_AA64PFR1_EL1), REG_ID_AA64PFR1_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_ID_AA64PFR2_EL1), REG_ID_AA64PFR2_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_ID_AA64PFR3_EL1), REG_ID_AA64PFR3_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_ID_AA64ZFR0_EL1), REG_ID_AA64ZFR0_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_ID_AA64SMFR0_EL1), REG_ID_AA64SMFR0_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_ID_AA64ZFR2_EL1), REG_ID_AA64ZFR2_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_ID_AA64ZFR3_EL1), REG_ID_AA64ZFR3_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_ID_AA64DFR0_EL1), REG_ID_AA64DFR0_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_ID_AA64DFR1_EL1), REG_ID_AA64DFR1_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_ID_AA64DFR2_EL1), REG_ID_AA64DFR2_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_ID_AA64DFR3_EL1), REG_ID_AA64DFR3_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_ID_AA64AFR0_EL1), REG_ID_AA64AFR0_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_ID_AA64AFR1_EL1), REG_ID_AA64AFR1_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_ID_AA64AFR2_EL1), REG_ID_AA64AFR2_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_ID_AA64AFR3_EL1), REG_ID_AA64AFR3_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_ID_AA64ISAR0_EL1), REG_ID_AA64ISAR0_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_ID_AA64ISAR1_EL1), REG_ID_AA64ISAR1_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_ID_AA64ISAR2_EL1), REG_ID_AA64ISAR2_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_ID_AA64ISAR3_EL1), REG_ID_AA64ISAR3_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_ID_AA64ISAR4_EL1), REG_ID_AA64ISAR4_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_ID_AA64ISAR5_EL1), REG_ID_AA64ISAR5_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_ID_AA64ISAR6_EL1), REG_ID_AA64ISAR6_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_ID_AA64ISAR7_EL1), REG_ID_AA64ISAR7_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_ID_AA64MMFR0_EL1), REG_ID_AA64MMFR0_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_ID_AA64MMFR1_EL1), REG_ID_AA64MMFR1_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_ID_AA64MMFR2_EL1), REG_ID_AA64MMFR2_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_ID_AA64MMFR3_EL1), REG_ID_AA64MMFR3_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_ID_AA64MMFR4_EL1), REG_ID_AA64MMFR4_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_ID_AA64MMFR5_EL1), REG_ID_AA64MMFR5_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_ID_AA64MMFR6_EL1), REG_ID_AA64MMFR6_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_ID_AA64MMFR7_EL1), REG_ID_AA64MMFR7_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_SCTLR_EL21), REG_SCTLR_EL21); + builder.AddMemberWithValue(get_system_register_name(REG_ACTLR_EL21), REG_ACTLR_EL21); + builder.AddMemberWithValue(get_system_register_name(REG_CPTR_EL21), REG_CPTR_EL21); + builder.AddMemberWithValue(get_system_register_name(REG_RGSR_EL1), REG_RGSR_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_GCR_EL1), REG_GCR_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_TRFCR_EL1), REG_TRFCR_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_SMPRI_EL1), REG_SMPRI_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_SMCR_EL21), REG_SMCR_EL21); + builder.AddMemberWithValue(get_system_register_name(REG_TTBR0_EL21), REG_TTBR0_EL21); + builder.AddMemberWithValue(get_system_register_name(REG_TTBR1_EL21), REG_TTBR1_EL21); + builder.AddMemberWithValue(get_system_register_name(REG_TCR_EL21), REG_TCR_EL21); + builder.AddMemberWithValue(get_system_register_name(REG_APIAKEYLO_EL21), REG_APIAKEYLO_EL21); + builder.AddMemberWithValue(get_system_register_name(REG_APIAKEYHI_EL21), REG_APIAKEYHI_EL21); + builder.AddMemberWithValue(get_system_register_name(REG_APIBKEYLO_EL21), REG_APIBKEYLO_EL21); + builder.AddMemberWithValue(get_system_register_name(REG_APIBKEYHI_EL21), REG_APIBKEYHI_EL21); + builder.AddMemberWithValue(get_system_register_name(REG_APDAKEYLO_EL21), REG_APDAKEYLO_EL21); + builder.AddMemberWithValue(get_system_register_name(REG_APDAKEYHI_EL21), REG_APDAKEYHI_EL21); + builder.AddMemberWithValue(get_system_register_name(REG_APDBKEYLO_EL21), REG_APDBKEYLO_EL21); + builder.AddMemberWithValue(get_system_register_name(REG_APDBKEYHI_EL21), REG_APDBKEYHI_EL21); + builder.AddMemberWithValue(get_system_register_name(REG_APGAKEYLO_EL21), REG_APGAKEYLO_EL21); + builder.AddMemberWithValue(get_system_register_name(REG_APGAKEYHI_EL21), REG_APGAKEYHI_EL21); + builder.AddMemberWithValue(get_system_register_name(REG_SPSR_EL21), REG_SPSR_EL21); + builder.AddMemberWithValue(get_system_register_name(REG_ELR_EL21), REG_ELR_EL21); + builder.AddMemberWithValue(get_system_register_name(REG_SP_EL0), REG_SP_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_SPSEL), REG_SPSEL); + builder.AddMemberWithValue(get_system_register_name(REG_NESTEDCURRENTEL), REG_NESTEDCURRENTEL); + builder.AddMemberWithValue(get_system_register_name(REG_PAN), REG_PAN); + builder.AddMemberWithValue(get_system_register_name(REG_UAO), REG_UAO); + builder.AddMemberWithValue(get_system_register_name(REG_ICV_PMR_EL1), REG_ICV_PMR_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_AFSR0_EL21), REG_AFSR0_EL21); + builder.AddMemberWithValue(get_system_register_name(REG_AFSR1_EL21), REG_AFSR1_EL21); + builder.AddMemberWithValue(get_system_register_name(REG_ESR_EL21), REG_ESR_EL21); + builder.AddMemberWithValue(get_system_register_name(REG_ERRIDR_EL1), REG_ERRIDR_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_ERRSELR_EL1), REG_ERRSELR_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_ERXCTLR_EL1), REG_ERXCTLR_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_ERXSTATUS_EL1), REG_ERXSTATUS_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_ERXADDR_EL1), REG_ERXADDR_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_ERXPFGCTL_EL1), REG_ERXPFGCTL_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_ERXPFGCDN_EL1), REG_ERXPFGCDN_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_ERXMISC0_EL1), REG_ERXMISC0_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_ERXMISC1_EL1), REG_ERXMISC1_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_ERXMISC2_EL1), REG_ERXMISC2_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_ERXMISC3_EL1), REG_ERXMISC3_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_ERXTS_EL1), REG_ERXTS_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_TFSR_EL1), REG_TFSR_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_TFSRE0_EL1), REG_TFSRE0_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_FAR_EL21), REG_FAR_EL21); + builder.AddMemberWithValue(get_system_register_name(REG_PAR_EL1), REG_PAR_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_PMSCR_EL1), REG_PMSCR_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_PMSICR_EL1), REG_PMSICR_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_PMSIRR_EL1), REG_PMSIRR_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_PMSFCR_EL1), REG_PMSFCR_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_PMSEVFR_EL1), REG_PMSEVFR_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_PMSLATFR_EL1), REG_PMSLATFR_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_PMSIDR_EL1), REG_PMSIDR_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_PMBLIMITR_EL1), REG_PMBLIMITR_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_PMBPTR_EL1), REG_PMBPTR_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_PMBSR_EL1), REG_PMBSR_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_PMBIDR_EL1), REG_PMBIDR_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_TRBLIMITR_EL1), REG_TRBLIMITR_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_TRBPTR_EL1), REG_TRBPTR_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_TRBBASER_EL1), REG_TRBBASER_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_TRBSR_EL1), REG_TRBSR_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_TRBMAR_EL1), REG_TRBMAR_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_TRBTRG_EL1), REG_TRBTRG_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_PMINTENSET_EL1), REG_PMINTENSET_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_PMINTENCLR_EL1), REG_PMINTENCLR_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_PMMIR_EL1), REG_PMMIR_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_MAIR_EL21), REG_MAIR_EL21); + builder.AddMemberWithValue(get_system_register_name(REG_AMAIR_EL21), REG_AMAIR_EL21); + builder.AddMemberWithValue(get_system_register_name(REG_LORSA_EL1), REG_LORSA_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_LOREA_EL1), REG_LOREA_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_LORN_EL1), REG_LORN_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_LORC_EL1), REG_LORC_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_LORID_EL1), REG_LORID_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_MPAM1_EL1), REG_MPAM1_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_MPAM0_EL1), REG_MPAM0_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_CTRR_C_LWR_EL21), REG_CTRR_C_LWR_EL21); + builder.AddMemberWithValue(get_system_register_name(REG_CTRR_C_UPR_EL21), REG_CTRR_C_UPR_EL21); + builder.AddMemberWithValue(get_system_register_name(REG_CTRR_D_LWR_EL21), REG_CTRR_D_LWR_EL21); + builder.AddMemberWithValue(get_system_register_name(REG_CTRR_D_UPR_EL21), REG_CTRR_D_UPR_EL21); + builder.AddMemberWithValue(get_system_register_name(REG_CTRR_C_LWR_EL12), REG_CTRR_C_LWR_EL12); + builder.AddMemberWithValue(get_system_register_name(REG_CTRR_C_UPR_EL12), REG_CTRR_C_UPR_EL12); + builder.AddMemberWithValue(get_system_register_name(REG_CTRR_D_LWR_EL12), REG_CTRR_D_LWR_EL12); + builder.AddMemberWithValue(get_system_register_name(REG_CTRR_D_UPR_EL12), REG_CTRR_D_UPR_EL12); + builder.AddMemberWithValue(get_system_register_name(REG_CTRR_C_LWR_EL2), REG_CTRR_C_LWR_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_CTRR_C_UPR_EL2), REG_CTRR_C_UPR_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_CTRR_D_LWR_EL2), REG_CTRR_D_LWR_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_CTRR_D_UPR_EL2), REG_CTRR_D_UPR_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_CTRR_C_CTL_EL21), REG_CTRR_C_CTL_EL21); + builder.AddMemberWithValue(get_system_register_name(REG_CTRR_D_CTL_EL21), REG_CTRR_D_CTL_EL21); + builder.AddMemberWithValue(get_system_register_name(REG_CTRR_C_CTL_EL12), REG_CTRR_C_CTL_EL12); + builder.AddMemberWithValue(get_system_register_name(REG_CTRR_D_CTL_EL12), REG_CTRR_D_CTL_EL12); + builder.AddMemberWithValue(get_system_register_name(REG_CTRR_C_CTL_EL2), REG_CTRR_C_CTL_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_CTRR_D_CTL_EL2), REG_CTRR_D_CTL_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_CTXR_A_LWR_EL21), REG_CTXR_A_LWR_EL21); + builder.AddMemberWithValue(get_system_register_name(REG_CTXR_A_UPR_EL21), REG_CTXR_A_UPR_EL21); + builder.AddMemberWithValue(get_system_register_name(REG_CTXR_B_LWR_EL21), REG_CTXR_B_LWR_EL21); + builder.AddMemberWithValue(get_system_register_name(REG_CTXR_B_UPR_EL21), REG_CTXR_B_UPR_EL21); + builder.AddMemberWithValue(get_system_register_name(REG_CTXR_C_LWR_EL21), REG_CTXR_C_LWR_EL21); + builder.AddMemberWithValue(get_system_register_name(REG_CTXR_C_UPR_EL21), REG_CTXR_C_UPR_EL21); + builder.AddMemberWithValue(get_system_register_name(REG_CTXR_D_LWR_EL21), REG_CTXR_D_LWR_EL21); + builder.AddMemberWithValue(get_system_register_name(REG_CTXR_D_UPR_EL21), REG_CTXR_D_UPR_EL21); + builder.AddMemberWithValue(get_system_register_name(REG_CTXR_A_LWR_EL12), REG_CTXR_A_LWR_EL12); + builder.AddMemberWithValue(get_system_register_name(REG_CTXR_A_UPR_EL12), REG_CTXR_A_UPR_EL12); + builder.AddMemberWithValue(get_system_register_name(REG_CTXR_B_LWR_EL12), REG_CTXR_B_LWR_EL12); + builder.AddMemberWithValue(get_system_register_name(REG_CTXR_B_UPR_EL12), REG_CTXR_B_UPR_EL12); + builder.AddMemberWithValue(get_system_register_name(REG_CTXR_C_LWR_EL12), REG_CTXR_C_LWR_EL12); + builder.AddMemberWithValue(get_system_register_name(REG_CTXR_C_UPR_EL12), REG_CTXR_C_UPR_EL12); + builder.AddMemberWithValue(get_system_register_name(REG_CTXR_D_LWR_EL12), REG_CTXR_D_LWR_EL12); + builder.AddMemberWithValue(get_system_register_name(REG_CTXR_D_UPR_EL12), REG_CTXR_D_UPR_EL12); + builder.AddMemberWithValue(get_system_register_name(REG_CTXR_A_LWR_EL2), REG_CTXR_A_LWR_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_CTXR_A_UPR_EL2), REG_CTXR_A_UPR_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_CTXR_B_LWR_EL2), REG_CTXR_B_LWR_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_CTXR_B_UPR_EL2), REG_CTXR_B_UPR_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_CTXR_C_LWR_EL2), REG_CTXR_C_LWR_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_CTXR_C_UPR_EL2), REG_CTXR_C_UPR_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_CTXR_D_LWR_EL2), REG_CTXR_D_LWR_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_CTXR_D_UPR_EL2), REG_CTXR_D_UPR_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_CTXR_A_CTL_EL21), REG_CTXR_A_CTL_EL21); + builder.AddMemberWithValue(get_system_register_name(REG_CTXR_B_CTL_EL21), REG_CTXR_B_CTL_EL21); + builder.AddMemberWithValue(get_system_register_name(REG_CTXR_C_CTL_EL21), REG_CTXR_C_CTL_EL21); + builder.AddMemberWithValue(get_system_register_name(REG_CTXR_D_CTL_EL21), REG_CTXR_D_CTL_EL21); + builder.AddMemberWithValue(get_system_register_name(REG_CTXR_A_CTL_EL12), REG_CTXR_A_CTL_EL12); + builder.AddMemberWithValue(get_system_register_name(REG_CTXR_B_CTL_EL12), REG_CTXR_B_CTL_EL12); + builder.AddMemberWithValue(get_system_register_name(REG_CTXR_C_CTL_EL12), REG_CTXR_C_CTL_EL12); + builder.AddMemberWithValue(get_system_register_name(REG_CTXR_D_CTL_EL12), REG_CTXR_D_CTL_EL12); + builder.AddMemberWithValue(get_system_register_name(REG_CTXR_A_CTL_EL2), REG_CTXR_A_CTL_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_CTXR_B_CTL_EL2), REG_CTXR_B_CTL_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_CTXR_C_CTL_EL2), REG_CTXR_C_CTL_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_CTXR_D_CTL_EL2), REG_CTXR_D_CTL_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_ACC_CTRR_C_LWR_EL2), REG_ACC_CTRR_C_LWR_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_ACC_CTRR_C_UPR_EL2), REG_ACC_CTRR_C_UPR_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_ACC_CTRR_D_LWR_EL2), REG_ACC_CTRR_D_LWR_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_ACC_CTRR_D_UPR_EL2), REG_ACC_CTRR_D_UPR_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_ACC_CTXR_A_LWR_EL2), REG_ACC_CTXR_A_LWR_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_ACC_CTXR_A_UPR_EL2), REG_ACC_CTXR_A_UPR_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_ACC_CTXR_B_LWR_EL2), REG_ACC_CTXR_B_LWR_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_ACC_CTXR_B_UPR_EL2), REG_ACC_CTXR_B_UPR_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_ACC_CTXR_C_LWR_EL2), REG_ACC_CTXR_C_LWR_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_ACC_CTXR_C_UPR_EL2), REG_ACC_CTXR_C_UPR_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_ACC_CTXR_D_LWR_EL2), REG_ACC_CTXR_D_LWR_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_ACC_CTXR_D_UPR_EL2), REG_ACC_CTXR_D_UPR_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_ACC_CTRR_C_CTL_EL2), REG_ACC_CTRR_C_CTL_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_ACC_CTRR_D_CTL_EL2), REG_ACC_CTRR_D_CTL_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_ACC_CTXR_A_CTL_EL2), REG_ACC_CTXR_A_CTL_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_ACC_CTXR_B_CTL_EL2), REG_ACC_CTXR_B_CTL_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_ACC_CTXR_C_CTL_EL2), REG_ACC_CTXR_C_CTL_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_ACC_CTXR_D_CTL_EL2), REG_ACC_CTXR_D_CTL_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_VBAR_EL21), REG_VBAR_EL21); + builder.AddMemberWithValue(get_system_register_name(REG_RVBAR_EL1), REG_RVBAR_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_RMR_EL1), REG_RMR_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_ISR_EL1), REG_ISR_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_DISR_EL1), REG_DISR_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_ICV_IAR0_EL1), REG_ICV_IAR0_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_ICV_EOIR0_EL1), REG_ICV_EOIR0_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_ICV_HPPIR0_EL1), REG_ICV_HPPIR0_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_ICV_BPR0_EL1), REG_ICV_BPR0_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_ICC_AP0R0_EL1), REG_ICC_AP0R0_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_ICC_AP0R1_EL1), REG_ICC_AP0R1_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_ICC_AP0R2_EL1), REG_ICC_AP0R2_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_ICC_AP0R3_EL1), REG_ICC_AP0R3_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_ICC_AP1R0_EL1), REG_ICC_AP1R0_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_ICC_AP1R1_EL1), REG_ICC_AP1R1_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_ICC_AP1R2_EL1), REG_ICC_AP1R2_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_ICC_AP1R3_EL1), REG_ICC_AP1R3_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_ICV_DIR_EL1), REG_ICV_DIR_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_ICV_RPR_EL1), REG_ICV_RPR_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_ICC_SGI1R_EL1), REG_ICC_SGI1R_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_ICC_ASGI1R_EL1), REG_ICC_ASGI1R_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_ICC_SGI0R_EL1), REG_ICC_SGI0R_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_ICV_IAR1_EL1), REG_ICV_IAR1_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_ICV_EOIR1_EL1), REG_ICV_EOIR1_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_ICV_HPPIR1_EL1), REG_ICV_HPPIR1_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_ICV_BPR1_EL1), REG_ICV_BPR1_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_ICV_CTLR_EL1), REG_ICV_CTLR_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_ICC_SRE_EL1), REG_ICC_SRE_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_ICV_IGRPEN0_EL1), REG_ICV_IGRPEN0_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_ICV_IGRPEN1_EL1), REG_ICV_IGRPEN1_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_ICC_SEIEN_EL1), REG_ICC_SEIEN_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_CONTEXTIDR_EL21), REG_CONTEXTIDR_EL21); + builder.AddMemberWithValue(get_system_register_name(REG_TPIDR_EL1), REG_TPIDR_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_SCXTNUM_EL21), REG_SCXTNUM_EL21); + builder.AddMemberWithValue(get_system_register_name(REG_REDIR_CNTKCTL_EL1), REG_REDIR_CNTKCTL_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_HID0), REG_HID0); + builder.AddMemberWithValue(get_system_register_name(REG_HID25), REG_HID25); + builder.AddMemberWithValue(get_system_register_name(REG_HID26), REG_HID26); + builder.AddMemberWithValue(get_system_register_name(REG_HID27), REG_HID27); + builder.AddMemberWithValue(get_system_register_name(REG_HID28), REG_HID28); + builder.AddMemberWithValue(get_system_register_name(REG_HID29), REG_HID29); + builder.AddMemberWithValue(get_system_register_name(REG_HID34), REG_HID34); + builder.AddMemberWithValue(get_system_register_name(REG_HID1), REG_HID1); + builder.AddMemberWithValue(get_system_register_name(REG_HID21), REG_HID21); + builder.AddMemberWithValue(get_system_register_name(REG_BIUVCSCUPCMDCRD), REG_BIUVCSCUPCMDCRD); + builder.AddMemberWithValue(get_system_register_name(REG_BIUVCSCUPDATCRD), REG_BIUVCSCUPDATCRD); + builder.AddMemberWithValue(get_system_register_name(REG_HID2), REG_HID2); + builder.AddMemberWithValue(get_system_register_name(REG_HID30), REG_HID30); + builder.AddMemberWithValue(get_system_register_name(REG_HID31), REG_HID31); + builder.AddMemberWithValue(get_system_register_name(REG_HID32), REG_HID32); + builder.AddMemberWithValue(get_system_register_name(REG_HID33), REG_HID33); + builder.AddMemberWithValue(get_system_register_name(REG_HID3), REG_HID3); + builder.AddMemberWithValue(get_system_register_name(REG_BIUVCSCUPCMDCRDC2), REG_BIUVCSCUPCMDCRDC2); + builder.AddMemberWithValue(get_system_register_name(REG_BIUVCSCUPDATCRDC2), REG_BIUVCSCUPDATCRDC2); + builder.AddMemberWithValue(get_system_register_name(REG_HID4), REG_HID4); + builder.AddMemberWithValue(get_system_register_name(REG_HID5), REG_HID5); + builder.AddMemberWithValue(get_system_register_name(REG_HID6), REG_HID6); + builder.AddMemberWithValue(get_system_register_name(REG_HID7), REG_HID7); + builder.AddMemberWithValue(get_system_register_name(REG_HID8), REG_HID8); + builder.AddMemberWithValue(get_system_register_name(REG_HID9), REG_HID9); + builder.AddMemberWithValue(get_system_register_name(REG_HID10), REG_HID10); + builder.AddMemberWithValue(get_system_register_name(REG_BLOCK_CMAINT_CFG), REG_BLOCK_CMAINT_CFG); + builder.AddMemberWithValue(get_system_register_name(REG_HID11), REG_HID11); + builder.AddMemberWithValue(get_system_register_name(REG_HID18), REG_HID18); + builder.AddMemberWithValue(get_system_register_name(REG_HID36), REG_HID36); + builder.AddMemberWithValue(get_system_register_name(REG_HID37), REG_HID37); + builder.AddMemberWithValue(get_system_register_name(REG_HID12), REG_HID12); + builder.AddMemberWithValue(get_system_register_name(REG_HID15), REG_HID15); + builder.AddMemberWithValue(get_system_register_name(REG_HID19), REG_HID19); + builder.AddMemberWithValue(get_system_register_name(REG_BIU_TLIMIT), REG_BIU_TLIMIT); + builder.AddMemberWithValue(get_system_register_name(REG_HID13), REG_HID13); + builder.AddMemberWithValue(get_system_register_name(REG_HID_RCTX_G0CTL), REG_HID_RCTX_G0CTL); + builder.AddMemberWithValue(get_system_register_name(REG_HID_RCTX_G1CTL), REG_HID_RCTX_G1CTL); + builder.AddMemberWithValue(get_system_register_name(REG_HID14), REG_HID14); + builder.AddMemberWithValue(get_system_register_name(REG_HID16), REG_HID16); + builder.AddMemberWithValue(get_system_register_name(REG_LLC_WRR2), REG_LLC_WRR2); + builder.AddMemberWithValue(get_system_register_name(REG_BIU_AFI_CFG), REG_BIU_AFI_CFG); + builder.AddMemberWithValue(get_system_register_name(REG_HID17), REG_HID17); + builder.AddMemberWithValue(get_system_register_name(REG_HID24), REG_HID24); + builder.AddMemberWithValue(get_system_register_name(REG_HID35), REG_HID35); + builder.AddMemberWithValue(get_system_register_name(REG_CCSIDRPL1_I_EL1), REG_CCSIDRPL1_I_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_CLIDR_EL1), REG_CLIDR_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_SMIDR_EL1), REG_SMIDR_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_AIDR_EL1), REG_AIDR_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_PMCR0_EL1), REG_PMCR0_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_APPL_CONTEXTPTR), REG_APPL_CONTEXTPTR); + builder.AddMemberWithValue(get_system_register_name(REG_LD_LATPROF_CTL_EL21), REG_LD_LATPROF_CTL_EL21); + builder.AddMemberWithValue(get_system_register_name(REG_AON_CPU_MSTALL_CTL01_EL1), REG_AON_CPU_MSTALL_CTL01_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_PM_MEMFLT_CTL23_EL1), REG_PM_MEMFLT_CTL23_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_REDIR_ACNTV_CTL_EL0), REG_REDIR_ACNTV_CTL_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_LCL_ACNTVCTSS_NOREDIR_EL0), REG_LCL_ACNTVCTSS_NOREDIR_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_PMCR1_EL21), REG_PMCR1_EL21); + builder.AddMemberWithValue(get_system_register_name(REG_LD_LATPROF_CTR_EL1), REG_LD_LATPROF_CTR_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_AON_CPU_MSTALL_CTL23_EL1), REG_AON_CPU_MSTALL_CTL23_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_PM_MEMFLT_CTL45_EL1), REG_PM_MEMFLT_CTL45_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_AGTCNTRDIR_EL21), REG_AGTCNTRDIR_EL21); + builder.AddMemberWithValue(get_system_register_name(REG_AGTCNTKCTL_NOREDIR_EL1), REG_AGTCNTKCTL_NOREDIR_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_PMCR2_EL1), REG_PMCR2_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_LD_LATPROF_STS_EL1), REG_LD_LATPROF_STS_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_AON_CPU_MSTALL_CTL45_EL1), REG_AON_CPU_MSTALL_CTL45_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_REDIR_ACNTHP_CVAL_EL2), REG_REDIR_ACNTHP_CVAL_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_LCL_CNTVCT_NOREDIR_EL0), REG_LCL_CNTVCT_NOREDIR_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_AGTCNTP_CVAL_NOREDIR_EL0), REG_AGTCNTP_CVAL_NOREDIR_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_PMCR3_EL1), REG_PMCR3_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_LD_LATPROF_INF_EL1), REG_LD_LATPROF_INF_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_AON_CPU_MSTALL_CTL67_EL1), REG_AON_CPU_MSTALL_CTL67_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_REDIR_ACNTHP_TVAL_EL2), REG_REDIR_ACNTHP_TVAL_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_LCL_CNTPCTSS_NOREDIR_EL0), REG_LCL_CNTPCTSS_NOREDIR_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_AGTCNTP_TVAL_NOREDIR_EL0), REG_AGTCNTP_TVAL_NOREDIR_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_PMCR4_EL1), REG_PMCR4_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_LD_LATPROF_CTL_EL2), REG_LD_LATPROF_CTL_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_AON_CPU_MEMFLT_CTL01_EL1), REG_AON_CPU_MEMFLT_CTL01_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_REDIR_ACNTHP_CTL_EL2), REG_REDIR_ACNTHP_CTL_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_LCL_CNTVCTSS_NOREDIR_EL0), REG_LCL_CNTVCTSS_NOREDIR_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_AGTCNTP_CTL_NOREDIR_EL0), REG_AGTCNTP_CTL_NOREDIR_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_PMESR0_EL1), REG_PMESR0_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_LD_LATPROF_CMD_EL1), REG_LD_LATPROF_CMD_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_AON_CPU_MEMFLT_CTL23_EL1), REG_AON_CPU_MEMFLT_CTL23_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_REDIR_ACNTHV_CVAL_EL2), REG_REDIR_ACNTHV_CVAL_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_AGTCNTV_CVAL_NOREDIR_EL0), REG_AGTCNTV_CVAL_NOREDIR_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_PMESR1_EL1), REG_PMESR1_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_PMCR1_EL2), REG_PMCR1_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_AON_CPU_MEMFLT_CTL45_EL1), REG_AON_CPU_MEMFLT_CTL45_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_REDIR_ACNTHV_TVAL_EL2), REG_REDIR_ACNTHV_TVAL_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_CNTKCTL_NOREDIR_EL1), REG_CNTKCTL_NOREDIR_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_AGTCNTV_TVAL_NOREDIR_EL0), REG_AGTCNTV_TVAL_NOREDIR_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_OPMAT0_EL1), REG_OPMAT0_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_PMCR1_EL12), REG_PMCR1_EL12); + builder.AddMemberWithValue(get_system_register_name(REG_AON_CPU_MEMFLT_CTL67_EL1), REG_AON_CPU_MEMFLT_CTL67_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_REDIR_ACNTHV_CTL_EL2), REG_REDIR_ACNTHV_CTL_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_CNTP_CVAL_NOREDIR_EL0), REG_CNTP_CVAL_NOREDIR_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_AGTCNTV_CTL_NOREDIR_EL0), REG_AGTCNTV_CTL_NOREDIR_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_OPMAT1_EL1), REG_OPMAT1_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_PMCR1_GL12), REG_PMCR1_GL12); + builder.AddMemberWithValue(get_system_register_name(REG_AON_CPU_MSTALL_CTR0_EL1), REG_AON_CPU_MSTALL_CTR0_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_REDIR_ACNTFRQ_EL0), REG_REDIR_ACNTFRQ_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_CNTP_TVAL_NOREDIR_EL0), REG_CNTP_TVAL_NOREDIR_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_LCL_CNTPCT_NOREDIR_EL0), REG_LCL_CNTPCT_NOREDIR_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_OPMSK0_EL1), REG_OPMSK0_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_LD_LATPROF_CTL_EL12), REG_LD_LATPROF_CTL_EL12); + builder.AddMemberWithValue(get_system_register_name(REG_AON_CPU_MSTALL_CTR1_EL1), REG_AON_CPU_MSTALL_CTR1_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_AGTCNTVOFF_EL2), REG_AGTCNTVOFF_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_CNTP_CTL_NOREDIR_EL0), REG_CNTP_CTL_NOREDIR_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_CNTV_CTL_NOREDIR_EL0), REG_CNTV_CTL_NOREDIR_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_OPMSK1_EL1), REG_OPMSK1_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_LD_LATPROF_INF_EL2), REG_LD_LATPROF_INF_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_AON_CPU_MSTALL_CTR2_EL1), REG_AON_CPU_MSTALL_CTR2_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_REDIR_ACNTP_CVAL_EL0), REG_REDIR_ACNTP_CVAL_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_CNTV_CVAL_NOREDIR_EL0), REG_CNTV_CVAL_NOREDIR_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_LCL_ACNTPCT_NOREDIR_EL0), REG_LCL_ACNTPCT_NOREDIR_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_AON_CPU_MSTALL_CTR3_EL1), REG_AON_CPU_MSTALL_CTR3_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_REDIR_ACNTP_TVAL_EL0), REG_REDIR_ACNTP_TVAL_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_CNTV_TVAL_NOREDIR_EL0), REG_CNTV_TVAL_NOREDIR_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_VMSA_HV_LOCK_EL2), REG_VMSA_HV_LOCK_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_PMSWCTRL_EL1), REG_PMSWCTRL_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_PMCR5_EL0), REG_PMCR5_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_AON_CPU_MSTALL_CTR4_EL1), REG_AON_CPU_MSTALL_CTR4_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_PMCOMPARE0_EL1), REG_PMCOMPARE0_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_PMCOMPARE1_EL1), REG_PMCOMPARE1_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_VMSA_NV_LOCK_EL2), REG_VMSA_NV_LOCK_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_PMSR_EL1), REG_PMSR_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_AON_CPU_MSTALL_CTR5_EL1), REG_AON_CPU_MSTALL_CTR5_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_REDIR_ACNTP_CTL_EL0), REG_REDIR_ACNTP_CTL_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_PMCOMPARE5_EL1), REG_PMCOMPARE5_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_PMCOMPARE6_EL1), REG_PMCOMPARE6_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_PMCOMPARE7_EL1), REG_PMCOMPARE7_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_PMCR_BVRNG4_EL1), REG_PMCR_BVRNG4_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_PM_PMI_PC), REG_PM_PMI_PC); + builder.AddMemberWithValue(get_system_register_name(REG_AON_CPU_MSTALL_CTR6_EL1), REG_AON_CPU_MSTALL_CTR6_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_REDIR_ACNTV_CVAL_EL0), REG_REDIR_ACNTV_CVAL_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_LCL_ACNTVCT_NOREDIR_EL0), REG_LCL_ACNTVCT_NOREDIR_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_PMCR_BVRNG5_EL1), REG_PMCR_BVRNG5_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_AON_CPU_MSTALL_CTR7_EL1), REG_AON_CPU_MSTALL_CTR7_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_REDIR_ACNTV_TVAL_EL0), REG_REDIR_ACNTV_TVAL_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_LCL_ACNTPCTSS_NOREDIR_EL0), REG_LCL_ACNTPCTSS_NOREDIR_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_CSSELR_EL1), REG_CSSELR_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_PMC0), REG_PMC0); + builder.AddMemberWithValue(get_system_register_name(REG_UPMCFILTER0), REG_UPMCFILTER0); + builder.AddMemberWithValue(get_system_register_name(REG_UPMCFILTER1), REG_UPMCFILTER1); + builder.AddMemberWithValue(get_system_register_name(REG_UPMCFILTER2), REG_UPMCFILTER2); + builder.AddMemberWithValue(get_system_register_name(REG_UPMCFILTER3), REG_UPMCFILTER3); + builder.AddMemberWithValue(get_system_register_name(REG_UPMCFILTER4), REG_UPMCFILTER4); + builder.AddMemberWithValue(get_system_register_name(REG_UPMCFILTER5), REG_UPMCFILTER5); + builder.AddMemberWithValue(get_system_register_name(REG_UPMCFILTER6), REG_UPMCFILTER6); + builder.AddMemberWithValue(get_system_register_name(REG_PMC1), REG_PMC1); + builder.AddMemberWithValue(get_system_register_name(REG_UPMCFILTER7), REG_UPMCFILTER7); + builder.AddMemberWithValue(get_system_register_name(REG_PMC2), REG_PMC2); + builder.AddMemberWithValue(get_system_register_name(REG_PMC3), REG_PMC3); + builder.AddMemberWithValue(get_system_register_name(REG_PMC4), REG_PMC4); + builder.AddMemberWithValue(get_system_register_name(REG_PMC5), REG_PMC5); + builder.AddMemberWithValue(get_system_register_name(REG_PMC6), REG_PMC6); + builder.AddMemberWithValue(get_system_register_name(REG_PMC7), REG_PMC7); + builder.AddMemberWithValue(get_system_register_name(REG_PMC8), REG_PMC8); + builder.AddMemberWithValue(get_system_register_name(REG_PMC9), REG_PMC9); + builder.AddMemberWithValue(get_system_register_name(REG_PMTRHLD6_EL1), REG_PMTRHLD6_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_PMTRHLD4_EL1), REG_PMTRHLD4_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_PMTRHLD2_EL1), REG_PMTRHLD2_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_PMMMAP_EL1), REG_PMMMAP_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_CTR_EL0), REG_CTR_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_DCZID_EL0), REG_DCZID_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_NZCV), REG_NZCV); + builder.AddMemberWithValue(get_system_register_name(REG_DAIF), REG_DAIF); + builder.AddMemberWithValue(get_system_register_name(REG_SVCR), REG_SVCR); + builder.AddMemberWithValue(get_system_register_name(REG_DIT), REG_DIT); + builder.AddMemberWithValue(get_system_register_name(REG_SSBS), REG_SSBS); + builder.AddMemberWithValue(get_system_register_name(REG_TCO), REG_TCO); + builder.AddMemberWithValue(get_system_register_name(REG_FPCR), REG_FPCR); + builder.AddMemberWithValue(get_system_register_name(REG_FPSR), REG_FPSR); + builder.AddMemberWithValue(get_system_register_name(REG_DSPSR_EL0), REG_DSPSR_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_DLR_EL0), REG_DLR_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_PMCR_EL0), REG_PMCR_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_PMCNTENSET_EL0), REG_PMCNTENSET_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_PMCNTENCLR_EL0), REG_PMCNTENCLR_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_PMOVSCLR_EL0), REG_PMOVSCLR_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_PMSWINC_EL0), REG_PMSWINC_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_PMSELR_EL0), REG_PMSELR_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_PMCCNTR_EL0), REG_PMCCNTR_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_PMXEVTYPER_EL0), REG_PMXEVTYPER_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_PMXEVCNTR_EL0), REG_PMXEVCNTR_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_DAIFCLR), REG_DAIFCLR); + builder.AddMemberWithValue(get_system_register_name(REG_PMUSERENR_EL0), REG_PMUSERENR_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_PMOVSSET_EL0), REG_PMOVSSET_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_TPIDR_EL0), REG_TPIDR_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_TPIDRRO_EL0), REG_TPIDRRO_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_TPIDR2_EL0), REG_TPIDR2_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_SCXTNUM_EL0), REG_SCXTNUM_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_AMCR_EL0), REG_AMCR_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_AMUSERENR_EL0), REG_AMUSERENR_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_AMCNTENCLR0_EL0), REG_AMCNTENCLR0_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_AMCNTENSET0_EL0), REG_AMCNTENSET0_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_AMCNTENCLR1_EL0), REG_AMCNTENCLR1_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_AMCNTENSET1_EL0), REG_AMCNTENSET1_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_AMEVCNTR00_EL0), REG_AMEVCNTR00_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_AMEVCNTR01_EL0), REG_AMEVCNTR01_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_AMEVCNTR02_EL0), REG_AMEVCNTR02_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_AMEVCNTR03_EL0), REG_AMEVCNTR03_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_AMEVCNTR10_EL0), REG_AMEVCNTR10_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_AMEVCNTR11_EL0), REG_AMEVCNTR11_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_AMEVCNTR12_EL0), REG_AMEVCNTR12_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_AMEVCNTR13_EL0), REG_AMEVCNTR13_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_AMEVCNTR14_EL0), REG_AMEVCNTR14_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_AMEVCNTR15_EL0), REG_AMEVCNTR15_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_AMEVCNTR16_EL0), REG_AMEVCNTR16_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_AMEVCNTR17_EL0), REG_AMEVCNTR17_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_AMEVCNTR18_EL0), REG_AMEVCNTR18_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_AMEVCNTR19_EL0), REG_AMEVCNTR19_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_AMEVCNTR110_EL0), REG_AMEVCNTR110_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_AMEVCNTR111_EL0), REG_AMEVCNTR111_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_AMEVCNTR112_EL0), REG_AMEVCNTR112_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_AMEVCNTR113_EL0), REG_AMEVCNTR113_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_AMEVCNTR114_EL0), REG_AMEVCNTR114_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_AMEVCNTR115_EL0), REG_AMEVCNTR115_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_AMEVTYPER10_EL0), REG_AMEVTYPER10_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_AMEVTYPER11_EL0), REG_AMEVTYPER11_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_AMEVTYPER12_EL0), REG_AMEVTYPER12_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_AMEVTYPER13_EL0), REG_AMEVTYPER13_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_AMEVTYPER14_EL0), REG_AMEVTYPER14_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_AMEVTYPER15_EL0), REG_AMEVTYPER15_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_AMEVTYPER16_EL0), REG_AMEVTYPER16_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_AMEVTYPER17_EL0), REG_AMEVTYPER17_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_AMEVTYPER18_EL0), REG_AMEVTYPER18_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_AMEVTYPER19_EL0), REG_AMEVTYPER19_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_AMEVTYPER110_EL0), REG_AMEVTYPER110_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_AMEVTYPER111_EL0), REG_AMEVTYPER111_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_AMEVTYPER112_EL0), REG_AMEVTYPER112_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_AMEVTYPER113_EL0), REG_AMEVTYPER113_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_AMEVTYPER114_EL0), REG_AMEVTYPER114_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_AMEVTYPER115_EL0), REG_AMEVTYPER115_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_REDIR_CNTFRQ_EL0), REG_REDIR_CNTFRQ_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_REDIR_LCL_CNTPCT_EL0), REG_REDIR_LCL_CNTPCT_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_REDIR_LCL_CNTVCT_EL0), REG_REDIR_LCL_CNTVCT_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_REDIR_LCL_CNTPCTSS_EL0), REG_REDIR_LCL_CNTPCTSS_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_REDIR_LCL_CNTVCTSS_EL0), REG_REDIR_LCL_CNTVCTSS_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_REDIR_CNTP_TVAL_EL0), REG_REDIR_CNTP_TVAL_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_REDIR_CNTP_CTL_EL0), REG_REDIR_CNTP_CTL_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_REDIR_CNTP_CVAL_EL0), REG_REDIR_CNTP_CVAL_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_REDIR_CNTV_TVAL_EL0), REG_REDIR_CNTV_TVAL_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_REDIR_CNTV_CTL_EL0), REG_REDIR_CNTV_CTL_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_REDIR_CNTV_CVAL_EL0), REG_REDIR_CNTV_CVAL_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_PMEVCNTR0_EL0), REG_PMEVCNTR0_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_PMEVCNTR1_EL0), REG_PMEVCNTR1_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_PMEVCNTR2_EL0), REG_PMEVCNTR2_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_PMEVCNTR3_EL0), REG_PMEVCNTR3_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_PMEVCNTR4_EL0), REG_PMEVCNTR4_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_PMEVCNTR5_EL0), REG_PMEVCNTR5_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_PMEVCNTR6_EL0), REG_PMEVCNTR6_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_PMEVCNTR7_EL0), REG_PMEVCNTR7_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_PMEVCNTR8_EL0), REG_PMEVCNTR8_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_PMEVCNTR9_EL0), REG_PMEVCNTR9_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_PMEVCNTR10_EL0), REG_PMEVCNTR10_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_PMEVCNTR11_EL0), REG_PMEVCNTR11_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_PMEVCNTR12_EL0), REG_PMEVCNTR12_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_PMEVCNTR13_EL0), REG_PMEVCNTR13_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_PMEVCNTR14_EL0), REG_PMEVCNTR14_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_PMEVCNTR15_EL0), REG_PMEVCNTR15_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_PMEVCNTR16_EL0), REG_PMEVCNTR16_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_PMEVCNTR17_EL0), REG_PMEVCNTR17_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_PMEVCNTR18_EL0), REG_PMEVCNTR18_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_PMEVCNTR19_EL0), REG_PMEVCNTR19_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_PMEVCNTR20_EL0), REG_PMEVCNTR20_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_PMEVCNTR21_EL0), REG_PMEVCNTR21_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_PMEVCNTR22_EL0), REG_PMEVCNTR22_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_PMEVCNTR23_EL0), REG_PMEVCNTR23_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_PMEVCNTR24_EL0), REG_PMEVCNTR24_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_PMEVCNTR25_EL0), REG_PMEVCNTR25_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_PMEVCNTR26_EL0), REG_PMEVCNTR26_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_PMEVCNTR27_EL0), REG_PMEVCNTR27_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_PMEVCNTR28_EL0), REG_PMEVCNTR28_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_PMEVCNTR29_EL0), REG_PMEVCNTR29_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_PMEVCNTR30_EL0), REG_PMEVCNTR30_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_PMEVTYPER0_EL0), REG_PMEVTYPER0_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_PMEVTYPER1_EL0), REG_PMEVTYPER1_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_PMEVTYPER2_EL0), REG_PMEVTYPER2_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_PMEVTYPER3_EL0), REG_PMEVTYPER3_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_PMEVTYPER4_EL0), REG_PMEVTYPER4_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_PMEVTYPER5_EL0), REG_PMEVTYPER5_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_PMEVTYPER6_EL0), REG_PMEVTYPER6_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_PMEVTYPER7_EL0), REG_PMEVTYPER7_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_PMEVTYPER8_EL0), REG_PMEVTYPER8_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_PMEVTYPER9_EL0), REG_PMEVTYPER9_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_PMEVTYPER10_EL0), REG_PMEVTYPER10_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_PMEVTYPER11_EL0), REG_PMEVTYPER11_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_PMEVTYPER12_EL0), REG_PMEVTYPER12_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_PMEVTYPER13_EL0), REG_PMEVTYPER13_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_PMEVTYPER14_EL0), REG_PMEVTYPER14_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_PMEVTYPER15_EL0), REG_PMEVTYPER15_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_PMEVTYPER16_EL0), REG_PMEVTYPER16_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_PMEVTYPER17_EL0), REG_PMEVTYPER17_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_PMEVTYPER18_EL0), REG_PMEVTYPER18_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_PMEVTYPER19_EL0), REG_PMEVTYPER19_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_PMEVTYPER20_EL0), REG_PMEVTYPER20_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_PMEVTYPER21_EL0), REG_PMEVTYPER21_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_PMEVTYPER22_EL0), REG_PMEVTYPER22_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_PMEVTYPER23_EL0), REG_PMEVTYPER23_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_PMEVTYPER24_EL0), REG_PMEVTYPER24_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_PMEVTYPER25_EL0), REG_PMEVTYPER25_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_PMEVTYPER26_EL0), REG_PMEVTYPER26_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_PMEVTYPER27_EL0), REG_PMEVTYPER27_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_PMEVTYPER28_EL0), REG_PMEVTYPER28_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_PMEVTYPER29_EL0), REG_PMEVTYPER29_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_PMEVTYPER30_EL0), REG_PMEVTYPER30_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_PMCCFILTR_EL0), REG_PMCCFILTR_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_LSU_ERR_STS), REG_LSU_ERR_STS); + builder.AddMemberWithValue(get_system_register_name(REG_AFLATCTL1_EL1), REG_AFLATCTL1_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_AFLATVALBIN0_EL1), REG_AFLATVALBIN0_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_AFLATINFLO_EL1), REG_AFLATINFLO_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_LSU_ERR_CTL), REG_LSU_ERR_CTL); + builder.AddMemberWithValue(get_system_register_name(REG_AFLATCTL2_EL1), REG_AFLATCTL2_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_AFLATVALBIN1_EL1), REG_AFLATVALBIN1_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_AFLATINFHI_EL1), REG_AFLATINFHI_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_AFLATCTL3_EL1), REG_AFLATCTL3_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_AFLATVALBIN2_EL1), REG_AFLATVALBIN2_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_AFLATCTL4_EL1), REG_AFLATCTL4_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_AFLATVALBIN3_EL1), REG_AFLATVALBIN3_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_LLC_FILL_CTL), REG_LLC_FILL_CTL); + builder.AddMemberWithValue(get_system_register_name(REG_AFLATCTL5_LO_EL1), REG_AFLATCTL5_LO_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_AFLATVALBIN4_EL1), REG_AFLATVALBIN4_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_AFLATCTL5_HI_EL1), REG_AFLATCTL5_HI_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_LLC_FILL_DAT), REG_LLC_FILL_DAT); + builder.AddMemberWithValue(get_system_register_name(REG_AFLATVALBIN5_EL1), REG_AFLATVALBIN5_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_AFLATVALBIN6_EL1), REG_AFLATVALBIN6_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_LLC_RAM_CONFIG), REG_LLC_RAM_CONFIG); + builder.AddMemberWithValue(get_system_register_name(REG_AFLATVALBIN7_EL1), REG_AFLATVALBIN7_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_LLC_ERR_STS), REG_LLC_ERR_STS); + builder.AddMemberWithValue(get_system_register_name(REG_CMAINT_BCAST_LIST_0), REG_CMAINT_BCAST_LIST_0); + builder.AddMemberWithValue(get_system_register_name(REG_CMAINT_BCAST_LIST_1), REG_CMAINT_BCAST_LIST_1); + builder.AddMemberWithValue(get_system_register_name(REG_CMAINT_BCAST_CTL), REG_CMAINT_BCAST_CTL); + builder.AddMemberWithValue(get_system_register_name(REG_LLC_ERR_ADR), REG_LLC_ERR_ADR); + builder.AddMemberWithValue(get_system_register_name(REG_LLC_ERR_CTL), REG_LLC_ERR_CTL); + builder.AddMemberWithValue(get_system_register_name(REG_LLC_ERR_INJ), REG_LLC_ERR_INJ); + builder.AddMemberWithValue(get_system_register_name(REG_LLC_ERR_INF), REG_LLC_ERR_INF); + builder.AddMemberWithValue(get_system_register_name(REG_USERTAGSEL_EL1), REG_USERTAGSEL_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_UUSERTAG_EL0), REG_UUSERTAG_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_KUSERTAG_EL1), REG_KUSERTAG_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_HUSERTAG_EL2), REG_HUSERTAG_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_LLC_TRACE_CTL0), REG_LLC_TRACE_CTL0); + builder.AddMemberWithValue(get_system_register_name(REG_LLC_TRACE_CTL1), REG_LLC_TRACE_CTL1); + builder.AddMemberWithValue(get_system_register_name(REG_LLC_UP_REQ_VC), REG_LLC_UP_REQ_VC); + builder.AddMemberWithValue(get_system_register_name(REG_LLC_UP_REQ_VC_THRESH), REG_LLC_UP_REQ_VC_THRESH); + builder.AddMemberWithValue(get_system_register_name(REG_LLC_UP_REQ_VC_2), REG_LLC_UP_REQ_VC_2); + builder.AddMemberWithValue(get_system_register_name(REG_LLC_UP_REQ_VC_THRESH_2), REG_LLC_UP_REQ_VC_THRESH_2); + builder.AddMemberWithValue(get_system_register_name(REG_LLC_DRAM_HASH0), REG_LLC_DRAM_HASH0); + builder.AddMemberWithValue(get_system_register_name(REG_LLC_DRAM_HASH1), REG_LLC_DRAM_HASH1); + builder.AddMemberWithValue(get_system_register_name(REG_LLC_DRAM_HASH2), REG_LLC_DRAM_HASH2); + builder.AddMemberWithValue(get_system_register_name(REG_LLC_DRAM_HASH3), REG_LLC_DRAM_HASH3); + builder.AddMemberWithValue(get_system_register_name(REG_LLC_TRACE_CTL2), REG_LLC_TRACE_CTL2); + builder.AddMemberWithValue(get_system_register_name(REG_LLC_DRAM_HASH4), REG_LLC_DRAM_HASH4); + builder.AddMemberWithValue(get_system_register_name(REG_LLC_UP_REQ_VC_3), REG_LLC_UP_REQ_VC_3); + builder.AddMemberWithValue(get_system_register_name(REG_LLC_UP_REQ_VC_THRESH_3), REG_LLC_UP_REQ_VC_THRESH_3); + builder.AddMemberWithValue(get_system_register_name(REG_LLC_UP_REQ_VC_4), REG_LLC_UP_REQ_VC_4); + builder.AddMemberWithValue(get_system_register_name(REG_LLC_UP_REQ_VC_THRESH_4), REG_LLC_UP_REQ_VC_THRESH_4); + builder.AddMemberWithValue(get_system_register_name(REG_LLC_HASH0), REG_LLC_HASH0); + builder.AddMemberWithValue(get_system_register_name(REG_LLC_HASH1), REG_LLC_HASH1); + builder.AddMemberWithValue(get_system_register_name(REG_LLC_HASH2), REG_LLC_HASH2); + builder.AddMemberWithValue(get_system_register_name(REG_LLC_HASH3), REG_LLC_HASH3); + builder.AddMemberWithValue(get_system_register_name(REG_LLC_WRR), REG_LLC_WRR); + builder.AddMemberWithValue(get_system_register_name(REG_LLC_DRAM_HASH5), REG_LLC_DRAM_HASH5); + builder.AddMemberWithValue(get_system_register_name(REG_LLC_DRAM_HASH6), REG_LLC_DRAM_HASH6); + builder.AddMemberWithValue(get_system_register_name(REG_VPIDR_EL2), REG_VPIDR_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_VMPIDR_EL2), REG_VMPIDR_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_SCTLR_EL2), REG_SCTLR_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_ACTLR_EL2), REG_ACTLR_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_HCR_EL2), REG_HCR_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_MDCR_EL2), REG_MDCR_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_CPTR_EL2), REG_CPTR_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_HSTR_EL2), REG_HSTR_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_HFGRTR_EL2), REG_HFGRTR_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_HFGWTR_EL2), REG_HFGWTR_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_HFGITR_EL2), REG_HFGITR_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_HACR_EL2), REG_HACR_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_TRFCR_EL2), REG_TRFCR_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_HCRX_EL2), REG_HCRX_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_SMPRIMAP_EL2), REG_SMPRIMAP_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_SMCR_EL2), REG_SMCR_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_SDER32_EL2), REG_SDER32_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_TTBR0_EL2), REG_TTBR0_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_TTBR1_EL2), REG_TTBR1_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_TCR_EL2), REG_TCR_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_VTTBR_EL2), REG_VTTBR_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_VTCR_EL2), REG_VTCR_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_VNCR_EL2), REG_VNCR_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_VSTTBR_EL2), REG_VSTTBR_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_VSTCR_EL2), REG_VSTCR_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_DACR32_EL2), REG_DACR32_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_HDFGRTR_EL2), REG_HDFGRTR_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_HDFGWTR_EL2), REG_HDFGWTR_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_SPSR_NV_EL21), REG_SPSR_NV_EL21); + builder.AddMemberWithValue(get_system_register_name(REG_ELR_NV_EL21), REG_ELR_NV_EL21); + builder.AddMemberWithValue(get_system_register_name(REG_SP_EL1), REG_SP_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_SPSR_IRQ), REG_SPSR_IRQ); + builder.AddMemberWithValue(get_system_register_name(REG_SPSR_ABT), REG_SPSR_ABT); + builder.AddMemberWithValue(get_system_register_name(REG_SPSR_UND), REG_SPSR_UND); + builder.AddMemberWithValue(get_system_register_name(REG_SPSR_FIQ), REG_SPSR_FIQ); + builder.AddMemberWithValue(get_system_register_name(REG_IFSR32_EL2), REG_IFSR32_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_AFSR0_EL2), REG_AFSR0_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_AFSR1_EL2), REG_AFSR1_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_ESR_NV_EL21), REG_ESR_NV_EL21); + builder.AddMemberWithValue(get_system_register_name(REG_VSESR_EL2), REG_VSESR_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_FPEXC32_EL2), REG_FPEXC32_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_TFSR_EL2), REG_TFSR_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_FAR_NV_EL21), REG_FAR_NV_EL21); + builder.AddMemberWithValue(get_system_register_name(REG_HPFAR_EL2), REG_HPFAR_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_PMSCR_EL2), REG_PMSCR_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_MAIR_EL2), REG_MAIR_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_AMAIR_EL2), REG_AMAIR_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_MPAMHCR_EL2), REG_MPAMHCR_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_MPAMVPMV_EL2), REG_MPAMVPMV_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_MPAM2_EL2), REG_MPAM2_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_MPAMVPM0_EL2), REG_MPAMVPM0_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_MPAMVPM1_EL2), REG_MPAMVPM1_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_MPAMVPM2_EL2), REG_MPAMVPM2_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_MPAMVPM3_EL2), REG_MPAMVPM3_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_MPAMVPM4_EL2), REG_MPAMVPM4_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_MPAMVPM5_EL2), REG_MPAMVPM5_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_MPAMVPM6_EL2), REG_MPAMVPM6_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_MPAMVPM7_EL2), REG_MPAMVPM7_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_VBAR_EL2), REG_VBAR_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_RVBAR_EL2), REG_RVBAR_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_RMR_EL2), REG_RMR_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_VDISR_EL2), REG_VDISR_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_ICH_AP0R0_EL2), REG_ICH_AP0R0_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_ICH_AP0R1_EL2), REG_ICH_AP0R1_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_ICH_AP0R2_EL2), REG_ICH_AP0R2_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_ICH_AP0R3_EL2), REG_ICH_AP0R3_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_ICH_AP1R0_EL2), REG_ICH_AP1R0_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_ICH_AP1R1_EL2), REG_ICH_AP1R1_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_ICH_AP1R2_EL2), REG_ICH_AP1R2_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_ICH_AP1R3_EL2), REG_ICH_AP1R3_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_ICH_VSEIR_EL2), REG_ICH_VSEIR_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_ICC_SRE_EL2), REG_ICC_SRE_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_ICH_HCR_EL2), REG_ICH_HCR_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_ICH_VTR_EL2), REG_ICH_VTR_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_ICH_MISR_EL2), REG_ICH_MISR_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_ICH_EISR_EL2), REG_ICH_EISR_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_ICH_ELRSR_EL2), REG_ICH_ELRSR_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_ICH_VMCR_EL2), REG_ICH_VMCR_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_ICH_LR0_EL2), REG_ICH_LR0_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_ICH_LR1_EL2), REG_ICH_LR1_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_ICH_LR2_EL2), REG_ICH_LR2_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_ICH_LR3_EL2), REG_ICH_LR3_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_ICH_LR4_EL2), REG_ICH_LR4_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_ICH_LR5_EL2), REG_ICH_LR5_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_ICH_LR6_EL2), REG_ICH_LR6_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_ICH_LR7_EL2), REG_ICH_LR7_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_ICH_LR8_EL2), REG_ICH_LR8_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_ICH_LR9_EL2), REG_ICH_LR9_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_ICH_LR10_EL2), REG_ICH_LR10_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_ICH_LR11_EL2), REG_ICH_LR11_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_ICH_LR12_EL2), REG_ICH_LR12_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_ICH_LR13_EL2), REG_ICH_LR13_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_ICH_LR14_EL2), REG_ICH_LR14_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_ICH_LR15_EL2), REG_ICH_LR15_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_CONTEXTIDR_EL2), REG_CONTEXTIDR_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_TPIDR_EL2), REG_TPIDR_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_SCXTNUM_EL2), REG_SCXTNUM_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_CNTVOFF_EL2), REG_CNTVOFF_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_REDIR_CNTHCTL_EL2), REG_REDIR_CNTHCTL_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_REDIR_CNTHP_TVAL_EL2), REG_REDIR_CNTHP_TVAL_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_REDIR_CNTHP_CTL_EL2), REG_REDIR_CNTHP_CTL_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_REDIR_CNTHP_CVAL_EL2), REG_REDIR_CNTHP_CVAL_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_REDIR_CNTHV_TVAL_EL2), REG_REDIR_CNTHV_TVAL_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_REDIR_CNTHV_CTL_EL2), REG_REDIR_CNTHV_CTL_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_REDIR_CNTHV_CVAL_EL2), REG_REDIR_CNTHV_CVAL_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_CNTHVS_TVAL_EL2), REG_CNTHVS_TVAL_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_CNTHVS_CTL_EL2), REG_CNTHVS_CTL_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_CNTHVS_CVAL_EL2), REG_CNTHVS_CVAL_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_CNTHPS_TVAL_EL2), REG_CNTHPS_TVAL_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_CNTHPS_CTL_EL2), REG_CNTHPS_CTL_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_CNTHPS_CVAL_EL2), REG_CNTHPS_CVAL_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_FED_ERR_STS), REG_FED_ERR_STS); + builder.AddMemberWithValue(get_system_register_name(REG_FED_ERR_CTL), REG_FED_ERR_CTL); + builder.AddMemberWithValue(get_system_register_name(REG_APCTL_EL21), REG_APCTL_EL21); + builder.AddMemberWithValue(get_system_register_name(REG_KERNKEYLO_EL21), REG_KERNKEYLO_EL21); + builder.AddMemberWithValue(get_system_register_name(REG_KERNKEYHI_EL21), REG_KERNKEYHI_EL21); + builder.AddMemberWithValue(get_system_register_name(REG_VMSA_LOCK_EL1), REG_VMSA_LOCK_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_AMX_STATE_T_EL1), REG_AMX_STATE_T_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_AMX_CONFIG_EL21), REG_AMX_CONFIG_EL21); + builder.AddMemberWithValue(get_system_register_name(REG_VMSA_LOCK_EL2), REG_VMSA_LOCK_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_CTRR_B_UPR_EL21), REG_CTRR_B_UPR_EL21); + builder.AddMemberWithValue(get_system_register_name(REG_CTRR_B_LWR_EL21), REG_CTRR_B_LWR_EL21); + builder.AddMemberWithValue(get_system_register_name(REG_SP_SETUP_GL21), REG_SP_SETUP_GL21); + builder.AddMemberWithValue(get_system_register_name(REG_SP_SETUP_GL2), REG_SP_SETUP_GL2); + builder.AddMemberWithValue(get_system_register_name(REG_CTRR_B_CTL_EL21), REG_CTRR_B_CTL_EL21); + builder.AddMemberWithValue(get_system_register_name(REG_CTRR_A_LWR_EL21), REG_CTRR_A_LWR_EL21); + builder.AddMemberWithValue(get_system_register_name(REG_CTRR_A_UPR_EL21), REG_CTRR_A_UPR_EL21); + builder.AddMemberWithValue(get_system_register_name(REG_CTRR_A_CTL_EL21), REG_CTRR_A_CTL_EL21); + builder.AddMemberWithValue(get_system_register_name(REG_VMSA_LOCK_EL12), REG_VMSA_LOCK_EL12); + builder.AddMemberWithValue(get_system_register_name(REG_AGTCNTV_CTL_EL02), REG_AGTCNTV_CTL_EL02); + builder.AddMemberWithValue(get_system_register_name(REG_AMX_STATE_EL1), REG_AMX_STATE_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_AMX_STATUS_EL1), REG_AMX_STATUS_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_AGTCNTP_CVAL_EL02), REG_AGTCNTP_CVAL_EL02); + builder.AddMemberWithValue(get_system_register_name(REG_REDIR_ACNTP_TVAL_EL02), REG_REDIR_ACNTP_TVAL_EL02); + builder.AddMemberWithValue(get_system_register_name(REG_AGTCNTP_CTL_EL02), REG_AGTCNTP_CTL_EL02); + builder.AddMemberWithValue(get_system_register_name(REG_AGTCNTV_CVAL_EL02), REG_AGTCNTV_CVAL_EL02); + builder.AddMemberWithValue(get_system_register_name(REG_AGTCNTV_TVAL_EL02), REG_AGTCNTV_TVAL_EL02); + builder.AddMemberWithValue(get_system_register_name(REG_AMX_CONFIG_EL12), REG_AMX_CONFIG_EL12); + builder.AddMemberWithValue(get_system_register_name(REG_AMX_CONFIG_EL2), REG_AMX_CONFIG_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_SPRR_HUPERM_EL0), REG_SPRR_HUPERM_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_SPRR_VUPERM_EL0), REG_SPRR_VUPERM_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_CTRR_A_CTL_EL2), REG_CTRR_A_CTL_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_CTRR_B_CTL_EL2), REG_CTRR_B_CTL_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_CTRR_A_LWR_EL2), REG_CTRR_A_LWR_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_CTRR_A_UPR_EL2), REG_CTRR_A_UPR_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_CTRR_B_LWR_EL2), REG_CTRR_B_LWR_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_CTRR_B_UPR_EL2), REG_CTRR_B_UPR_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_SPRR_HUMPRR_EL2), REG_SPRR_HUMPRR_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_SPRR_HUPERM_SH01_EL2), REG_SPRR_HUPERM_SH01_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_SPRR_HUPERM_SH02_EL2), REG_SPRR_HUPERM_SH02_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_SPRR_HUPERM_SH03_EL2), REG_SPRR_HUPERM_SH03_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_SPRR_HUPERM_SH04_EL2), REG_SPRR_HUPERM_SH04_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_SPRR_HUPERM_SH05_EL2), REG_SPRR_HUPERM_SH05_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_SPRR_HUPERM_SH06_EL2), REG_SPRR_HUPERM_SH06_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_SPRR_HUPERM_SH07_EL2), REG_SPRR_HUPERM_SH07_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_SPRR_VUMPRR_EL1), REG_SPRR_VUMPRR_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_SPRR_VUPERM_SH01_EL1), REG_SPRR_VUPERM_SH01_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_SPRR_VUPERM_SH02_EL1), REG_SPRR_VUPERM_SH02_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_SPRR_VUPERM_SH03_EL1), REG_SPRR_VUPERM_SH03_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_SPRR_VUPERM_SH04_EL1), REG_SPRR_VUPERM_SH04_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_SPRR_VUPERM_SH05_EL1), REG_SPRR_VUPERM_SH05_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_SPRR_VUPERM_SH06_EL1), REG_SPRR_VUPERM_SH06_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_SPRR_VUPERM_SH07_EL1), REG_SPRR_VUPERM_SH07_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_CTRR_A_LWR_EL12), REG_CTRR_A_LWR_EL12); + builder.AddMemberWithValue(get_system_register_name(REG_CTRR_A_UPR_EL12), REG_CTRR_A_UPR_EL12); + builder.AddMemberWithValue(get_system_register_name(REG_CTRR_B_LWR_EL12), REG_CTRR_B_LWR_EL12); + builder.AddMemberWithValue(get_system_register_name(REG_CTRR_B_UPR_EL12), REG_CTRR_B_UPR_EL12); + builder.AddMemberWithValue(get_system_register_name(REG_CTRR_A_CTL_EL12), REG_CTRR_A_CTL_EL12); + builder.AddMemberWithValue(get_system_register_name(REG_CTRR_B_CTL_EL12), REG_CTRR_B_CTL_EL12); + builder.AddMemberWithValue(get_system_register_name(REG_REDIR_ACNTKCTL_EL1), REG_REDIR_ACNTKCTL_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_AGTCNTKCTL_EL12), REG_AGTCNTKCTL_EL12); + builder.AddMemberWithValue(get_system_register_name(REG_PREDAKEYLO_EL1), REG_PREDAKEYLO_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_PREDAKEYHI_EL1), REG_PREDAKEYHI_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_PREDBKEYLO_EL1), REG_PREDBKEYLO_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_PREDBKEYHI_EL1), REG_PREDBKEYHI_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_SIQ_CFG_EL1), REG_SIQ_CFG_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_REDIR_LCL_ACNTPCTSS_EL0), REG_REDIR_LCL_ACNTPCTSS_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_REDIR_LCL_ACNTVCTSS_EL0), REG_REDIR_LCL_ACNTVCTSS_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_AVNCR_EL2), REG_AVNCR_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_ACC_CTRR_A_LWR_EL2), REG_ACC_CTRR_A_LWR_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_ACC_CTRR_A_UPR_EL2), REG_ACC_CTRR_A_UPR_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_ACC_CTRR_B_LWR_EL2), REG_ACC_CTRR_B_LWR_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_ACC_CTRR_B_UPR_EL2), REG_ACC_CTRR_B_UPR_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_ACC_CTRR_A_CTL_EL2), REG_ACC_CTRR_A_CTL_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_ACC_CTRR_B_CTL_EL2), REG_ACC_CTRR_B_CTL_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_REDIR_LCL_ACNTPCT_EL0), REG_REDIR_LCL_ACNTPCT_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_REDIR_LCL_ACNTVCT_EL0), REG_REDIR_LCL_ACNTVCT_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_ACFG_EL1), REG_ACFG_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_AHCR_EL2), REG_AHCR_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_APL_INTSTATUS_EL21), REG_APL_INTSTATUS_EL21); + builder.AddMemberWithValue(get_system_register_name(REG_APL_INTSTATUS_EL2), REG_APL_INTSTATUS_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_REDIR_ACNTHCTL_EL2), REG_REDIR_ACNTHCTL_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_JAPIAKEYLO_NV_EL21), REG_JAPIAKEYLO_NV_EL21); + builder.AddMemberWithValue(get_system_register_name(REG_JAPIAKEYHI_NV_EL21), REG_JAPIAKEYHI_NV_EL21); + builder.AddMemberWithValue(get_system_register_name(REG_JAPIBKEYLO_NV_EL21), REG_JAPIBKEYLO_NV_EL21); + builder.AddMemberWithValue(get_system_register_name(REG_JAPIBKEYHI_NV_EL21), REG_JAPIBKEYHI_NV_EL21); + builder.AddMemberWithValue(get_system_register_name(REG_JAPIAKEYLO_EL21), REG_JAPIAKEYLO_EL21); + builder.AddMemberWithValue(get_system_register_name(REG_JAPIAKEYHI_EL21), REG_JAPIAKEYHI_EL21); + builder.AddMemberWithValue(get_system_register_name(REG_JAPIBKEYLO_EL21), REG_JAPIBKEYLO_EL21); + builder.AddMemberWithValue(get_system_register_name(REG_JAPIBKEYHI_EL21), REG_JAPIBKEYHI_EL21); + builder.AddMemberWithValue(get_system_register_name(REG_JAPIAKEYLO_EL12), REG_JAPIAKEYLO_EL12); + builder.AddMemberWithValue(get_system_register_name(REG_JAPIAKEYHI_EL12), REG_JAPIAKEYHI_EL12); + builder.AddMemberWithValue(get_system_register_name(REG_JAPIBKEYLO_EL12), REG_JAPIBKEYLO_EL12); + builder.AddMemberWithValue(get_system_register_name(REG_JAPIBKEYHI_EL12), REG_JAPIBKEYHI_EL12); + builder.AddMemberWithValue(get_system_register_name(REG_AGTCNTRDIR_EL2), REG_AGTCNTRDIR_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_AGTCNTRDIR_EL12), REG_AGTCNTRDIR_EL12); + builder.AddMemberWithValue(get_system_register_name(REG_JRANGE_EL2), REG_JRANGE_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_JRANGE_EL21), REG_JRANGE_EL21); + builder.AddMemberWithValue(get_system_register_name(REG_JRANGE_EL12), REG_JRANGE_EL12); + builder.AddMemberWithValue(get_system_register_name(REG_JCTL_EL2), REG_JCTL_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_JCTL_EL21), REG_JCTL_EL21); + builder.AddMemberWithValue(get_system_register_name(REG_JCTL_EL12), REG_JCTL_EL12); + builder.AddMemberWithValue(get_system_register_name(REG_JCTL_EL0), REG_JCTL_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_AMDSCR_EL1), REG_AMDSCR_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_SCTLR_EL12), REG_SCTLR_EL12); + builder.AddMemberWithValue(get_system_register_name(REG_ACTLR_EL12), REG_ACTLR_EL12); + builder.AddMemberWithValue(get_system_register_name(REG_CPACR_EL12), REG_CPACR_EL12); + builder.AddMemberWithValue(get_system_register_name(REG_TRFCR_EL12), REG_TRFCR_EL12); + builder.AddMemberWithValue(get_system_register_name(REG_SMCR_EL12), REG_SMCR_EL12); + builder.AddMemberWithValue(get_system_register_name(REG_TTBR0_EL12), REG_TTBR0_EL12); + builder.AddMemberWithValue(get_system_register_name(REG_TTBR1_EL12), REG_TTBR1_EL12); + builder.AddMemberWithValue(get_system_register_name(REG_TCR_EL12), REG_TCR_EL12); + builder.AddMemberWithValue(get_system_register_name(REG_SPSR_EL12), REG_SPSR_EL12); + builder.AddMemberWithValue(get_system_register_name(REG_ELR_EL12), REG_ELR_EL12); + builder.AddMemberWithValue(get_system_register_name(REG_AFSR0_EL12), REG_AFSR0_EL12); + builder.AddMemberWithValue(get_system_register_name(REG_AFSR1_EL12), REG_AFSR1_EL12); + builder.AddMemberWithValue(get_system_register_name(REG_ESR_EL12), REG_ESR_EL12); + builder.AddMemberWithValue(get_system_register_name(REG_TFSR_EL12), REG_TFSR_EL12); + builder.AddMemberWithValue(get_system_register_name(REG_FAR_EL12), REG_FAR_EL12); + builder.AddMemberWithValue(get_system_register_name(REG_PMSCR_EL12), REG_PMSCR_EL12); + builder.AddMemberWithValue(get_system_register_name(REG_MAIR_EL12), REG_MAIR_EL12); + builder.AddMemberWithValue(get_system_register_name(REG_AMAIR_EL12), REG_AMAIR_EL12); + builder.AddMemberWithValue(get_system_register_name(REG_MPAM1_EL12), REG_MPAM1_EL12); + builder.AddMemberWithValue(get_system_register_name(REG_VBAR_EL12), REG_VBAR_EL12); + builder.AddMemberWithValue(get_system_register_name(REG_CONTEXTIDR_EL12), REG_CONTEXTIDR_EL12); + builder.AddMemberWithValue(get_system_register_name(REG_SCXTNUM_EL12), REG_SCXTNUM_EL12); + builder.AddMemberWithValue(get_system_register_name(REG_CNTKCTL_EL12), REG_CNTKCTL_EL12); + builder.AddMemberWithValue(get_system_register_name(REG_CNTP_TVAL_EL02), REG_CNTP_TVAL_EL02); + builder.AddMemberWithValue(get_system_register_name(REG_CNTP_CTL_EL02), REG_CNTP_CTL_EL02); + builder.AddMemberWithValue(get_system_register_name(REG_CNTP_CVAL_EL02), REG_CNTP_CVAL_EL02); + builder.AddMemberWithValue(get_system_register_name(REG_CNTV_TVAL_EL02), REG_CNTV_TVAL_EL02); + builder.AddMemberWithValue(get_system_register_name(REG_CNTV_CTL_EL02), REG_CNTV_CTL_EL02); + builder.AddMemberWithValue(get_system_register_name(REG_CNTV_CVAL_EL02), REG_CNTV_CVAL_EL02); + builder.AddMemberWithValue(get_system_register_name(REG_IPI_RR_LOCAL_EL1), REG_IPI_RR_LOCAL_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_IPI_RR_GLOBAL_EL1), REG_IPI_RR_GLOBAL_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_AF_ERR_CFG0), REG_AF_ERR_CFG0); + builder.AddMemberWithValue(get_system_register_name(REG_AP_ERR_CFG0), REG_AP_ERR_CFG0); + builder.AddMemberWithValue(get_system_register_name(REG_AF_ERR_SRC_IDS), REG_AF_ERR_SRC_IDS); + builder.AddMemberWithValue(get_system_register_name(REG_DPC_ERR_STS), REG_DPC_ERR_STS); + builder.AddMemberWithValue(get_system_register_name(REG_DPC_ERR_CTL), REG_DPC_ERR_CTL); + builder.AddMemberWithValue(get_system_register_name(REG_PROD_TRC_CORE_CFG_EL21), REG_PROD_TRC_CORE_CFG_EL21); + builder.AddMemberWithValue(get_system_register_name(REG_TRACE_CORE_CFG), REG_TRACE_CORE_CFG); + builder.AddMemberWithValue(get_system_register_name(REG_IPI_SR), REG_IPI_SR); + builder.AddMemberWithValue(get_system_register_name(REG_APL_LRTMR_EL2), REG_APL_LRTMR_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_APL_INTENABLE_EL2), REG_APL_INTENABLE_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_KTRACE_MESSAGE), REG_KTRACE_MESSAGE); + builder.AddMemberWithValue(get_system_register_name(REG_TRACE_CORE_CFG_EXT), REG_TRACE_CORE_CFG_EXT); + builder.AddMemberWithValue(get_system_register_name(REG_PROD_TRC_CORE_CFG_EL2), REG_PROD_TRC_CORE_CFG_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_HID_PROD_TRC_CORE_CFG_EL1), REG_HID_PROD_TRC_CORE_CFG_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_DBG_WRAP_GLB), REG_DBG_WRAP_GLB); + builder.AddMemberWithValue(get_system_register_name(REG_TRACE_STREAM_BASE), REG_TRACE_STREAM_BASE); + builder.AddMemberWithValue(get_system_register_name(REG_TRACE_STREAM_FILL), REG_TRACE_STREAM_FILL); + builder.AddMemberWithValue(get_system_register_name(REG_TRACE_STREAM_BASE1), REG_TRACE_STREAM_BASE1); + builder.AddMemberWithValue(get_system_register_name(REG_TRACE_STREAM_FILL1), REG_TRACE_STREAM_FILL1); + builder.AddMemberWithValue(get_system_register_name(REG_TRACE_STREAM_IRQ), REG_TRACE_STREAM_IRQ); + builder.AddMemberWithValue(get_system_register_name(REG_WATCHDOGDIAG0), REG_WATCHDOGDIAG0); + builder.AddMemberWithValue(get_system_register_name(REG_WATCHDOGDIAG1), REG_WATCHDOGDIAG1); + builder.AddMemberWithValue(get_system_register_name(REG_TRACE_AUX_CTL), REG_TRACE_AUX_CTL); + builder.AddMemberWithValue(get_system_register_name(REG_IPI_CR), REG_IPI_CR); + builder.AddMemberWithValue(get_system_register_name(REG_UTRIG_EVENT), REG_UTRIG_EVENT); + builder.AddMemberWithValue(get_system_register_name(REG_HID_PROD_TRC_MASK_EL1), REG_HID_PROD_TRC_MASK_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_TRACE_CTL), REG_TRACE_CTL); + builder.AddMemberWithValue(get_system_register_name(REG_TRACE_DAT), REG_TRACE_DAT); + builder.AddMemberWithValue(get_system_register_name(REG_PROD_TRC_STRM_BASE0_GL2), REG_PROD_TRC_STRM_BASE0_GL2); + builder.AddMemberWithValue(get_system_register_name(REG_PROD_TRC_STRM_BASE1_GL2), REG_PROD_TRC_STRM_BASE1_GL2); + builder.AddMemberWithValue(get_system_register_name(REG_CPU_CFG), REG_CPU_CFG); + builder.AddMemberWithValue(get_system_register_name(REG_PBLK_STS), REG_PBLK_STS); + builder.AddMemberWithValue(get_system_register_name(REG_PROD_TRC_CTL_EL21), REG_PROD_TRC_CTL_EL21); + builder.AddMemberWithValue(get_system_register_name(REG_PROD_TRC_STRM_BASE0_GL21), REG_PROD_TRC_STRM_BASE0_GL21); + builder.AddMemberWithValue(get_system_register_name(REG_PROD_TRC_STRM_BASE1_GL21), REG_PROD_TRC_STRM_BASE1_GL21); + builder.AddMemberWithValue(get_system_register_name(REG_PROD_TRC_STRM_FIQ_EL21), REG_PROD_TRC_STRM_FIQ_EL21); + builder.AddMemberWithValue(get_system_register_name(REG_CPU_OVRD), REG_CPU_OVRD); + builder.AddMemberWithValue(get_system_register_name(REG_PBLK_EXE_ST), REG_PBLK_EXE_ST); + builder.AddMemberWithValue(get_system_register_name(REG_PROD_TRC_CORE_GL_CTL_GL21), REG_PROD_TRC_CORE_GL_CTL_GL21); + builder.AddMemberWithValue(get_system_register_name(REG_PROD_TRC_CORE_GL_CTL_GL2), REG_PROD_TRC_CORE_GL_CTL_GL2); + builder.AddMemberWithValue(get_system_register_name(REG_ACC_OVRD), REG_ACC_OVRD); + builder.AddMemberWithValue(get_system_register_name(REG_ACC_OVRD1), REG_ACC_OVRD1); + builder.AddMemberWithValue(get_system_register_name(REG_CPM_PWRDN_CTL), REG_CPM_PWRDN_CTL); + builder.AddMemberWithValue(get_system_register_name(REG_PROD_TRC_BUF_RESTORE0_GL21), REG_PROD_TRC_BUF_RESTORE0_GL21); + builder.AddMemberWithValue(get_system_register_name(REG_PROD_TRC_BUF_RESTORE1_GL21), REG_PROD_TRC_BUF_RESTORE1_GL21); + builder.AddMemberWithValue(get_system_register_name(REG_PROD_TRC_EN_GL21), REG_PROD_TRC_EN_GL21); + builder.AddMemberWithValue(get_system_register_name(REG_PRE_LLCFLUSH_TMR), REG_PRE_LLCFLUSH_TMR); + builder.AddMemberWithValue(get_system_register_name(REG_BIUINTFCTL_CFG), REG_BIUINTFCTL_CFG); + builder.AddMemberWithValue(get_system_register_name(REG_BIUINTFWRR_CFG), REG_BIUINTFWRR_CFG); + builder.AddMemberWithValue(get_system_register_name(REG_PRE_TD_TMR), REG_PRE_TD_TMR); + builder.AddMemberWithValue(get_system_register_name(REG_ACC_SLP_WAKE_UP_TMR), REG_ACC_SLP_WAKE_UP_TMR); + builder.AddMemberWithValue(get_system_register_name(REG_PBLK_PSW_DLY), REG_PBLK_PSW_DLY); + builder.AddMemberWithValue(get_system_register_name(REG_CPU_STS), REG_CPU_STS); + builder.AddMemberWithValue(get_system_register_name(REG_HIST_TRIG), REG_HIST_TRIG); + builder.AddMemberWithValue(get_system_register_name(REG_PROD_TRC_BUF_RESTORE0_GL2), REG_PROD_TRC_BUF_RESTORE0_GL2); + builder.AddMemberWithValue(get_system_register_name(REG_PROD_TRC_BUF_RESTORE1_GL2), REG_PROD_TRC_BUF_RESTORE1_GL2); + builder.AddMemberWithValue(get_system_register_name(REG_PROD_TRC_STRM_FILL0_EL1), REG_PROD_TRC_STRM_FILL0_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_PROD_TRC_STRM_FILL1_EL1), REG_PROD_TRC_STRM_FILL1_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_ARRAY_INDEX), REG_ARRAY_INDEX); + builder.AddMemberWithValue(get_system_register_name(REG_PROD_TRC_CTL_EL2), REG_PROD_TRC_CTL_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_PROD_TRC_EN_GL2), REG_PROD_TRC_EN_GL2); + builder.AddMemberWithValue(get_system_register_name(REG_PROD_TRC_STRM_FIQ_EL2), REG_PROD_TRC_STRM_FIQ_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_PROD_TRC_CPMU_DUMP_TRIG_EL1), REG_PROD_TRC_CPMU_DUMP_TRIG_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_PROD_LOSS_COUNT_EL1), REG_PROD_LOSS_COUNT_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_SW_TRACE_DATA_EL0), REG_SW_TRACE_DATA_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_IL1_DATA0), REG_IL1_DATA0); + builder.AddMemberWithValue(get_system_register_name(REG_IL1_DATA1), REG_IL1_DATA1); + builder.AddMemberWithValue(get_system_register_name(REG_DL1_DATA0), REG_DL1_DATA0); + builder.AddMemberWithValue(get_system_register_name(REG_DL1_DATA1), REG_DL1_DATA1); + builder.AddMemberWithValue(get_system_register_name(REG_MMUDATA0), REG_MMUDATA0); + builder.AddMemberWithValue(get_system_register_name(REG_MMUDATA1), REG_MMUDATA1); + builder.AddMemberWithValue(get_system_register_name(REG_DL1_DATA2), REG_DL1_DATA2); + builder.AddMemberWithValue(get_system_register_name(REG_IL1_DATA2), REG_IL1_DATA2); + builder.AddMemberWithValue(get_system_register_name(REG_LLC_DATA0), REG_LLC_DATA0); + builder.AddMemberWithValue(get_system_register_name(REG_LLC_DATA1), REG_LLC_DATA1); + builder.AddMemberWithValue(get_system_register_name(REG_SCTLR_EL3), REG_SCTLR_EL3); + builder.AddMemberWithValue(get_system_register_name(REG_ACTLR_EL3), REG_ACTLR_EL3); + builder.AddMemberWithValue(get_system_register_name(REG_SCR_EL3), REG_SCR_EL3); + builder.AddMemberWithValue(get_system_register_name(REG_SDER32_EL3), REG_SDER32_EL3); + builder.AddMemberWithValue(get_system_register_name(REG_CPTR_EL3), REG_CPTR_EL3); + builder.AddMemberWithValue(get_system_register_name(REG_MDCR_EL3), REG_MDCR_EL3); + builder.AddMemberWithValue(get_system_register_name(REG_TTBR0_EL3), REG_TTBR0_EL3); + builder.AddMemberWithValue(get_system_register_name(REG_TCR_EL3), REG_TCR_EL3); + builder.AddMemberWithValue(get_system_register_name(REG_SPSR_EL3), REG_SPSR_EL3); + builder.AddMemberWithValue(get_system_register_name(REG_ELR_EL3), REG_ELR_EL3); + builder.AddMemberWithValue(get_system_register_name(REG_SP_EL2), REG_SP_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_AFSR0_EL3), REG_AFSR0_EL3); + builder.AddMemberWithValue(get_system_register_name(REG_AFSR1_EL3), REG_AFSR1_EL3); + builder.AddMemberWithValue(get_system_register_name(REG_ESR_EL3), REG_ESR_EL3); + builder.AddMemberWithValue(get_system_register_name(REG_TFSR_EL3), REG_TFSR_EL3); + builder.AddMemberWithValue(get_system_register_name(REG_FAR_EL3), REG_FAR_EL3); + builder.AddMemberWithValue(get_system_register_name(REG_MAIR_EL3), REG_MAIR_EL3); + builder.AddMemberWithValue(get_system_register_name(REG_AMAIR_EL3), REG_AMAIR_EL3); + builder.AddMemberWithValue(get_system_register_name(REG_MPAM3_EL3), REG_MPAM3_EL3); + builder.AddMemberWithValue(get_system_register_name(REG_VBAR_EL3), REG_VBAR_EL3); + builder.AddMemberWithValue(get_system_register_name(REG_RVBAR_EL3), REG_RVBAR_EL3); + builder.AddMemberWithValue(get_system_register_name(REG_RMR_EL3), REG_RMR_EL3); + builder.AddMemberWithValue(get_system_register_name(REG_ICC_CTLR_EL3), REG_ICC_CTLR_EL3); + builder.AddMemberWithValue(get_system_register_name(REG_ICC_SRE_EL3), REG_ICC_SRE_EL3); + builder.AddMemberWithValue(get_system_register_name(REG_ICC_IGRPEN1_EL3), REG_ICC_IGRPEN1_EL3); + builder.AddMemberWithValue(get_system_register_name(REG_TPIDR_EL3), REG_TPIDR_EL3); + builder.AddMemberWithValue(get_system_register_name(REG_SCXTNUM_EL3), REG_SCXTNUM_EL3); + builder.AddMemberWithValue(get_system_register_name(REG_MMU_ERR_STS), REG_MMU_ERR_STS); + builder.AddMemberWithValue(get_system_register_name(REG_AFSR1_GL21), REG_AFSR1_GL21); + builder.AddMemberWithValue(get_system_register_name(REG_AFSR1_GL2), REG_AFSR1_GL2); + builder.AddMemberWithValue(get_system_register_name(REG_AFSR1_GL12), REG_AFSR1_GL12); + builder.AddMemberWithValue(get_system_register_name(REG_BP_OBJC_ADR_EL1), REG_BP_OBJC_ADR_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_BP_OBJC_CTL_EL1), REG_BP_OBJC_CTL_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_SP_GL11_GL21), REG_SP_GL11_GL21); + builder.AddMemberWithValue(get_system_register_name(REG_MMU_SESR_EL2), REG_MMU_SESR_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_SPRR_CONFIG_EL21), REG_SPRR_CONFIG_EL21); + builder.AddMemberWithValue(get_system_register_name(REG_HPFAR_GL2), REG_HPFAR_GL2); + builder.AddMemberWithValue(get_system_register_name(REG_GXF_CONFIG_EL21), REG_GXF_CONFIG_EL21); + builder.AddMemberWithValue(get_system_register_name(REG_SPRR_AMRANGE_EL1), REG_SPRR_AMRANGE_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_GXF_CONFIG_EL2), REG_GXF_CONFIG_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_SPRR_UPERM_EL02), REG_SPRR_UPERM_EL02); + builder.AddMemberWithValue(get_system_register_name(REG_SPRR_PPERM_EL21), REG_SPRR_PPERM_EL21); + builder.AddMemberWithValue(get_system_register_name(REG_SPRR_PPERM_EL2), REG_SPRR_PPERM_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_APGAKEYLO_EL12), REG_APGAKEYLO_EL12); + builder.AddMemberWithValue(get_system_register_name(REG_APGAKEYHI_EL12), REG_APGAKEYHI_EL12); + builder.AddMemberWithValue(get_system_register_name(REG_KERNKEYLO_EL12), REG_KERNKEYLO_EL12); + builder.AddMemberWithValue(get_system_register_name(REG_KERNKEYHI_EL12), REG_KERNKEYHI_EL12); + builder.AddMemberWithValue(get_system_register_name(REG_AFPCR_EL0), REG_AFPCR_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_SP_GL22), REG_SP_GL22); + builder.AddMemberWithValue(get_system_register_name(REG_AMXIDR_EL1), REG_AMXIDR_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_SPRR_UMPRR_EL1), REG_SPRR_UMPRR_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_SPRR_PMPRR_EL21), REG_SPRR_PMPRR_EL21); + builder.AddMemberWithValue(get_system_register_name(REG_SPRR_PMPRR_EL2), REG_SPRR_PMPRR_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_SPRR_UPERM_SH01_EL1), REG_SPRR_UPERM_SH01_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_SPRR_UPERM_SH02_EL1), REG_SPRR_UPERM_SH02_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_SPRR_UPERM_SH03_EL1), REG_SPRR_UPERM_SH03_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_SPRR_UPERM_SH04_EL1), REG_SPRR_UPERM_SH04_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_SPRR_UPERM_SH05_EL1), REG_SPRR_UPERM_SH05_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_SPRR_UPERM_SH06_EL1), REG_SPRR_UPERM_SH06_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_SPRR_UPERM_SH07_EL1), REG_SPRR_UPERM_SH07_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_SPRR_PPERM_SH01_EL21), REG_SPRR_PPERM_SH01_EL21); + builder.AddMemberWithValue(get_system_register_name(REG_SPRR_PPERM_SH02_EL21), REG_SPRR_PPERM_SH02_EL21); + builder.AddMemberWithValue(get_system_register_name(REG_SPRR_PPERM_SH03_EL21), REG_SPRR_PPERM_SH03_EL21); + builder.AddMemberWithValue(get_system_register_name(REG_SPRR_PPERM_SH04_EL21), REG_SPRR_PPERM_SH04_EL21); + builder.AddMemberWithValue(get_system_register_name(REG_SPRR_PPERM_SH05_EL21), REG_SPRR_PPERM_SH05_EL21); + builder.AddMemberWithValue(get_system_register_name(REG_SPRR_PPERM_SH06_EL21), REG_SPRR_PPERM_SH06_EL21); + builder.AddMemberWithValue(get_system_register_name(REG_SPRR_PPERM_SH07_EL21), REG_SPRR_PPERM_SH07_EL21); + builder.AddMemberWithValue(get_system_register_name(REG_SPRR_PPERM_SH01_EL2), REG_SPRR_PPERM_SH01_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_SPRR_PPERM_SH02_EL2), REG_SPRR_PPERM_SH02_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_SPRR_PPERM_SH03_EL2), REG_SPRR_PPERM_SH03_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_SPRR_PPERM_SH04_EL2), REG_SPRR_PPERM_SH04_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_SPRR_PPERM_SH05_EL2), REG_SPRR_PPERM_SH05_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_SPRR_PPERM_SH06_EL2), REG_SPRR_PPERM_SH06_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_SPRR_PPERM_SH07_EL2), REG_SPRR_PPERM_SH07_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_SPRR_PMPRR_EL12), REG_SPRR_PMPRR_EL12); + builder.AddMemberWithValue(get_system_register_name(REG_SPRR_PPERM_SH01_EL12), REG_SPRR_PPERM_SH01_EL12); + builder.AddMemberWithValue(get_system_register_name(REG_SPRR_PPERM_SH02_EL12), REG_SPRR_PPERM_SH02_EL12); + builder.AddMemberWithValue(get_system_register_name(REG_SPRR_PPERM_SH03_EL12), REG_SPRR_PPERM_SH03_EL12); + builder.AddMemberWithValue(get_system_register_name(REG_SPRR_PPERM_SH04_EL12), REG_SPRR_PPERM_SH04_EL12); + builder.AddMemberWithValue(get_system_register_name(REG_SPRR_PPERM_SH05_EL12), REG_SPRR_PPERM_SH05_EL12); + builder.AddMemberWithValue(get_system_register_name(REG_SPRR_PPERM_SH06_EL12), REG_SPRR_PPERM_SH06_EL12); + builder.AddMemberWithValue(get_system_register_name(REG_SPRR_PPERM_SH07_EL12), REG_SPRR_PPERM_SH07_EL12); + builder.AddMemberWithValue(get_system_register_name(REG_APIAKEYLO_EL12), REG_APIAKEYLO_EL12); + builder.AddMemberWithValue(get_system_register_name(REG_APIAKEYHI_EL12), REG_APIAKEYHI_EL12); + builder.AddMemberWithValue(get_system_register_name(REG_APIBKEYLO_EL12), REG_APIBKEYLO_EL12); + builder.AddMemberWithValue(get_system_register_name(REG_APIBKEYHI_EL12), REG_APIBKEYHI_EL12); + builder.AddMemberWithValue(get_system_register_name(REG_APDAKEYLO_EL12), REG_APDAKEYLO_EL12); + builder.AddMemberWithValue(get_system_register_name(REG_APDAKEYHI_EL12), REG_APDAKEYHI_EL12); + builder.AddMemberWithValue(get_system_register_name(REG_APDBKEYLO_EL12), REG_APDBKEYLO_EL12); + builder.AddMemberWithValue(get_system_register_name(REG_APDBKEYHI_EL12), REG_APDBKEYHI_EL12); + builder.AddMemberWithValue(get_system_register_name(REG_CURRENTG), REG_CURRENTG); + builder.AddMemberWithValue(get_system_register_name(REG_GXF_ENTRY_EL21), REG_GXF_ENTRY_EL21); + builder.AddMemberWithValue(get_system_register_name(REG_GXF_PABENTRY_EL21), REG_GXF_PABENTRY_EL21); + builder.AddMemberWithValue(get_system_register_name(REG_ASPSR_EL21), REG_ASPSR_EL21); + builder.AddMemberWithValue(get_system_register_name(REG_ADSPSR_EL0), REG_ADSPSR_EL0); + builder.AddMemberWithValue(get_system_register_name(REG_PMCR1_GL2), REG_PMCR1_GL2); + builder.AddMemberWithValue(get_system_register_name(REG_ASPSR_NV_EL21), REG_ASPSR_NV_EL21); + builder.AddMemberWithValue(get_system_register_name(REG_PMCR1_GL21), REG_PMCR1_GL21); + builder.AddMemberWithValue(get_system_register_name(REG_VBAR_GL12), REG_VBAR_GL12); + builder.AddMemberWithValue(get_system_register_name(REG_SPSR_GL12), REG_SPSR_GL12); + builder.AddMemberWithValue(get_system_register_name(REG_ASPSR_GL12), REG_ASPSR_GL12); + builder.AddMemberWithValue(get_system_register_name(REG_ESR_GL12), REG_ESR_GL12); + builder.AddMemberWithValue(get_system_register_name(REG_ELR_GL12), REG_ELR_GL12); + builder.AddMemberWithValue(get_system_register_name(REG_FAR_GL12), REG_FAR_GL12); + builder.AddMemberWithValue(get_system_register_name(REG_SP_GL1), REG_SP_GL1); + builder.AddMemberWithValue(get_system_register_name(REG_TPIDR_GL1), REG_TPIDR_GL1); + builder.AddMemberWithValue(get_system_register_name(REG_VBAR_GL21), REG_VBAR_GL21); + builder.AddMemberWithValue(get_system_register_name(REG_SPSR_GL21), REG_SPSR_GL21); + builder.AddMemberWithValue(get_system_register_name(REG_ASPSR_GL21), REG_ASPSR_GL21); + builder.AddMemberWithValue(get_system_register_name(REG_ESR_GL21), REG_ESR_GL21); + builder.AddMemberWithValue(get_system_register_name(REG_ELR_GL21), REG_ELR_GL21); + builder.AddMemberWithValue(get_system_register_name(REG_FAR_GL21), REG_FAR_GL21); + builder.AddMemberWithValue(get_system_register_name(REG_SP_GL2), REG_SP_GL2); + builder.AddMemberWithValue(get_system_register_name(REG_TPIDR_GL2), REG_TPIDR_GL2); + builder.AddMemberWithValue(get_system_register_name(REG_VBAR_GL2), REG_VBAR_GL2); + builder.AddMemberWithValue(get_system_register_name(REG_SPSR_GL2), REG_SPSR_GL2); + builder.AddMemberWithValue(get_system_register_name(REG_ASPSR_GL2), REG_ASPSR_GL2); + builder.AddMemberWithValue(get_system_register_name(REG_ESR_GL2), REG_ESR_GL2); + builder.AddMemberWithValue(get_system_register_name(REG_ELR_GL2), REG_ELR_GL2); + builder.AddMemberWithValue(get_system_register_name(REG_FAR_GL2), REG_FAR_GL2); + builder.AddMemberWithValue(get_system_register_name(REG_GXF_ENTRY_EL2), REG_GXF_ENTRY_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_GXF_PABENTRY_EL2), REG_GXF_PABENTRY_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_APCTL_EL2), REG_APCTL_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_APSTS_EL2), REG_APSTS_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_APSTS_NV1_EL1), REG_APSTS_NV1_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_KERNKEYLO_NV_EL21), REG_KERNKEYLO_NV_EL21); + builder.AddMemberWithValue(get_system_register_name(REG_KERNKEYHI_NV_EL21), REG_KERNKEYHI_NV_EL21); + builder.AddMemberWithValue(get_system_register_name(REG_ASPSR_EL12), REG_ASPSR_EL12); + builder.AddMemberWithValue(get_system_register_name(REG_APIAKEYLO_NV_EL21), REG_APIAKEYLO_NV_EL21); + builder.AddMemberWithValue(get_system_register_name(REG_APIAKEYHI_NV_EL21), REG_APIAKEYHI_NV_EL21); + builder.AddMemberWithValue(get_system_register_name(REG_APIBKEYLO_NV_EL21), REG_APIBKEYLO_NV_EL21); + builder.AddMemberWithValue(get_system_register_name(REG_APIBKEYHI_NV_EL21), REG_APIBKEYHI_NV_EL21); + builder.AddMemberWithValue(get_system_register_name(REG_APDAKEYLO_NV_EL21), REG_APDAKEYLO_NV_EL21); + builder.AddMemberWithValue(get_system_register_name(REG_APDAKEYHI_NV_EL21), REG_APDAKEYHI_NV_EL21); + builder.AddMemberWithValue(get_system_register_name(REG_APDBKEYLO_NV_EL21), REG_APDBKEYLO_NV_EL21); + builder.AddMemberWithValue(get_system_register_name(REG_APDBKEYHI_NV_EL21), REG_APDBKEYHI_NV_EL21); + builder.AddMemberWithValue(get_system_register_name(REG_APGAKEYLO_NV_EL21), REG_APGAKEYLO_NV_EL21); + builder.AddMemberWithValue(get_system_register_name(REG_APGAKEYHI_NV_EL21), REG_APGAKEYHI_NV_EL21); + builder.AddMemberWithValue(get_system_register_name(REG_SPRR_CONFIG_EL2), REG_SPRR_CONFIG_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_SPRR_AMRANGE_EL2), REG_SPRR_AMRANGE_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_VMKEYLO_EL2), REG_VMKEYLO_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_VMKEYHI_EL2), REG_VMKEYHI_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_MMU_SFAR_EL2), REG_MMU_SFAR_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_APSTS_EL12), REG_APSTS_EL12); + builder.AddMemberWithValue(get_system_register_name(REG_APCTL_EL12), REG_APCTL_EL12); + builder.AddMemberWithValue(get_system_register_name(REG_GXF_CONFIG_EL12), REG_GXF_CONFIG_EL12); + builder.AddMemberWithValue(get_system_register_name(REG_GXF_ENTRY_EL12), REG_GXF_ENTRY_EL12); + builder.AddMemberWithValue(get_system_register_name(REG_GXF_PABENTRY_EL12), REG_GXF_PABENTRY_EL12); + builder.AddMemberWithValue(get_system_register_name(REG_SPRR_CONFIG_EL12), REG_SPRR_CONFIG_EL12); + builder.AddMemberWithValue(get_system_register_name(REG_SPRR_AMRANGE_EL12), REG_SPRR_AMRANGE_EL12); + builder.AddMemberWithValue(get_system_register_name(REG_MMU_SESR_CTL_EL2), REG_MMU_SESR_CTL_EL2); + builder.AddMemberWithValue(get_system_register_name(REG_SPRR_PPERM_EL12), REG_SPRR_PPERM_EL12); + builder.AddMemberWithValue(get_system_register_name(REG_CNTPS_TVAL_EL1), REG_CNTPS_TVAL_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_CNTPS_CTL_EL1), REG_CNTPS_CTL_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_CNTPS_CVAL_EL1), REG_CNTPS_CVAL_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_PSTATE_SPSEL), REG_PSTATE_SPSEL); + builder.AddMemberWithValue(get_system_register_name(REG_PWRDNSAVE0), REG_PWRDNSAVE0); + builder.AddMemberWithValue(get_system_register_name(REG_NRG_ACC_CTL), REG_NRG_ACC_CTL); + builder.AddMemberWithValue(get_system_register_name(REG_AON_CNT0), REG_AON_CNT0); + builder.AddMemberWithValue(get_system_register_name(REG_CPU_CNT0), REG_CPU_CNT0); + builder.AddMemberWithValue(get_system_register_name(REG_UPMCR0_EL1), REG_UPMCR0_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_UPMC8), REG_UPMC8); + builder.AddMemberWithValue(get_system_register_name(REG_AON_CNT8), REG_AON_CNT8); + builder.AddMemberWithValue(get_system_register_name(REG_PWRDNSAVE1), REG_PWRDNSAVE1); + builder.AddMemberWithValue(get_system_register_name(REG_CORE_NRG_ACC_DAT), REG_CORE_NRG_ACC_DAT); + builder.AddMemberWithValue(get_system_register_name(REG_AON_CNT_CTL0), REG_AON_CNT_CTL0); + builder.AddMemberWithValue(get_system_register_name(REG_CPU_CNT_CTL0), REG_CPU_CNT_CTL0); + builder.AddMemberWithValue(get_system_register_name(REG_UPMESR0_EL1), REG_UPMESR0_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_UPMC9), REG_UPMC9); + builder.AddMemberWithValue(get_system_register_name(REG_AON_CNT_CTL8), REG_AON_CNT_CTL8); + builder.AddMemberWithValue(get_system_register_name(REG_ACC_PWR_DN_SAVE), REG_ACC_PWR_DN_SAVE); + builder.AddMemberWithValue(get_system_register_name(REG_CPM_NRG_ACC_DAT), REG_CPM_NRG_ACC_DAT); + builder.AddMemberWithValue(get_system_register_name(REG_AON_CNT1), REG_AON_CNT1); + builder.AddMemberWithValue(get_system_register_name(REG_CPU_CNT1), REG_CPU_CNT1); + builder.AddMemberWithValue(get_system_register_name(REG_UPMSWCTRL_EL1), REG_UPMSWCTRL_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_UPMC10), REG_UPMC10); + builder.AddMemberWithValue(get_system_register_name(REG_AON_CNT9), REG_AON_CNT9); + builder.AddMemberWithValue(get_system_register_name(REG_CORE_SRM_NRG_ACC_DAT), REG_CORE_SRM_NRG_ACC_DAT); + builder.AddMemberWithValue(get_system_register_name(REG_AON_CNT_CTL1), REG_AON_CNT_CTL1); + builder.AddMemberWithValue(get_system_register_name(REG_CPU_CNT_CTL1), REG_CPU_CNT_CTL1); + builder.AddMemberWithValue(get_system_register_name(REG_UPMECM0_EL1), REG_UPMECM0_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_UPMC11), REG_UPMC11); + builder.AddMemberWithValue(get_system_register_name(REG_AON_CNT_CTL9), REG_AON_CNT_CTL9); + builder.AddMemberWithValue(get_system_register_name(REG_AON_CNT_CTL), REG_AON_CNT_CTL); + builder.AddMemberWithValue(get_system_register_name(REG_CPM_SRM_NRG_ACC_DAT), REG_CPM_SRM_NRG_ACC_DAT); + builder.AddMemberWithValue(get_system_register_name(REG_AON_CNT2), REG_AON_CNT2); + builder.AddMemberWithValue(get_system_register_name(REG_CPU_CNT2), REG_CPU_CNT2); + builder.AddMemberWithValue(get_system_register_name(REG_UPMECM1_EL1), REG_UPMECM1_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_UPMC12), REG_UPMC12); + builder.AddMemberWithValue(get_system_register_name(REG_AON_CNT10), REG_AON_CNT10); + builder.AddMemberWithValue(get_system_register_name(REG_CPU_CNT_CTL), REG_CPU_CNT_CTL); + builder.AddMemberWithValue(get_system_register_name(REG_AON_CNT_CTL2), REG_AON_CNT_CTL2); + builder.AddMemberWithValue(get_system_register_name(REG_CPU_CNT_CTL2), REG_CPU_CNT_CTL2); + builder.AddMemberWithValue(get_system_register_name(REG_UPMPCM_EL1), REG_UPMPCM_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_UPMC13), REG_UPMC13); + builder.AddMemberWithValue(get_system_register_name(REG_AON_CNT_CTL10), REG_AON_CNT_CTL10); + builder.AddMemberWithValue(get_system_register_name(REG_AON_CNT3), REG_AON_CNT3); + builder.AddMemberWithValue(get_system_register_name(REG_CPU_CNT3), REG_CPU_CNT3); + builder.AddMemberWithValue(get_system_register_name(REG_UPMSR_EL1), REG_UPMSR_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_UPMC14), REG_UPMC14); + builder.AddMemberWithValue(get_system_register_name(REG_AON_CNT11), REG_AON_CNT11); + builder.AddMemberWithValue(get_system_register_name(REG_AON_CNT_CTL3), REG_AON_CNT_CTL3); + builder.AddMemberWithValue(get_system_register_name(REG_CPU_CNT_CTL3), REG_CPU_CNT_CTL3); + builder.AddMemberWithValue(get_system_register_name(REG_UPMC0), REG_UPMC0); + builder.AddMemberWithValue(get_system_register_name(REG_UPMC15), REG_UPMC15); + builder.AddMemberWithValue(get_system_register_name(REG_AON_CNT_CTL11), REG_AON_CNT_CTL11); + builder.AddMemberWithValue(get_system_register_name(REG_AON_CNT4), REG_AON_CNT4); + builder.AddMemberWithValue(get_system_register_name(REG_CPU_CNT4), REG_CPU_CNT4); + builder.AddMemberWithValue(get_system_register_name(REG_UPMC1), REG_UPMC1); + builder.AddMemberWithValue(get_system_register_name(REG_UPMECM2_EL1), REG_UPMECM2_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_AON_CNT_CTL4), REG_AON_CNT_CTL4); + builder.AddMemberWithValue(get_system_register_name(REG_CPU_CNT_CTL4), REG_CPU_CNT_CTL4); + builder.AddMemberWithValue(get_system_register_name(REG_UPMC2), REG_UPMC2); + builder.AddMemberWithValue(get_system_register_name(REG_UPMECM3_EL1), REG_UPMECM3_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_AON_CNT5), REG_AON_CNT5); + builder.AddMemberWithValue(get_system_register_name(REG_CPU_CNT5), REG_CPU_CNT5); + builder.AddMemberWithValue(get_system_register_name(REG_UPMC3), REG_UPMC3); + builder.AddMemberWithValue(get_system_register_name(REG_UPMCR1_EL1), REG_UPMCR1_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_AON_CNT_CTL5), REG_AON_CNT_CTL5); + builder.AddMemberWithValue(get_system_register_name(REG_CPU_CNT_CTL5), REG_CPU_CNT_CTL5); + builder.AddMemberWithValue(get_system_register_name(REG_UPMC4), REG_UPMC4); + builder.AddMemberWithValue(get_system_register_name(REG_UPMESR1_EL1), REG_UPMESR1_EL1); + builder.AddMemberWithValue(get_system_register_name(REG_AON_CNT6), REG_AON_CNT6); + builder.AddMemberWithValue(get_system_register_name(REG_CPU_CNT6), REG_CPU_CNT6); + builder.AddMemberWithValue(get_system_register_name(REG_UPMC5), REG_UPMC5); + builder.AddMemberWithValue(get_system_register_name(REG_AON_CNT_CTL6), REG_AON_CNT_CTL6); + builder.AddMemberWithValue(get_system_register_name(REG_CPU_CNT_CTL6), REG_CPU_CNT_CTL6); + builder.AddMemberWithValue(get_system_register_name(REG_UPMC6), REG_UPMC6); + builder.AddMemberWithValue(get_system_register_name(REG_AON_CNT7), REG_AON_CNT7); + builder.AddMemberWithValue(get_system_register_name(REG_CPU_CNT7), REG_CPU_CNT7); + builder.AddMemberWithValue(get_system_register_name(REG_UPMC7), REG_UPMC7); + builder.AddMemberWithValue(get_system_register_name(REG_AON_CNT_CTL7), REG_AON_CNT_CTL7); + builder.AddMemberWithValue(get_system_register_name(REG_CPU_CNT_CTL7), REG_CPU_CNT_CTL7); + + Ref<Enumeration> _enum = builder.Finalize(); + return _enum; +} +Ref<Type> get_system_register_enum_type(Ref<BinaryView> view) +{ + Ref<Enumeration> _enum = get_system_register_enum(); + Ref<Type> enumType = Type::EnumerationType(view->GetDefaultArchitecture(), _enum, 4, false); + return enumType; +} +QualifiedName get_system_register_enum_type_name(Ref<BinaryView> view) +{ + Ref<Type> enumType = get_system_register_enum_type(view); + QualifiedName systemRegName = QualifiedName("SystemReg"); + string enumId = Type::GenerateAutoTypeId(view->GetDefaultArchitecture()->GetName(), systemRegName); + QualifiedName enumTypeName = view->DefineType(enumId, systemRegName, enumType); + return enumTypeName; +} + +vector<uint32_t> get_system_registers() +{ + vector<uint32_t> system_regs = {}; + + system_regs.push_back(SYSREG_NONE); + + system_regs.push_back(REG_EDSCR); + system_regs.push_back(REG_EDPRSR); + system_regs.push_back(REG_UAOIMM); + system_regs.push_back(REG_PANIMM); + system_regs.push_back(REG_SPSELIMM); + system_regs.push_back(REG_DITIMM); + system_regs.push_back(REG_SVCRIMM); + system_regs.push_back(REG_ICIALLUIS); + system_regs.push_back(REG_ICIALLU); + system_regs.push_back(REG_DCIVAC); + system_regs.push_back(REG_DCISW); + system_regs.push_back(REG_ATS1E1R); + system_regs.push_back(REG_ATS1E1W); + system_regs.push_back(REG_ATS1E0R); + system_regs.push_back(REG_ATS1E0W); + system_regs.push_back(REG_DCCSW); + system_regs.push_back(REG_DCCISW); + system_regs.push_back(REG_TLBIVMALLE1IS); + system_regs.push_back(REG_TLBIVAE1IS); + system_regs.push_back(REG_TLBIASIDE1IS); + system_regs.push_back(REG_TLBIVAAE1IS); + system_regs.push_back(REG_TLBIVALE1IS); + system_regs.push_back(REG_TLBIVAALE1IS); + system_regs.push_back(REG_TLBIVMALLE1); + system_regs.push_back(REG_TLBIVAE1); + system_regs.push_back(REG_TLBIASIDE1); + system_regs.push_back(REG_TLBIVAAE1); + system_regs.push_back(REG_TLBIVALE1); + system_regs.push_back(REG_TLBIVAALE1); + system_regs.push_back(REG_DCZVA); + system_regs.push_back(REG_ICIVAU); + system_regs.push_back(REG_DCCVAC); + system_regs.push_back(REG_DCCVAU); + system_regs.push_back(REG_DCCIVAC); + system_regs.push_back(REG_ATS1E2R); + system_regs.push_back(REG_ATS1E2W); + system_regs.push_back(REG_ATS12E1R); + system_regs.push_back(REG_ATS12E1W); + system_regs.push_back(REG_ATS12E0R); + system_regs.push_back(REG_ATS12E0W); + system_regs.push_back(REG_TLBIIPAS2E1IS); + system_regs.push_back(REG_TLBIIPAS2LE1IS); + system_regs.push_back(REG_TLBIALLE2IS); + system_regs.push_back(REG_TLBIVAE2IS); + system_regs.push_back(REG_TLBIALLE1IS); + system_regs.push_back(REG_TLBIVALE2IS); + system_regs.push_back(REG_TLBIVMALLS12E1IS); + system_regs.push_back(REG_TLBIIPAS2E1); + system_regs.push_back(REG_TLBIIPAS2LE1); + system_regs.push_back(REG_TLBIALLE2); + system_regs.push_back(REG_TLBIVAE2); + system_regs.push_back(REG_TLBIALLE1); + system_regs.push_back(REG_TLBIVALE2); + system_regs.push_back(REG_TLBIVMALLS12E1); + system_regs.push_back(REG_ATS1E3R); + system_regs.push_back(REG_ATS1E3W); + system_regs.push_back(REG_TLBIALLE3IS); + system_regs.push_back(REG_TLBIVAE3IS); + system_regs.push_back(REG_TLBIVALE3IS); + system_regs.push_back(REG_TLBIALLE3); + system_regs.push_back(REG_TLBIVAE3); + system_regs.push_back(REG_TLBIVALE3); + system_regs.push_back(REG_OSDTRRX_EL1); + system_regs.push_back(REG_DBGBVR0_EL1); + system_regs.push_back(REG_DBGBCR0_EL1); + system_regs.push_back(REG_DBGWVR0_EL1); + system_regs.push_back(REG_DBGWCR0_EL1); + system_regs.push_back(REG_DBGBVR1_EL1); + system_regs.push_back(REG_DBGBCR1_EL1); + system_regs.push_back(REG_DBGWVR1_EL1); + system_regs.push_back(REG_DBGWCR1_EL1); + system_regs.push_back(REG_MDCCINT_EL1); + system_regs.push_back(REG_MDSCR_EL1); + system_regs.push_back(REG_DBGBVR2_EL1); + system_regs.push_back(REG_DBGBCR2_EL1); + system_regs.push_back(REG_DBGWVR2_EL1); + system_regs.push_back(REG_DBGWCR2_EL1); + system_regs.push_back(REG_OSDTRTX_EL1); + system_regs.push_back(REG_DBGBVR3_EL1); + system_regs.push_back(REG_DBGBCR3_EL1); + system_regs.push_back(REG_DBGWVR3_EL1); + system_regs.push_back(REG_DBGWCR3_EL1); + system_regs.push_back(REG_DBGBVR4_EL1); + system_regs.push_back(REG_DBGBCR4_EL1); + system_regs.push_back(REG_DBGWVR4_EL1); + system_regs.push_back(REG_DBGWCR4_EL1); + system_regs.push_back(REG_DBGBVR5_EL1); + system_regs.push_back(REG_DBGBCR5_EL1); + system_regs.push_back(REG_DBGWVR5_EL1); + system_regs.push_back(REG_DBGWCR5_EL1); + system_regs.push_back(REG_DBGWFAR); + system_regs.push_back(REG_OSECCR_EL1); + system_regs.push_back(REG_DBGBVR6_EL1); + system_regs.push_back(REG_DBGBCR6_EL1); + system_regs.push_back(REG_DBGWVR6_EL1); + system_regs.push_back(REG_DBGWCR6_EL1); + system_regs.push_back(REG_DBGBVR7_EL1); + system_regs.push_back(REG_DBGBCR7_EL1); + system_regs.push_back(REG_DBGWVR7_EL1); + system_regs.push_back(REG_DBGWCR7_EL1); + system_regs.push_back(REG_DBGBVR8_EL1); + system_regs.push_back(REG_DBGBCR8_EL1); + system_regs.push_back(REG_DBGWVR8_EL1); + system_regs.push_back(REG_DBGWCR8_EL1); + system_regs.push_back(REG_DBGBVR9_EL1); + system_regs.push_back(REG_DBGBCR9_EL1); + system_regs.push_back(REG_DBGWVR9_EL1); + system_regs.push_back(REG_DBGWCR9_EL1); + system_regs.push_back(REG_DBGBVR10_EL1); + system_regs.push_back(REG_DBGBCR10_EL1); + system_regs.push_back(REG_DBGWVR10_EL1); + system_regs.push_back(REG_DBGWCR10_EL1); + system_regs.push_back(REG_DBGBVR11_EL1); + system_regs.push_back(REG_DBGBCR11_EL1); + system_regs.push_back(REG_DBGWVR11_EL1); + system_regs.push_back(REG_DBGWCR11_EL1); + system_regs.push_back(REG_DBGBVR12_EL1); + system_regs.push_back(REG_DBGBCR12_EL1); + system_regs.push_back(REG_DBGWVR12_EL1); + system_regs.push_back(REG_DBGWCR12_EL1); + system_regs.push_back(REG_DBGBVR13_EL1); + system_regs.push_back(REG_DBGBCR13_EL1); + system_regs.push_back(REG_DBGWVR13_EL1); + system_regs.push_back(REG_DBGWCR13_EL1); + system_regs.push_back(REG_DBGBVR14_EL1); + system_regs.push_back(REG_DBGBCR14_EL1); + system_regs.push_back(REG_DBGWVR14_EL1); + system_regs.push_back(REG_DBGWCR14_EL1); + system_regs.push_back(REG_DBGBVR15_EL1); + system_regs.push_back(REG_DBGBCR15_EL1); + system_regs.push_back(REG_DBGWVR15_EL1); + system_regs.push_back(REG_DBGWCR15_EL1); + system_regs.push_back(REG_MDRAR_EL1); + system_regs.push_back(REG_OSLAR_EL1); + system_regs.push_back(REG_OSLSR_EL1); + system_regs.push_back(REG_OSDLR_EL1); + system_regs.push_back(REG_DBGPRCR_EL1); + system_regs.push_back(REG_CLAIMSET_EL1); + system_regs.push_back(REG_CLAIMCLR_EL1); + system_regs.push_back(REG_AUTHSTAT_EL1); + system_regs.push_back(REG_TRCTRACEIDR); + system_regs.push_back(REG_TRCVICTLR); + system_regs.push_back(REG_TRCSEQEVR0); + system_regs.push_back(REG_TRCCNTRLDVR0); + system_regs.push_back(REG_TRCIMSPEC0); + system_regs.push_back(REG_TRCPRGCTLR); + system_regs.push_back(REG_TRCQCTLR); + system_regs.push_back(REG_TRCVIIECTLR); + system_regs.push_back(REG_TRCSEQEVR1); + system_regs.push_back(REG_TRCCNTRLDVR1); + system_regs.push_back(REG_TRCIMSPEC1); + system_regs.push_back(REG_TRCPROCSELR); + system_regs.push_back(REG_TRCVISSCTLR); + system_regs.push_back(REG_TRCSEQEVR2); + system_regs.push_back(REG_TRCCNTRLDVR2); + system_regs.push_back(REG_TRCIMSPEC2); + system_regs.push_back(REG_TRCVIPCSSCTLR); + system_regs.push_back(REG_TRCCNTRLDVR3); + system_regs.push_back(REG_TRCIMSPEC3); + system_regs.push_back(REG_TRCCONFIGR); + system_regs.push_back(REG_TRCCNTCTLR0); + system_regs.push_back(REG_TRCIMSPEC4); + system_regs.push_back(REG_TRCCNTCTLR1); + system_regs.push_back(REG_TRCIMSPEC5); + system_regs.push_back(REG_TRCAUXCTLR); + system_regs.push_back(REG_TRCSEQRSTEVR); + system_regs.push_back(REG_TRCCNTCTLR2); + system_regs.push_back(REG_TRCIMSPEC6); + system_regs.push_back(REG_TRCSEQSTR); + system_regs.push_back(REG_TRCCNTCTLR3); + system_regs.push_back(REG_TRCIMSPEC7); + system_regs.push_back(REG_TRCEVENTCTL0R); + system_regs.push_back(REG_TRCVDCTLR); + system_regs.push_back(REG_TRCEXTINSELR); + system_regs.push_back(REG_TRCCNTVR0); + system_regs.push_back(REG_TRCEVENTCTL1R); + system_regs.push_back(REG_TRCVDSACCTLR); + system_regs.push_back(REG_TRCEXTINSELR1); + system_regs.push_back(REG_TRCCNTVR1); + system_regs.push_back(REG_TRCRSR); + system_regs.push_back(REG_TRCVDARCCTLR); + system_regs.push_back(REG_TRCEXTINSELR2); + system_regs.push_back(REG_TRCCNTVR2); + system_regs.push_back(REG_TRCSTALLCTLR); + system_regs.push_back(REG_TRCEXTINSELR3); + system_regs.push_back(REG_TRCCNTVR3); + system_regs.push_back(REG_TRCTSCTLR); + system_regs.push_back(REG_TRCSYNCPR); + system_regs.push_back(REG_TRCCCCTLR); + system_regs.push_back(REG_TRCBBCTLR); + system_regs.push_back(REG_TRCRSCTLR16); + system_regs.push_back(REG_TRCSSCCR0); + system_regs.push_back(REG_TRCSSPCICR0); + system_regs.push_back(REG_TRCOSLAR); + system_regs.push_back(REG_TRCRSCTLR17); + system_regs.push_back(REG_TRCSSCCR1); + system_regs.push_back(REG_TRCSSPCICR1); + system_regs.push_back(REG_TRCRSCTLR2); + system_regs.push_back(REG_TRCRSCTLR18); + system_regs.push_back(REG_TRCSSCCR2); + system_regs.push_back(REG_TRCSSPCICR2); + system_regs.push_back(REG_TRCRSCTLR3); + system_regs.push_back(REG_TRCRSCTLR19); + system_regs.push_back(REG_TRCSSCCR3); + system_regs.push_back(REG_TRCSSPCICR3); + system_regs.push_back(REG_TRCRSCTLR4); + system_regs.push_back(REG_TRCRSCTLR20); + system_regs.push_back(REG_TRCSSCCR4); + system_regs.push_back(REG_TRCSSPCICR4); + system_regs.push_back(REG_TRCPDCR); + system_regs.push_back(REG_TRCRSCTLR5); + system_regs.push_back(REG_TRCRSCTLR21); + system_regs.push_back(REG_TRCSSCCR5); + system_regs.push_back(REG_TRCSSPCICR5); + system_regs.push_back(REG_TRCRSCTLR6); + system_regs.push_back(REG_TRCRSCTLR22); + system_regs.push_back(REG_TRCSSCCR6); + system_regs.push_back(REG_TRCSSPCICR6); + system_regs.push_back(REG_TRCRSCTLR7); + system_regs.push_back(REG_TRCRSCTLR23); + system_regs.push_back(REG_TRCSSCCR7); + system_regs.push_back(REG_TRCSSPCICR7); + system_regs.push_back(REG_TRCRSCTLR8); + system_regs.push_back(REG_TRCRSCTLR24); + system_regs.push_back(REG_TRCSSCSR0); + system_regs.push_back(REG_TRCRSCTLR9); + system_regs.push_back(REG_TRCRSCTLR25); + system_regs.push_back(REG_TRCSSCSR1); + system_regs.push_back(REG_TRCRSCTLR10); + system_regs.push_back(REG_TRCRSCTLR26); + system_regs.push_back(REG_TRCSSCSR2); + system_regs.push_back(REG_TRCRSCTLR11); + system_regs.push_back(REG_TRCRSCTLR27); + system_regs.push_back(REG_TRCSSCSR3); + system_regs.push_back(REG_TRCRSCTLR12); + system_regs.push_back(REG_TRCRSCTLR28); + system_regs.push_back(REG_TRCSSCSR4); + system_regs.push_back(REG_TRCRSCTLR13); + system_regs.push_back(REG_TRCRSCTLR29); + system_regs.push_back(REG_TRCSSCSR5); + system_regs.push_back(REG_TRCRSCTLR14); + system_regs.push_back(REG_TRCRSCTLR30); + system_regs.push_back(REG_TRCSSCSR6); + system_regs.push_back(REG_TRCRSCTLR15); + system_regs.push_back(REG_TRCRSCTLR31); + system_regs.push_back(REG_TRCSSCSR7); + system_regs.push_back(REG_TRCACVR0); + system_regs.push_back(REG_TRCACVR8); + system_regs.push_back(REG_TRCACATR0); + system_regs.push_back(REG_TRCACATR8); + system_regs.push_back(REG_TRCDVCVR0); + system_regs.push_back(REG_TRCDVCVR4); + system_regs.push_back(REG_TRCDVCMR0); + system_regs.push_back(REG_TRCDVCMR4); + system_regs.push_back(REG_TRCACVR1); + system_regs.push_back(REG_TRCACVR9); + system_regs.push_back(REG_TRCACATR1); + system_regs.push_back(REG_TRCACATR9); + system_regs.push_back(REG_TRCACVR2); + system_regs.push_back(REG_TRCACVR10); + system_regs.push_back(REG_TRCACATR2); + system_regs.push_back(REG_TRCACATR10); + system_regs.push_back(REG_TRCDVCVR1); + system_regs.push_back(REG_TRCDVCVR5); + system_regs.push_back(REG_TRCDVCMR1); + system_regs.push_back(REG_TRCDVCMR5); + system_regs.push_back(REG_TRCACVR3); + system_regs.push_back(REG_TRCACVR11); + system_regs.push_back(REG_TRCACATR3); + system_regs.push_back(REG_TRCACATR11); + system_regs.push_back(REG_TRCACVR4); + system_regs.push_back(REG_TRCACVR12); + system_regs.push_back(REG_TRCACATR4); + system_regs.push_back(REG_TRCACATR12); + system_regs.push_back(REG_TRCDVCVR2); + system_regs.push_back(REG_TRCDVCVR6); + system_regs.push_back(REG_TRCDVCMR2); + system_regs.push_back(REG_TRCDVCMR6); + system_regs.push_back(REG_TRCACVR5); + system_regs.push_back(REG_TRCACVR13); + system_regs.push_back(REG_TRCACATR5); + system_regs.push_back(REG_TRCACATR13); + system_regs.push_back(REG_TRCACVR6); + system_regs.push_back(REG_TRCACVR14); + system_regs.push_back(REG_TRCACATR6); + system_regs.push_back(REG_TRCACATR14); + system_regs.push_back(REG_TRCDVCVR3); + system_regs.push_back(REG_TRCDVCVR7); + system_regs.push_back(REG_TRCDVCMR3); + system_regs.push_back(REG_TRCDVCMR7); + system_regs.push_back(REG_TRCACVR7); + system_regs.push_back(REG_TRCACVR15); + system_regs.push_back(REG_TRCACATR7); + system_regs.push_back(REG_TRCACATR15); + system_regs.push_back(REG_TRCCIDCVR0); + system_regs.push_back(REG_TRCVMIDCVR0); + system_regs.push_back(REG_TRCCIDCCTLR0); + system_regs.push_back(REG_TRCCIDCCTLR1); + system_regs.push_back(REG_TRCCIDCVR1); + system_regs.push_back(REG_TRCVMIDCVR1); + system_regs.push_back(REG_TRCVMIDCCTLR0); + system_regs.push_back(REG_TRCVMIDCCTLR1); + system_regs.push_back(REG_TRCCIDCVR2); + system_regs.push_back(REG_TRCVMIDCVR2); + system_regs.push_back(REG_TRCCIDCVR3); + system_regs.push_back(REG_TRCVMIDCVR3); + system_regs.push_back(REG_TRCCIDCVR4); + system_regs.push_back(REG_TRCVMIDCVR4); + system_regs.push_back(REG_TRCCIDCVR5); + system_regs.push_back(REG_TRCVMIDCVR5); + system_regs.push_back(REG_TRCCIDCVR6); + system_regs.push_back(REG_TRCVMIDCVR6); + system_regs.push_back(REG_TRCCIDCVR7); + system_regs.push_back(REG_TRCVMIDCVR7); + system_regs.push_back(REG_TRCITCTRL); + system_regs.push_back(REG_TRCCLAIMSET); + system_regs.push_back(REG_TRCCLAIMCLR); + system_regs.push_back(REG_TRCLAR); + system_regs.push_back(REG_TEECR32_EL1); + system_regs.push_back(REG_TEEHBR32_EL1); + system_regs.push_back(REG_MDCCSR_EL0); + system_regs.push_back(REG_MDDTR_EL0); + system_regs.push_back(REG_MDDTRTX_EL0); + system_regs.push_back(REG_DBGVCR32_EL2); + system_regs.push_back(REG_MIDR_EL1); + system_regs.push_back(REG_MPIDR_EL1); + system_regs.push_back(REG_REVIDR_EL1); + system_regs.push_back(REG_ID_PFR0_EL1); + system_regs.push_back(REG_ID_PFR1_EL1); + system_regs.push_back(REG_ID_DFR0_EL1); + system_regs.push_back(REG_ID_AFR0_EL1); + system_regs.push_back(REG_ID_MMFR0_EL1); + system_regs.push_back(REG_ID_MMFR1_EL1); + system_regs.push_back(REG_ID_MMFR2_EL1); + system_regs.push_back(REG_ID_MMFR3_EL1); + system_regs.push_back(REG_ID_ISAR0_EL1); + system_regs.push_back(REG_ID_ISAR1_EL1); + system_regs.push_back(REG_ID_ISAR2_EL1); + system_regs.push_back(REG_ID_ISAR3_EL1); + system_regs.push_back(REG_ID_ISAR4_EL1); + system_regs.push_back(REG_ID_ISAR5_EL1); + system_regs.push_back(REG_ID_MMFR4_EL1); + system_regs.push_back(REG_ID_ISAR6_EL1); + system_regs.push_back(REG_MVFR0_EL1); + system_regs.push_back(REG_MVFR1_EL1); + system_regs.push_back(REG_MVFR2_EL1); + system_regs.push_back(REG_ID_AA32RES3_EL1); + system_regs.push_back(REG_ID_PFR2_EL1); + system_regs.push_back(REG_ID_AA32RES5_EL1); + system_regs.push_back(REG_ID_AA32RES6_EL1); + system_regs.push_back(REG_ID_AA32RES7_EL1); + system_regs.push_back(REG_ID_AA64PFR0_EL1); + system_regs.push_back(REG_ID_AA64PFR1_EL1); + system_regs.push_back(REG_ID_AA64PFR2_EL1); + system_regs.push_back(REG_ID_AA64PFR3_EL1); + system_regs.push_back(REG_ID_AA64ZFR0_EL1); + system_regs.push_back(REG_ID_AA64SMFR0_EL1); + system_regs.push_back(REG_ID_AA64ZFR2_EL1); + system_regs.push_back(REG_ID_AA64ZFR3_EL1); + system_regs.push_back(REG_ID_AA64DFR0_EL1); + system_regs.push_back(REG_ID_AA64DFR1_EL1); + system_regs.push_back(REG_ID_AA64DFR2_EL1); + system_regs.push_back(REG_ID_AA64DFR3_EL1); + system_regs.push_back(REG_ID_AA64AFR0_EL1); + system_regs.push_back(REG_ID_AA64AFR1_EL1); + system_regs.push_back(REG_ID_AA64AFR2_EL1); + system_regs.push_back(REG_ID_AA64AFR3_EL1); + system_regs.push_back(REG_ID_AA64ISAR0_EL1); + system_regs.push_back(REG_ID_AA64ISAR1_EL1); + system_regs.push_back(REG_ID_AA64ISAR2_EL1); + system_regs.push_back(REG_ID_AA64ISAR3_EL1); + system_regs.push_back(REG_ID_AA64ISAR4_EL1); + system_regs.push_back(REG_ID_AA64ISAR5_EL1); + system_regs.push_back(REG_ID_AA64ISAR6_EL1); + system_regs.push_back(REG_ID_AA64ISAR7_EL1); + system_regs.push_back(REG_ID_AA64MMFR0_EL1); + system_regs.push_back(REG_ID_AA64MMFR1_EL1); + system_regs.push_back(REG_ID_AA64MMFR2_EL1); + system_regs.push_back(REG_ID_AA64MMFR3_EL1); + system_regs.push_back(REG_ID_AA64MMFR4_EL1); + system_regs.push_back(REG_ID_AA64MMFR5_EL1); + system_regs.push_back(REG_ID_AA64MMFR6_EL1); + system_regs.push_back(REG_ID_AA64MMFR7_EL1); + system_regs.push_back(REG_SCTLR_EL21); + system_regs.push_back(REG_ACTLR_EL21); + system_regs.push_back(REG_CPTR_EL21); + system_regs.push_back(REG_RGSR_EL1); + system_regs.push_back(REG_GCR_EL1); + system_regs.push_back(REG_TRFCR_EL1); + system_regs.push_back(REG_SMPRI_EL1); + system_regs.push_back(REG_SMCR_EL21); + system_regs.push_back(REG_TTBR0_EL21); + system_regs.push_back(REG_TTBR1_EL21); + system_regs.push_back(REG_TCR_EL21); + system_regs.push_back(REG_APIAKEYLO_EL21); + system_regs.push_back(REG_APIAKEYHI_EL21); + system_regs.push_back(REG_APIBKEYLO_EL21); + system_regs.push_back(REG_APIBKEYHI_EL21); + system_regs.push_back(REG_APDAKEYLO_EL21); + system_regs.push_back(REG_APDAKEYHI_EL21); + system_regs.push_back(REG_APDBKEYLO_EL21); + system_regs.push_back(REG_APDBKEYHI_EL21); + system_regs.push_back(REG_APGAKEYLO_EL21); + system_regs.push_back(REG_APGAKEYHI_EL21); + system_regs.push_back(REG_SPSR_EL21); + system_regs.push_back(REG_ELR_EL21); + system_regs.push_back(REG_SP_EL0); + system_regs.push_back(REG_SPSEL); + system_regs.push_back(REG_NESTEDCURRENTEL); + system_regs.push_back(REG_PAN); + system_regs.push_back(REG_UAO); + system_regs.push_back(REG_ICV_PMR_EL1); + system_regs.push_back(REG_AFSR0_EL21); + system_regs.push_back(REG_AFSR1_EL21); + system_regs.push_back(REG_ESR_EL21); + system_regs.push_back(REG_ERRIDR_EL1); + system_regs.push_back(REG_ERRSELR_EL1); + system_regs.push_back(REG_ERXCTLR_EL1); + system_regs.push_back(REG_ERXSTATUS_EL1); + system_regs.push_back(REG_ERXADDR_EL1); + system_regs.push_back(REG_ERXPFGCTL_EL1); + system_regs.push_back(REG_ERXPFGCDN_EL1); + system_regs.push_back(REG_ERXMISC0_EL1); + system_regs.push_back(REG_ERXMISC1_EL1); + system_regs.push_back(REG_ERXMISC2_EL1); + system_regs.push_back(REG_ERXMISC3_EL1); + system_regs.push_back(REG_ERXTS_EL1); + system_regs.push_back(REG_TFSR_EL1); + system_regs.push_back(REG_TFSRE0_EL1); + system_regs.push_back(REG_FAR_EL21); + system_regs.push_back(REG_PAR_EL1); + system_regs.push_back(REG_PMSCR_EL1); + system_regs.push_back(REG_PMSICR_EL1); + system_regs.push_back(REG_PMSIRR_EL1); + system_regs.push_back(REG_PMSFCR_EL1); + system_regs.push_back(REG_PMSEVFR_EL1); + system_regs.push_back(REG_PMSLATFR_EL1); + system_regs.push_back(REG_PMSIDR_EL1); + system_regs.push_back(REG_PMBLIMITR_EL1); + system_regs.push_back(REG_PMBPTR_EL1); + system_regs.push_back(REG_PMBSR_EL1); + system_regs.push_back(REG_PMBIDR_EL1); + system_regs.push_back(REG_TRBLIMITR_EL1); + system_regs.push_back(REG_TRBPTR_EL1); + system_regs.push_back(REG_TRBBASER_EL1); + system_regs.push_back(REG_TRBSR_EL1); + system_regs.push_back(REG_TRBMAR_EL1); + system_regs.push_back(REG_TRBTRG_EL1); + system_regs.push_back(REG_PMINTENSET_EL1); + system_regs.push_back(REG_PMINTENCLR_EL1); + system_regs.push_back(REG_PMMIR_EL1); + system_regs.push_back(REG_MAIR_EL21); + system_regs.push_back(REG_AMAIR_EL21); + system_regs.push_back(REG_LORSA_EL1); + system_regs.push_back(REG_LOREA_EL1); + system_regs.push_back(REG_LORN_EL1); + system_regs.push_back(REG_LORC_EL1); + system_regs.push_back(REG_LORID_EL1); + system_regs.push_back(REG_MPAM1_EL1); + system_regs.push_back(REG_MPAM0_EL1); + system_regs.push_back(REG_CTRR_C_LWR_EL21); + system_regs.push_back(REG_CTRR_C_UPR_EL21); + system_regs.push_back(REG_CTRR_D_LWR_EL21); + system_regs.push_back(REG_CTRR_D_UPR_EL21); + system_regs.push_back(REG_CTRR_C_LWR_EL12); + system_regs.push_back(REG_CTRR_C_UPR_EL12); + system_regs.push_back(REG_CTRR_D_LWR_EL12); + system_regs.push_back(REG_CTRR_D_UPR_EL12); + system_regs.push_back(REG_CTRR_C_LWR_EL2); + system_regs.push_back(REG_CTRR_C_UPR_EL2); + system_regs.push_back(REG_CTRR_D_LWR_EL2); + system_regs.push_back(REG_CTRR_D_UPR_EL2); + system_regs.push_back(REG_CTRR_C_CTL_EL21); + system_regs.push_back(REG_CTRR_D_CTL_EL21); + system_regs.push_back(REG_CTRR_C_CTL_EL12); + system_regs.push_back(REG_CTRR_D_CTL_EL12); + system_regs.push_back(REG_CTRR_C_CTL_EL2); + system_regs.push_back(REG_CTRR_D_CTL_EL2); + system_regs.push_back(REG_CTXR_A_LWR_EL21); + system_regs.push_back(REG_CTXR_A_UPR_EL21); + system_regs.push_back(REG_CTXR_B_LWR_EL21); + system_regs.push_back(REG_CTXR_B_UPR_EL21); + system_regs.push_back(REG_CTXR_C_LWR_EL21); + system_regs.push_back(REG_CTXR_C_UPR_EL21); + system_regs.push_back(REG_CTXR_D_LWR_EL21); + system_regs.push_back(REG_CTXR_D_UPR_EL21); + system_regs.push_back(REG_CTXR_A_LWR_EL12); + system_regs.push_back(REG_CTXR_A_UPR_EL12); + system_regs.push_back(REG_CTXR_B_LWR_EL12); + system_regs.push_back(REG_CTXR_B_UPR_EL12); + system_regs.push_back(REG_CTXR_C_LWR_EL12); + system_regs.push_back(REG_CTXR_C_UPR_EL12); + system_regs.push_back(REG_CTXR_D_LWR_EL12); + system_regs.push_back(REG_CTXR_D_UPR_EL12); + system_regs.push_back(REG_CTXR_A_LWR_EL2); + system_regs.push_back(REG_CTXR_A_UPR_EL2); + system_regs.push_back(REG_CTXR_B_LWR_EL2); + system_regs.push_back(REG_CTXR_B_UPR_EL2); + system_regs.push_back(REG_CTXR_C_LWR_EL2); + system_regs.push_back(REG_CTXR_C_UPR_EL2); + system_regs.push_back(REG_CTXR_D_LWR_EL2); + system_regs.push_back(REG_CTXR_D_UPR_EL2); + system_regs.push_back(REG_CTXR_A_CTL_EL21); + system_regs.push_back(REG_CTXR_B_CTL_EL21); + system_regs.push_back(REG_CTXR_C_CTL_EL21); + system_regs.push_back(REG_CTXR_D_CTL_EL21); + system_regs.push_back(REG_CTXR_A_CTL_EL12); + system_regs.push_back(REG_CTXR_B_CTL_EL12); + system_regs.push_back(REG_CTXR_C_CTL_EL12); + system_regs.push_back(REG_CTXR_D_CTL_EL12); + system_regs.push_back(REG_CTXR_A_CTL_EL2); + system_regs.push_back(REG_CTXR_B_CTL_EL2); + system_regs.push_back(REG_CTXR_C_CTL_EL2); + system_regs.push_back(REG_CTXR_D_CTL_EL2); + system_regs.push_back(REG_ACC_CTRR_C_LWR_EL2); + system_regs.push_back(REG_ACC_CTRR_C_UPR_EL2); + system_regs.push_back(REG_ACC_CTRR_D_LWR_EL2); + system_regs.push_back(REG_ACC_CTRR_D_UPR_EL2); + system_regs.push_back(REG_ACC_CTXR_A_LWR_EL2); + system_regs.push_back(REG_ACC_CTXR_A_UPR_EL2); + system_regs.push_back(REG_ACC_CTXR_B_LWR_EL2); + system_regs.push_back(REG_ACC_CTXR_B_UPR_EL2); + system_regs.push_back(REG_ACC_CTXR_C_LWR_EL2); + system_regs.push_back(REG_ACC_CTXR_C_UPR_EL2); + system_regs.push_back(REG_ACC_CTXR_D_LWR_EL2); + system_regs.push_back(REG_ACC_CTXR_D_UPR_EL2); + system_regs.push_back(REG_ACC_CTRR_C_CTL_EL2); + system_regs.push_back(REG_ACC_CTRR_D_CTL_EL2); + system_regs.push_back(REG_ACC_CTXR_A_CTL_EL2); + system_regs.push_back(REG_ACC_CTXR_B_CTL_EL2); + system_regs.push_back(REG_ACC_CTXR_C_CTL_EL2); + system_regs.push_back(REG_ACC_CTXR_D_CTL_EL2); + system_regs.push_back(REG_VBAR_EL21); + system_regs.push_back(REG_RVBAR_EL1); + system_regs.push_back(REG_RMR_EL1); + system_regs.push_back(REG_ISR_EL1); + system_regs.push_back(REG_DISR_EL1); + system_regs.push_back(REG_ICV_IAR0_EL1); + system_regs.push_back(REG_ICV_EOIR0_EL1); + system_regs.push_back(REG_ICV_HPPIR0_EL1); + system_regs.push_back(REG_ICV_BPR0_EL1); + system_regs.push_back(REG_ICC_AP0R0_EL1); + system_regs.push_back(REG_ICC_AP0R1_EL1); + system_regs.push_back(REG_ICC_AP0R2_EL1); + system_regs.push_back(REG_ICC_AP0R3_EL1); + system_regs.push_back(REG_ICC_AP1R0_EL1); + system_regs.push_back(REG_ICC_AP1R1_EL1); + system_regs.push_back(REG_ICC_AP1R2_EL1); + system_regs.push_back(REG_ICC_AP1R3_EL1); + system_regs.push_back(REG_ICV_DIR_EL1); + system_regs.push_back(REG_ICV_RPR_EL1); + system_regs.push_back(REG_ICC_SGI1R_EL1); + system_regs.push_back(REG_ICC_ASGI1R_EL1); + system_regs.push_back(REG_ICC_SGI0R_EL1); + system_regs.push_back(REG_ICV_IAR1_EL1); + system_regs.push_back(REG_ICV_EOIR1_EL1); + system_regs.push_back(REG_ICV_HPPIR1_EL1); + system_regs.push_back(REG_ICV_BPR1_EL1); + system_regs.push_back(REG_ICV_CTLR_EL1); + system_regs.push_back(REG_ICC_SRE_EL1); + system_regs.push_back(REG_ICV_IGRPEN0_EL1); + system_regs.push_back(REG_ICV_IGRPEN1_EL1); + system_regs.push_back(REG_ICC_SEIEN_EL1); + system_regs.push_back(REG_CONTEXTIDR_EL21); + system_regs.push_back(REG_TPIDR_EL1); + system_regs.push_back(REG_SCXTNUM_EL21); + system_regs.push_back(REG_REDIR_CNTKCTL_EL1); + system_regs.push_back(REG_HID0); + system_regs.push_back(REG_HID25); + system_regs.push_back(REG_HID26); + system_regs.push_back(REG_HID27); + system_regs.push_back(REG_HID28); + system_regs.push_back(REG_HID29); + system_regs.push_back(REG_HID34); + system_regs.push_back(REG_HID1); + system_regs.push_back(REG_HID21); + system_regs.push_back(REG_BIUVCSCUPCMDCRD); + system_regs.push_back(REG_BIUVCSCUPDATCRD); + system_regs.push_back(REG_HID2); + system_regs.push_back(REG_HID30); + system_regs.push_back(REG_HID31); + system_regs.push_back(REG_HID32); + system_regs.push_back(REG_HID33); + system_regs.push_back(REG_HID3); + system_regs.push_back(REG_BIUVCSCUPCMDCRDC2); + system_regs.push_back(REG_BIUVCSCUPDATCRDC2); + system_regs.push_back(REG_HID4); + system_regs.push_back(REG_HID5); + system_regs.push_back(REG_HID6); + system_regs.push_back(REG_HID7); + system_regs.push_back(REG_HID8); + system_regs.push_back(REG_HID9); + system_regs.push_back(REG_HID10); + system_regs.push_back(REG_BLOCK_CMAINT_CFG); + system_regs.push_back(REG_HID11); + system_regs.push_back(REG_HID18); + system_regs.push_back(REG_HID36); + system_regs.push_back(REG_HID37); + system_regs.push_back(REG_HID12); + system_regs.push_back(REG_HID15); + system_regs.push_back(REG_HID19); + system_regs.push_back(REG_BIU_TLIMIT); + system_regs.push_back(REG_HID13); + system_regs.push_back(REG_HID_RCTX_G0CTL); + system_regs.push_back(REG_HID_RCTX_G1CTL); + system_regs.push_back(REG_HID14); + system_regs.push_back(REG_HID16); + system_regs.push_back(REG_LLC_WRR2); + system_regs.push_back(REG_BIU_AFI_CFG); + system_regs.push_back(REG_HID17); + system_regs.push_back(REG_HID24); + system_regs.push_back(REG_HID35); + system_regs.push_back(REG_CCSIDRPL1_I_EL1); + system_regs.push_back(REG_CLIDR_EL1); + system_regs.push_back(REG_SMIDR_EL1); + system_regs.push_back(REG_AIDR_EL1); + system_regs.push_back(REG_PMCR0_EL1); + system_regs.push_back(REG_APPL_CONTEXTPTR); + system_regs.push_back(REG_LD_LATPROF_CTL_EL21); + system_regs.push_back(REG_AON_CPU_MSTALL_CTL01_EL1); + system_regs.push_back(REG_PM_MEMFLT_CTL23_EL1); + system_regs.push_back(REG_REDIR_ACNTV_CTL_EL0); + system_regs.push_back(REG_LCL_ACNTVCTSS_NOREDIR_EL0); + system_regs.push_back(REG_PMCR1_EL21); + system_regs.push_back(REG_LD_LATPROF_CTR_EL1); + system_regs.push_back(REG_AON_CPU_MSTALL_CTL23_EL1); + system_regs.push_back(REG_PM_MEMFLT_CTL45_EL1); + system_regs.push_back(REG_AGTCNTRDIR_EL21); + system_regs.push_back(REG_AGTCNTKCTL_NOREDIR_EL1); + system_regs.push_back(REG_PMCR2_EL1); + system_regs.push_back(REG_LD_LATPROF_STS_EL1); + system_regs.push_back(REG_AON_CPU_MSTALL_CTL45_EL1); + system_regs.push_back(REG_REDIR_ACNTHP_CVAL_EL2); + system_regs.push_back(REG_LCL_CNTVCT_NOREDIR_EL0); + system_regs.push_back(REG_AGTCNTP_CVAL_NOREDIR_EL0); + system_regs.push_back(REG_PMCR3_EL1); + system_regs.push_back(REG_LD_LATPROF_INF_EL1); + system_regs.push_back(REG_AON_CPU_MSTALL_CTL67_EL1); + system_regs.push_back(REG_REDIR_ACNTHP_TVAL_EL2); + system_regs.push_back(REG_LCL_CNTPCTSS_NOREDIR_EL0); + system_regs.push_back(REG_AGTCNTP_TVAL_NOREDIR_EL0); + system_regs.push_back(REG_PMCR4_EL1); + system_regs.push_back(REG_LD_LATPROF_CTL_EL2); + system_regs.push_back(REG_AON_CPU_MEMFLT_CTL01_EL1); + system_regs.push_back(REG_REDIR_ACNTHP_CTL_EL2); + system_regs.push_back(REG_LCL_CNTVCTSS_NOREDIR_EL0); + system_regs.push_back(REG_AGTCNTP_CTL_NOREDIR_EL0); + system_regs.push_back(REG_PMESR0_EL1); + system_regs.push_back(REG_LD_LATPROF_CMD_EL1); + system_regs.push_back(REG_AON_CPU_MEMFLT_CTL23_EL1); + system_regs.push_back(REG_REDIR_ACNTHV_CVAL_EL2); + system_regs.push_back(REG_AGTCNTV_CVAL_NOREDIR_EL0); + system_regs.push_back(REG_PMESR1_EL1); + system_regs.push_back(REG_PMCR1_EL2); + system_regs.push_back(REG_AON_CPU_MEMFLT_CTL45_EL1); + system_regs.push_back(REG_REDIR_ACNTHV_TVAL_EL2); + system_regs.push_back(REG_CNTKCTL_NOREDIR_EL1); + system_regs.push_back(REG_AGTCNTV_TVAL_NOREDIR_EL0); + system_regs.push_back(REG_OPMAT0_EL1); + system_regs.push_back(REG_PMCR1_EL12); + system_regs.push_back(REG_AON_CPU_MEMFLT_CTL67_EL1); + system_regs.push_back(REG_REDIR_ACNTHV_CTL_EL2); + system_regs.push_back(REG_CNTP_CVAL_NOREDIR_EL0); + system_regs.push_back(REG_AGTCNTV_CTL_NOREDIR_EL0); + system_regs.push_back(REG_OPMAT1_EL1); + system_regs.push_back(REG_PMCR1_GL12); + system_regs.push_back(REG_AON_CPU_MSTALL_CTR0_EL1); + system_regs.push_back(REG_REDIR_ACNTFRQ_EL0); + system_regs.push_back(REG_CNTP_TVAL_NOREDIR_EL0); + system_regs.push_back(REG_LCL_CNTPCT_NOREDIR_EL0); + system_regs.push_back(REG_OPMSK0_EL1); + system_regs.push_back(REG_LD_LATPROF_CTL_EL12); + system_regs.push_back(REG_AON_CPU_MSTALL_CTR1_EL1); + system_regs.push_back(REG_AGTCNTVOFF_EL2); + system_regs.push_back(REG_CNTP_CTL_NOREDIR_EL0); + system_regs.push_back(REG_CNTV_CTL_NOREDIR_EL0); + system_regs.push_back(REG_OPMSK1_EL1); + system_regs.push_back(REG_LD_LATPROF_INF_EL2); + system_regs.push_back(REG_AON_CPU_MSTALL_CTR2_EL1); + system_regs.push_back(REG_REDIR_ACNTP_CVAL_EL0); + system_regs.push_back(REG_CNTV_CVAL_NOREDIR_EL0); + system_regs.push_back(REG_LCL_ACNTPCT_NOREDIR_EL0); + system_regs.push_back(REG_AON_CPU_MSTALL_CTR3_EL1); + system_regs.push_back(REG_REDIR_ACNTP_TVAL_EL0); + system_regs.push_back(REG_CNTV_TVAL_NOREDIR_EL0); + system_regs.push_back(REG_VMSA_HV_LOCK_EL2); + system_regs.push_back(REG_PMSWCTRL_EL1); + system_regs.push_back(REG_PMCR5_EL0); + system_regs.push_back(REG_AON_CPU_MSTALL_CTR4_EL1); + system_regs.push_back(REG_PMCOMPARE0_EL1); + system_regs.push_back(REG_PMCOMPARE1_EL1); + system_regs.push_back(REG_VMSA_NV_LOCK_EL2); + system_regs.push_back(REG_PMSR_EL1); + system_regs.push_back(REG_AON_CPU_MSTALL_CTR5_EL1); + system_regs.push_back(REG_REDIR_ACNTP_CTL_EL0); + system_regs.push_back(REG_PMCOMPARE5_EL1); + system_regs.push_back(REG_PMCOMPARE6_EL1); + system_regs.push_back(REG_PMCOMPARE7_EL1); + system_regs.push_back(REG_PMCR_BVRNG4_EL1); + system_regs.push_back(REG_PM_PMI_PC); + system_regs.push_back(REG_AON_CPU_MSTALL_CTR6_EL1); + system_regs.push_back(REG_REDIR_ACNTV_CVAL_EL0); + system_regs.push_back(REG_LCL_ACNTVCT_NOREDIR_EL0); + system_regs.push_back(REG_PMCR_BVRNG5_EL1); + system_regs.push_back(REG_AON_CPU_MSTALL_CTR7_EL1); + system_regs.push_back(REG_REDIR_ACNTV_TVAL_EL0); + system_regs.push_back(REG_LCL_ACNTPCTSS_NOREDIR_EL0); + system_regs.push_back(REG_CSSELR_EL1); + system_regs.push_back(REG_PMC0); + system_regs.push_back(REG_UPMCFILTER0); + system_regs.push_back(REG_UPMCFILTER1); + system_regs.push_back(REG_UPMCFILTER2); + system_regs.push_back(REG_UPMCFILTER3); + system_regs.push_back(REG_UPMCFILTER4); + system_regs.push_back(REG_UPMCFILTER5); + system_regs.push_back(REG_UPMCFILTER6); + system_regs.push_back(REG_PMC1); + system_regs.push_back(REG_UPMCFILTER7); + system_regs.push_back(REG_PMC2); + system_regs.push_back(REG_PMC3); + system_regs.push_back(REG_PMC4); + system_regs.push_back(REG_PMC5); + system_regs.push_back(REG_PMC6); + system_regs.push_back(REG_PMC7); + system_regs.push_back(REG_PMC8); + system_regs.push_back(REG_PMC9); + system_regs.push_back(REG_PMTRHLD6_EL1); + system_regs.push_back(REG_PMTRHLD4_EL1); + system_regs.push_back(REG_PMTRHLD2_EL1); + system_regs.push_back(REG_PMMMAP_EL1); + system_regs.push_back(REG_CTR_EL0); + system_regs.push_back(REG_DCZID_EL0); + system_regs.push_back(REG_NZCV); + system_regs.push_back(REG_DAIF); + system_regs.push_back(REG_SVCR); + system_regs.push_back(REG_DIT); + system_regs.push_back(REG_SSBS); + system_regs.push_back(REG_TCO); + system_regs.push_back(REG_FPCR); + system_regs.push_back(REG_FPSR); + system_regs.push_back(REG_DSPSR_EL0); + system_regs.push_back(REG_DLR_EL0); + system_regs.push_back(REG_PMCR_EL0); + system_regs.push_back(REG_PMCNTENSET_EL0); + system_regs.push_back(REG_PMCNTENCLR_EL0); + system_regs.push_back(REG_PMOVSCLR_EL0); + system_regs.push_back(REG_PMSWINC_EL0); + system_regs.push_back(REG_PMSELR_EL0); + system_regs.push_back(REG_PMCCNTR_EL0); + system_regs.push_back(REG_PMXEVTYPER_EL0); + system_regs.push_back(REG_PMXEVCNTR_EL0); + system_regs.push_back(REG_DAIFCLR); + system_regs.push_back(REG_PMUSERENR_EL0); + system_regs.push_back(REG_PMOVSSET_EL0); + system_regs.push_back(REG_TPIDR_EL0); + system_regs.push_back(REG_TPIDRRO_EL0); + system_regs.push_back(REG_TPIDR2_EL0); + system_regs.push_back(REG_SCXTNUM_EL0); + system_regs.push_back(REG_AMCR_EL0); + system_regs.push_back(REG_AMUSERENR_EL0); + system_regs.push_back(REG_AMCNTENCLR0_EL0); + system_regs.push_back(REG_AMCNTENSET0_EL0); + system_regs.push_back(REG_AMCNTENCLR1_EL0); + system_regs.push_back(REG_AMCNTENSET1_EL0); + system_regs.push_back(REG_AMEVCNTR00_EL0); + system_regs.push_back(REG_AMEVCNTR01_EL0); + system_regs.push_back(REG_AMEVCNTR02_EL0); + system_regs.push_back(REG_AMEVCNTR03_EL0); + system_regs.push_back(REG_AMEVCNTR10_EL0); + system_regs.push_back(REG_AMEVCNTR11_EL0); + system_regs.push_back(REG_AMEVCNTR12_EL0); + system_regs.push_back(REG_AMEVCNTR13_EL0); + system_regs.push_back(REG_AMEVCNTR14_EL0); + system_regs.push_back(REG_AMEVCNTR15_EL0); + system_regs.push_back(REG_AMEVCNTR16_EL0); + system_regs.push_back(REG_AMEVCNTR17_EL0); + system_regs.push_back(REG_AMEVCNTR18_EL0); + system_regs.push_back(REG_AMEVCNTR19_EL0); + system_regs.push_back(REG_AMEVCNTR110_EL0); + system_regs.push_back(REG_AMEVCNTR111_EL0); + system_regs.push_back(REG_AMEVCNTR112_EL0); + system_regs.push_back(REG_AMEVCNTR113_EL0); + system_regs.push_back(REG_AMEVCNTR114_EL0); + system_regs.push_back(REG_AMEVCNTR115_EL0); + system_regs.push_back(REG_AMEVTYPER10_EL0); + system_regs.push_back(REG_AMEVTYPER11_EL0); + system_regs.push_back(REG_AMEVTYPER12_EL0); + system_regs.push_back(REG_AMEVTYPER13_EL0); + system_regs.push_back(REG_AMEVTYPER14_EL0); + system_regs.push_back(REG_AMEVTYPER15_EL0); + system_regs.push_back(REG_AMEVTYPER16_EL0); + system_regs.push_back(REG_AMEVTYPER17_EL0); + system_regs.push_back(REG_AMEVTYPER18_EL0); + system_regs.push_back(REG_AMEVTYPER19_EL0); + system_regs.push_back(REG_AMEVTYPER110_EL0); + system_regs.push_back(REG_AMEVTYPER111_EL0); + system_regs.push_back(REG_AMEVTYPER112_EL0); + system_regs.push_back(REG_AMEVTYPER113_EL0); + system_regs.push_back(REG_AMEVTYPER114_EL0); + system_regs.push_back(REG_AMEVTYPER115_EL0); + system_regs.push_back(REG_REDIR_CNTFRQ_EL0); + system_regs.push_back(REG_REDIR_LCL_CNTPCT_EL0); + system_regs.push_back(REG_REDIR_LCL_CNTVCT_EL0); + system_regs.push_back(REG_REDIR_LCL_CNTPCTSS_EL0); + system_regs.push_back(REG_REDIR_LCL_CNTVCTSS_EL0); + system_regs.push_back(REG_REDIR_CNTP_TVAL_EL0); + system_regs.push_back(REG_REDIR_CNTP_CTL_EL0); + system_regs.push_back(REG_REDIR_CNTP_CVAL_EL0); + system_regs.push_back(REG_REDIR_CNTV_TVAL_EL0); + system_regs.push_back(REG_REDIR_CNTV_CTL_EL0); + system_regs.push_back(REG_REDIR_CNTV_CVAL_EL0); + system_regs.push_back(REG_PMEVCNTR0_EL0); + system_regs.push_back(REG_PMEVCNTR1_EL0); + system_regs.push_back(REG_PMEVCNTR2_EL0); + system_regs.push_back(REG_PMEVCNTR3_EL0); + system_regs.push_back(REG_PMEVCNTR4_EL0); + system_regs.push_back(REG_PMEVCNTR5_EL0); + system_regs.push_back(REG_PMEVCNTR6_EL0); + system_regs.push_back(REG_PMEVCNTR7_EL0); + system_regs.push_back(REG_PMEVCNTR8_EL0); + system_regs.push_back(REG_PMEVCNTR9_EL0); + system_regs.push_back(REG_PMEVCNTR10_EL0); + system_regs.push_back(REG_PMEVCNTR11_EL0); + system_regs.push_back(REG_PMEVCNTR12_EL0); + system_regs.push_back(REG_PMEVCNTR13_EL0); + system_regs.push_back(REG_PMEVCNTR14_EL0); + system_regs.push_back(REG_PMEVCNTR15_EL0); + system_regs.push_back(REG_PMEVCNTR16_EL0); + system_regs.push_back(REG_PMEVCNTR17_EL0); + system_regs.push_back(REG_PMEVCNTR18_EL0); + system_regs.push_back(REG_PMEVCNTR19_EL0); + system_regs.push_back(REG_PMEVCNTR20_EL0); + system_regs.push_back(REG_PMEVCNTR21_EL0); + system_regs.push_back(REG_PMEVCNTR22_EL0); + system_regs.push_back(REG_PMEVCNTR23_EL0); + system_regs.push_back(REG_PMEVCNTR24_EL0); + system_regs.push_back(REG_PMEVCNTR25_EL0); + system_regs.push_back(REG_PMEVCNTR26_EL0); + system_regs.push_back(REG_PMEVCNTR27_EL0); + system_regs.push_back(REG_PMEVCNTR28_EL0); + system_regs.push_back(REG_PMEVCNTR29_EL0); + system_regs.push_back(REG_PMEVCNTR30_EL0); + system_regs.push_back(REG_PMEVTYPER0_EL0); + system_regs.push_back(REG_PMEVTYPER1_EL0); + system_regs.push_back(REG_PMEVTYPER2_EL0); + system_regs.push_back(REG_PMEVTYPER3_EL0); + system_regs.push_back(REG_PMEVTYPER4_EL0); + system_regs.push_back(REG_PMEVTYPER5_EL0); + system_regs.push_back(REG_PMEVTYPER6_EL0); + system_regs.push_back(REG_PMEVTYPER7_EL0); + system_regs.push_back(REG_PMEVTYPER8_EL0); + system_regs.push_back(REG_PMEVTYPER9_EL0); + system_regs.push_back(REG_PMEVTYPER10_EL0); + system_regs.push_back(REG_PMEVTYPER11_EL0); + system_regs.push_back(REG_PMEVTYPER12_EL0); + system_regs.push_back(REG_PMEVTYPER13_EL0); + system_regs.push_back(REG_PMEVTYPER14_EL0); + system_regs.push_back(REG_PMEVTYPER15_EL0); + system_regs.push_back(REG_PMEVTYPER16_EL0); + system_regs.push_back(REG_PMEVTYPER17_EL0); + system_regs.push_back(REG_PMEVTYPER18_EL0); + system_regs.push_back(REG_PMEVTYPER19_EL0); + system_regs.push_back(REG_PMEVTYPER20_EL0); + system_regs.push_back(REG_PMEVTYPER21_EL0); + system_regs.push_back(REG_PMEVTYPER22_EL0); + system_regs.push_back(REG_PMEVTYPER23_EL0); + system_regs.push_back(REG_PMEVTYPER24_EL0); + system_regs.push_back(REG_PMEVTYPER25_EL0); + system_regs.push_back(REG_PMEVTYPER26_EL0); + system_regs.push_back(REG_PMEVTYPER27_EL0); + system_regs.push_back(REG_PMEVTYPER28_EL0); + system_regs.push_back(REG_PMEVTYPER29_EL0); + system_regs.push_back(REG_PMEVTYPER30_EL0); + system_regs.push_back(REG_PMCCFILTR_EL0); + system_regs.push_back(REG_LSU_ERR_STS); + system_regs.push_back(REG_AFLATCTL1_EL1); + system_regs.push_back(REG_AFLATVALBIN0_EL1); + system_regs.push_back(REG_AFLATINFLO_EL1); + system_regs.push_back(REG_LSU_ERR_CTL); + system_regs.push_back(REG_AFLATCTL2_EL1); + system_regs.push_back(REG_AFLATVALBIN1_EL1); + system_regs.push_back(REG_AFLATINFHI_EL1); + system_regs.push_back(REG_AFLATCTL3_EL1); + system_regs.push_back(REG_AFLATVALBIN2_EL1); + system_regs.push_back(REG_AFLATCTL4_EL1); + system_regs.push_back(REG_AFLATVALBIN3_EL1); + system_regs.push_back(REG_LLC_FILL_CTL); + system_regs.push_back(REG_AFLATCTL5_LO_EL1); + system_regs.push_back(REG_AFLATVALBIN4_EL1); + system_regs.push_back(REG_AFLATCTL5_HI_EL1); + system_regs.push_back(REG_LLC_FILL_DAT); + system_regs.push_back(REG_AFLATVALBIN5_EL1); + system_regs.push_back(REG_AFLATVALBIN6_EL1); + system_regs.push_back(REG_LLC_RAM_CONFIG); + system_regs.push_back(REG_AFLATVALBIN7_EL1); + system_regs.push_back(REG_LLC_ERR_STS); + system_regs.push_back(REG_CMAINT_BCAST_LIST_0); + system_regs.push_back(REG_CMAINT_BCAST_LIST_1); + system_regs.push_back(REG_CMAINT_BCAST_CTL); + system_regs.push_back(REG_LLC_ERR_ADR); + system_regs.push_back(REG_LLC_ERR_CTL); + system_regs.push_back(REG_LLC_ERR_INJ); + system_regs.push_back(REG_LLC_ERR_INF); + system_regs.push_back(REG_USERTAGSEL_EL1); + system_regs.push_back(REG_UUSERTAG_EL0); + system_regs.push_back(REG_KUSERTAG_EL1); + system_regs.push_back(REG_HUSERTAG_EL2); + system_regs.push_back(REG_LLC_TRACE_CTL0); + system_regs.push_back(REG_LLC_TRACE_CTL1); + system_regs.push_back(REG_LLC_UP_REQ_VC); + system_regs.push_back(REG_LLC_UP_REQ_VC_THRESH); + system_regs.push_back(REG_LLC_UP_REQ_VC_2); + system_regs.push_back(REG_LLC_UP_REQ_VC_THRESH_2); + system_regs.push_back(REG_LLC_DRAM_HASH0); + system_regs.push_back(REG_LLC_DRAM_HASH1); + system_regs.push_back(REG_LLC_DRAM_HASH2); + system_regs.push_back(REG_LLC_DRAM_HASH3); + system_regs.push_back(REG_LLC_TRACE_CTL2); + system_regs.push_back(REG_LLC_DRAM_HASH4); + system_regs.push_back(REG_LLC_UP_REQ_VC_3); + system_regs.push_back(REG_LLC_UP_REQ_VC_THRESH_3); + system_regs.push_back(REG_LLC_UP_REQ_VC_4); + system_regs.push_back(REG_LLC_UP_REQ_VC_THRESH_4); + system_regs.push_back(REG_LLC_HASH0); + system_regs.push_back(REG_LLC_HASH1); + system_regs.push_back(REG_LLC_HASH2); + system_regs.push_back(REG_LLC_HASH3); + system_regs.push_back(REG_LLC_WRR); + system_regs.push_back(REG_LLC_DRAM_HASH5); + system_regs.push_back(REG_LLC_DRAM_HASH6); + system_regs.push_back(REG_VPIDR_EL2); + system_regs.push_back(REG_VMPIDR_EL2); + system_regs.push_back(REG_SCTLR_EL2); + system_regs.push_back(REG_ACTLR_EL2); + system_regs.push_back(REG_HCR_EL2); + system_regs.push_back(REG_MDCR_EL2); + system_regs.push_back(REG_CPTR_EL2); + system_regs.push_back(REG_HSTR_EL2); + system_regs.push_back(REG_HFGRTR_EL2); + system_regs.push_back(REG_HFGWTR_EL2); + system_regs.push_back(REG_HFGITR_EL2); + system_regs.push_back(REG_HACR_EL2); + system_regs.push_back(REG_TRFCR_EL2); + system_regs.push_back(REG_HCRX_EL2); + system_regs.push_back(REG_SMPRIMAP_EL2); + system_regs.push_back(REG_SMCR_EL2); + system_regs.push_back(REG_SDER32_EL2); + system_regs.push_back(REG_TTBR0_EL2); + system_regs.push_back(REG_TTBR1_EL2); + system_regs.push_back(REG_TCR_EL2); + system_regs.push_back(REG_VTTBR_EL2); + system_regs.push_back(REG_VTCR_EL2); + system_regs.push_back(REG_VNCR_EL2); + system_regs.push_back(REG_VSTTBR_EL2); + system_regs.push_back(REG_VSTCR_EL2); + system_regs.push_back(REG_DACR32_EL2); + system_regs.push_back(REG_HDFGRTR_EL2); + system_regs.push_back(REG_HDFGWTR_EL2); + system_regs.push_back(REG_SPSR_NV_EL21); + system_regs.push_back(REG_ELR_NV_EL21); + system_regs.push_back(REG_SP_EL1); + system_regs.push_back(REG_SPSR_IRQ); + system_regs.push_back(REG_SPSR_ABT); + system_regs.push_back(REG_SPSR_UND); + system_regs.push_back(REG_SPSR_FIQ); + system_regs.push_back(REG_IFSR32_EL2); + system_regs.push_back(REG_AFSR0_EL2); + system_regs.push_back(REG_AFSR1_EL2); + system_regs.push_back(REG_ESR_NV_EL21); + system_regs.push_back(REG_VSESR_EL2); + system_regs.push_back(REG_FPEXC32_EL2); + system_regs.push_back(REG_TFSR_EL2); + system_regs.push_back(REG_FAR_NV_EL21); + system_regs.push_back(REG_HPFAR_EL2); + system_regs.push_back(REG_PMSCR_EL2); + system_regs.push_back(REG_MAIR_EL2); + system_regs.push_back(REG_AMAIR_EL2); + system_regs.push_back(REG_MPAMHCR_EL2); + system_regs.push_back(REG_MPAMVPMV_EL2); + system_regs.push_back(REG_MPAM2_EL2); + system_regs.push_back(REG_MPAMVPM0_EL2); + system_regs.push_back(REG_MPAMVPM1_EL2); + system_regs.push_back(REG_MPAMVPM2_EL2); + system_regs.push_back(REG_MPAMVPM3_EL2); + system_regs.push_back(REG_MPAMVPM4_EL2); + system_regs.push_back(REG_MPAMVPM5_EL2); + system_regs.push_back(REG_MPAMVPM6_EL2); + system_regs.push_back(REG_MPAMVPM7_EL2); + system_regs.push_back(REG_VBAR_EL2); + system_regs.push_back(REG_RVBAR_EL2); + system_regs.push_back(REG_RMR_EL2); + system_regs.push_back(REG_VDISR_EL2); + system_regs.push_back(REG_ICH_AP0R0_EL2); + system_regs.push_back(REG_ICH_AP0R1_EL2); + system_regs.push_back(REG_ICH_AP0R2_EL2); + system_regs.push_back(REG_ICH_AP0R3_EL2); + system_regs.push_back(REG_ICH_AP1R0_EL2); + system_regs.push_back(REG_ICH_AP1R1_EL2); + system_regs.push_back(REG_ICH_AP1R2_EL2); + system_regs.push_back(REG_ICH_AP1R3_EL2); + system_regs.push_back(REG_ICH_VSEIR_EL2); + system_regs.push_back(REG_ICC_SRE_EL2); + system_regs.push_back(REG_ICH_HCR_EL2); + system_regs.push_back(REG_ICH_VTR_EL2); + system_regs.push_back(REG_ICH_MISR_EL2); + system_regs.push_back(REG_ICH_EISR_EL2); + system_regs.push_back(REG_ICH_ELRSR_EL2); + system_regs.push_back(REG_ICH_VMCR_EL2); + system_regs.push_back(REG_ICH_LR0_EL2); + system_regs.push_back(REG_ICH_LR1_EL2); + system_regs.push_back(REG_ICH_LR2_EL2); + system_regs.push_back(REG_ICH_LR3_EL2); + system_regs.push_back(REG_ICH_LR4_EL2); + system_regs.push_back(REG_ICH_LR5_EL2); + system_regs.push_back(REG_ICH_LR6_EL2); + system_regs.push_back(REG_ICH_LR7_EL2); + system_regs.push_back(REG_ICH_LR8_EL2); + system_regs.push_back(REG_ICH_LR9_EL2); + system_regs.push_back(REG_ICH_LR10_EL2); + system_regs.push_back(REG_ICH_LR11_EL2); + system_regs.push_back(REG_ICH_LR12_EL2); + system_regs.push_back(REG_ICH_LR13_EL2); + system_regs.push_back(REG_ICH_LR14_EL2); + system_regs.push_back(REG_ICH_LR15_EL2); + system_regs.push_back(REG_CONTEXTIDR_EL2); + system_regs.push_back(REG_TPIDR_EL2); + system_regs.push_back(REG_SCXTNUM_EL2); + system_regs.push_back(REG_CNTVOFF_EL2); + system_regs.push_back(REG_REDIR_CNTHCTL_EL2); + system_regs.push_back(REG_REDIR_CNTHP_TVAL_EL2); + system_regs.push_back(REG_REDIR_CNTHP_CTL_EL2); + system_regs.push_back(REG_REDIR_CNTHP_CVAL_EL2); + system_regs.push_back(REG_REDIR_CNTHV_TVAL_EL2); + system_regs.push_back(REG_REDIR_CNTHV_CTL_EL2); + system_regs.push_back(REG_REDIR_CNTHV_CVAL_EL2); + system_regs.push_back(REG_CNTHVS_TVAL_EL2); + system_regs.push_back(REG_CNTHVS_CTL_EL2); + system_regs.push_back(REG_CNTHVS_CVAL_EL2); + system_regs.push_back(REG_CNTHPS_TVAL_EL2); + system_regs.push_back(REG_CNTHPS_CTL_EL2); + system_regs.push_back(REG_CNTHPS_CVAL_EL2); + system_regs.push_back(REG_FED_ERR_STS); + system_regs.push_back(REG_FED_ERR_CTL); + system_regs.push_back(REG_APCTL_EL21); + system_regs.push_back(REG_KERNKEYLO_EL21); + system_regs.push_back(REG_KERNKEYHI_EL21); + system_regs.push_back(REG_VMSA_LOCK_EL1); + system_regs.push_back(REG_AMX_STATE_T_EL1); + system_regs.push_back(REG_AMX_CONFIG_EL21); + system_regs.push_back(REG_VMSA_LOCK_EL2); + system_regs.push_back(REG_CTRR_B_UPR_EL21); + system_regs.push_back(REG_CTRR_B_LWR_EL21); + system_regs.push_back(REG_SP_SETUP_GL21); + system_regs.push_back(REG_SP_SETUP_GL2); + system_regs.push_back(REG_CTRR_B_CTL_EL21); + system_regs.push_back(REG_CTRR_A_LWR_EL21); + system_regs.push_back(REG_CTRR_A_UPR_EL21); + system_regs.push_back(REG_CTRR_A_CTL_EL21); + system_regs.push_back(REG_VMSA_LOCK_EL12); + system_regs.push_back(REG_AGTCNTV_CTL_EL02); + system_regs.push_back(REG_AMX_STATE_EL1); + system_regs.push_back(REG_AMX_STATUS_EL1); + system_regs.push_back(REG_AGTCNTP_CVAL_EL02); + system_regs.push_back(REG_REDIR_ACNTP_TVAL_EL02); + system_regs.push_back(REG_AGTCNTP_CTL_EL02); + system_regs.push_back(REG_AGTCNTV_CVAL_EL02); + system_regs.push_back(REG_AGTCNTV_TVAL_EL02); + system_regs.push_back(REG_AMX_CONFIG_EL12); + system_regs.push_back(REG_AMX_CONFIG_EL2); + system_regs.push_back(REG_SPRR_HUPERM_EL0); + system_regs.push_back(REG_SPRR_VUPERM_EL0); + system_regs.push_back(REG_CTRR_A_CTL_EL2); + system_regs.push_back(REG_CTRR_B_CTL_EL2); + system_regs.push_back(REG_CTRR_A_LWR_EL2); + system_regs.push_back(REG_CTRR_A_UPR_EL2); + system_regs.push_back(REG_CTRR_B_LWR_EL2); + system_regs.push_back(REG_CTRR_B_UPR_EL2); + system_regs.push_back(REG_SPRR_HUMPRR_EL2); + system_regs.push_back(REG_SPRR_HUPERM_SH01_EL2); + system_regs.push_back(REG_SPRR_HUPERM_SH02_EL2); + system_regs.push_back(REG_SPRR_HUPERM_SH03_EL2); + system_regs.push_back(REG_SPRR_HUPERM_SH04_EL2); + system_regs.push_back(REG_SPRR_HUPERM_SH05_EL2); + system_regs.push_back(REG_SPRR_HUPERM_SH06_EL2); + system_regs.push_back(REG_SPRR_HUPERM_SH07_EL2); + system_regs.push_back(REG_SPRR_VUMPRR_EL1); + system_regs.push_back(REG_SPRR_VUPERM_SH01_EL1); + system_regs.push_back(REG_SPRR_VUPERM_SH02_EL1); + system_regs.push_back(REG_SPRR_VUPERM_SH03_EL1); + system_regs.push_back(REG_SPRR_VUPERM_SH04_EL1); + system_regs.push_back(REG_SPRR_VUPERM_SH05_EL1); + system_regs.push_back(REG_SPRR_VUPERM_SH06_EL1); + system_regs.push_back(REG_SPRR_VUPERM_SH07_EL1); + system_regs.push_back(REG_CTRR_A_LWR_EL12); + system_regs.push_back(REG_CTRR_A_UPR_EL12); + system_regs.push_back(REG_CTRR_B_LWR_EL12); + system_regs.push_back(REG_CTRR_B_UPR_EL12); + system_regs.push_back(REG_CTRR_A_CTL_EL12); + system_regs.push_back(REG_CTRR_B_CTL_EL12); + system_regs.push_back(REG_REDIR_ACNTKCTL_EL1); + system_regs.push_back(REG_AGTCNTKCTL_EL12); + system_regs.push_back(REG_PREDAKEYLO_EL1); + system_regs.push_back(REG_PREDAKEYHI_EL1); + system_regs.push_back(REG_PREDBKEYLO_EL1); + system_regs.push_back(REG_PREDBKEYHI_EL1); + system_regs.push_back(REG_SIQ_CFG_EL1); + system_regs.push_back(REG_REDIR_LCL_ACNTPCTSS_EL0); + system_regs.push_back(REG_REDIR_LCL_ACNTVCTSS_EL0); + system_regs.push_back(REG_AVNCR_EL2); + system_regs.push_back(REG_ACC_CTRR_A_LWR_EL2); + system_regs.push_back(REG_ACC_CTRR_A_UPR_EL2); + system_regs.push_back(REG_ACC_CTRR_B_LWR_EL2); + system_regs.push_back(REG_ACC_CTRR_B_UPR_EL2); + system_regs.push_back(REG_ACC_CTRR_A_CTL_EL2); + system_regs.push_back(REG_ACC_CTRR_B_CTL_EL2); + system_regs.push_back(REG_REDIR_LCL_ACNTPCT_EL0); + system_regs.push_back(REG_REDIR_LCL_ACNTVCT_EL0); + system_regs.push_back(REG_ACFG_EL1); + system_regs.push_back(REG_AHCR_EL2); + system_regs.push_back(REG_APL_INTSTATUS_EL21); + system_regs.push_back(REG_APL_INTSTATUS_EL2); + system_regs.push_back(REG_REDIR_ACNTHCTL_EL2); + system_regs.push_back(REG_JAPIAKEYLO_NV_EL21); + system_regs.push_back(REG_JAPIAKEYHI_NV_EL21); + system_regs.push_back(REG_JAPIBKEYLO_NV_EL21); + system_regs.push_back(REG_JAPIBKEYHI_NV_EL21); + system_regs.push_back(REG_JAPIAKEYLO_EL21); + system_regs.push_back(REG_JAPIAKEYHI_EL21); + system_regs.push_back(REG_JAPIBKEYLO_EL21); + system_regs.push_back(REG_JAPIBKEYHI_EL21); + system_regs.push_back(REG_JAPIAKEYLO_EL12); + system_regs.push_back(REG_JAPIAKEYHI_EL12); + system_regs.push_back(REG_JAPIBKEYLO_EL12); + system_regs.push_back(REG_JAPIBKEYHI_EL12); + system_regs.push_back(REG_AGTCNTRDIR_EL2); + system_regs.push_back(REG_AGTCNTRDIR_EL12); + system_regs.push_back(REG_JRANGE_EL2); + system_regs.push_back(REG_JRANGE_EL21); + system_regs.push_back(REG_JRANGE_EL12); + system_regs.push_back(REG_JCTL_EL2); + system_regs.push_back(REG_JCTL_EL21); + system_regs.push_back(REG_JCTL_EL12); + system_regs.push_back(REG_JCTL_EL0); + system_regs.push_back(REG_AMDSCR_EL1); + system_regs.push_back(REG_SCTLR_EL12); + system_regs.push_back(REG_ACTLR_EL12); + system_regs.push_back(REG_CPACR_EL12); + system_regs.push_back(REG_TRFCR_EL12); + system_regs.push_back(REG_SMCR_EL12); + system_regs.push_back(REG_TTBR0_EL12); + system_regs.push_back(REG_TTBR1_EL12); + system_regs.push_back(REG_TCR_EL12); + system_regs.push_back(REG_SPSR_EL12); + system_regs.push_back(REG_ELR_EL12); + system_regs.push_back(REG_AFSR0_EL12); + system_regs.push_back(REG_AFSR1_EL12); + system_regs.push_back(REG_ESR_EL12); + system_regs.push_back(REG_TFSR_EL12); + system_regs.push_back(REG_FAR_EL12); + system_regs.push_back(REG_PMSCR_EL12); + system_regs.push_back(REG_MAIR_EL12); + system_regs.push_back(REG_AMAIR_EL12); + system_regs.push_back(REG_MPAM1_EL12); + system_regs.push_back(REG_VBAR_EL12); + system_regs.push_back(REG_CONTEXTIDR_EL12); + system_regs.push_back(REG_SCXTNUM_EL12); + system_regs.push_back(REG_CNTKCTL_EL12); + system_regs.push_back(REG_CNTP_TVAL_EL02); + system_regs.push_back(REG_CNTP_CTL_EL02); + system_regs.push_back(REG_CNTP_CVAL_EL02); + system_regs.push_back(REG_CNTV_TVAL_EL02); + system_regs.push_back(REG_CNTV_CTL_EL02); + system_regs.push_back(REG_CNTV_CVAL_EL02); + system_regs.push_back(REG_IPI_RR_LOCAL_EL1); + system_regs.push_back(REG_IPI_RR_GLOBAL_EL1); + system_regs.push_back(REG_AF_ERR_CFG0); + system_regs.push_back(REG_AP_ERR_CFG0); + system_regs.push_back(REG_AF_ERR_SRC_IDS); + system_regs.push_back(REG_DPC_ERR_STS); + system_regs.push_back(REG_DPC_ERR_CTL); + system_regs.push_back(REG_PROD_TRC_CORE_CFG_EL21); + system_regs.push_back(REG_TRACE_CORE_CFG); + system_regs.push_back(REG_IPI_SR); + system_regs.push_back(REG_APL_LRTMR_EL2); + system_regs.push_back(REG_APL_INTENABLE_EL2); + system_regs.push_back(REG_KTRACE_MESSAGE); + system_regs.push_back(REG_TRACE_CORE_CFG_EXT); + system_regs.push_back(REG_PROD_TRC_CORE_CFG_EL2); + system_regs.push_back(REG_HID_PROD_TRC_CORE_CFG_EL1); + system_regs.push_back(REG_DBG_WRAP_GLB); + system_regs.push_back(REG_TRACE_STREAM_BASE); + system_regs.push_back(REG_TRACE_STREAM_FILL); + system_regs.push_back(REG_TRACE_STREAM_BASE1); + system_regs.push_back(REG_TRACE_STREAM_FILL1); + system_regs.push_back(REG_TRACE_STREAM_IRQ); + system_regs.push_back(REG_WATCHDOGDIAG0); + system_regs.push_back(REG_WATCHDOGDIAG1); + system_regs.push_back(REG_TRACE_AUX_CTL); + system_regs.push_back(REG_IPI_CR); + system_regs.push_back(REG_UTRIG_EVENT); + system_regs.push_back(REG_HID_PROD_TRC_MASK_EL1); + system_regs.push_back(REG_TRACE_CTL); + system_regs.push_back(REG_TRACE_DAT); + system_regs.push_back(REG_PROD_TRC_STRM_BASE0_GL2); + system_regs.push_back(REG_PROD_TRC_STRM_BASE1_GL2); + system_regs.push_back(REG_CPU_CFG); + system_regs.push_back(REG_PBLK_STS); + system_regs.push_back(REG_PROD_TRC_CTL_EL21); + system_regs.push_back(REG_PROD_TRC_STRM_BASE0_GL21); + system_regs.push_back(REG_PROD_TRC_STRM_BASE1_GL21); + system_regs.push_back(REG_PROD_TRC_STRM_FIQ_EL21); + system_regs.push_back(REG_CPU_OVRD); + system_regs.push_back(REG_PBLK_EXE_ST); + system_regs.push_back(REG_PROD_TRC_CORE_GL_CTL_GL21); + system_regs.push_back(REG_PROD_TRC_CORE_GL_CTL_GL2); + system_regs.push_back(REG_ACC_OVRD); + system_regs.push_back(REG_ACC_OVRD1); + system_regs.push_back(REG_CPM_PWRDN_CTL); + system_regs.push_back(REG_PROD_TRC_BUF_RESTORE0_GL21); + system_regs.push_back(REG_PROD_TRC_BUF_RESTORE1_GL21); + system_regs.push_back(REG_PROD_TRC_EN_GL21); + system_regs.push_back(REG_PRE_LLCFLUSH_TMR); + system_regs.push_back(REG_BIUINTFCTL_CFG); + system_regs.push_back(REG_BIUINTFWRR_CFG); + system_regs.push_back(REG_PRE_TD_TMR); + system_regs.push_back(REG_ACC_SLP_WAKE_UP_TMR); + system_regs.push_back(REG_PBLK_PSW_DLY); + system_regs.push_back(REG_CPU_STS); + system_regs.push_back(REG_HIST_TRIG); + system_regs.push_back(REG_PROD_TRC_BUF_RESTORE0_GL2); + system_regs.push_back(REG_PROD_TRC_BUF_RESTORE1_GL2); + system_regs.push_back(REG_PROD_TRC_STRM_FILL0_EL1); + system_regs.push_back(REG_PROD_TRC_STRM_FILL1_EL1); + system_regs.push_back(REG_ARRAY_INDEX); + system_regs.push_back(REG_PROD_TRC_CTL_EL2); + system_regs.push_back(REG_PROD_TRC_EN_GL2); + system_regs.push_back(REG_PROD_TRC_STRM_FIQ_EL2); + system_regs.push_back(REG_PROD_TRC_CPMU_DUMP_TRIG_EL1); + system_regs.push_back(REG_PROD_LOSS_COUNT_EL1); + system_regs.push_back(REG_SW_TRACE_DATA_EL0); + system_regs.push_back(REG_IL1_DATA0); + system_regs.push_back(REG_IL1_DATA1); + system_regs.push_back(REG_DL1_DATA0); + system_regs.push_back(REG_DL1_DATA1); + system_regs.push_back(REG_MMUDATA0); + system_regs.push_back(REG_MMUDATA1); + system_regs.push_back(REG_DL1_DATA2); + system_regs.push_back(REG_IL1_DATA2); + system_regs.push_back(REG_LLC_DATA0); + system_regs.push_back(REG_LLC_DATA1); + system_regs.push_back(REG_SCTLR_EL3); + system_regs.push_back(REG_ACTLR_EL3); + system_regs.push_back(REG_SCR_EL3); + system_regs.push_back(REG_SDER32_EL3); + system_regs.push_back(REG_CPTR_EL3); + system_regs.push_back(REG_MDCR_EL3); + system_regs.push_back(REG_TTBR0_EL3); + system_regs.push_back(REG_TCR_EL3); + system_regs.push_back(REG_SPSR_EL3); + system_regs.push_back(REG_ELR_EL3); + system_regs.push_back(REG_SP_EL2); + system_regs.push_back(REG_AFSR0_EL3); + system_regs.push_back(REG_AFSR1_EL3); + system_regs.push_back(REG_ESR_EL3); + system_regs.push_back(REG_TFSR_EL3); + system_regs.push_back(REG_FAR_EL3); + system_regs.push_back(REG_MAIR_EL3); + system_regs.push_back(REG_AMAIR_EL3); + system_regs.push_back(REG_MPAM3_EL3); + system_regs.push_back(REG_VBAR_EL3); + system_regs.push_back(REG_RVBAR_EL3); + system_regs.push_back(REG_RMR_EL3); + system_regs.push_back(REG_ICC_CTLR_EL3); + system_regs.push_back(REG_ICC_SRE_EL3); + system_regs.push_back(REG_ICC_IGRPEN1_EL3); + system_regs.push_back(REG_TPIDR_EL3); + system_regs.push_back(REG_SCXTNUM_EL3); + system_regs.push_back(REG_MMU_ERR_STS); + system_regs.push_back(REG_AFSR1_GL21); + system_regs.push_back(REG_AFSR1_GL2); + system_regs.push_back(REG_AFSR1_GL12); + system_regs.push_back(REG_BP_OBJC_ADR_EL1); + system_regs.push_back(REG_BP_OBJC_CTL_EL1); + system_regs.push_back(REG_SP_GL11_GL21); + system_regs.push_back(REG_MMU_SESR_EL2); + system_regs.push_back(REG_SPRR_CONFIG_EL21); + system_regs.push_back(REG_HPFAR_GL2); + system_regs.push_back(REG_GXF_CONFIG_EL21); + system_regs.push_back(REG_SPRR_AMRANGE_EL1); + system_regs.push_back(REG_GXF_CONFIG_EL2); + system_regs.push_back(REG_SPRR_UPERM_EL02); + system_regs.push_back(REG_SPRR_PPERM_EL21); + system_regs.push_back(REG_SPRR_PPERM_EL2); + system_regs.push_back(REG_APGAKEYLO_EL12); + system_regs.push_back(REG_APGAKEYHI_EL12); + system_regs.push_back(REG_KERNKEYLO_EL12); + system_regs.push_back(REG_KERNKEYHI_EL12); + system_regs.push_back(REG_AFPCR_EL0); + system_regs.push_back(REG_SP_GL22); + system_regs.push_back(REG_AMXIDR_EL1); + system_regs.push_back(REG_SPRR_UMPRR_EL1); + system_regs.push_back(REG_SPRR_PMPRR_EL21); + system_regs.push_back(REG_SPRR_PMPRR_EL2); + system_regs.push_back(REG_SPRR_UPERM_SH01_EL1); + system_regs.push_back(REG_SPRR_UPERM_SH02_EL1); + system_regs.push_back(REG_SPRR_UPERM_SH03_EL1); + system_regs.push_back(REG_SPRR_UPERM_SH04_EL1); + system_regs.push_back(REG_SPRR_UPERM_SH05_EL1); + system_regs.push_back(REG_SPRR_UPERM_SH06_EL1); + system_regs.push_back(REG_SPRR_UPERM_SH07_EL1); + system_regs.push_back(REG_SPRR_PPERM_SH01_EL21); + system_regs.push_back(REG_SPRR_PPERM_SH02_EL21); + system_regs.push_back(REG_SPRR_PPERM_SH03_EL21); + system_regs.push_back(REG_SPRR_PPERM_SH04_EL21); + system_regs.push_back(REG_SPRR_PPERM_SH05_EL21); + system_regs.push_back(REG_SPRR_PPERM_SH06_EL21); + system_regs.push_back(REG_SPRR_PPERM_SH07_EL21); + system_regs.push_back(REG_SPRR_PPERM_SH01_EL2); + system_regs.push_back(REG_SPRR_PPERM_SH02_EL2); + system_regs.push_back(REG_SPRR_PPERM_SH03_EL2); + system_regs.push_back(REG_SPRR_PPERM_SH04_EL2); + system_regs.push_back(REG_SPRR_PPERM_SH05_EL2); + system_regs.push_back(REG_SPRR_PPERM_SH06_EL2); + system_regs.push_back(REG_SPRR_PPERM_SH07_EL2); + system_regs.push_back(REG_SPRR_PMPRR_EL12); + system_regs.push_back(REG_SPRR_PPERM_SH01_EL12); + system_regs.push_back(REG_SPRR_PPERM_SH02_EL12); + system_regs.push_back(REG_SPRR_PPERM_SH03_EL12); + system_regs.push_back(REG_SPRR_PPERM_SH04_EL12); + system_regs.push_back(REG_SPRR_PPERM_SH05_EL12); + system_regs.push_back(REG_SPRR_PPERM_SH06_EL12); + system_regs.push_back(REG_SPRR_PPERM_SH07_EL12); + system_regs.push_back(REG_APIAKEYLO_EL12); + system_regs.push_back(REG_APIAKEYHI_EL12); + system_regs.push_back(REG_APIBKEYLO_EL12); + system_regs.push_back(REG_APIBKEYHI_EL12); + system_regs.push_back(REG_APDAKEYLO_EL12); + system_regs.push_back(REG_APDAKEYHI_EL12); + system_regs.push_back(REG_APDBKEYLO_EL12); + system_regs.push_back(REG_APDBKEYHI_EL12); + system_regs.push_back(REG_CURRENTG); + system_regs.push_back(REG_GXF_ENTRY_EL21); + system_regs.push_back(REG_GXF_PABENTRY_EL21); + system_regs.push_back(REG_ASPSR_EL21); + system_regs.push_back(REG_ADSPSR_EL0); + system_regs.push_back(REG_PMCR1_GL2); + system_regs.push_back(REG_ASPSR_NV_EL21); + system_regs.push_back(REG_PMCR1_GL21); + system_regs.push_back(REG_VBAR_GL12); + system_regs.push_back(REG_SPSR_GL12); + system_regs.push_back(REG_ASPSR_GL12); + system_regs.push_back(REG_ESR_GL12); + system_regs.push_back(REG_ELR_GL12); + system_regs.push_back(REG_FAR_GL12); + system_regs.push_back(REG_SP_GL1); + system_regs.push_back(REG_TPIDR_GL1); + system_regs.push_back(REG_VBAR_GL21); + system_regs.push_back(REG_SPSR_GL21); + system_regs.push_back(REG_ASPSR_GL21); + system_regs.push_back(REG_ESR_GL21); + system_regs.push_back(REG_ELR_GL21); + system_regs.push_back(REG_FAR_GL21); + system_regs.push_back(REG_SP_GL2); + system_regs.push_back(REG_TPIDR_GL2); + system_regs.push_back(REG_VBAR_GL2); + system_regs.push_back(REG_SPSR_GL2); + system_regs.push_back(REG_ASPSR_GL2); + system_regs.push_back(REG_ESR_GL2); + system_regs.push_back(REG_ELR_GL2); + system_regs.push_back(REG_FAR_GL2); + system_regs.push_back(REG_GXF_ENTRY_EL2); + system_regs.push_back(REG_GXF_PABENTRY_EL2); + system_regs.push_back(REG_APCTL_EL2); + system_regs.push_back(REG_APSTS_EL2); + system_regs.push_back(REG_APSTS_NV1_EL1); + system_regs.push_back(REG_KERNKEYLO_NV_EL21); + system_regs.push_back(REG_KERNKEYHI_NV_EL21); + system_regs.push_back(REG_ASPSR_EL12); + system_regs.push_back(REG_APIAKEYLO_NV_EL21); + system_regs.push_back(REG_APIAKEYHI_NV_EL21); + system_regs.push_back(REG_APIBKEYLO_NV_EL21); + system_regs.push_back(REG_APIBKEYHI_NV_EL21); + system_regs.push_back(REG_APDAKEYLO_NV_EL21); + system_regs.push_back(REG_APDAKEYHI_NV_EL21); + system_regs.push_back(REG_APDBKEYLO_NV_EL21); + system_regs.push_back(REG_APDBKEYHI_NV_EL21); + system_regs.push_back(REG_APGAKEYLO_NV_EL21); + system_regs.push_back(REG_APGAKEYHI_NV_EL21); + system_regs.push_back(REG_SPRR_CONFIG_EL2); + system_regs.push_back(REG_SPRR_AMRANGE_EL2); + system_regs.push_back(REG_VMKEYLO_EL2); + system_regs.push_back(REG_VMKEYHI_EL2); + system_regs.push_back(REG_MMU_SFAR_EL2); + system_regs.push_back(REG_APSTS_EL12); + system_regs.push_back(REG_APCTL_EL12); + system_regs.push_back(REG_GXF_CONFIG_EL12); + system_regs.push_back(REG_GXF_ENTRY_EL12); + system_regs.push_back(REG_GXF_PABENTRY_EL12); + system_regs.push_back(REG_SPRR_CONFIG_EL12); + system_regs.push_back(REG_SPRR_AMRANGE_EL12); + system_regs.push_back(REG_MMU_SESR_CTL_EL2); + system_regs.push_back(REG_SPRR_PPERM_EL12); + system_regs.push_back(REG_CNTPS_TVAL_EL1); + system_regs.push_back(REG_CNTPS_CTL_EL1); + system_regs.push_back(REG_CNTPS_CVAL_EL1); + system_regs.push_back(REG_PSTATE_SPSEL); + system_regs.push_back(REG_PWRDNSAVE0); + system_regs.push_back(REG_NRG_ACC_CTL); + system_regs.push_back(REG_AON_CNT0); + system_regs.push_back(REG_CPU_CNT0); + system_regs.push_back(REG_UPMCR0_EL1); + system_regs.push_back(REG_UPMC8); + system_regs.push_back(REG_AON_CNT8); + system_regs.push_back(REG_PWRDNSAVE1); + system_regs.push_back(REG_CORE_NRG_ACC_DAT); + system_regs.push_back(REG_AON_CNT_CTL0); + system_regs.push_back(REG_CPU_CNT_CTL0); + system_regs.push_back(REG_UPMESR0_EL1); + system_regs.push_back(REG_UPMC9); + system_regs.push_back(REG_AON_CNT_CTL8); + system_regs.push_back(REG_ACC_PWR_DN_SAVE); + system_regs.push_back(REG_CPM_NRG_ACC_DAT); + system_regs.push_back(REG_AON_CNT1); + system_regs.push_back(REG_CPU_CNT1); + system_regs.push_back(REG_UPMSWCTRL_EL1); + system_regs.push_back(REG_UPMC10); + system_regs.push_back(REG_AON_CNT9); + system_regs.push_back(REG_CORE_SRM_NRG_ACC_DAT); + system_regs.push_back(REG_AON_CNT_CTL1); + system_regs.push_back(REG_CPU_CNT_CTL1); + system_regs.push_back(REG_UPMECM0_EL1); + system_regs.push_back(REG_UPMC11); + system_regs.push_back(REG_AON_CNT_CTL9); + system_regs.push_back(REG_AON_CNT_CTL); + system_regs.push_back(REG_CPM_SRM_NRG_ACC_DAT); + system_regs.push_back(REG_AON_CNT2); + system_regs.push_back(REG_CPU_CNT2); + system_regs.push_back(REG_UPMECM1_EL1); + system_regs.push_back(REG_UPMC12); + system_regs.push_back(REG_AON_CNT10); + system_regs.push_back(REG_CPU_CNT_CTL); + system_regs.push_back(REG_AON_CNT_CTL2); + system_regs.push_back(REG_CPU_CNT_CTL2); + system_regs.push_back(REG_UPMPCM_EL1); + system_regs.push_back(REG_UPMC13); + system_regs.push_back(REG_AON_CNT_CTL10); + system_regs.push_back(REG_AON_CNT3); + system_regs.push_back(REG_CPU_CNT3); + system_regs.push_back(REG_UPMSR_EL1); + system_regs.push_back(REG_UPMC14); + system_regs.push_back(REG_AON_CNT11); + system_regs.push_back(REG_AON_CNT_CTL3); + system_regs.push_back(REG_CPU_CNT_CTL3); + system_regs.push_back(REG_UPMC0); + system_regs.push_back(REG_UPMC15); + system_regs.push_back(REG_AON_CNT_CTL11); + system_regs.push_back(REG_AON_CNT4); + system_regs.push_back(REG_CPU_CNT4); + system_regs.push_back(REG_UPMC1); + system_regs.push_back(REG_UPMECM2_EL1); + system_regs.push_back(REG_AON_CNT_CTL4); + system_regs.push_back(REG_CPU_CNT_CTL4); + system_regs.push_back(REG_UPMC2); + system_regs.push_back(REG_UPMECM3_EL1); + system_regs.push_back(REG_AON_CNT5); + system_regs.push_back(REG_CPU_CNT5); + system_regs.push_back(REG_UPMC3); + system_regs.push_back(REG_UPMCR1_EL1); + system_regs.push_back(REG_AON_CNT_CTL5); + system_regs.push_back(REG_CPU_CNT_CTL5); + system_regs.push_back(REG_UPMC4); + system_regs.push_back(REG_UPMESR1_EL1); + system_regs.push_back(REG_AON_CNT6); + system_regs.push_back(REG_CPU_CNT6); + system_regs.push_back(REG_UPMC5); + system_regs.push_back(REG_AON_CNT_CTL6); + system_regs.push_back(REG_CPU_CNT_CTL6); + system_regs.push_back(REG_UPMC6); + system_regs.push_back(REG_AON_CNT7); + system_regs.push_back(REG_CPU_CNT7); + system_regs.push_back(REG_UPMC7); + system_regs.push_back(REG_AON_CNT_CTL7); + system_regs.push_back(REG_CPU_CNT_CTL7); + return system_regs; +} + diff --git a/arch/arm64/sysregs_enum.h b/arch/arm64/sysregs_enum.h new file mode 100644 index 00000000..a68ba08a --- /dev/null +++ b/arch/arm64/sysregs_enum.h @@ -0,0 +1,14 @@ +#include <stddef.h> + +#include "binaryninjaapi.h" +#include "disassembler/sysregs_gen.h" +#include "disassembler/sysregs_fmt_gen.h" + +using namespace BinaryNinja; +using namespace std; + +Ref<Enumeration> get_system_register_enum(); +Ref<Type> get_system_register_enum_type(Ref<BinaryView> view); +QualifiedName get_system_register_enum_type_name(Ref<BinaryView> view); +vector<uint32_t> get_system_registers(); + |
