119254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover//===-- AArch64BaseInfo.cpp - AArch64 Base encoding information------------===// 219254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover// 319254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover// The LLVM Compiler Infrastructure 419254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover// 519254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover// This file is distributed under the University of Illinois Open Source 619254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover// License. See LICENSE.TXT for details. 719254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover// 819254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover//===----------------------------------------------------------------------===// 919254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover// 1019254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover// This file provides basic encoding and assembly information for AArch64. 1119254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover// 1219254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover//===----------------------------------------------------------------------===// 1319254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover#include "AArch64BaseInfo.h" 1419254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover#include "llvm/ADT/APFloat.h" 1519254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover#include "llvm/ADT/SmallVector.h" 1619254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover#include "llvm/ADT/StringExtras.h" 1719254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover#include "llvm/Support/Regex.h" 1819254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover 1919254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northoverusing namespace llvm; 2019254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover 21dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen HinesStringRef AArch64NamedImmMapper::toString(uint32_t Value, bool &Valid) const { 2219254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover for (unsigned i = 0; i < NumPairs; ++i) { 2319254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover if (Pairs[i].Value == Value) { 2419254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover Valid = true; 2519254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover return Pairs[i].Name; 2619254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover } 2719254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover } 2819254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover 2919254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover Valid = false; 3019254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover return StringRef(); 3119254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover} 3219254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover 33dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hinesuint32_t AArch64NamedImmMapper::fromString(StringRef Name, bool &Valid) const { 3419254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover std::string LowerCaseName = Name.lower(); 3519254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover for (unsigned i = 0; i < NumPairs; ++i) { 3619254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover if (Pairs[i].Name == LowerCaseName) { 3719254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover Valid = true; 3819254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover return Pairs[i].Value; 3919254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover } 4019254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover } 4119254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover 4219254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover Valid = false; 4319254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover return -1; 4419254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover} 4519254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover 46dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hinesbool AArch64NamedImmMapper::validImm(uint32_t Value) const { 4719254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover return Value < TooBigImm; 4819254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover} 4919254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover 50dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hinesconst AArch64NamedImmMapper::Mapping AArch64AT::ATMapper::ATPairs[] = { 5119254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"s1e1r", S1E1R}, 5219254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"s1e2r", S1E2R}, 5319254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"s1e3r", S1E3R}, 5419254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"s1e1w", S1E1W}, 5519254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"s1e2w", S1E2W}, 5619254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"s1e3w", S1E3W}, 5719254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"s1e0r", S1E0R}, 5819254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"s1e0w", S1E0W}, 5919254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"s12e1r", S12E1R}, 6019254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"s12e1w", S12E1W}, 6119254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"s12e0r", S12E0R}, 6219254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"s12e0w", S12E0W}, 6319254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover}; 6419254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover 65dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen HinesAArch64AT::ATMapper::ATMapper() 66dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines : AArch64NamedImmMapper(ATPairs, 0) {} 6719254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover 68dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hinesconst AArch64NamedImmMapper::Mapping AArch64DB::DBarrierMapper::DBarrierPairs[] = { 6919254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"oshld", OSHLD}, 7019254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"oshst", OSHST}, 7119254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"osh", OSH}, 7219254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"nshld", NSHLD}, 7319254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"nshst", NSHST}, 7419254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"nsh", NSH}, 7519254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"ishld", ISHLD}, 7619254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"ishst", ISHST}, 7719254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"ish", ISH}, 7819254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"ld", LD}, 7919254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"st", ST}, 8019254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"sy", SY} 8119254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover}; 8219254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover 83dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen HinesAArch64DB::DBarrierMapper::DBarrierMapper() 84dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines : AArch64NamedImmMapper(DBarrierPairs, 16u) {} 8519254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover 86dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hinesconst AArch64NamedImmMapper::Mapping AArch64DC::DCMapper::DCPairs[] = { 8719254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"zva", ZVA}, 8819254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"ivac", IVAC}, 8919254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"isw", ISW}, 9019254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"cvac", CVAC}, 9119254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"csw", CSW}, 9219254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"cvau", CVAU}, 9319254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"civac", CIVAC}, 9419254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"cisw", CISW} 9519254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover}; 9619254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover 97dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen HinesAArch64DC::DCMapper::DCMapper() 98dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines : AArch64NamedImmMapper(DCPairs, 0) {} 9919254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover 100dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hinesconst AArch64NamedImmMapper::Mapping AArch64IC::ICMapper::ICPairs[] = { 10119254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"ialluis", IALLUIS}, 10219254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"iallu", IALLU}, 10319254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"ivau", IVAU} 10419254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover}; 10519254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover 106dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen HinesAArch64IC::ICMapper::ICMapper() 107dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines : AArch64NamedImmMapper(ICPairs, 0) {} 10819254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover 109dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hinesconst AArch64NamedImmMapper::Mapping AArch64ISB::ISBMapper::ISBPairs[] = { 11019254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"sy", SY}, 11119254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover}; 11219254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover 113dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen HinesAArch64ISB::ISBMapper::ISBMapper() 114dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines : AArch64NamedImmMapper(ISBPairs, 16) {} 11519254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover 116dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hinesconst AArch64NamedImmMapper::Mapping AArch64PRFM::PRFMMapper::PRFMPairs[] = { 11719254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"pldl1keep", PLDL1KEEP}, 11819254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"pldl1strm", PLDL1STRM}, 11919254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"pldl2keep", PLDL2KEEP}, 12019254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"pldl2strm", PLDL2STRM}, 12119254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"pldl3keep", PLDL3KEEP}, 12219254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"pldl3strm", PLDL3STRM}, 1239e3b31345f0d17b757e183a8384db92616256926Tim Northover {"plil1keep", PLIL1KEEP}, 1249e3b31345f0d17b757e183a8384db92616256926Tim Northover {"plil1strm", PLIL1STRM}, 1259e3b31345f0d17b757e183a8384db92616256926Tim Northover {"plil2keep", PLIL2KEEP}, 1269e3b31345f0d17b757e183a8384db92616256926Tim Northover {"plil2strm", PLIL2STRM}, 1279e3b31345f0d17b757e183a8384db92616256926Tim Northover {"plil3keep", PLIL3KEEP}, 1289e3b31345f0d17b757e183a8384db92616256926Tim Northover {"plil3strm", PLIL3STRM}, 12919254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"pstl1keep", PSTL1KEEP}, 13019254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"pstl1strm", PSTL1STRM}, 13119254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"pstl2keep", PSTL2KEEP}, 13219254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"pstl2strm", PSTL2STRM}, 13319254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"pstl3keep", PSTL3KEEP}, 13419254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"pstl3strm", PSTL3STRM} 13519254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover}; 13619254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover 137dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen HinesAArch64PRFM::PRFMMapper::PRFMMapper() 138dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines : AArch64NamedImmMapper(PRFMPairs, 32) {} 13919254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover 140dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hinesconst AArch64NamedImmMapper::Mapping AArch64PState::PStateMapper::PStatePairs[] = { 14119254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"spsel", SPSel}, 14219254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"daifset", DAIFSet}, 14319254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"daifclr", DAIFClr} 14419254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover}; 14519254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover 146dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen HinesAArch64PState::PStateMapper::PStateMapper() 147dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines : AArch64NamedImmMapper(PStatePairs, 0) {} 14819254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover 149dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hinesconst AArch64NamedImmMapper::Mapping AArch64SysReg::MRSMapper::MRSPairs[] = { 15019254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"mdccsr_el0", MDCCSR_EL0}, 15119254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"dbgdtrrx_el0", DBGDTRRX_EL0}, 15219254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"mdrar_el1", MDRAR_EL1}, 15319254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"oslsr_el1", OSLSR_EL1}, 15419254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"dbgauthstatus_el1", DBGAUTHSTATUS_EL1}, 15519254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"pmceid0_el0", PMCEID0_EL0}, 15619254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"pmceid1_el0", PMCEID1_EL0}, 15719254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"midr_el1", MIDR_EL1}, 15819254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"ccsidr_el1", CCSIDR_EL1}, 15919254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"clidr_el1", CLIDR_EL1}, 16019254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"ctr_el0", CTR_EL0}, 16119254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"mpidr_el1", MPIDR_EL1}, 16219254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"revidr_el1", REVIDR_EL1}, 16319254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"aidr_el1", AIDR_EL1}, 16419254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"dczid_el0", DCZID_EL0}, 16519254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"id_pfr0_el1", ID_PFR0_EL1}, 16619254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"id_pfr1_el1", ID_PFR1_EL1}, 16719254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"id_dfr0_el1", ID_DFR0_EL1}, 16819254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"id_afr0_el1", ID_AFR0_EL1}, 16919254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"id_mmfr0_el1", ID_MMFR0_EL1}, 17019254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"id_mmfr1_el1", ID_MMFR1_EL1}, 17119254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"id_mmfr2_el1", ID_MMFR2_EL1}, 17219254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"id_mmfr3_el1", ID_MMFR3_EL1}, 17319254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"id_isar0_el1", ID_ISAR0_EL1}, 17419254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"id_isar1_el1", ID_ISAR1_EL1}, 17519254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"id_isar2_el1", ID_ISAR2_EL1}, 17619254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"id_isar3_el1", ID_ISAR3_EL1}, 17719254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"id_isar4_el1", ID_ISAR4_EL1}, 17819254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"id_isar5_el1", ID_ISAR5_EL1}, 179dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines {"id_aa64pfr0_el1", ID_A64PFR0_EL1}, 180dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines {"id_aa64pfr1_el1", ID_A64PFR1_EL1}, 181dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines {"id_aa64dfr0_el1", ID_A64DFR0_EL1}, 182dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines {"id_aa64dfr1_el1", ID_A64DFR1_EL1}, 183dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines {"id_aa64afr0_el1", ID_A64AFR0_EL1}, 184dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines {"id_aa64afr1_el1", ID_A64AFR1_EL1}, 185dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines {"id_aa64isar0_el1", ID_A64ISAR0_EL1}, 186dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines {"id_aa64isar1_el1", ID_A64ISAR1_EL1}, 187dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines {"id_aa64mmfr0_el1", ID_A64MMFR0_EL1}, 188dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines {"id_aa64mmfr1_el1", ID_A64MMFR1_EL1}, 18919254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"mvfr0_el1", MVFR0_EL1}, 19019254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"mvfr1_el1", MVFR1_EL1}, 19119254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"mvfr2_el1", MVFR2_EL1}, 19219254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"rvbar_el1", RVBAR_EL1}, 19319254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"rvbar_el2", RVBAR_EL2}, 19419254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"rvbar_el3", RVBAR_EL3}, 19519254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"isr_el1", ISR_EL1}, 19619254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"cntpct_el0", CNTPCT_EL0}, 19742a1b2f0b196633c0327801e810fc98849a00c47Tim Northover {"cntvct_el0", CNTVCT_EL0}, 19842a1b2f0b196633c0327801e810fc98849a00c47Tim Northover 1994385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover // Trace registers 2004385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcstatr", TRCSTATR}, 2014385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcidr8", TRCIDR8}, 2024385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcidr9", TRCIDR9}, 2034385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcidr10", TRCIDR10}, 2044385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcidr11", TRCIDR11}, 2054385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcidr12", TRCIDR12}, 2064385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcidr13", TRCIDR13}, 2074385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcidr0", TRCIDR0}, 2084385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcidr1", TRCIDR1}, 2094385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcidr2", TRCIDR2}, 2104385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcidr3", TRCIDR3}, 2114385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcidr4", TRCIDR4}, 2124385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcidr5", TRCIDR5}, 2134385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcidr6", TRCIDR6}, 2144385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcidr7", TRCIDR7}, 2154385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcoslsr", TRCOSLSR}, 2164385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcpdsr", TRCPDSR}, 2174385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcdevaff0", TRCDEVAFF0}, 2184385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcdevaff1", TRCDEVAFF1}, 2194385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trclsr", TRCLSR}, 2204385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcauthstatus", TRCAUTHSTATUS}, 2214385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcdevarch", TRCDEVARCH}, 2224385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcdevid", TRCDEVID}, 2234385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcdevtype", TRCDEVTYPE}, 2244385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcpidr4", TRCPIDR4}, 2254385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcpidr5", TRCPIDR5}, 2264385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcpidr6", TRCPIDR6}, 2274385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcpidr7", TRCPIDR7}, 2284385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcpidr0", TRCPIDR0}, 2294385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcpidr1", TRCPIDR1}, 2304385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcpidr2", TRCPIDR2}, 2314385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcpidr3", TRCPIDR3}, 2324385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trccidr0", TRCCIDR0}, 2334385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trccidr1", TRCCIDR1}, 2344385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trccidr2", TRCCIDR2}, 2354385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trccidr3", TRCCIDR3}, 2364385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover 23742a1b2f0b196633c0327801e810fc98849a00c47Tim Northover // GICv3 registers 23842a1b2f0b196633c0327801e810fc98849a00c47Tim Northover {"icc_iar1_el1", ICC_IAR1_EL1}, 23942a1b2f0b196633c0327801e810fc98849a00c47Tim Northover {"icc_iar0_el1", ICC_IAR0_EL1}, 24042a1b2f0b196633c0327801e810fc98849a00c47Tim Northover {"icc_hppir1_el1", ICC_HPPIR1_EL1}, 24142a1b2f0b196633c0327801e810fc98849a00c47Tim Northover {"icc_hppir0_el1", ICC_HPPIR0_EL1}, 24242a1b2f0b196633c0327801e810fc98849a00c47Tim Northover {"icc_rpr_el1", ICC_RPR_EL1}, 24342a1b2f0b196633c0327801e810fc98849a00c47Tim Northover {"ich_vtr_el2", ICH_VTR_EL2}, 24442a1b2f0b196633c0327801e810fc98849a00c47Tim Northover {"ich_eisr_el2", ICH_EISR_EL2}, 24542a1b2f0b196633c0327801e810fc98849a00c47Tim Northover {"ich_elsr_el2", ICH_ELSR_EL2} 24619254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover}; 24719254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover 248dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen HinesAArch64SysReg::MRSMapper::MRSMapper(uint64_t FeatureBits) 249dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines : SysRegMapper(FeatureBits) { 25019254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover InstPairs = &MRSPairs[0]; 25119254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover NumInstPairs = llvm::array_lengthof(MRSPairs); 25219254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover} 25319254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover 254dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hinesconst AArch64NamedImmMapper::Mapping AArch64SysReg::MSRMapper::MSRPairs[] = { 25519254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"dbgdtrtx_el0", DBGDTRTX_EL0}, 25619254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"oslar_el1", OSLAR_EL1}, 25742a1b2f0b196633c0327801e810fc98849a00c47Tim Northover {"pmswinc_el0", PMSWINC_EL0}, 25842a1b2f0b196633c0327801e810fc98849a00c47Tim Northover 2594385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover // Trace registers 2604385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcoslar", TRCOSLAR}, 2614385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trclar", TRCLAR}, 2624385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover 26342a1b2f0b196633c0327801e810fc98849a00c47Tim Northover // GICv3 registers 26442a1b2f0b196633c0327801e810fc98849a00c47Tim Northover {"icc_eoir1_el1", ICC_EOIR1_EL1}, 26542a1b2f0b196633c0327801e810fc98849a00c47Tim Northover {"icc_eoir0_el1", ICC_EOIR0_EL1}, 26642a1b2f0b196633c0327801e810fc98849a00c47Tim Northover {"icc_dir_el1", ICC_DIR_EL1}, 26742a1b2f0b196633c0327801e810fc98849a00c47Tim Northover {"icc_sgi1r_el1", ICC_SGI1R_EL1}, 26842a1b2f0b196633c0327801e810fc98849a00c47Tim Northover {"icc_asgi1r_el1", ICC_ASGI1R_EL1}, 26942a1b2f0b196633c0327801e810fc98849a00c47Tim Northover {"icc_sgi0r_el1", ICC_SGI0R_EL1} 27019254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover}; 27119254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover 272dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen HinesAArch64SysReg::MSRMapper::MSRMapper(uint64_t FeatureBits) 273dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines : SysRegMapper(FeatureBits) { 27419254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover InstPairs = &MSRPairs[0]; 27519254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover NumInstPairs = llvm::array_lengthof(MSRPairs); 27619254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover} 27719254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover 27819254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover 279dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hinesconst AArch64NamedImmMapper::Mapping AArch64SysReg::SysRegMapper::SysRegPairs[] = { 28019254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"osdtrrx_el1", OSDTRRX_EL1}, 28119254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"osdtrtx_el1", OSDTRTX_EL1}, 28219254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"teecr32_el1", TEECR32_EL1}, 28319254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"mdccint_el1", MDCCINT_EL1}, 28419254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"mdscr_el1", MDSCR_EL1}, 28519254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"dbgdtr_el0", DBGDTR_EL0}, 28619254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"oseccr_el1", OSECCR_EL1}, 28719254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"dbgvcr32_el2", DBGVCR32_EL2}, 28819254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"dbgbvr0_el1", DBGBVR0_EL1}, 28919254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"dbgbvr1_el1", DBGBVR1_EL1}, 29019254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"dbgbvr2_el1", DBGBVR2_EL1}, 29119254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"dbgbvr3_el1", DBGBVR3_EL1}, 29219254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"dbgbvr4_el1", DBGBVR4_EL1}, 29319254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"dbgbvr5_el1", DBGBVR5_EL1}, 29419254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"dbgbvr6_el1", DBGBVR6_EL1}, 29519254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"dbgbvr7_el1", DBGBVR7_EL1}, 29619254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"dbgbvr8_el1", DBGBVR8_EL1}, 29719254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"dbgbvr9_el1", DBGBVR9_EL1}, 29819254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"dbgbvr10_el1", DBGBVR10_EL1}, 29919254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"dbgbvr11_el1", DBGBVR11_EL1}, 30019254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"dbgbvr12_el1", DBGBVR12_EL1}, 30119254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"dbgbvr13_el1", DBGBVR13_EL1}, 30219254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"dbgbvr14_el1", DBGBVR14_EL1}, 30319254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"dbgbvr15_el1", DBGBVR15_EL1}, 30419254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"dbgbcr0_el1", DBGBCR0_EL1}, 30519254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"dbgbcr1_el1", DBGBCR1_EL1}, 30619254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"dbgbcr2_el1", DBGBCR2_EL1}, 30719254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"dbgbcr3_el1", DBGBCR3_EL1}, 30819254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"dbgbcr4_el1", DBGBCR4_EL1}, 30919254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"dbgbcr5_el1", DBGBCR5_EL1}, 31019254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"dbgbcr6_el1", DBGBCR6_EL1}, 31119254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"dbgbcr7_el1", DBGBCR7_EL1}, 31219254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"dbgbcr8_el1", DBGBCR8_EL1}, 31319254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"dbgbcr9_el1", DBGBCR9_EL1}, 31419254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"dbgbcr10_el1", DBGBCR10_EL1}, 31519254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"dbgbcr11_el1", DBGBCR11_EL1}, 31619254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"dbgbcr12_el1", DBGBCR12_EL1}, 31719254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"dbgbcr13_el1", DBGBCR13_EL1}, 31819254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"dbgbcr14_el1", DBGBCR14_EL1}, 31919254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"dbgbcr15_el1", DBGBCR15_EL1}, 32019254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"dbgwvr0_el1", DBGWVR0_EL1}, 32119254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"dbgwvr1_el1", DBGWVR1_EL1}, 32219254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"dbgwvr2_el1", DBGWVR2_EL1}, 32319254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"dbgwvr3_el1", DBGWVR3_EL1}, 32419254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"dbgwvr4_el1", DBGWVR4_EL1}, 32519254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"dbgwvr5_el1", DBGWVR5_EL1}, 32619254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"dbgwvr6_el1", DBGWVR6_EL1}, 32719254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"dbgwvr7_el1", DBGWVR7_EL1}, 32819254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"dbgwvr8_el1", DBGWVR8_EL1}, 32919254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"dbgwvr9_el1", DBGWVR9_EL1}, 33019254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"dbgwvr10_el1", DBGWVR10_EL1}, 33119254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"dbgwvr11_el1", DBGWVR11_EL1}, 33219254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"dbgwvr12_el1", DBGWVR12_EL1}, 33319254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"dbgwvr13_el1", DBGWVR13_EL1}, 33419254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"dbgwvr14_el1", DBGWVR14_EL1}, 33519254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"dbgwvr15_el1", DBGWVR15_EL1}, 33619254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"dbgwcr0_el1", DBGWCR0_EL1}, 33719254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"dbgwcr1_el1", DBGWCR1_EL1}, 33819254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"dbgwcr2_el1", DBGWCR2_EL1}, 33919254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"dbgwcr3_el1", DBGWCR3_EL1}, 34019254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"dbgwcr4_el1", DBGWCR4_EL1}, 34119254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"dbgwcr5_el1", DBGWCR5_EL1}, 34219254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"dbgwcr6_el1", DBGWCR6_EL1}, 34319254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"dbgwcr7_el1", DBGWCR7_EL1}, 34419254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"dbgwcr8_el1", DBGWCR8_EL1}, 34519254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"dbgwcr9_el1", DBGWCR9_EL1}, 34619254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"dbgwcr10_el1", DBGWCR10_EL1}, 34719254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"dbgwcr11_el1", DBGWCR11_EL1}, 34819254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"dbgwcr12_el1", DBGWCR12_EL1}, 34919254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"dbgwcr13_el1", DBGWCR13_EL1}, 35019254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"dbgwcr14_el1", DBGWCR14_EL1}, 35119254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"dbgwcr15_el1", DBGWCR15_EL1}, 35219254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"teehbr32_el1", TEEHBR32_EL1}, 35319254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"osdlr_el1", OSDLR_EL1}, 35419254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"dbgprcr_el1", DBGPRCR_EL1}, 35519254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"dbgclaimset_el1", DBGCLAIMSET_EL1}, 35619254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"dbgclaimclr_el1", DBGCLAIMCLR_EL1}, 35719254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"csselr_el1", CSSELR_EL1}, 35819254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"vpidr_el2", VPIDR_EL2}, 35919254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"vmpidr_el2", VMPIDR_EL2}, 36019254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"sctlr_el1", SCTLR_EL1}, 36119254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"sctlr_el2", SCTLR_EL2}, 36219254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"sctlr_el3", SCTLR_EL3}, 36319254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"actlr_el1", ACTLR_EL1}, 36419254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"actlr_el2", ACTLR_EL2}, 36519254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"actlr_el3", ACTLR_EL3}, 36619254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"cpacr_el1", CPACR_EL1}, 36719254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"hcr_el2", HCR_EL2}, 36819254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"scr_el3", SCR_EL3}, 36919254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"mdcr_el2", MDCR_EL2}, 37019254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"sder32_el3", SDER32_EL3}, 37119254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"cptr_el2", CPTR_EL2}, 37219254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"cptr_el3", CPTR_EL3}, 37319254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"hstr_el2", HSTR_EL2}, 37419254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"hacr_el2", HACR_EL2}, 37519254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"mdcr_el3", MDCR_EL3}, 37619254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"ttbr0_el1", TTBR0_EL1}, 37719254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"ttbr0_el2", TTBR0_EL2}, 37819254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"ttbr0_el3", TTBR0_EL3}, 37919254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"ttbr1_el1", TTBR1_EL1}, 38019254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"tcr_el1", TCR_EL1}, 38119254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"tcr_el2", TCR_EL2}, 38219254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"tcr_el3", TCR_EL3}, 38319254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"vttbr_el2", VTTBR_EL2}, 38419254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"vtcr_el2", VTCR_EL2}, 38519254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"dacr32_el2", DACR32_EL2}, 38619254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"spsr_el1", SPSR_EL1}, 38719254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"spsr_el2", SPSR_EL2}, 38819254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"spsr_el3", SPSR_EL3}, 38919254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"elr_el1", ELR_EL1}, 39019254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"elr_el2", ELR_EL2}, 39119254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"elr_el3", ELR_EL3}, 39219254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"sp_el0", SP_EL0}, 39319254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"sp_el1", SP_EL1}, 39419254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"sp_el2", SP_EL2}, 39519254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"spsel", SPSel}, 39619254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"nzcv", NZCV}, 39719254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"daif", DAIF}, 39819254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"currentel", CurrentEL}, 39919254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"spsr_irq", SPSR_irq}, 40019254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"spsr_abt", SPSR_abt}, 40119254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"spsr_und", SPSR_und}, 40219254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"spsr_fiq", SPSR_fiq}, 40319254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"fpcr", FPCR}, 40419254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"fpsr", FPSR}, 40519254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"dspsr_el0", DSPSR_EL0}, 40619254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"dlr_el0", DLR_EL0}, 40719254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"ifsr32_el2", IFSR32_EL2}, 40819254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"afsr0_el1", AFSR0_EL1}, 40919254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"afsr0_el2", AFSR0_EL2}, 41019254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"afsr0_el3", AFSR0_EL3}, 41119254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"afsr1_el1", AFSR1_EL1}, 41219254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"afsr1_el2", AFSR1_EL2}, 41319254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"afsr1_el3", AFSR1_EL3}, 41419254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"esr_el1", ESR_EL1}, 41519254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"esr_el2", ESR_EL2}, 41619254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"esr_el3", ESR_EL3}, 41719254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"fpexc32_el2", FPEXC32_EL2}, 41819254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"far_el1", FAR_EL1}, 41919254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"far_el2", FAR_EL2}, 42019254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"far_el3", FAR_EL3}, 42119254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"hpfar_el2", HPFAR_EL2}, 42219254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"par_el1", PAR_EL1}, 42319254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"pmcr_el0", PMCR_EL0}, 42419254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"pmcntenset_el0", PMCNTENSET_EL0}, 42519254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"pmcntenclr_el0", PMCNTENCLR_EL0}, 42619254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"pmovsclr_el0", PMOVSCLR_EL0}, 42719254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"pmselr_el0", PMSELR_EL0}, 42819254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"pmccntr_el0", PMCCNTR_EL0}, 42919254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"pmxevtyper_el0", PMXEVTYPER_EL0}, 43019254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"pmxevcntr_el0", PMXEVCNTR_EL0}, 43119254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"pmuserenr_el0", PMUSERENR_EL0}, 43219254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"pmintenset_el1", PMINTENSET_EL1}, 43319254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"pmintenclr_el1", PMINTENCLR_EL1}, 43419254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"pmovsset_el0", PMOVSSET_EL0}, 43519254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"mair_el1", MAIR_EL1}, 43619254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"mair_el2", MAIR_EL2}, 43719254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"mair_el3", MAIR_EL3}, 43819254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"amair_el1", AMAIR_EL1}, 43919254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"amair_el2", AMAIR_EL2}, 44019254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"amair_el3", AMAIR_EL3}, 44119254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"vbar_el1", VBAR_EL1}, 44219254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"vbar_el2", VBAR_EL2}, 44319254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"vbar_el3", VBAR_EL3}, 44419254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"rmr_el1", RMR_EL1}, 44519254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"rmr_el2", RMR_EL2}, 44619254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"rmr_el3", RMR_EL3}, 44719254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"contextidr_el1", CONTEXTIDR_EL1}, 44819254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"tpidr_el0", TPIDR_EL0}, 44919254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"tpidr_el2", TPIDR_EL2}, 45019254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"tpidr_el3", TPIDR_EL3}, 45119254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"tpidrro_el0", TPIDRRO_EL0}, 45219254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"tpidr_el1", TPIDR_EL1}, 45319254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"cntfrq_el0", CNTFRQ_EL0}, 45419254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"cntvoff_el2", CNTVOFF_EL2}, 45519254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"cntkctl_el1", CNTKCTL_EL1}, 45619254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"cnthctl_el2", CNTHCTL_EL2}, 45719254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"cntp_tval_el0", CNTP_TVAL_EL0}, 45819254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"cnthp_tval_el2", CNTHP_TVAL_EL2}, 45919254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"cntps_tval_el1", CNTPS_TVAL_EL1}, 46019254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"cntp_ctl_el0", CNTP_CTL_EL0}, 46119254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"cnthp_ctl_el2", CNTHP_CTL_EL2}, 46219254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"cntps_ctl_el1", CNTPS_CTL_EL1}, 46319254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"cntp_cval_el0", CNTP_CVAL_EL0}, 46419254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"cnthp_cval_el2", CNTHP_CVAL_EL2}, 46519254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"cntps_cval_el1", CNTPS_CVAL_EL1}, 46619254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"cntv_tval_el0", CNTV_TVAL_EL0}, 46719254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"cntv_ctl_el0", CNTV_CTL_EL0}, 46819254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"cntv_cval_el0", CNTV_CVAL_EL0}, 46919254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"pmevcntr0_el0", PMEVCNTR0_EL0}, 47019254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"pmevcntr1_el0", PMEVCNTR1_EL0}, 47119254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"pmevcntr2_el0", PMEVCNTR2_EL0}, 47219254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"pmevcntr3_el0", PMEVCNTR3_EL0}, 47319254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"pmevcntr4_el0", PMEVCNTR4_EL0}, 47419254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"pmevcntr5_el0", PMEVCNTR5_EL0}, 47519254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"pmevcntr6_el0", PMEVCNTR6_EL0}, 47619254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"pmevcntr7_el0", PMEVCNTR7_EL0}, 47719254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"pmevcntr8_el0", PMEVCNTR8_EL0}, 47819254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"pmevcntr9_el0", PMEVCNTR9_EL0}, 47919254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"pmevcntr10_el0", PMEVCNTR10_EL0}, 48019254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"pmevcntr11_el0", PMEVCNTR11_EL0}, 48119254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"pmevcntr12_el0", PMEVCNTR12_EL0}, 48219254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"pmevcntr13_el0", PMEVCNTR13_EL0}, 48319254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"pmevcntr14_el0", PMEVCNTR14_EL0}, 48419254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"pmevcntr15_el0", PMEVCNTR15_EL0}, 48519254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"pmevcntr16_el0", PMEVCNTR16_EL0}, 48619254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"pmevcntr17_el0", PMEVCNTR17_EL0}, 48719254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"pmevcntr18_el0", PMEVCNTR18_EL0}, 48819254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"pmevcntr19_el0", PMEVCNTR19_EL0}, 48919254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"pmevcntr20_el0", PMEVCNTR20_EL0}, 49019254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"pmevcntr21_el0", PMEVCNTR21_EL0}, 49119254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"pmevcntr22_el0", PMEVCNTR22_EL0}, 49219254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"pmevcntr23_el0", PMEVCNTR23_EL0}, 49319254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"pmevcntr24_el0", PMEVCNTR24_EL0}, 49419254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"pmevcntr25_el0", PMEVCNTR25_EL0}, 49519254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"pmevcntr26_el0", PMEVCNTR26_EL0}, 49619254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"pmevcntr27_el0", PMEVCNTR27_EL0}, 49719254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"pmevcntr28_el0", PMEVCNTR28_EL0}, 49819254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"pmevcntr29_el0", PMEVCNTR29_EL0}, 49919254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"pmevcntr30_el0", PMEVCNTR30_EL0}, 50019254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"pmccfiltr_el0", PMCCFILTR_EL0}, 50119254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"pmevtyper0_el0", PMEVTYPER0_EL0}, 50219254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"pmevtyper1_el0", PMEVTYPER1_EL0}, 50319254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"pmevtyper2_el0", PMEVTYPER2_EL0}, 50419254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"pmevtyper3_el0", PMEVTYPER3_EL0}, 50519254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"pmevtyper4_el0", PMEVTYPER4_EL0}, 50619254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"pmevtyper5_el0", PMEVTYPER5_EL0}, 50719254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"pmevtyper6_el0", PMEVTYPER6_EL0}, 50819254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"pmevtyper7_el0", PMEVTYPER7_EL0}, 50919254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"pmevtyper8_el0", PMEVTYPER8_EL0}, 51019254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"pmevtyper9_el0", PMEVTYPER9_EL0}, 51119254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"pmevtyper10_el0", PMEVTYPER10_EL0}, 51219254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"pmevtyper11_el0", PMEVTYPER11_EL0}, 51319254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"pmevtyper12_el0", PMEVTYPER12_EL0}, 51419254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"pmevtyper13_el0", PMEVTYPER13_EL0}, 51519254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"pmevtyper14_el0", PMEVTYPER14_EL0}, 51619254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"pmevtyper15_el0", PMEVTYPER15_EL0}, 51719254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"pmevtyper16_el0", PMEVTYPER16_EL0}, 51819254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"pmevtyper17_el0", PMEVTYPER17_EL0}, 51919254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"pmevtyper18_el0", PMEVTYPER18_EL0}, 52019254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"pmevtyper19_el0", PMEVTYPER19_EL0}, 52119254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"pmevtyper20_el0", PMEVTYPER20_EL0}, 52219254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"pmevtyper21_el0", PMEVTYPER21_EL0}, 52319254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"pmevtyper22_el0", PMEVTYPER22_EL0}, 52419254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"pmevtyper23_el0", PMEVTYPER23_EL0}, 52519254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"pmevtyper24_el0", PMEVTYPER24_EL0}, 52619254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"pmevtyper25_el0", PMEVTYPER25_EL0}, 52719254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"pmevtyper26_el0", PMEVTYPER26_EL0}, 52819254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"pmevtyper27_el0", PMEVTYPER27_EL0}, 52919254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"pmevtyper28_el0", PMEVTYPER28_EL0}, 53019254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"pmevtyper29_el0", PMEVTYPER29_EL0}, 53119254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"pmevtyper30_el0", PMEVTYPER30_EL0}, 53242a1b2f0b196633c0327801e810fc98849a00c47Tim Northover 5334385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover // Trace registers 5344385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcprgctlr", TRCPRGCTLR}, 5354385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcprocselr", TRCPROCSELR}, 5364385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcconfigr", TRCCONFIGR}, 5374385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcauxctlr", TRCAUXCTLR}, 5384385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trceventctl0r", TRCEVENTCTL0R}, 5394385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trceventctl1r", TRCEVENTCTL1R}, 5404385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcstallctlr", TRCSTALLCTLR}, 5414385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trctsctlr", TRCTSCTLR}, 5424385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcsyncpr", TRCSYNCPR}, 5434385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcccctlr", TRCCCCTLR}, 5444385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcbbctlr", TRCBBCTLR}, 5454385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trctraceidr", TRCTRACEIDR}, 5464385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcqctlr", TRCQCTLR}, 5474385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcvictlr", TRCVICTLR}, 5484385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcviiectlr", TRCVIIECTLR}, 5494385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcvissctlr", TRCVISSCTLR}, 5504385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcvipcssctlr", TRCVIPCSSCTLR}, 5514385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcvdctlr", TRCVDCTLR}, 5524385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcvdsacctlr", TRCVDSACCTLR}, 5534385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcvdarcctlr", TRCVDARCCTLR}, 5544385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcseqevr0", TRCSEQEVR0}, 5554385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcseqevr1", TRCSEQEVR1}, 5564385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcseqevr2", TRCSEQEVR2}, 5574385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcseqrstevr", TRCSEQRSTEVR}, 5584385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcseqstr", TRCSEQSTR}, 5594385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcextinselr", TRCEXTINSELR}, 5604385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trccntrldvr0", TRCCNTRLDVR0}, 5614385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trccntrldvr1", TRCCNTRLDVR1}, 5624385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trccntrldvr2", TRCCNTRLDVR2}, 5634385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trccntrldvr3", TRCCNTRLDVR3}, 5644385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trccntctlr0", TRCCNTCTLR0}, 5654385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trccntctlr1", TRCCNTCTLR1}, 5664385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trccntctlr2", TRCCNTCTLR2}, 5674385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trccntctlr3", TRCCNTCTLR3}, 5684385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trccntvr0", TRCCNTVR0}, 5694385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trccntvr1", TRCCNTVR1}, 5704385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trccntvr2", TRCCNTVR2}, 5714385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trccntvr3", TRCCNTVR3}, 5724385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcimspec0", TRCIMSPEC0}, 5734385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcimspec1", TRCIMSPEC1}, 5744385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcimspec2", TRCIMSPEC2}, 5754385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcimspec3", TRCIMSPEC3}, 5764385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcimspec4", TRCIMSPEC4}, 5774385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcimspec5", TRCIMSPEC5}, 5784385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcimspec6", TRCIMSPEC6}, 5794385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcimspec7", TRCIMSPEC7}, 5804385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcrsctlr2", TRCRSCTLR2}, 5814385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcrsctlr3", TRCRSCTLR3}, 5824385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcrsctlr4", TRCRSCTLR4}, 5834385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcrsctlr5", TRCRSCTLR5}, 5844385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcrsctlr6", TRCRSCTLR6}, 5854385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcrsctlr7", TRCRSCTLR7}, 5864385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcrsctlr8", TRCRSCTLR8}, 5874385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcrsctlr9", TRCRSCTLR9}, 5884385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcrsctlr10", TRCRSCTLR10}, 5894385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcrsctlr11", TRCRSCTLR11}, 5904385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcrsctlr12", TRCRSCTLR12}, 5914385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcrsctlr13", TRCRSCTLR13}, 5924385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcrsctlr14", TRCRSCTLR14}, 5934385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcrsctlr15", TRCRSCTLR15}, 5944385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcrsctlr16", TRCRSCTLR16}, 5954385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcrsctlr17", TRCRSCTLR17}, 5964385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcrsctlr18", TRCRSCTLR18}, 5974385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcrsctlr19", TRCRSCTLR19}, 5984385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcrsctlr20", TRCRSCTLR20}, 5994385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcrsctlr21", TRCRSCTLR21}, 6004385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcrsctlr22", TRCRSCTLR22}, 6014385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcrsctlr23", TRCRSCTLR23}, 6024385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcrsctlr24", TRCRSCTLR24}, 6034385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcrsctlr25", TRCRSCTLR25}, 6044385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcrsctlr26", TRCRSCTLR26}, 6054385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcrsctlr27", TRCRSCTLR27}, 6064385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcrsctlr28", TRCRSCTLR28}, 6074385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcrsctlr29", TRCRSCTLR29}, 6084385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcrsctlr30", TRCRSCTLR30}, 6094385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcrsctlr31", TRCRSCTLR31}, 6104385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcssccr0", TRCSSCCR0}, 6114385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcssccr1", TRCSSCCR1}, 6124385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcssccr2", TRCSSCCR2}, 6134385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcssccr3", TRCSSCCR3}, 6144385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcssccr4", TRCSSCCR4}, 6154385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcssccr5", TRCSSCCR5}, 6164385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcssccr6", TRCSSCCR6}, 6174385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcssccr7", TRCSSCCR7}, 6184385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcsscsr0", TRCSSCSR0}, 6194385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcsscsr1", TRCSSCSR1}, 6204385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcsscsr2", TRCSSCSR2}, 6214385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcsscsr3", TRCSSCSR3}, 6224385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcsscsr4", TRCSSCSR4}, 6234385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcsscsr5", TRCSSCSR5}, 6244385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcsscsr6", TRCSSCSR6}, 6254385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcsscsr7", TRCSSCSR7}, 6264385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcsspcicr0", TRCSSPCICR0}, 6274385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcsspcicr1", TRCSSPCICR1}, 6284385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcsspcicr2", TRCSSPCICR2}, 6294385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcsspcicr3", TRCSSPCICR3}, 6304385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcsspcicr4", TRCSSPCICR4}, 6314385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcsspcicr5", TRCSSPCICR5}, 6324385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcsspcicr6", TRCSSPCICR6}, 6334385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcsspcicr7", TRCSSPCICR7}, 6344385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcpdcr", TRCPDCR}, 6354385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcacvr0", TRCACVR0}, 6364385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcacvr1", TRCACVR1}, 6374385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcacvr2", TRCACVR2}, 6384385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcacvr3", TRCACVR3}, 6394385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcacvr4", TRCACVR4}, 6404385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcacvr5", TRCACVR5}, 6414385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcacvr6", TRCACVR6}, 6424385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcacvr7", TRCACVR7}, 6434385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcacvr8", TRCACVR8}, 6444385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcacvr9", TRCACVR9}, 6454385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcacvr10", TRCACVR10}, 6464385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcacvr11", TRCACVR11}, 6474385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcacvr12", TRCACVR12}, 6484385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcacvr13", TRCACVR13}, 6494385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcacvr14", TRCACVR14}, 6504385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcacvr15", TRCACVR15}, 6514385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcacatr0", TRCACATR0}, 6524385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcacatr1", TRCACATR1}, 6534385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcacatr2", TRCACATR2}, 6544385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcacatr3", TRCACATR3}, 6554385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcacatr4", TRCACATR4}, 6564385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcacatr5", TRCACATR5}, 6574385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcacatr6", TRCACATR6}, 6584385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcacatr7", TRCACATR7}, 6594385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcacatr8", TRCACATR8}, 6604385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcacatr9", TRCACATR9}, 6614385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcacatr10", TRCACATR10}, 6624385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcacatr11", TRCACATR11}, 6634385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcacatr12", TRCACATR12}, 6644385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcacatr13", TRCACATR13}, 6654385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcacatr14", TRCACATR14}, 6664385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcacatr15", TRCACATR15}, 6674385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcdvcvr0", TRCDVCVR0}, 6684385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcdvcvr1", TRCDVCVR1}, 6694385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcdvcvr2", TRCDVCVR2}, 6704385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcdvcvr3", TRCDVCVR3}, 6714385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcdvcvr4", TRCDVCVR4}, 6724385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcdvcvr5", TRCDVCVR5}, 6734385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcdvcvr6", TRCDVCVR6}, 6744385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcdvcvr7", TRCDVCVR7}, 6754385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcdvcmr0", TRCDVCMR0}, 6764385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcdvcmr1", TRCDVCMR1}, 6774385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcdvcmr2", TRCDVCMR2}, 6784385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcdvcmr3", TRCDVCMR3}, 6794385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcdvcmr4", TRCDVCMR4}, 6804385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcdvcmr5", TRCDVCMR5}, 6814385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcdvcmr6", TRCDVCMR6}, 6824385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcdvcmr7", TRCDVCMR7}, 6834385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trccidcvr0", TRCCIDCVR0}, 6844385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trccidcvr1", TRCCIDCVR1}, 6854385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trccidcvr2", TRCCIDCVR2}, 6864385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trccidcvr3", TRCCIDCVR3}, 6874385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trccidcvr4", TRCCIDCVR4}, 6884385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trccidcvr5", TRCCIDCVR5}, 6894385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trccidcvr6", TRCCIDCVR6}, 6904385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trccidcvr7", TRCCIDCVR7}, 6914385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcvmidcvr0", TRCVMIDCVR0}, 6924385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcvmidcvr1", TRCVMIDCVR1}, 6934385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcvmidcvr2", TRCVMIDCVR2}, 6944385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcvmidcvr3", TRCVMIDCVR3}, 6954385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcvmidcvr4", TRCVMIDCVR4}, 6964385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcvmidcvr5", TRCVMIDCVR5}, 6974385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcvmidcvr6", TRCVMIDCVR6}, 6984385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcvmidcvr7", TRCVMIDCVR7}, 6994385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trccidcctlr0", TRCCIDCCTLR0}, 7004385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trccidcctlr1", TRCCIDCCTLR1}, 7014385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcvmidcctlr0", TRCVMIDCCTLR0}, 7024385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcvmidcctlr1", TRCVMIDCCTLR1}, 7034385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcitctrl", TRCITCTRL}, 7044385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcclaimset", TRCCLAIMSET}, 7054385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover {"trcclaimclr", TRCCLAIMCLR}, 7064385f5dfced4e14bc59dfedb1f75116c0aabbc36Tim Northover 70742a1b2f0b196633c0327801e810fc98849a00c47Tim Northover // GICv3 registers 70842a1b2f0b196633c0327801e810fc98849a00c47Tim Northover {"icc_bpr1_el1", ICC_BPR1_EL1}, 70942a1b2f0b196633c0327801e810fc98849a00c47Tim Northover {"icc_bpr0_el1", ICC_BPR0_EL1}, 71042a1b2f0b196633c0327801e810fc98849a00c47Tim Northover {"icc_pmr_el1", ICC_PMR_EL1}, 71142a1b2f0b196633c0327801e810fc98849a00c47Tim Northover {"icc_ctlr_el1", ICC_CTLR_EL1}, 71242a1b2f0b196633c0327801e810fc98849a00c47Tim Northover {"icc_ctlr_el3", ICC_CTLR_EL3}, 71342a1b2f0b196633c0327801e810fc98849a00c47Tim Northover {"icc_sre_el1", ICC_SRE_EL1}, 71442a1b2f0b196633c0327801e810fc98849a00c47Tim Northover {"icc_sre_el2", ICC_SRE_EL2}, 71542a1b2f0b196633c0327801e810fc98849a00c47Tim Northover {"icc_sre_el3", ICC_SRE_EL3}, 71642a1b2f0b196633c0327801e810fc98849a00c47Tim Northover {"icc_igrpen0_el1", ICC_IGRPEN0_EL1}, 71742a1b2f0b196633c0327801e810fc98849a00c47Tim Northover {"icc_igrpen1_el1", ICC_IGRPEN1_EL1}, 71842a1b2f0b196633c0327801e810fc98849a00c47Tim Northover {"icc_igrpen1_el3", ICC_IGRPEN1_EL3}, 71942a1b2f0b196633c0327801e810fc98849a00c47Tim Northover {"icc_seien_el1", ICC_SEIEN_EL1}, 72042a1b2f0b196633c0327801e810fc98849a00c47Tim Northover {"icc_ap0r0_el1", ICC_AP0R0_EL1}, 72142a1b2f0b196633c0327801e810fc98849a00c47Tim Northover {"icc_ap0r1_el1", ICC_AP0R1_EL1}, 72242a1b2f0b196633c0327801e810fc98849a00c47Tim Northover {"icc_ap0r2_el1", ICC_AP0R2_EL1}, 72342a1b2f0b196633c0327801e810fc98849a00c47Tim Northover {"icc_ap0r3_el1", ICC_AP0R3_EL1}, 72442a1b2f0b196633c0327801e810fc98849a00c47Tim Northover {"icc_ap1r0_el1", ICC_AP1R0_EL1}, 72542a1b2f0b196633c0327801e810fc98849a00c47Tim Northover {"icc_ap1r1_el1", ICC_AP1R1_EL1}, 72642a1b2f0b196633c0327801e810fc98849a00c47Tim Northover {"icc_ap1r2_el1", ICC_AP1R2_EL1}, 72742a1b2f0b196633c0327801e810fc98849a00c47Tim Northover {"icc_ap1r3_el1", ICC_AP1R3_EL1}, 72842a1b2f0b196633c0327801e810fc98849a00c47Tim Northover {"ich_ap0r0_el2", ICH_AP0R0_EL2}, 72942a1b2f0b196633c0327801e810fc98849a00c47Tim Northover {"ich_ap0r1_el2", ICH_AP0R1_EL2}, 73042a1b2f0b196633c0327801e810fc98849a00c47Tim Northover {"ich_ap0r2_el2", ICH_AP0R2_EL2}, 73142a1b2f0b196633c0327801e810fc98849a00c47Tim Northover {"ich_ap0r3_el2", ICH_AP0R3_EL2}, 73242a1b2f0b196633c0327801e810fc98849a00c47Tim Northover {"ich_ap1r0_el2", ICH_AP1R0_EL2}, 73342a1b2f0b196633c0327801e810fc98849a00c47Tim Northover {"ich_ap1r1_el2", ICH_AP1R1_EL2}, 73442a1b2f0b196633c0327801e810fc98849a00c47Tim Northover {"ich_ap1r2_el2", ICH_AP1R2_EL2}, 73542a1b2f0b196633c0327801e810fc98849a00c47Tim Northover {"ich_ap1r3_el2", ICH_AP1R3_EL2}, 73642a1b2f0b196633c0327801e810fc98849a00c47Tim Northover {"ich_hcr_el2", ICH_HCR_EL2}, 73742a1b2f0b196633c0327801e810fc98849a00c47Tim Northover {"ich_misr_el2", ICH_MISR_EL2}, 73842a1b2f0b196633c0327801e810fc98849a00c47Tim Northover {"ich_vmcr_el2", ICH_VMCR_EL2}, 73942a1b2f0b196633c0327801e810fc98849a00c47Tim Northover {"ich_vseir_el2", ICH_VSEIR_EL2}, 74042a1b2f0b196633c0327801e810fc98849a00c47Tim Northover {"ich_lr0_el2", ICH_LR0_EL2}, 74142a1b2f0b196633c0327801e810fc98849a00c47Tim Northover {"ich_lr1_el2", ICH_LR1_EL2}, 74242a1b2f0b196633c0327801e810fc98849a00c47Tim Northover {"ich_lr2_el2", ICH_LR2_EL2}, 74342a1b2f0b196633c0327801e810fc98849a00c47Tim Northover {"ich_lr3_el2", ICH_LR3_EL2}, 74442a1b2f0b196633c0327801e810fc98849a00c47Tim Northover {"ich_lr4_el2", ICH_LR4_EL2}, 74542a1b2f0b196633c0327801e810fc98849a00c47Tim Northover {"ich_lr5_el2", ICH_LR5_EL2}, 74642a1b2f0b196633c0327801e810fc98849a00c47Tim Northover {"ich_lr6_el2", ICH_LR6_EL2}, 74742a1b2f0b196633c0327801e810fc98849a00c47Tim Northover {"ich_lr7_el2", ICH_LR7_EL2}, 74842a1b2f0b196633c0327801e810fc98849a00c47Tim Northover {"ich_lr8_el2", ICH_LR8_EL2}, 74942a1b2f0b196633c0327801e810fc98849a00c47Tim Northover {"ich_lr9_el2", ICH_LR9_EL2}, 75042a1b2f0b196633c0327801e810fc98849a00c47Tim Northover {"ich_lr10_el2", ICH_LR10_EL2}, 75142a1b2f0b196633c0327801e810fc98849a00c47Tim Northover {"ich_lr11_el2", ICH_LR11_EL2}, 75242a1b2f0b196633c0327801e810fc98849a00c47Tim Northover {"ich_lr12_el2", ICH_LR12_EL2}, 75342a1b2f0b196633c0327801e810fc98849a00c47Tim Northover {"ich_lr13_el2", ICH_LR13_EL2}, 75442a1b2f0b196633c0327801e810fc98849a00c47Tim Northover {"ich_lr14_el2", ICH_LR14_EL2}, 75542a1b2f0b196633c0327801e810fc98849a00c47Tim Northover {"ich_lr15_el2", ICH_LR15_EL2} 75619254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover}; 75719254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover 758dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hinesconst AArch64NamedImmMapper::Mapping 759dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen HinesAArch64SysReg::SysRegMapper::CycloneSysRegPairs[] = { 760dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines {"cpm_ioacc_ctl_el3", CPM_IOACC_CTL_EL3} 761dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines}; 762dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines 76319254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northoveruint32_t 764dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen HinesAArch64SysReg::SysRegMapper::fromString(StringRef Name, bool &Valid) const { 76519254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover std::string NameLower = Name.lower(); 766dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines 767dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines // First search the registers shared by all 76819254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover for (unsigned i = 0; i < array_lengthof(SysRegPairs); ++i) { 76919254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover if (SysRegPairs[i].Name == NameLower) { 77019254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover Valid = true; 77119254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover return SysRegPairs[i].Value; 77219254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover } 77319254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover } 77419254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover 775dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines // Next search for target specific registers 776dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines if (FeatureBits & AArch64::ProcCyclone) { 777dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines for (unsigned i = 0; i < array_lengthof(CycloneSysRegPairs); ++i) { 778dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines if (CycloneSysRegPairs[i].Name == NameLower) { 779dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines Valid = true; 780dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines return CycloneSysRegPairs[i].Value; 781dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines } 782dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines } 783dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines } 784dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines 78519254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover // Now try the instruction-specific registers (either read-only or 78619254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover // write-only). 78719254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover for (unsigned i = 0; i < NumInstPairs; ++i) { 78819254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover if (InstPairs[i].Name == NameLower) { 78919254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover Valid = true; 79019254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover return InstPairs[i].Value; 79119254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover } 79219254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover } 79319254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover 79419254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover // Try to parse an S<op0>_<op1>_<Cn>_<Cm>_<op2> register name, where the bits 79519254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover // are: 11 xxx 1x11 xxxx xxx 79619254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover Regex GenericRegPattern("^s3_([0-7])_c(1[15])_c([0-9]|1[0-5])_([0-7])$"); 79719254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover 79819254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover SmallVector<StringRef, 4> Ops; 79919254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover if (!GenericRegPattern.match(NameLower, &Ops)) { 80019254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover Valid = false; 80119254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover return -1; 80219254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover } 80319254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover 80419254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover uint32_t Op0 = 3, Op1 = 0, CRn = 0, CRm = 0, Op2 = 0; 80519254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover uint32_t Bits; 80619254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover Ops[1].getAsInteger(10, Op1); 80719254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover Ops[2].getAsInteger(10, CRn); 80819254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover Ops[3].getAsInteger(10, CRm); 80919254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover Ops[4].getAsInteger(10, Op2); 81019254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover Bits = (Op0 << 14) | (Op1 << 11) | (CRn << 7) | (CRm << 3) | Op2; 81119254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover 81219254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover Valid = true; 81319254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover return Bits; 81419254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover} 81519254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover 81619254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northoverstd::string 817dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen HinesAArch64SysReg::SysRegMapper::toString(uint32_t Bits, bool &Valid) const { 818dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines // First search the registers shared by all 81919254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover for (unsigned i = 0; i < array_lengthof(SysRegPairs); ++i) { 82019254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover if (SysRegPairs[i].Value == Bits) { 82119254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover Valid = true; 82219254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover return SysRegPairs[i].Name; 82319254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover } 82419254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover } 82519254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover 826dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines // Next search for target specific registers 827dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines if (FeatureBits & AArch64::ProcCyclone) { 828dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines for (unsigned i = 0; i < array_lengthof(CycloneSysRegPairs); ++i) { 829dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines if (CycloneSysRegPairs[i].Value == Bits) { 830dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines Valid = true; 831dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines return CycloneSysRegPairs[i].Name; 832dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines } 833dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines } 834dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines } 835dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines 836dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines // Now try the instruction-specific registers (either read-only or 837dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines // write-only). 83819254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover for (unsigned i = 0; i < NumInstPairs; ++i) { 83919254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover if (InstPairs[i].Value == Bits) { 84019254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover Valid = true; 84119254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover return InstPairs[i].Name; 84219254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover } 84319254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover } 84419254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover 84519254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover uint32_t Op0 = (Bits >> 14) & 0x3; 84619254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover uint32_t Op1 = (Bits >> 11) & 0x7; 84719254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover uint32_t CRn = (Bits >> 7) & 0xf; 84819254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover uint32_t CRm = (Bits >> 3) & 0xf; 84919254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover uint32_t Op2 = Bits & 0x7; 85019254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover 85119254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover // Only combinations matching: 11 xxx 1x11 xxxx xxx are valid for a generic 85219254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover // name. 85319254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover if (Op0 != 3 || (CRn != 11 && CRn != 15)) { 85419254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover Valid = false; 85519254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover return ""; 85619254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover } 85719254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover 85819254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover assert(Op0 == 3 && (CRn == 11 || CRn == 15) && "Invalid generic sysreg"); 85919254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover 86019254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover Valid = true; 86119254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover return "s3_" + utostr(Op1) + "_c" + utostr(CRn) 86219254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover + "_c" + utostr(CRm) + "_" + utostr(Op2); 86319254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover} 86419254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover 865dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hinesconst AArch64NamedImmMapper::Mapping AArch64TLBI::TLBIMapper::TLBIPairs[] = { 86619254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"ipas2e1is", IPAS2E1IS}, 86719254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"ipas2le1is", IPAS2LE1IS}, 86819254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"vmalle1is", VMALLE1IS}, 86919254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"alle2is", ALLE2IS}, 87019254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"alle3is", ALLE3IS}, 87119254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"vae1is", VAE1IS}, 87219254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"vae2is", VAE2IS}, 87319254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"vae3is", VAE3IS}, 87419254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"aside1is", ASIDE1IS}, 87519254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"vaae1is", VAAE1IS}, 87619254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"alle1is", ALLE1IS}, 87719254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"vale1is", VALE1IS}, 87819254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"vale2is", VALE2IS}, 87919254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"vale3is", VALE3IS}, 88019254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"vmalls12e1is", VMALLS12E1IS}, 88119254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"vaale1is", VAALE1IS}, 88219254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"ipas2e1", IPAS2E1}, 88319254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"ipas2le1", IPAS2LE1}, 88419254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"vmalle1", VMALLE1}, 88519254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"alle2", ALLE2}, 88619254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"alle3", ALLE3}, 88719254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"vae1", VAE1}, 88819254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"vae2", VAE2}, 88919254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"vae3", VAE3}, 89019254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"aside1", ASIDE1}, 89119254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"vaae1", VAAE1}, 89219254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"alle1", ALLE1}, 89319254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"vale1", VALE1}, 89419254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"vale2", VALE2}, 89519254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"vale3", VALE3}, 89619254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"vmalls12e1", VMALLS12E1}, 89719254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover {"vaale1", VAALE1} 89819254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover}; 89919254c49a8752fe8c6fa648a6eb29f20a1f62c8bTim Northover 900dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen HinesAArch64TLBI::TLBIMapper::TLBIMapper() 901dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines : AArch64NamedImmMapper(TLBIPairs, 0) {} 902