From: diaxu01 Date: Wed, 21 Aug 2019 09:31:35 +0000 (+0000) Subject: cmd/internal/obj/arm64: add error checking for system registers. X-Git-Tag: go1.14beta1~823 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=9ce5cad0aaf5eceda6927acec2db96ba5fd7ef07;p=gostls13.git cmd/internal/obj/arm64: add error checking for system registers. This CL adds system register error checking test cases. There're two kinds of error test cases: 1. illegal combination. MRS should be used in this way: MRS , . MSR should be used in this way: MSR , . Error usage examples: MRS R8, VTCR_EL2 // ERROR "illegal combination" MSR VTCR_EL2, R8 // ERROR "illegal combination" 2. illegal read or write access. Error usage examples: MSR R7, MIDR_EL1 // ERROR "expected writable system register or pstate" MRS OSLAR_EL1, R3 // ERROR "expected readable system register" This CL reads system registers readable and writeable property to check whether they're used with legal read or write access. This property is named AccessFlags in sysRegEnc.go, and it is automatically generated by modifing the system register generator. Change-Id: Ic83d5f372de38d1ecd0df1ca56b354ee157f16b4 Reviewed-on: https://go-review.googlesource.com/c/go/+/194917 Reviewed-by: Cherry Zhang Run-TryBot: Cherry Zhang TryBot-Result: Gobot Gobot --- diff --git a/src/cmd/asm/internal/asm/testdata/arm64.s b/src/cmd/asm/internal/asm/testdata/arm64.s index 93f70045b7..4af47fc626 100644 --- a/src/cmd/asm/internal/asm/testdata/arm64.s +++ b/src/cmd/asm/internal/asm/testdata/arm64.s @@ -1221,7 +1221,7 @@ again: MRS DBGCLAIMSET_EL1, R7 // c77830d5 MSR R13, DBGCLAIMSET_EL1 // cd7810d5 MRS DBGDTRRX_EL0, R0 // 000533d5 - MSR R29, DBGDTRRX_EL0 // 1d0513d5 + MSR R29, DBGDTRTX_EL0 // 1d0513d5 MRS DBGDTR_EL0, R27 // 1b0433d5 MSR R30, DBGDTR_EL0 // 1e0413d5 MRS DBGPRCR_EL1, R4 // 841430d5 diff --git a/src/cmd/asm/internal/asm/testdata/arm64error.s b/src/cmd/asm/internal/asm/testdata/arm64error.s index 387836dcbe..7dfca1a1fe 100644 --- a/src/cmd/asm/internal/asm/testdata/arm64error.s +++ b/src/cmd/asm/internal/asm/testdata/arm64error.s @@ -232,4 +232,108 @@ TEXT errors(SB),$0 STXPW (R5, R7), (R6), RSP // ERROR "illegal destination register" STLXP (R5, R7), (R6), RSP // ERROR "illegal destination register" STLXP (R5, R7), (R6), RSP // ERROR "illegal destination register" + MSR OSLAR_EL1, R5 // ERROR "illegal combination" + MRS R11, AIDR_EL1 // ERROR "illegal combination" + MSR R6, AIDR_EL1 // ERROR "system register is not writable" + MSR R6, AMCFGR_EL0 // ERROR "system register is not writable" + MSR R6, AMCGCR_EL0 // ERROR "system register is not writable" + MSR R6, AMEVTYPER00_EL0 // ERROR "system register is not writable" + MSR R6, AMEVTYPER01_EL0 // ERROR "system register is not writable" + MSR R6, AMEVTYPER02_EL0 // ERROR "system register is not writable" + MSR R6, AMEVTYPER03_EL0 // ERROR "system register is not writable" + MSR R6, AMEVTYPER04_EL0 // ERROR "system register is not writable" + MSR R6, AMEVTYPER05_EL0 // ERROR "system register is not writable" + MSR R6, AMEVTYPER06_EL0 // ERROR "system register is not writable" + MSR R6, AMEVTYPER07_EL0 // ERROR "system register is not writable" + MSR R6, AMEVTYPER08_EL0 // ERROR "system register is not writable" + MSR R6, AMEVTYPER09_EL0 // ERROR "system register is not writable" + MSR R6, AMEVTYPER010_EL0 // ERROR "system register is not writable" + MSR R6, AMEVTYPER011_EL0 // ERROR "system register is not writable" + MSR R6, AMEVTYPER012_EL0 // ERROR "system register is not writable" + MSR R6, AMEVTYPER013_EL0 // ERROR "system register is not writable" + MSR R6, AMEVTYPER014_EL0 // ERROR "system register is not writable" + MSR R6, AMEVTYPER015_EL0 // ERROR "system register is not writable" + MSR R6, CCSIDR2_EL1 // ERROR "system register is not writable" + MSR R6, CCSIDR_EL1 // ERROR "system register is not writable" + MSR R6, CLIDR_EL1 // ERROR "system register is not writable" + MSR R6, CNTPCT_EL0 // ERROR "system register is not writable" + MSR R6, CNTVCT_EL0 // ERROR "system register is not writable" + MSR R6, CTR_EL0 // ERROR "system register is not writable" + MSR R6, CurrentEL // ERROR "system register is not writable" + MSR R6, DBGAUTHSTATUS_EL1 // ERROR "system register is not writable" + MSR R6, DBGDTRRX_EL0 // ERROR "system register is not writable" + MSR R6, DCZID_EL0 // ERROR "system register is not writable" + MSR R6, ERRIDR_EL1 // ERROR "system register is not writable" + MSR R6, ERXFR_EL1 // ERROR "system register is not writable" + MSR R6, ERXPFGF_EL1 // ERROR "system register is not writable" + MSR R6, GMID_EL1 // ERROR "system register is not writable" + MSR R6, ICC_HPPIR0_EL1 // ERROR "system register is not writable" + MSR R6, ICC_HPPIR1_EL1 // ERROR "system register is not writable" + MSR R6, ICC_IAR0_EL1 // ERROR "system register is not writable" + MSR R6, ICC_IAR1_EL1 // ERROR "system register is not writable" + MSR R6, ICC_RPR_EL1 // ERROR "system register is not writable" + MSR R6, ICV_HPPIR0_EL1 // ERROR "system register is not writable" + MSR R6, ICV_HPPIR1_EL1 // ERROR "system register is not writable" + MSR R6, ICV_IAR0_EL1 // ERROR "system register is not writable" + MSR R6, ICV_IAR1_EL1 // ERROR "system register is not writable" + MSR R6, ICV_RPR_EL1 // ERROR "system register is not writable" + MSR R6, ID_AA64AFR0_EL1 // ERROR "system register is not writable" + MSR R6, ID_AA64AFR1_EL1 // ERROR "system register is not writable" + MSR R6, ID_AA64DFR0_EL1 // ERROR "system register is not writable" + MSR R6, ID_AA64DFR1_EL1 // ERROR "system register is not writable" + MSR R6, ID_AA64ISAR0_EL1 // ERROR "system register is not writable" + MSR R6, ID_AA64ISAR1_EL1 // ERROR "system register is not writable" + MSR R6, ID_AA64MMFR0_EL1 // ERROR "system register is not writable" + MSR R6, ID_AA64MMFR1_EL1 // ERROR "system register is not writable" + MSR R6, ID_AA64MMFR2_EL1 // ERROR "system register is not writable" + MSR R6, ID_AA64PFR0_EL1 // ERROR "system register is not writable" + MSR R6, ID_AA64PFR1_EL1 // ERROR "system register is not writable" + MSR R6, ID_AA64ZFR0_EL1 // ERROR "system register is not writable" + MSR R6, ID_AFR0_EL1 // ERROR "system register is not writable" + MSR R6, ID_DFR0_EL1 // ERROR "system register is not writable" + MSR R6, ID_ISAR0_EL1 // ERROR "system register is not writable" + MSR R6, ID_ISAR1_EL1 // ERROR "system register is not writable" + MSR R6, ID_ISAR2_EL1 // ERROR "system register is not writable" + MSR R6, ID_ISAR3_EL1 // ERROR "system register is not writable" + MSR R6, ID_ISAR4_EL1 // ERROR "system register is not writable" + MSR R6, ID_ISAR5_EL1 // ERROR "system register is not writable" + MSR R6, ID_ISAR6_EL1 // ERROR "system register is not writable" + MSR R6, ID_MMFR0_EL1 // ERROR "system register is not writable" + MSR R6, ID_MMFR1_EL1 // ERROR "system register is not writable" + MSR R6, ID_MMFR2_EL1 // ERROR "system register is not writable" + MSR R6, ID_MMFR3_EL1 // ERROR "system register is not writable" + MSR R6, ID_MMFR4_EL1 // ERROR "system register is not writable" + MSR R6, ID_PFR0_EL1 // ERROR "system register is not writable" + MSR R6, ID_PFR1_EL1 // ERROR "system register is not writable" + MSR R6, ID_PFR2_EL1 // ERROR "system register is not writable" + MSR R6, ISR_EL1 // ERROR "system register is not writable" + MSR R6, LORID_EL1 // ERROR "system register is not writable" + MSR R6, MDCCSR_EL0 // ERROR "system register is not writable" + MSR R6, MDRAR_EL1 // ERROR "system register is not writable" + MSR R6, MIDR_EL1 // ERROR "system register is not writable" + MSR R6, MPAMIDR_EL1 // ERROR "system register is not writable" + MSR R6, MPIDR_EL1 // ERROR "system register is not writable" + MSR R6, MVFR0_EL1 // ERROR "system register is not writable" + MSR R6, MVFR1_EL1 // ERROR "system register is not writable" + MSR R6, MVFR2_EL1 // ERROR "system register is not writable" + MSR R6, OSLSR_EL1 // ERROR "system register is not writable" + MSR R6, PMBIDR_EL1 // ERROR "system register is not writable" + MSR R6, PMCEID0_EL0 // ERROR "system register is not writable" + MSR R6, PMCEID1_EL0 // ERROR "system register is not writable" + MSR R6, PMMIR_EL1 // ERROR "system register is not writable" + MSR R6, PMSIDR_EL1 // ERROR "system register is not writable" + MSR R6, REVIDR_EL1 // ERROR "system register is not writable" + MSR R6, RNDR // ERROR "system register is not writable" + MRS DBGDTRTX_EL0, R5 // ERROR "system register is not readable" + MRS ICV_DIR_EL1, R5 // ERROR "system register is not readable" + MRS ICC_SGI1R_EL1, R5 // ERROR "system register is not readable" + MRS ICC_SGI0R_EL1, R5 // ERROR "system register is not readable" + MRS ICC_EOIR1_EL1, R5 // ERROR "system register is not readable" + MRS ICC_EOIR0_EL1, R5 // ERROR "system register is not readable" + MRS ICC_DIR_EL1, R5 // ERROR "system register is not readable" + MRS ICC_ASGI1R_EL1, R5 // ERROR "system register is not readable" + MRS ICV_EOIR0_EL1, R3 // ERROR "system register is not readable" + MRS ICV_EOIR1_EL1, R3 // ERROR "system register is not readable" + MRS PMSWINC_EL0, R3 // ERROR "system register is not readable" + MRS OSLAR_EL1, R3 // ERROR "system register is not readable" RET diff --git a/src/cmd/internal/obj/arm64/a.out.go b/src/cmd/internal/obj/arm64/a.out.go index 4e5eb75a22..bd9e9542b8 100644 --- a/src/cmd/internal/obj/arm64/a.out.go +++ b/src/cmd/internal/obj/arm64/a.out.go @@ -195,11 +195,11 @@ const ( // Special registers, after subtracting obj.RBaseARM64, bit 12 indicates // a special register and the low bits select the register. -// AUTO_SYSREG_END is the last item in the automatically generated system register +// SYSREG_END is the last item in the automatically generated system register // declaration, and it is defined in the sysRegEnc.go file. const ( REG_SPECIAL = obj.RBaseARM64 + 1<<12 - REG_DAIFSet = AUTO_SYSREG_END + iota + REG_DAIFSet = SYSREG_END + iota REG_DAIFClr REG_PLDL1KEEP REG_PLDL1STRM diff --git a/src/cmd/internal/obj/arm64/asm7.go b/src/cmd/internal/obj/arm64/asm7.go index c7fa943e7e..7c3e1d18a5 100644 --- a/src/cmd/internal/obj/arm64/asm7.go +++ b/src/cmd/internal/obj/arm64/asm7.go @@ -3543,15 +3543,17 @@ func (c *ctxt7) asmout(p *obj.Prog, o *Optab, out []uint32) { case 35: /* mov SPR,R -> mrs */ o1 = c.oprrr(p, AMRS) - v := uint32(0) - // SysRegEnc function returns the system register encoding. - _, v = SysRegEnc(p.From.Reg) + // SysRegEnc function returns the system register encoding and accessFlags. + _, v, accessFlags := SysRegEnc(p.From.Reg) if v == 0 { c.ctxt.Diag("illegal system register:\n%v", p) } if (o1 & (v &^ (3 << 19))) != 0 { c.ctxt.Diag("MRS register value overlap\n%v", p) } + if accessFlags&SR_READ == 0 { + c.ctxt.Diag("system register is not readable: %v", p) + } o1 |= v o1 |= uint32(p.To.Reg & 31) @@ -3559,15 +3561,17 @@ func (c *ctxt7) asmout(p *obj.Prog, o *Optab, out []uint32) { case 36: /* mov R,SPR */ o1 = c.oprrr(p, AMSR) - v := uint32(0) - // SysRegEnc function returns the system register encoding. - _, v = SysRegEnc(p.To.Reg) + // SysRegEnc function returns the system register encoding and accessFlags. + _, v, accessFlags := SysRegEnc(p.To.Reg) if v == 0 { c.ctxt.Diag("illegal system register:\n%v", p) } if (o1 & (v &^ (3 << 19))) != 0 { c.ctxt.Diag("MSR register value overlap\n%v", p) } + if accessFlags&SR_WRITE == 0 { + c.ctxt.Diag("system register is not writable: %v", p) + } o1 |= v o1 |= uint32(p.From.Reg & 31) diff --git a/src/cmd/internal/obj/arm64/list7.go b/src/cmd/internal/obj/arm64/list7.go index a4bf00513f..e63a4815f9 100644 --- a/src/cmd/internal/obj/arm64/list7.go +++ b/src/cmd/internal/obj/arm64/list7.go @@ -209,7 +209,7 @@ func rconv(r int) string { return fmt.Sprintf("V%d.%s", r&31, arrange((r>>5)&15)) } // Return system register name. - name, _ := SysRegEnc(int16(r)) + name, _, _ := SysRegEnc(int16(r)) if name != "" { return name } diff --git a/src/cmd/internal/obj/arm64/sysRegEnc.go b/src/cmd/internal/obj/arm64/sysRegEnc.go index ac6dcec315..7760a4483c 100644 --- a/src/cmd/internal/obj/arm64/sysRegEnc.go +++ b/src/cmd/internal/obj/arm64/sysRegEnc.go @@ -1,13 +1,9 @@ -// DO NOT EDIT -// This file is auto-generated by the following steps, and the sysreggen.go is located at x/arch/arm64/arm64spec/. -// 1. Get the system register xml files from https://developer.arm.com/-/media/Files/ATG/Beta10/SysReg_xml_v85A-2019-06.tar.gz -// 2. Extract SysReg_xml_v85A-2019-06.tar/SysReg_xml_v85A-2019-06/SysReg_xml_v85A-2019-06/AArch64-*.xml to ./files folder -// 3. Run the command: go run sysreggen.go +// Code generated by arm64gen -i ./files -o sysRegEnc.go. DO NOT EDIT. package arm64 const ( - AUTO_SYSREG_BEGIN = REG_SPECIAL + iota + SYSREG_BEGIN = REG_SPECIAL + iota REG_ACTLR_EL1 REG_AFSR0_EL1 REG_AFSR1_EL1 @@ -439,454 +435,461 @@ const ( REG_UAO REG_VBAR_EL1 REG_ZCR_EL1 - AUTO_SYSREG_END + SYSREG_END +) + +const ( + SR_READ = 1 << iota + SR_WRITE ) var SystemReg = []struct { Name string Reg int16 Enc uint32 + // AccessFlags is the readable and writeable property of system register. + AccessFlags uint8 }{ - {"ACTLR_EL1", REG_ACTLR_EL1, 0x181020}, - {"AFSR0_EL1", REG_AFSR0_EL1, 0x185100}, - {"AFSR1_EL1", REG_AFSR1_EL1, 0x185120}, - {"AIDR_EL1", REG_AIDR_EL1, 0x1900e0}, - {"AMAIR_EL1", REG_AMAIR_EL1, 0x18a300}, - {"AMCFGR_EL0", REG_AMCFGR_EL0, 0x1bd220}, - {"AMCGCR_EL0", REG_AMCGCR_EL0, 0x1bd240}, - {"AMCNTENCLR0_EL0", REG_AMCNTENCLR0_EL0, 0x1bd280}, - {"AMCNTENCLR1_EL0", REG_AMCNTENCLR1_EL0, 0x1bd300}, - {"AMCNTENSET0_EL0", REG_AMCNTENSET0_EL0, 0x1bd2a0}, - {"AMCNTENSET1_EL0", REG_AMCNTENSET1_EL0, 0x1bd320}, - {"AMCR_EL0", REG_AMCR_EL0, 0x1bd200}, - {"AMEVCNTR00_EL0", REG_AMEVCNTR00_EL0, 0x1bd400}, - {"AMEVCNTR01_EL0", REG_AMEVCNTR01_EL0, 0x1bd420}, - {"AMEVCNTR02_EL0", REG_AMEVCNTR02_EL0, 0x1bd440}, - {"AMEVCNTR03_EL0", REG_AMEVCNTR03_EL0, 0x1bd460}, - {"AMEVCNTR04_EL0", REG_AMEVCNTR04_EL0, 0x1bd480}, - {"AMEVCNTR05_EL0", REG_AMEVCNTR05_EL0, 0x1bd4a0}, - {"AMEVCNTR06_EL0", REG_AMEVCNTR06_EL0, 0x1bd4c0}, - {"AMEVCNTR07_EL0", REG_AMEVCNTR07_EL0, 0x1bd4e0}, - {"AMEVCNTR08_EL0", REG_AMEVCNTR08_EL0, 0x1bd500}, - {"AMEVCNTR09_EL0", REG_AMEVCNTR09_EL0, 0x1bd520}, - {"AMEVCNTR010_EL0", REG_AMEVCNTR010_EL0, 0x1bd540}, - {"AMEVCNTR011_EL0", REG_AMEVCNTR011_EL0, 0x1bd560}, - {"AMEVCNTR012_EL0", REG_AMEVCNTR012_EL0, 0x1bd580}, - {"AMEVCNTR013_EL0", REG_AMEVCNTR013_EL0, 0x1bd5a0}, - {"AMEVCNTR014_EL0", REG_AMEVCNTR014_EL0, 0x1bd5c0}, - {"AMEVCNTR015_EL0", REG_AMEVCNTR015_EL0, 0x1bd5e0}, - {"AMEVCNTR10_EL0", REG_AMEVCNTR10_EL0, 0x1bdc00}, - {"AMEVCNTR11_EL0", REG_AMEVCNTR11_EL0, 0x1bdc20}, - {"AMEVCNTR12_EL0", REG_AMEVCNTR12_EL0, 0x1bdc40}, - {"AMEVCNTR13_EL0", REG_AMEVCNTR13_EL0, 0x1bdc60}, - {"AMEVCNTR14_EL0", REG_AMEVCNTR14_EL0, 0x1bdc80}, - {"AMEVCNTR15_EL0", REG_AMEVCNTR15_EL0, 0x1bdca0}, - {"AMEVCNTR16_EL0", REG_AMEVCNTR16_EL0, 0x1bdcc0}, - {"AMEVCNTR17_EL0", REG_AMEVCNTR17_EL0, 0x1bdce0}, - {"AMEVCNTR18_EL0", REG_AMEVCNTR18_EL0, 0x1bdd00}, - {"AMEVCNTR19_EL0", REG_AMEVCNTR19_EL0, 0x1bdd20}, - {"AMEVCNTR110_EL0", REG_AMEVCNTR110_EL0, 0x1bdd40}, - {"AMEVCNTR111_EL0", REG_AMEVCNTR111_EL0, 0x1bdd60}, - {"AMEVCNTR112_EL0", REG_AMEVCNTR112_EL0, 0x1bdd80}, - {"AMEVCNTR113_EL0", REG_AMEVCNTR113_EL0, 0x1bdda0}, - {"AMEVCNTR114_EL0", REG_AMEVCNTR114_EL0, 0x1bddc0}, - {"AMEVCNTR115_EL0", REG_AMEVCNTR115_EL0, 0x1bdde0}, - {"AMEVTYPER00_EL0", REG_AMEVTYPER00_EL0, 0x1bd600}, - {"AMEVTYPER01_EL0", REG_AMEVTYPER01_EL0, 0x1bd620}, - {"AMEVTYPER02_EL0", REG_AMEVTYPER02_EL0, 0x1bd640}, - {"AMEVTYPER03_EL0", REG_AMEVTYPER03_EL0, 0x1bd660}, - {"AMEVTYPER04_EL0", REG_AMEVTYPER04_EL0, 0x1bd680}, - {"AMEVTYPER05_EL0", REG_AMEVTYPER05_EL0, 0x1bd6a0}, - {"AMEVTYPER06_EL0", REG_AMEVTYPER06_EL0, 0x1bd6c0}, - {"AMEVTYPER07_EL0", REG_AMEVTYPER07_EL0, 0x1bd6e0}, - {"AMEVTYPER08_EL0", REG_AMEVTYPER08_EL0, 0x1bd700}, - {"AMEVTYPER09_EL0", REG_AMEVTYPER09_EL0, 0x1bd720}, - {"AMEVTYPER010_EL0", REG_AMEVTYPER010_EL0, 0x1bd740}, - {"AMEVTYPER011_EL0", REG_AMEVTYPER011_EL0, 0x1bd760}, - {"AMEVTYPER012_EL0", REG_AMEVTYPER012_EL0, 0x1bd780}, - {"AMEVTYPER013_EL0", REG_AMEVTYPER013_EL0, 0x1bd7a0}, - {"AMEVTYPER014_EL0", REG_AMEVTYPER014_EL0, 0x1bd7c0}, - {"AMEVTYPER015_EL0", REG_AMEVTYPER015_EL0, 0x1bd7e0}, - {"AMEVTYPER10_EL0", REG_AMEVTYPER10_EL0, 0x1bde00}, - {"AMEVTYPER11_EL0", REG_AMEVTYPER11_EL0, 0x1bde20}, - {"AMEVTYPER12_EL0", REG_AMEVTYPER12_EL0, 0x1bde40}, - {"AMEVTYPER13_EL0", REG_AMEVTYPER13_EL0, 0x1bde60}, - {"AMEVTYPER14_EL0", REG_AMEVTYPER14_EL0, 0x1bde80}, - {"AMEVTYPER15_EL0", REG_AMEVTYPER15_EL0, 0x1bdea0}, - {"AMEVTYPER16_EL0", REG_AMEVTYPER16_EL0, 0x1bdec0}, - {"AMEVTYPER17_EL0", REG_AMEVTYPER17_EL0, 0x1bdee0}, - {"AMEVTYPER18_EL0", REG_AMEVTYPER18_EL0, 0x1bdf00}, - {"AMEVTYPER19_EL0", REG_AMEVTYPER19_EL0, 0x1bdf20}, - {"AMEVTYPER110_EL0", REG_AMEVTYPER110_EL0, 0x1bdf40}, - {"AMEVTYPER111_EL0", REG_AMEVTYPER111_EL0, 0x1bdf60}, - {"AMEVTYPER112_EL0", REG_AMEVTYPER112_EL0, 0x1bdf80}, - {"AMEVTYPER113_EL0", REG_AMEVTYPER113_EL0, 0x1bdfa0}, - {"AMEVTYPER114_EL0", REG_AMEVTYPER114_EL0, 0x1bdfc0}, - {"AMEVTYPER115_EL0", REG_AMEVTYPER115_EL0, 0x1bdfe0}, - {"AMUSERENR_EL0", REG_AMUSERENR_EL0, 0x1bd260}, - {"APDAKeyHi_EL1", REG_APDAKeyHi_EL1, 0x182220}, - {"APDAKeyLo_EL1", REG_APDAKeyLo_EL1, 0x182200}, - {"APDBKeyHi_EL1", REG_APDBKeyHi_EL1, 0x182260}, - {"APDBKeyLo_EL1", REG_APDBKeyLo_EL1, 0x182240}, - {"APGAKeyHi_EL1", REG_APGAKeyHi_EL1, 0x182320}, - {"APGAKeyLo_EL1", REG_APGAKeyLo_EL1, 0x182300}, - {"APIAKeyHi_EL1", REG_APIAKeyHi_EL1, 0x182120}, - {"APIAKeyLo_EL1", REG_APIAKeyLo_EL1, 0x182100}, - {"APIBKeyHi_EL1", REG_APIBKeyHi_EL1, 0x182160}, - {"APIBKeyLo_EL1", REG_APIBKeyLo_EL1, 0x182140}, - {"CCSIDR2_EL1", REG_CCSIDR2_EL1, 0x190040}, - {"CCSIDR_EL1", REG_CCSIDR_EL1, 0x190000}, - {"CLIDR_EL1", REG_CLIDR_EL1, 0x190020}, - {"CNTFRQ_EL0", REG_CNTFRQ_EL0, 0x1be000}, - {"CNTKCTL_EL1", REG_CNTKCTL_EL1, 0x18e100}, - {"CNTP_CTL_EL0", REG_CNTP_CTL_EL0, 0x1be220}, - {"CNTP_CVAL_EL0", REG_CNTP_CVAL_EL0, 0x1be240}, - {"CNTP_TVAL_EL0", REG_CNTP_TVAL_EL0, 0x1be200}, - {"CNTPCT_EL0", REG_CNTPCT_EL0, 0x1be020}, - {"CNTPS_CTL_EL1", REG_CNTPS_CTL_EL1, 0x1fe220}, - {"CNTPS_CVAL_EL1", REG_CNTPS_CVAL_EL1, 0x1fe240}, - {"CNTPS_TVAL_EL1", REG_CNTPS_TVAL_EL1, 0x1fe200}, - {"CNTV_CTL_EL0", REG_CNTV_CTL_EL0, 0x1be320}, - {"CNTV_CVAL_EL0", REG_CNTV_CVAL_EL0, 0x1be340}, - {"CNTV_TVAL_EL0", REG_CNTV_TVAL_EL0, 0x1be300}, - {"CNTVCT_EL0", REG_CNTVCT_EL0, 0x1be040}, - {"CONTEXTIDR_EL1", REG_CONTEXTIDR_EL1, 0x18d020}, - {"CPACR_EL1", REG_CPACR_EL1, 0x181040}, - {"CSSELR_EL1", REG_CSSELR_EL1, 0x1a0000}, - {"CTR_EL0", REG_CTR_EL0, 0x1b0020}, - {"CurrentEL", REG_CurrentEL, 0x184240}, - {"DAIF", REG_DAIF, 0x1b4220}, - {"DBGAUTHSTATUS_EL1", REG_DBGAUTHSTATUS_EL1, 0x107ec0}, - {"DBGBCR0_EL1", REG_DBGBCR0_EL1, 0x1000a0}, - {"DBGBCR1_EL1", REG_DBGBCR1_EL1, 0x1001a0}, - {"DBGBCR2_EL1", REG_DBGBCR2_EL1, 0x1002a0}, - {"DBGBCR3_EL1", REG_DBGBCR3_EL1, 0x1003a0}, - {"DBGBCR4_EL1", REG_DBGBCR4_EL1, 0x1004a0}, - {"DBGBCR5_EL1", REG_DBGBCR5_EL1, 0x1005a0}, - {"DBGBCR6_EL1", REG_DBGBCR6_EL1, 0x1006a0}, - {"DBGBCR7_EL1", REG_DBGBCR7_EL1, 0x1007a0}, - {"DBGBCR8_EL1", REG_DBGBCR8_EL1, 0x1008a0}, - {"DBGBCR9_EL1", REG_DBGBCR9_EL1, 0x1009a0}, - {"DBGBCR10_EL1", REG_DBGBCR10_EL1, 0x100aa0}, - {"DBGBCR11_EL1", REG_DBGBCR11_EL1, 0x100ba0}, - {"DBGBCR12_EL1", REG_DBGBCR12_EL1, 0x100ca0}, - {"DBGBCR13_EL1", REG_DBGBCR13_EL1, 0x100da0}, - {"DBGBCR14_EL1", REG_DBGBCR14_EL1, 0x100ea0}, - {"DBGBCR15_EL1", REG_DBGBCR15_EL1, 0x100fa0}, - {"DBGBVR0_EL1", REG_DBGBVR0_EL1, 0x100080}, - {"DBGBVR1_EL1", REG_DBGBVR1_EL1, 0x100180}, - {"DBGBVR2_EL1", REG_DBGBVR2_EL1, 0x100280}, - {"DBGBVR3_EL1", REG_DBGBVR3_EL1, 0x100380}, - {"DBGBVR4_EL1", REG_DBGBVR4_EL1, 0x100480}, - {"DBGBVR5_EL1", REG_DBGBVR5_EL1, 0x100580}, - {"DBGBVR6_EL1", REG_DBGBVR6_EL1, 0x100680}, - {"DBGBVR7_EL1", REG_DBGBVR7_EL1, 0x100780}, - {"DBGBVR8_EL1", REG_DBGBVR8_EL1, 0x100880}, - {"DBGBVR9_EL1", REG_DBGBVR9_EL1, 0x100980}, - {"DBGBVR10_EL1", REG_DBGBVR10_EL1, 0x100a80}, - {"DBGBVR11_EL1", REG_DBGBVR11_EL1, 0x100b80}, - {"DBGBVR12_EL1", REG_DBGBVR12_EL1, 0x100c80}, - {"DBGBVR13_EL1", REG_DBGBVR13_EL1, 0x100d80}, - {"DBGBVR14_EL1", REG_DBGBVR14_EL1, 0x100e80}, - {"DBGBVR15_EL1", REG_DBGBVR15_EL1, 0x100f80}, - {"DBGCLAIMCLR_EL1", REG_DBGCLAIMCLR_EL1, 0x1079c0}, - {"DBGCLAIMSET_EL1", REG_DBGCLAIMSET_EL1, 0x1078c0}, - {"DBGDTR_EL0", REG_DBGDTR_EL0, 0x130400}, - {"DBGDTRRX_EL0", REG_DBGDTRRX_EL0, 0x130500}, - {"DBGDTRTX_EL0", REG_DBGDTRTX_EL0, 0x130500}, - {"DBGPRCR_EL1", REG_DBGPRCR_EL1, 0x101480}, - {"DBGWCR0_EL1", REG_DBGWCR0_EL1, 0x1000e0}, - {"DBGWCR1_EL1", REG_DBGWCR1_EL1, 0x1001e0}, - {"DBGWCR2_EL1", REG_DBGWCR2_EL1, 0x1002e0}, - {"DBGWCR3_EL1", REG_DBGWCR3_EL1, 0x1003e0}, - {"DBGWCR4_EL1", REG_DBGWCR4_EL1, 0x1004e0}, - {"DBGWCR5_EL1", REG_DBGWCR5_EL1, 0x1005e0}, - {"DBGWCR6_EL1", REG_DBGWCR6_EL1, 0x1006e0}, - {"DBGWCR7_EL1", REG_DBGWCR7_EL1, 0x1007e0}, - {"DBGWCR8_EL1", REG_DBGWCR8_EL1, 0x1008e0}, - {"DBGWCR9_EL1", REG_DBGWCR9_EL1, 0x1009e0}, - {"DBGWCR10_EL1", REG_DBGWCR10_EL1, 0x100ae0}, - {"DBGWCR11_EL1", REG_DBGWCR11_EL1, 0x100be0}, - {"DBGWCR12_EL1", REG_DBGWCR12_EL1, 0x100ce0}, - {"DBGWCR13_EL1", REG_DBGWCR13_EL1, 0x100de0}, - {"DBGWCR14_EL1", REG_DBGWCR14_EL1, 0x100ee0}, - {"DBGWCR15_EL1", REG_DBGWCR15_EL1, 0x100fe0}, - {"DBGWVR0_EL1", REG_DBGWVR0_EL1, 0x1000c0}, - {"DBGWVR1_EL1", REG_DBGWVR1_EL1, 0x1001c0}, - {"DBGWVR2_EL1", REG_DBGWVR2_EL1, 0x1002c0}, - {"DBGWVR3_EL1", REG_DBGWVR3_EL1, 0x1003c0}, - {"DBGWVR4_EL1", REG_DBGWVR4_EL1, 0x1004c0}, - {"DBGWVR5_EL1", REG_DBGWVR5_EL1, 0x1005c0}, - {"DBGWVR6_EL1", REG_DBGWVR6_EL1, 0x1006c0}, - {"DBGWVR7_EL1", REG_DBGWVR7_EL1, 0x1007c0}, - {"DBGWVR8_EL1", REG_DBGWVR8_EL1, 0x1008c0}, - {"DBGWVR9_EL1", REG_DBGWVR9_EL1, 0x1009c0}, - {"DBGWVR10_EL1", REG_DBGWVR10_EL1, 0x100ac0}, - {"DBGWVR11_EL1", REG_DBGWVR11_EL1, 0x100bc0}, - {"DBGWVR12_EL1", REG_DBGWVR12_EL1, 0x100cc0}, - {"DBGWVR13_EL1", REG_DBGWVR13_EL1, 0x100dc0}, - {"DBGWVR14_EL1", REG_DBGWVR14_EL1, 0x100ec0}, - {"DBGWVR15_EL1", REG_DBGWVR15_EL1, 0x100fc0}, - {"DCZID_EL0", REG_DCZID_EL0, 0x1b00e0}, - {"DISR_EL1", REG_DISR_EL1, 0x18c120}, - {"DIT", REG_DIT, 0x1b42a0}, - {"DLR_EL0", REG_DLR_EL0, 0x1b4520}, - {"DSPSR_EL0", REG_DSPSR_EL0, 0x1b4500}, - {"ELR_EL1", REG_ELR_EL1, 0x184020}, - {"ERRIDR_EL1", REG_ERRIDR_EL1, 0x185300}, - {"ERRSELR_EL1", REG_ERRSELR_EL1, 0x185320}, - {"ERXADDR_EL1", REG_ERXADDR_EL1, 0x185460}, - {"ERXCTLR_EL1", REG_ERXCTLR_EL1, 0x185420}, - {"ERXFR_EL1", REG_ERXFR_EL1, 0x185400}, - {"ERXMISC0_EL1", REG_ERXMISC0_EL1, 0x185500}, - {"ERXMISC1_EL1", REG_ERXMISC1_EL1, 0x185520}, - {"ERXMISC2_EL1", REG_ERXMISC2_EL1, 0x185540}, - {"ERXMISC3_EL1", REG_ERXMISC3_EL1, 0x185560}, - {"ERXPFGCDN_EL1", REG_ERXPFGCDN_EL1, 0x1854c0}, - {"ERXPFGCTL_EL1", REG_ERXPFGCTL_EL1, 0x1854a0}, - {"ERXPFGF_EL1", REG_ERXPFGF_EL1, 0x185480}, - {"ERXSTATUS_EL1", REG_ERXSTATUS_EL1, 0x185440}, - {"ESR_EL1", REG_ESR_EL1, 0x185200}, - {"FAR_EL1", REG_FAR_EL1, 0x186000}, - {"FPCR", REG_FPCR, 0x1b4400}, - {"FPSR", REG_FPSR, 0x1b4420}, - {"GCR_EL1", REG_GCR_EL1, 0x1810c0}, - {"GMID_EL1", REG_GMID_EL1, 0x31400}, - {"ICC_AP0R0_EL1", REG_ICC_AP0R0_EL1, 0x18c880}, - {"ICC_AP0R1_EL1", REG_ICC_AP0R1_EL1, 0x18c8a0}, - {"ICC_AP0R2_EL1", REG_ICC_AP0R2_EL1, 0x18c8c0}, - {"ICC_AP0R3_EL1", REG_ICC_AP0R3_EL1, 0x18c8e0}, - {"ICC_AP1R0_EL1", REG_ICC_AP1R0_EL1, 0x18c900}, - {"ICC_AP1R1_EL1", REG_ICC_AP1R1_EL1, 0x18c920}, - {"ICC_AP1R2_EL1", REG_ICC_AP1R2_EL1, 0x18c940}, - {"ICC_AP1R3_EL1", REG_ICC_AP1R3_EL1, 0x18c960}, - {"ICC_ASGI1R_EL1", REG_ICC_ASGI1R_EL1, 0x18cbc0}, - {"ICC_BPR0_EL1", REG_ICC_BPR0_EL1, 0x18c860}, - {"ICC_BPR1_EL1", REG_ICC_BPR1_EL1, 0x18cc60}, - {"ICC_CTLR_EL1", REG_ICC_CTLR_EL1, 0x18cc80}, - {"ICC_DIR_EL1", REG_ICC_DIR_EL1, 0x18cb20}, - {"ICC_EOIR0_EL1", REG_ICC_EOIR0_EL1, 0x18c820}, - {"ICC_EOIR1_EL1", REG_ICC_EOIR1_EL1, 0x18cc20}, - {"ICC_HPPIR0_EL1", REG_ICC_HPPIR0_EL1, 0x18c840}, - {"ICC_HPPIR1_EL1", REG_ICC_HPPIR1_EL1, 0x18cc40}, - {"ICC_IAR0_EL1", REG_ICC_IAR0_EL1, 0x18c800}, - {"ICC_IAR1_EL1", REG_ICC_IAR1_EL1, 0x18cc00}, - {"ICC_IGRPEN0_EL1", REG_ICC_IGRPEN0_EL1, 0x18ccc0}, - {"ICC_IGRPEN1_EL1", REG_ICC_IGRPEN1_EL1, 0x18cce0}, - {"ICC_PMR_EL1", REG_ICC_PMR_EL1, 0x184600}, - {"ICC_RPR_EL1", REG_ICC_RPR_EL1, 0x18cb60}, - {"ICC_SGI0R_EL1", REG_ICC_SGI0R_EL1, 0x18cbe0}, - {"ICC_SGI1R_EL1", REG_ICC_SGI1R_EL1, 0x18cba0}, - {"ICC_SRE_EL1", REG_ICC_SRE_EL1, 0x18cca0}, - {"ICV_AP0R0_EL1", REG_ICV_AP0R0_EL1, 0x18c880}, - {"ICV_AP0R1_EL1", REG_ICV_AP0R1_EL1, 0x18c8a0}, - {"ICV_AP0R2_EL1", REG_ICV_AP0R2_EL1, 0x18c8c0}, - {"ICV_AP0R3_EL1", REG_ICV_AP0R3_EL1, 0x18c8e0}, - {"ICV_AP1R0_EL1", REG_ICV_AP1R0_EL1, 0x18c900}, - {"ICV_AP1R1_EL1", REG_ICV_AP1R1_EL1, 0x18c920}, - {"ICV_AP1R2_EL1", REG_ICV_AP1R2_EL1, 0x18c940}, - {"ICV_AP1R3_EL1", REG_ICV_AP1R3_EL1, 0x18c960}, - {"ICV_BPR0_EL1", REG_ICV_BPR0_EL1, 0x18c860}, - {"ICV_BPR1_EL1", REG_ICV_BPR1_EL1, 0x18cc60}, - {"ICV_CTLR_EL1", REG_ICV_CTLR_EL1, 0x18cc80}, - {"ICV_DIR_EL1", REG_ICV_DIR_EL1, 0x18cb20}, - {"ICV_EOIR0_EL1", REG_ICV_EOIR0_EL1, 0x18c820}, - {"ICV_EOIR1_EL1", REG_ICV_EOIR1_EL1, 0x18cc20}, - {"ICV_HPPIR0_EL1", REG_ICV_HPPIR0_EL1, 0x18c840}, - {"ICV_HPPIR1_EL1", REG_ICV_HPPIR1_EL1, 0x18cc40}, - {"ICV_IAR0_EL1", REG_ICV_IAR0_EL1, 0x18c800}, - {"ICV_IAR1_EL1", REG_ICV_IAR1_EL1, 0x18cc00}, - {"ICV_IGRPEN0_EL1", REG_ICV_IGRPEN0_EL1, 0x18ccc0}, - {"ICV_IGRPEN1_EL1", REG_ICV_IGRPEN1_EL1, 0x18cce0}, - {"ICV_PMR_EL1", REG_ICV_PMR_EL1, 0x184600}, - {"ICV_RPR_EL1", REG_ICV_RPR_EL1, 0x18cb60}, - {"ID_AA64AFR0_EL1", REG_ID_AA64AFR0_EL1, 0x180580}, - {"ID_AA64AFR1_EL1", REG_ID_AA64AFR1_EL1, 0x1805a0}, - {"ID_AA64DFR0_EL1", REG_ID_AA64DFR0_EL1, 0x180500}, - {"ID_AA64DFR1_EL1", REG_ID_AA64DFR1_EL1, 0x180520}, - {"ID_AA64ISAR0_EL1", REG_ID_AA64ISAR0_EL1, 0x180600}, - {"ID_AA64ISAR1_EL1", REG_ID_AA64ISAR1_EL1, 0x180620}, - {"ID_AA64MMFR0_EL1", REG_ID_AA64MMFR0_EL1, 0x180700}, - {"ID_AA64MMFR1_EL1", REG_ID_AA64MMFR1_EL1, 0x180720}, - {"ID_AA64MMFR2_EL1", REG_ID_AA64MMFR2_EL1, 0x180740}, - {"ID_AA64PFR0_EL1", REG_ID_AA64PFR0_EL1, 0x180400}, - {"ID_AA64PFR1_EL1", REG_ID_AA64PFR1_EL1, 0x180420}, - {"ID_AA64ZFR0_EL1", REG_ID_AA64ZFR0_EL1, 0x180480}, - {"ID_AFR0_EL1", REG_ID_AFR0_EL1, 0x180160}, - {"ID_DFR0_EL1", REG_ID_DFR0_EL1, 0x180140}, - {"ID_ISAR0_EL1", REG_ID_ISAR0_EL1, 0x180200}, - {"ID_ISAR1_EL1", REG_ID_ISAR1_EL1, 0x180220}, - {"ID_ISAR2_EL1", REG_ID_ISAR2_EL1, 0x180240}, - {"ID_ISAR3_EL1", REG_ID_ISAR3_EL1, 0x180260}, - {"ID_ISAR4_EL1", REG_ID_ISAR4_EL1, 0x180280}, - {"ID_ISAR5_EL1", REG_ID_ISAR5_EL1, 0x1802a0}, - {"ID_ISAR6_EL1", REG_ID_ISAR6_EL1, 0x1802e0}, - {"ID_MMFR0_EL1", REG_ID_MMFR0_EL1, 0x180180}, - {"ID_MMFR1_EL1", REG_ID_MMFR1_EL1, 0x1801a0}, - {"ID_MMFR2_EL1", REG_ID_MMFR2_EL1, 0x1801c0}, - {"ID_MMFR3_EL1", REG_ID_MMFR3_EL1, 0x1801e0}, - {"ID_MMFR4_EL1", REG_ID_MMFR4_EL1, 0x1802c0}, - {"ID_PFR0_EL1", REG_ID_PFR0_EL1, 0x180100}, - {"ID_PFR1_EL1", REG_ID_PFR1_EL1, 0x180120}, - {"ID_PFR2_EL1", REG_ID_PFR2_EL1, 0x180380}, - {"ISR_EL1", REG_ISR_EL1, 0x18c100}, - {"LORC_EL1", REG_LORC_EL1, 0x18a460}, - {"LOREA_EL1", REG_LOREA_EL1, 0x18a420}, - {"LORID_EL1", REG_LORID_EL1, 0x18a4e0}, - {"LORN_EL1", REG_LORN_EL1, 0x18a440}, - {"LORSA_EL1", REG_LORSA_EL1, 0x18a400}, - {"MAIR_EL1", REG_MAIR_EL1, 0x18a200}, - {"MDCCINT_EL1", REG_MDCCINT_EL1, 0x100200}, - {"MDCCSR_EL0", REG_MDCCSR_EL0, 0x130100}, - {"MDRAR_EL1", REG_MDRAR_EL1, 0x101000}, - {"MDSCR_EL1", REG_MDSCR_EL1, 0x100240}, - {"MIDR_EL1", REG_MIDR_EL1, 0x180000}, - {"MPAM0_EL1", REG_MPAM0_EL1, 0x18a520}, - {"MPAM1_EL1", REG_MPAM1_EL1, 0x18a500}, - {"MPAMIDR_EL1", REG_MPAMIDR_EL1, 0x18a480}, - {"MPIDR_EL1", REG_MPIDR_EL1, 0x1800a0}, - {"MVFR0_EL1", REG_MVFR0_EL1, 0x180300}, - {"MVFR1_EL1", REG_MVFR1_EL1, 0x180320}, - {"MVFR2_EL1", REG_MVFR2_EL1, 0x180340}, - {"NZCV", REG_NZCV, 0x1b4200}, - {"OSDLR_EL1", REG_OSDLR_EL1, 0x101380}, - {"OSDTRRX_EL1", REG_OSDTRRX_EL1, 0x100040}, - {"OSDTRTX_EL1", REG_OSDTRTX_EL1, 0x100340}, - {"OSECCR_EL1", REG_OSECCR_EL1, 0x100640}, - {"OSLAR_EL1", REG_OSLAR_EL1, 0x101080}, - {"OSLSR_EL1", REG_OSLSR_EL1, 0x101180}, - {"PAN", REG_PAN, 0x184260}, - {"PAR_EL1", REG_PAR_EL1, 0x187400}, - {"PMBIDR_EL1", REG_PMBIDR_EL1, 0x189ae0}, - {"PMBLIMITR_EL1", REG_PMBLIMITR_EL1, 0x189a00}, - {"PMBPTR_EL1", REG_PMBPTR_EL1, 0x189a20}, - {"PMBSR_EL1", REG_PMBSR_EL1, 0x189a60}, - {"PMCCFILTR_EL0", REG_PMCCFILTR_EL0, 0x1befe0}, - {"PMCCNTR_EL0", REG_PMCCNTR_EL0, 0x1b9d00}, - {"PMCEID0_EL0", REG_PMCEID0_EL0, 0x1b9cc0}, - {"PMCEID1_EL0", REG_PMCEID1_EL0, 0x1b9ce0}, - {"PMCNTENCLR_EL0", REG_PMCNTENCLR_EL0, 0x1b9c40}, - {"PMCNTENSET_EL0", REG_PMCNTENSET_EL0, 0x1b9c20}, - {"PMCR_EL0", REG_PMCR_EL0, 0x1b9c00}, - {"PMEVCNTR0_EL0", REG_PMEVCNTR0_EL0, 0x1be800}, - {"PMEVCNTR1_EL0", REG_PMEVCNTR1_EL0, 0x1be820}, - {"PMEVCNTR2_EL0", REG_PMEVCNTR2_EL0, 0x1be840}, - {"PMEVCNTR3_EL0", REG_PMEVCNTR3_EL0, 0x1be860}, - {"PMEVCNTR4_EL0", REG_PMEVCNTR4_EL0, 0x1be880}, - {"PMEVCNTR5_EL0", REG_PMEVCNTR5_EL0, 0x1be8a0}, - {"PMEVCNTR6_EL0", REG_PMEVCNTR6_EL0, 0x1be8c0}, - {"PMEVCNTR7_EL0", REG_PMEVCNTR7_EL0, 0x1be8e0}, - {"PMEVCNTR8_EL0", REG_PMEVCNTR8_EL0, 0x1be900}, - {"PMEVCNTR9_EL0", REG_PMEVCNTR9_EL0, 0x1be920}, - {"PMEVCNTR10_EL0", REG_PMEVCNTR10_EL0, 0x1be940}, - {"PMEVCNTR11_EL0", REG_PMEVCNTR11_EL0, 0x1be960}, - {"PMEVCNTR12_EL0", REG_PMEVCNTR12_EL0, 0x1be980}, - {"PMEVCNTR13_EL0", REG_PMEVCNTR13_EL0, 0x1be9a0}, - {"PMEVCNTR14_EL0", REG_PMEVCNTR14_EL0, 0x1be9c0}, - {"PMEVCNTR15_EL0", REG_PMEVCNTR15_EL0, 0x1be9e0}, - {"PMEVCNTR16_EL0", REG_PMEVCNTR16_EL0, 0x1bea00}, - {"PMEVCNTR17_EL0", REG_PMEVCNTR17_EL0, 0x1bea20}, - {"PMEVCNTR18_EL0", REG_PMEVCNTR18_EL0, 0x1bea40}, - {"PMEVCNTR19_EL0", REG_PMEVCNTR19_EL0, 0x1bea60}, - {"PMEVCNTR20_EL0", REG_PMEVCNTR20_EL0, 0x1bea80}, - {"PMEVCNTR21_EL0", REG_PMEVCNTR21_EL0, 0x1beaa0}, - {"PMEVCNTR22_EL0", REG_PMEVCNTR22_EL0, 0x1beac0}, - {"PMEVCNTR23_EL0", REG_PMEVCNTR23_EL0, 0x1beae0}, - {"PMEVCNTR24_EL0", REG_PMEVCNTR24_EL0, 0x1beb00}, - {"PMEVCNTR25_EL0", REG_PMEVCNTR25_EL0, 0x1beb20}, - {"PMEVCNTR26_EL0", REG_PMEVCNTR26_EL0, 0x1beb40}, - {"PMEVCNTR27_EL0", REG_PMEVCNTR27_EL0, 0x1beb60}, - {"PMEVCNTR28_EL0", REG_PMEVCNTR28_EL0, 0x1beb80}, - {"PMEVCNTR29_EL0", REG_PMEVCNTR29_EL0, 0x1beba0}, - {"PMEVCNTR30_EL0", REG_PMEVCNTR30_EL0, 0x1bebc0}, - {"PMEVTYPER0_EL0", REG_PMEVTYPER0_EL0, 0x1bec00}, - {"PMEVTYPER1_EL0", REG_PMEVTYPER1_EL0, 0x1bec20}, - {"PMEVTYPER2_EL0", REG_PMEVTYPER2_EL0, 0x1bec40}, - {"PMEVTYPER3_EL0", REG_PMEVTYPER3_EL0, 0x1bec60}, - {"PMEVTYPER4_EL0", REG_PMEVTYPER4_EL0, 0x1bec80}, - {"PMEVTYPER5_EL0", REG_PMEVTYPER5_EL0, 0x1beca0}, - {"PMEVTYPER6_EL0", REG_PMEVTYPER6_EL0, 0x1becc0}, - {"PMEVTYPER7_EL0", REG_PMEVTYPER7_EL0, 0x1bece0}, - {"PMEVTYPER8_EL0", REG_PMEVTYPER8_EL0, 0x1bed00}, - {"PMEVTYPER9_EL0", REG_PMEVTYPER9_EL0, 0x1bed20}, - {"PMEVTYPER10_EL0", REG_PMEVTYPER10_EL0, 0x1bed40}, - {"PMEVTYPER11_EL0", REG_PMEVTYPER11_EL0, 0x1bed60}, - {"PMEVTYPER12_EL0", REG_PMEVTYPER12_EL0, 0x1bed80}, - {"PMEVTYPER13_EL0", REG_PMEVTYPER13_EL0, 0x1beda0}, - {"PMEVTYPER14_EL0", REG_PMEVTYPER14_EL0, 0x1bedc0}, - {"PMEVTYPER15_EL0", REG_PMEVTYPER15_EL0, 0x1bede0}, - {"PMEVTYPER16_EL0", REG_PMEVTYPER16_EL0, 0x1bee00}, - {"PMEVTYPER17_EL0", REG_PMEVTYPER17_EL0, 0x1bee20}, - {"PMEVTYPER18_EL0", REG_PMEVTYPER18_EL0, 0x1bee40}, - {"PMEVTYPER19_EL0", REG_PMEVTYPER19_EL0, 0x1bee60}, - {"PMEVTYPER20_EL0", REG_PMEVTYPER20_EL0, 0x1bee80}, - {"PMEVTYPER21_EL0", REG_PMEVTYPER21_EL0, 0x1beea0}, - {"PMEVTYPER22_EL0", REG_PMEVTYPER22_EL0, 0x1beec0}, - {"PMEVTYPER23_EL0", REG_PMEVTYPER23_EL0, 0x1beee0}, - {"PMEVTYPER24_EL0", REG_PMEVTYPER24_EL0, 0x1bef00}, - {"PMEVTYPER25_EL0", REG_PMEVTYPER25_EL0, 0x1bef20}, - {"PMEVTYPER26_EL0", REG_PMEVTYPER26_EL0, 0x1bef40}, - {"PMEVTYPER27_EL0", REG_PMEVTYPER27_EL0, 0x1bef60}, - {"PMEVTYPER28_EL0", REG_PMEVTYPER28_EL0, 0x1bef80}, - {"PMEVTYPER29_EL0", REG_PMEVTYPER29_EL0, 0x1befa0}, - {"PMEVTYPER30_EL0", REG_PMEVTYPER30_EL0, 0x1befc0}, - {"PMINTENCLR_EL1", REG_PMINTENCLR_EL1, 0x189e40}, - {"PMINTENSET_EL1", REG_PMINTENSET_EL1, 0x189e20}, - {"PMMIR_EL1", REG_PMMIR_EL1, 0x189ec0}, - {"PMOVSCLR_EL0", REG_PMOVSCLR_EL0, 0x1b9c60}, - {"PMOVSSET_EL0", REG_PMOVSSET_EL0, 0x1b9e60}, - {"PMSCR_EL1", REG_PMSCR_EL1, 0x189900}, - {"PMSELR_EL0", REG_PMSELR_EL0, 0x1b9ca0}, - {"PMSEVFR_EL1", REG_PMSEVFR_EL1, 0x1899a0}, - {"PMSFCR_EL1", REG_PMSFCR_EL1, 0x189980}, - {"PMSICR_EL1", REG_PMSICR_EL1, 0x189940}, - {"PMSIDR_EL1", REG_PMSIDR_EL1, 0x1899e0}, - {"PMSIRR_EL1", REG_PMSIRR_EL1, 0x189960}, - {"PMSLATFR_EL1", REG_PMSLATFR_EL1, 0x1899c0}, - {"PMSWINC_EL0", REG_PMSWINC_EL0, 0x1b9c80}, - {"PMUSERENR_EL0", REG_PMUSERENR_EL0, 0x1b9e00}, - {"PMXEVCNTR_EL0", REG_PMXEVCNTR_EL0, 0x1b9d40}, - {"PMXEVTYPER_EL0", REG_PMXEVTYPER_EL0, 0x1b9d20}, - {"REVIDR_EL1", REG_REVIDR_EL1, 0x1800c0}, - {"RGSR_EL1", REG_RGSR_EL1, 0x1810a0}, - {"RMR_EL1", REG_RMR_EL1, 0x18c040}, - {"RNDR", REG_RNDR, 0x1b2400}, - {"RNDRRS", REG_RNDRRS, 0x1b2420}, - {"RVBAR_EL1", REG_RVBAR_EL1, 0x18c020}, - {"SCTLR_EL1", REG_SCTLR_EL1, 0x181000}, - {"SCXTNUM_EL0", REG_SCXTNUM_EL0, 0x1bd0e0}, - {"SCXTNUM_EL1", REG_SCXTNUM_EL1, 0x18d0e0}, - {"SP_EL0", REG_SP_EL0, 0x184100}, - {"SP_EL1", REG_SP_EL1, 0x1c4100}, - {"SPSel", REG_SPSel, 0x184200}, - {"SPSR_abt", REG_SPSR_abt, 0x1c4320}, - {"SPSR_EL1", REG_SPSR_EL1, 0x184000}, - {"SPSR_fiq", REG_SPSR_fiq, 0x1c4360}, - {"SPSR_irq", REG_SPSR_irq, 0x1c4300}, - {"SPSR_und", REG_SPSR_und, 0x1c4340}, - {"SSBS", REG_SSBS, 0x1b42c0}, - {"TCO", REG_TCO, 0x1b42e0}, - {"TCR_EL1", REG_TCR_EL1, 0x182040}, - {"TFSR_EL1", REG_TFSR_EL1, 0x185600}, - {"TFSRE0_EL1", REG_TFSRE0_EL1, 0x185620}, - {"TPIDR_EL0", REG_TPIDR_EL0, 0x1bd040}, - {"TPIDR_EL1", REG_TPIDR_EL1, 0x18d080}, - {"TPIDRRO_EL0", REG_TPIDRRO_EL0, 0x1bd060}, - {"TRFCR_EL1", REG_TRFCR_EL1, 0x181220}, - {"TTBR0_EL1", REG_TTBR0_EL1, 0x182000}, - {"TTBR1_EL1", REG_TTBR1_EL1, 0x182020}, - {"UAO", REG_UAO, 0x184280}, - {"VBAR_EL1", REG_VBAR_EL1, 0x18c000}, - {"ZCR_EL1", REG_ZCR_EL1, 0x181200}, + {"ACTLR_EL1", REG_ACTLR_EL1, 0x181020, SR_READ | SR_WRITE}, + {"AFSR0_EL1", REG_AFSR0_EL1, 0x185100, SR_READ | SR_WRITE}, + {"AFSR1_EL1", REG_AFSR1_EL1, 0x185120, SR_READ | SR_WRITE}, + {"AIDR_EL1", REG_AIDR_EL1, 0x1900e0, SR_READ}, + {"AMAIR_EL1", REG_AMAIR_EL1, 0x18a300, SR_READ | SR_WRITE}, + {"AMCFGR_EL0", REG_AMCFGR_EL0, 0x1bd220, SR_READ}, + {"AMCGCR_EL0", REG_AMCGCR_EL0, 0x1bd240, SR_READ}, + {"AMCNTENCLR0_EL0", REG_AMCNTENCLR0_EL0, 0x1bd280, SR_READ | SR_WRITE}, + {"AMCNTENCLR1_EL0", REG_AMCNTENCLR1_EL0, 0x1bd300, SR_READ | SR_WRITE}, + {"AMCNTENSET0_EL0", REG_AMCNTENSET0_EL0, 0x1bd2a0, SR_READ | SR_WRITE}, + {"AMCNTENSET1_EL0", REG_AMCNTENSET1_EL0, 0x1bd320, SR_READ | SR_WRITE}, + {"AMCR_EL0", REG_AMCR_EL0, 0x1bd200, SR_READ | SR_WRITE}, + {"AMEVCNTR00_EL0", REG_AMEVCNTR00_EL0, 0x1bd400, SR_READ | SR_WRITE}, + {"AMEVCNTR01_EL0", REG_AMEVCNTR01_EL0, 0x1bd420, SR_READ | SR_WRITE}, + {"AMEVCNTR02_EL0", REG_AMEVCNTR02_EL0, 0x1bd440, SR_READ | SR_WRITE}, + {"AMEVCNTR03_EL0", REG_AMEVCNTR03_EL0, 0x1bd460, SR_READ | SR_WRITE}, + {"AMEVCNTR04_EL0", REG_AMEVCNTR04_EL0, 0x1bd480, SR_READ | SR_WRITE}, + {"AMEVCNTR05_EL0", REG_AMEVCNTR05_EL0, 0x1bd4a0, SR_READ | SR_WRITE}, + {"AMEVCNTR06_EL0", REG_AMEVCNTR06_EL0, 0x1bd4c0, SR_READ | SR_WRITE}, + {"AMEVCNTR07_EL0", REG_AMEVCNTR07_EL0, 0x1bd4e0, SR_READ | SR_WRITE}, + {"AMEVCNTR08_EL0", REG_AMEVCNTR08_EL0, 0x1bd500, SR_READ | SR_WRITE}, + {"AMEVCNTR09_EL0", REG_AMEVCNTR09_EL0, 0x1bd520, SR_READ | SR_WRITE}, + {"AMEVCNTR010_EL0", REG_AMEVCNTR010_EL0, 0x1bd540, SR_READ | SR_WRITE}, + {"AMEVCNTR011_EL0", REG_AMEVCNTR011_EL0, 0x1bd560, SR_READ | SR_WRITE}, + {"AMEVCNTR012_EL0", REG_AMEVCNTR012_EL0, 0x1bd580, SR_READ | SR_WRITE}, + {"AMEVCNTR013_EL0", REG_AMEVCNTR013_EL0, 0x1bd5a0, SR_READ | SR_WRITE}, + {"AMEVCNTR014_EL0", REG_AMEVCNTR014_EL0, 0x1bd5c0, SR_READ | SR_WRITE}, + {"AMEVCNTR015_EL0", REG_AMEVCNTR015_EL0, 0x1bd5e0, SR_READ | SR_WRITE}, + {"AMEVCNTR10_EL0", REG_AMEVCNTR10_EL0, 0x1bdc00, SR_READ | SR_WRITE}, + {"AMEVCNTR11_EL0", REG_AMEVCNTR11_EL0, 0x1bdc20, SR_READ | SR_WRITE}, + {"AMEVCNTR12_EL0", REG_AMEVCNTR12_EL0, 0x1bdc40, SR_READ | SR_WRITE}, + {"AMEVCNTR13_EL0", REG_AMEVCNTR13_EL0, 0x1bdc60, SR_READ | SR_WRITE}, + {"AMEVCNTR14_EL0", REG_AMEVCNTR14_EL0, 0x1bdc80, SR_READ | SR_WRITE}, + {"AMEVCNTR15_EL0", REG_AMEVCNTR15_EL0, 0x1bdca0, SR_READ | SR_WRITE}, + {"AMEVCNTR16_EL0", REG_AMEVCNTR16_EL0, 0x1bdcc0, SR_READ | SR_WRITE}, + {"AMEVCNTR17_EL0", REG_AMEVCNTR17_EL0, 0x1bdce0, SR_READ | SR_WRITE}, + {"AMEVCNTR18_EL0", REG_AMEVCNTR18_EL0, 0x1bdd00, SR_READ | SR_WRITE}, + {"AMEVCNTR19_EL0", REG_AMEVCNTR19_EL0, 0x1bdd20, SR_READ | SR_WRITE}, + {"AMEVCNTR110_EL0", REG_AMEVCNTR110_EL0, 0x1bdd40, SR_READ | SR_WRITE}, + {"AMEVCNTR111_EL0", REG_AMEVCNTR111_EL0, 0x1bdd60, SR_READ | SR_WRITE}, + {"AMEVCNTR112_EL0", REG_AMEVCNTR112_EL0, 0x1bdd80, SR_READ | SR_WRITE}, + {"AMEVCNTR113_EL0", REG_AMEVCNTR113_EL0, 0x1bdda0, SR_READ | SR_WRITE}, + {"AMEVCNTR114_EL0", REG_AMEVCNTR114_EL0, 0x1bddc0, SR_READ | SR_WRITE}, + {"AMEVCNTR115_EL0", REG_AMEVCNTR115_EL0, 0x1bdde0, SR_READ | SR_WRITE}, + {"AMEVTYPER00_EL0", REG_AMEVTYPER00_EL0, 0x1bd600, SR_READ}, + {"AMEVTYPER01_EL0", REG_AMEVTYPER01_EL0, 0x1bd620, SR_READ}, + {"AMEVTYPER02_EL0", REG_AMEVTYPER02_EL0, 0x1bd640, SR_READ}, + {"AMEVTYPER03_EL0", REG_AMEVTYPER03_EL0, 0x1bd660, SR_READ}, + {"AMEVTYPER04_EL0", REG_AMEVTYPER04_EL0, 0x1bd680, SR_READ}, + {"AMEVTYPER05_EL0", REG_AMEVTYPER05_EL0, 0x1bd6a0, SR_READ}, + {"AMEVTYPER06_EL0", REG_AMEVTYPER06_EL0, 0x1bd6c0, SR_READ}, + {"AMEVTYPER07_EL0", REG_AMEVTYPER07_EL0, 0x1bd6e0, SR_READ}, + {"AMEVTYPER08_EL0", REG_AMEVTYPER08_EL0, 0x1bd700, SR_READ}, + {"AMEVTYPER09_EL0", REG_AMEVTYPER09_EL0, 0x1bd720, SR_READ}, + {"AMEVTYPER010_EL0", REG_AMEVTYPER010_EL0, 0x1bd740, SR_READ}, + {"AMEVTYPER011_EL0", REG_AMEVTYPER011_EL0, 0x1bd760, SR_READ}, + {"AMEVTYPER012_EL0", REG_AMEVTYPER012_EL0, 0x1bd780, SR_READ}, + {"AMEVTYPER013_EL0", REG_AMEVTYPER013_EL0, 0x1bd7a0, SR_READ}, + {"AMEVTYPER014_EL0", REG_AMEVTYPER014_EL0, 0x1bd7c0, SR_READ}, + {"AMEVTYPER015_EL0", REG_AMEVTYPER015_EL0, 0x1bd7e0, SR_READ}, + {"AMEVTYPER10_EL0", REG_AMEVTYPER10_EL0, 0x1bde00, SR_READ | SR_WRITE}, + {"AMEVTYPER11_EL0", REG_AMEVTYPER11_EL0, 0x1bde20, SR_READ | SR_WRITE}, + {"AMEVTYPER12_EL0", REG_AMEVTYPER12_EL0, 0x1bde40, SR_READ | SR_WRITE}, + {"AMEVTYPER13_EL0", REG_AMEVTYPER13_EL0, 0x1bde60, SR_READ | SR_WRITE}, + {"AMEVTYPER14_EL0", REG_AMEVTYPER14_EL0, 0x1bde80, SR_READ | SR_WRITE}, + {"AMEVTYPER15_EL0", REG_AMEVTYPER15_EL0, 0x1bdea0, SR_READ | SR_WRITE}, + {"AMEVTYPER16_EL0", REG_AMEVTYPER16_EL0, 0x1bdec0, SR_READ | SR_WRITE}, + {"AMEVTYPER17_EL0", REG_AMEVTYPER17_EL0, 0x1bdee0, SR_READ | SR_WRITE}, + {"AMEVTYPER18_EL0", REG_AMEVTYPER18_EL0, 0x1bdf00, SR_READ | SR_WRITE}, + {"AMEVTYPER19_EL0", REG_AMEVTYPER19_EL0, 0x1bdf20, SR_READ | SR_WRITE}, + {"AMEVTYPER110_EL0", REG_AMEVTYPER110_EL0, 0x1bdf40, SR_READ | SR_WRITE}, + {"AMEVTYPER111_EL0", REG_AMEVTYPER111_EL0, 0x1bdf60, SR_READ | SR_WRITE}, + {"AMEVTYPER112_EL0", REG_AMEVTYPER112_EL0, 0x1bdf80, SR_READ | SR_WRITE}, + {"AMEVTYPER113_EL0", REG_AMEVTYPER113_EL0, 0x1bdfa0, SR_READ | SR_WRITE}, + {"AMEVTYPER114_EL0", REG_AMEVTYPER114_EL0, 0x1bdfc0, SR_READ | SR_WRITE}, + {"AMEVTYPER115_EL0", REG_AMEVTYPER115_EL0, 0x1bdfe0, SR_READ | SR_WRITE}, + {"AMUSERENR_EL0", REG_AMUSERENR_EL0, 0x1bd260, SR_READ | SR_WRITE}, + {"APDAKeyHi_EL1", REG_APDAKeyHi_EL1, 0x182220, SR_READ | SR_WRITE}, + {"APDAKeyLo_EL1", REG_APDAKeyLo_EL1, 0x182200, SR_READ | SR_WRITE}, + {"APDBKeyHi_EL1", REG_APDBKeyHi_EL1, 0x182260, SR_READ | SR_WRITE}, + {"APDBKeyLo_EL1", REG_APDBKeyLo_EL1, 0x182240, SR_READ | SR_WRITE}, + {"APGAKeyHi_EL1", REG_APGAKeyHi_EL1, 0x182320, SR_READ | SR_WRITE}, + {"APGAKeyLo_EL1", REG_APGAKeyLo_EL1, 0x182300, SR_READ | SR_WRITE}, + {"APIAKeyHi_EL1", REG_APIAKeyHi_EL1, 0x182120, SR_READ | SR_WRITE}, + {"APIAKeyLo_EL1", REG_APIAKeyLo_EL1, 0x182100, SR_READ | SR_WRITE}, + {"APIBKeyHi_EL1", REG_APIBKeyHi_EL1, 0x182160, SR_READ | SR_WRITE}, + {"APIBKeyLo_EL1", REG_APIBKeyLo_EL1, 0x182140, SR_READ | SR_WRITE}, + {"CCSIDR2_EL1", REG_CCSIDR2_EL1, 0x190040, SR_READ}, + {"CCSIDR_EL1", REG_CCSIDR_EL1, 0x190000, SR_READ}, + {"CLIDR_EL1", REG_CLIDR_EL1, 0x190020, SR_READ}, + {"CNTFRQ_EL0", REG_CNTFRQ_EL0, 0x1be000, SR_READ | SR_WRITE}, + {"CNTKCTL_EL1", REG_CNTKCTL_EL1, 0x18e100, SR_READ | SR_WRITE}, + {"CNTP_CTL_EL0", REG_CNTP_CTL_EL0, 0x1be220, SR_READ | SR_WRITE}, + {"CNTP_CVAL_EL0", REG_CNTP_CVAL_EL0, 0x1be240, SR_READ | SR_WRITE}, + {"CNTP_TVAL_EL0", REG_CNTP_TVAL_EL0, 0x1be200, SR_READ | SR_WRITE}, + {"CNTPCT_EL0", REG_CNTPCT_EL0, 0x1be020, SR_READ}, + {"CNTPS_CTL_EL1", REG_CNTPS_CTL_EL1, 0x1fe220, SR_READ | SR_WRITE}, + {"CNTPS_CVAL_EL1", REG_CNTPS_CVAL_EL1, 0x1fe240, SR_READ | SR_WRITE}, + {"CNTPS_TVAL_EL1", REG_CNTPS_TVAL_EL1, 0x1fe200, SR_READ | SR_WRITE}, + {"CNTV_CTL_EL0", REG_CNTV_CTL_EL0, 0x1be320, SR_READ | SR_WRITE}, + {"CNTV_CVAL_EL0", REG_CNTV_CVAL_EL0, 0x1be340, SR_READ | SR_WRITE}, + {"CNTV_TVAL_EL0", REG_CNTV_TVAL_EL0, 0x1be300, SR_READ | SR_WRITE}, + {"CNTVCT_EL0", REG_CNTVCT_EL0, 0x1be040, SR_READ}, + {"CONTEXTIDR_EL1", REG_CONTEXTIDR_EL1, 0x18d020, SR_READ | SR_WRITE}, + {"CPACR_EL1", REG_CPACR_EL1, 0x181040, SR_READ | SR_WRITE}, + {"CSSELR_EL1", REG_CSSELR_EL1, 0x1a0000, SR_READ | SR_WRITE}, + {"CTR_EL0", REG_CTR_EL0, 0x1b0020, SR_READ}, + {"CurrentEL", REG_CurrentEL, 0x184240, SR_READ}, + {"DAIF", REG_DAIF, 0x1b4220, SR_READ | SR_WRITE}, + {"DBGAUTHSTATUS_EL1", REG_DBGAUTHSTATUS_EL1, 0x107ec0, SR_READ}, + {"DBGBCR0_EL1", REG_DBGBCR0_EL1, 0x1000a0, SR_READ | SR_WRITE}, + {"DBGBCR1_EL1", REG_DBGBCR1_EL1, 0x1001a0, SR_READ | SR_WRITE}, + {"DBGBCR2_EL1", REG_DBGBCR2_EL1, 0x1002a0, SR_READ | SR_WRITE}, + {"DBGBCR3_EL1", REG_DBGBCR3_EL1, 0x1003a0, SR_READ | SR_WRITE}, + {"DBGBCR4_EL1", REG_DBGBCR4_EL1, 0x1004a0, SR_READ | SR_WRITE}, + {"DBGBCR5_EL1", REG_DBGBCR5_EL1, 0x1005a0, SR_READ | SR_WRITE}, + {"DBGBCR6_EL1", REG_DBGBCR6_EL1, 0x1006a0, SR_READ | SR_WRITE}, + {"DBGBCR7_EL1", REG_DBGBCR7_EL1, 0x1007a0, SR_READ | SR_WRITE}, + {"DBGBCR8_EL1", REG_DBGBCR8_EL1, 0x1008a0, SR_READ | SR_WRITE}, + {"DBGBCR9_EL1", REG_DBGBCR9_EL1, 0x1009a0, SR_READ | SR_WRITE}, + {"DBGBCR10_EL1", REG_DBGBCR10_EL1, 0x100aa0, SR_READ | SR_WRITE}, + {"DBGBCR11_EL1", REG_DBGBCR11_EL1, 0x100ba0, SR_READ | SR_WRITE}, + {"DBGBCR12_EL1", REG_DBGBCR12_EL1, 0x100ca0, SR_READ | SR_WRITE}, + {"DBGBCR13_EL1", REG_DBGBCR13_EL1, 0x100da0, SR_READ | SR_WRITE}, + {"DBGBCR14_EL1", REG_DBGBCR14_EL1, 0x100ea0, SR_READ | SR_WRITE}, + {"DBGBCR15_EL1", REG_DBGBCR15_EL1, 0x100fa0, SR_READ | SR_WRITE}, + {"DBGBVR0_EL1", REG_DBGBVR0_EL1, 0x100080, SR_READ | SR_WRITE}, + {"DBGBVR1_EL1", REG_DBGBVR1_EL1, 0x100180, SR_READ | SR_WRITE}, + {"DBGBVR2_EL1", REG_DBGBVR2_EL1, 0x100280, SR_READ | SR_WRITE}, + {"DBGBVR3_EL1", REG_DBGBVR3_EL1, 0x100380, SR_READ | SR_WRITE}, + {"DBGBVR4_EL1", REG_DBGBVR4_EL1, 0x100480, SR_READ | SR_WRITE}, + {"DBGBVR5_EL1", REG_DBGBVR5_EL1, 0x100580, SR_READ | SR_WRITE}, + {"DBGBVR6_EL1", REG_DBGBVR6_EL1, 0x100680, SR_READ | SR_WRITE}, + {"DBGBVR7_EL1", REG_DBGBVR7_EL1, 0x100780, SR_READ | SR_WRITE}, + {"DBGBVR8_EL1", REG_DBGBVR8_EL1, 0x100880, SR_READ | SR_WRITE}, + {"DBGBVR9_EL1", REG_DBGBVR9_EL1, 0x100980, SR_READ | SR_WRITE}, + {"DBGBVR10_EL1", REG_DBGBVR10_EL1, 0x100a80, SR_READ | SR_WRITE}, + {"DBGBVR11_EL1", REG_DBGBVR11_EL1, 0x100b80, SR_READ | SR_WRITE}, + {"DBGBVR12_EL1", REG_DBGBVR12_EL1, 0x100c80, SR_READ | SR_WRITE}, + {"DBGBVR13_EL1", REG_DBGBVR13_EL1, 0x100d80, SR_READ | SR_WRITE}, + {"DBGBVR14_EL1", REG_DBGBVR14_EL1, 0x100e80, SR_READ | SR_WRITE}, + {"DBGBVR15_EL1", REG_DBGBVR15_EL1, 0x100f80, SR_READ | SR_WRITE}, + {"DBGCLAIMCLR_EL1", REG_DBGCLAIMCLR_EL1, 0x1079c0, SR_READ | SR_WRITE}, + {"DBGCLAIMSET_EL1", REG_DBGCLAIMSET_EL1, 0x1078c0, SR_READ | SR_WRITE}, + {"DBGDTR_EL0", REG_DBGDTR_EL0, 0x130400, SR_READ | SR_WRITE}, + {"DBGDTRRX_EL0", REG_DBGDTRRX_EL0, 0x130500, SR_READ}, + {"DBGDTRTX_EL0", REG_DBGDTRTX_EL0, 0x130500, SR_WRITE}, + {"DBGPRCR_EL1", REG_DBGPRCR_EL1, 0x101480, SR_READ | SR_WRITE}, + {"DBGWCR0_EL1", REG_DBGWCR0_EL1, 0x1000e0, SR_READ | SR_WRITE}, + {"DBGWCR1_EL1", REG_DBGWCR1_EL1, 0x1001e0, SR_READ | SR_WRITE}, + {"DBGWCR2_EL1", REG_DBGWCR2_EL1, 0x1002e0, SR_READ | SR_WRITE}, + {"DBGWCR3_EL1", REG_DBGWCR3_EL1, 0x1003e0, SR_READ | SR_WRITE}, + {"DBGWCR4_EL1", REG_DBGWCR4_EL1, 0x1004e0, SR_READ | SR_WRITE}, + {"DBGWCR5_EL1", REG_DBGWCR5_EL1, 0x1005e0, SR_READ | SR_WRITE}, + {"DBGWCR6_EL1", REG_DBGWCR6_EL1, 0x1006e0, SR_READ | SR_WRITE}, + {"DBGWCR7_EL1", REG_DBGWCR7_EL1, 0x1007e0, SR_READ | SR_WRITE}, + {"DBGWCR8_EL1", REG_DBGWCR8_EL1, 0x1008e0, SR_READ | SR_WRITE}, + {"DBGWCR9_EL1", REG_DBGWCR9_EL1, 0x1009e0, SR_READ | SR_WRITE}, + {"DBGWCR10_EL1", REG_DBGWCR10_EL1, 0x100ae0, SR_READ | SR_WRITE}, + {"DBGWCR11_EL1", REG_DBGWCR11_EL1, 0x100be0, SR_READ | SR_WRITE}, + {"DBGWCR12_EL1", REG_DBGWCR12_EL1, 0x100ce0, SR_READ | SR_WRITE}, + {"DBGWCR13_EL1", REG_DBGWCR13_EL1, 0x100de0, SR_READ | SR_WRITE}, + {"DBGWCR14_EL1", REG_DBGWCR14_EL1, 0x100ee0, SR_READ | SR_WRITE}, + {"DBGWCR15_EL1", REG_DBGWCR15_EL1, 0x100fe0, SR_READ | SR_WRITE}, + {"DBGWVR0_EL1", REG_DBGWVR0_EL1, 0x1000c0, SR_READ | SR_WRITE}, + {"DBGWVR1_EL1", REG_DBGWVR1_EL1, 0x1001c0, SR_READ | SR_WRITE}, + {"DBGWVR2_EL1", REG_DBGWVR2_EL1, 0x1002c0, SR_READ | SR_WRITE}, + {"DBGWVR3_EL1", REG_DBGWVR3_EL1, 0x1003c0, SR_READ | SR_WRITE}, + {"DBGWVR4_EL1", REG_DBGWVR4_EL1, 0x1004c0, SR_READ | SR_WRITE}, + {"DBGWVR5_EL1", REG_DBGWVR5_EL1, 0x1005c0, SR_READ | SR_WRITE}, + {"DBGWVR6_EL1", REG_DBGWVR6_EL1, 0x1006c0, SR_READ | SR_WRITE}, + {"DBGWVR7_EL1", REG_DBGWVR7_EL1, 0x1007c0, SR_READ | SR_WRITE}, + {"DBGWVR8_EL1", REG_DBGWVR8_EL1, 0x1008c0, SR_READ | SR_WRITE}, + {"DBGWVR9_EL1", REG_DBGWVR9_EL1, 0x1009c0, SR_READ | SR_WRITE}, + {"DBGWVR10_EL1", REG_DBGWVR10_EL1, 0x100ac0, SR_READ | SR_WRITE}, + {"DBGWVR11_EL1", REG_DBGWVR11_EL1, 0x100bc0, SR_READ | SR_WRITE}, + {"DBGWVR12_EL1", REG_DBGWVR12_EL1, 0x100cc0, SR_READ | SR_WRITE}, + {"DBGWVR13_EL1", REG_DBGWVR13_EL1, 0x100dc0, SR_READ | SR_WRITE}, + {"DBGWVR14_EL1", REG_DBGWVR14_EL1, 0x100ec0, SR_READ | SR_WRITE}, + {"DBGWVR15_EL1", REG_DBGWVR15_EL1, 0x100fc0, SR_READ | SR_WRITE}, + {"DCZID_EL0", REG_DCZID_EL0, 0x1b00e0, SR_READ}, + {"DISR_EL1", REG_DISR_EL1, 0x18c120, SR_READ | SR_WRITE}, + {"DIT", REG_DIT, 0x1b42a0, SR_READ | SR_WRITE}, + {"DLR_EL0", REG_DLR_EL0, 0x1b4520, SR_READ | SR_WRITE}, + {"DSPSR_EL0", REG_DSPSR_EL0, 0x1b4500, SR_READ | SR_WRITE}, + {"ELR_EL1", REG_ELR_EL1, 0x184020, SR_READ | SR_WRITE}, + {"ERRIDR_EL1", REG_ERRIDR_EL1, 0x185300, SR_READ}, + {"ERRSELR_EL1", REG_ERRSELR_EL1, 0x185320, SR_READ | SR_WRITE}, + {"ERXADDR_EL1", REG_ERXADDR_EL1, 0x185460, SR_READ | SR_WRITE}, + {"ERXCTLR_EL1", REG_ERXCTLR_EL1, 0x185420, SR_READ | SR_WRITE}, + {"ERXFR_EL1", REG_ERXFR_EL1, 0x185400, SR_READ}, + {"ERXMISC0_EL1", REG_ERXMISC0_EL1, 0x185500, SR_READ | SR_WRITE}, + {"ERXMISC1_EL1", REG_ERXMISC1_EL1, 0x185520, SR_READ | SR_WRITE}, + {"ERXMISC2_EL1", REG_ERXMISC2_EL1, 0x185540, SR_READ | SR_WRITE}, + {"ERXMISC3_EL1", REG_ERXMISC3_EL1, 0x185560, SR_READ | SR_WRITE}, + {"ERXPFGCDN_EL1", REG_ERXPFGCDN_EL1, 0x1854c0, SR_READ | SR_WRITE}, + {"ERXPFGCTL_EL1", REG_ERXPFGCTL_EL1, 0x1854a0, SR_READ | SR_WRITE}, + {"ERXPFGF_EL1", REG_ERXPFGF_EL1, 0x185480, SR_READ}, + {"ERXSTATUS_EL1", REG_ERXSTATUS_EL1, 0x185440, SR_READ | SR_WRITE}, + {"ESR_EL1", REG_ESR_EL1, 0x185200, SR_READ | SR_WRITE}, + {"FAR_EL1", REG_FAR_EL1, 0x186000, SR_READ | SR_WRITE}, + {"FPCR", REG_FPCR, 0x1b4400, SR_READ | SR_WRITE}, + {"FPSR", REG_FPSR, 0x1b4420, SR_READ | SR_WRITE}, + {"GCR_EL1", REG_GCR_EL1, 0x1810c0, SR_READ | SR_WRITE}, + {"GMID_EL1", REG_GMID_EL1, 0x31400, SR_READ}, + {"ICC_AP0R0_EL1", REG_ICC_AP0R0_EL1, 0x18c880, SR_READ | SR_WRITE}, + {"ICC_AP0R1_EL1", REG_ICC_AP0R1_EL1, 0x18c8a0, SR_READ | SR_WRITE}, + {"ICC_AP0R2_EL1", REG_ICC_AP0R2_EL1, 0x18c8c0, SR_READ | SR_WRITE}, + {"ICC_AP0R3_EL1", REG_ICC_AP0R3_EL1, 0x18c8e0, SR_READ | SR_WRITE}, + {"ICC_AP1R0_EL1", REG_ICC_AP1R0_EL1, 0x18c900, SR_READ | SR_WRITE}, + {"ICC_AP1R1_EL1", REG_ICC_AP1R1_EL1, 0x18c920, SR_READ | SR_WRITE}, + {"ICC_AP1R2_EL1", REG_ICC_AP1R2_EL1, 0x18c940, SR_READ | SR_WRITE}, + {"ICC_AP1R3_EL1", REG_ICC_AP1R3_EL1, 0x18c960, SR_READ | SR_WRITE}, + {"ICC_ASGI1R_EL1", REG_ICC_ASGI1R_EL1, 0x18cbc0, SR_WRITE}, + {"ICC_BPR0_EL1", REG_ICC_BPR0_EL1, 0x18c860, SR_READ | SR_WRITE}, + {"ICC_BPR1_EL1", REG_ICC_BPR1_EL1, 0x18cc60, SR_READ | SR_WRITE}, + {"ICC_CTLR_EL1", REG_ICC_CTLR_EL1, 0x18cc80, SR_READ | SR_WRITE}, + {"ICC_DIR_EL1", REG_ICC_DIR_EL1, 0x18cb20, SR_WRITE}, + {"ICC_EOIR0_EL1", REG_ICC_EOIR0_EL1, 0x18c820, SR_WRITE}, + {"ICC_EOIR1_EL1", REG_ICC_EOIR1_EL1, 0x18cc20, SR_WRITE}, + {"ICC_HPPIR0_EL1", REG_ICC_HPPIR0_EL1, 0x18c840, SR_READ}, + {"ICC_HPPIR1_EL1", REG_ICC_HPPIR1_EL1, 0x18cc40, SR_READ}, + {"ICC_IAR0_EL1", REG_ICC_IAR0_EL1, 0x18c800, SR_READ}, + {"ICC_IAR1_EL1", REG_ICC_IAR1_EL1, 0x18cc00, SR_READ}, + {"ICC_IGRPEN0_EL1", REG_ICC_IGRPEN0_EL1, 0x18ccc0, SR_READ | SR_WRITE}, + {"ICC_IGRPEN1_EL1", REG_ICC_IGRPEN1_EL1, 0x18cce0, SR_READ | SR_WRITE}, + {"ICC_PMR_EL1", REG_ICC_PMR_EL1, 0x184600, SR_READ | SR_WRITE}, + {"ICC_RPR_EL1", REG_ICC_RPR_EL1, 0x18cb60, SR_READ}, + {"ICC_SGI0R_EL1", REG_ICC_SGI0R_EL1, 0x18cbe0, SR_WRITE}, + {"ICC_SGI1R_EL1", REG_ICC_SGI1R_EL1, 0x18cba0, SR_WRITE}, + {"ICC_SRE_EL1", REG_ICC_SRE_EL1, 0x18cca0, SR_READ | SR_WRITE}, + {"ICV_AP0R0_EL1", REG_ICV_AP0R0_EL1, 0x18c880, SR_READ | SR_WRITE}, + {"ICV_AP0R1_EL1", REG_ICV_AP0R1_EL1, 0x18c8a0, SR_READ | SR_WRITE}, + {"ICV_AP0R2_EL1", REG_ICV_AP0R2_EL1, 0x18c8c0, SR_READ | SR_WRITE}, + {"ICV_AP0R3_EL1", REG_ICV_AP0R3_EL1, 0x18c8e0, SR_READ | SR_WRITE}, + {"ICV_AP1R0_EL1", REG_ICV_AP1R0_EL1, 0x18c900, SR_READ | SR_WRITE}, + {"ICV_AP1R1_EL1", REG_ICV_AP1R1_EL1, 0x18c920, SR_READ | SR_WRITE}, + {"ICV_AP1R2_EL1", REG_ICV_AP1R2_EL1, 0x18c940, SR_READ | SR_WRITE}, + {"ICV_AP1R3_EL1", REG_ICV_AP1R3_EL1, 0x18c960, SR_READ | SR_WRITE}, + {"ICV_BPR0_EL1", REG_ICV_BPR0_EL1, 0x18c860, SR_READ | SR_WRITE}, + {"ICV_BPR1_EL1", REG_ICV_BPR1_EL1, 0x18cc60, SR_READ | SR_WRITE}, + {"ICV_CTLR_EL1", REG_ICV_CTLR_EL1, 0x18cc80, SR_READ | SR_WRITE}, + {"ICV_DIR_EL1", REG_ICV_DIR_EL1, 0x18cb20, SR_WRITE}, + {"ICV_EOIR0_EL1", REG_ICV_EOIR0_EL1, 0x18c820, SR_WRITE}, + {"ICV_EOIR1_EL1", REG_ICV_EOIR1_EL1, 0x18cc20, SR_WRITE}, + {"ICV_HPPIR0_EL1", REG_ICV_HPPIR0_EL1, 0x18c840, SR_READ}, + {"ICV_HPPIR1_EL1", REG_ICV_HPPIR1_EL1, 0x18cc40, SR_READ}, + {"ICV_IAR0_EL1", REG_ICV_IAR0_EL1, 0x18c800, SR_READ}, + {"ICV_IAR1_EL1", REG_ICV_IAR1_EL1, 0x18cc00, SR_READ}, + {"ICV_IGRPEN0_EL1", REG_ICV_IGRPEN0_EL1, 0x18ccc0, SR_READ | SR_WRITE}, + {"ICV_IGRPEN1_EL1", REG_ICV_IGRPEN1_EL1, 0x18cce0, SR_READ | SR_WRITE}, + {"ICV_PMR_EL1", REG_ICV_PMR_EL1, 0x184600, SR_READ | SR_WRITE}, + {"ICV_RPR_EL1", REG_ICV_RPR_EL1, 0x18cb60, SR_READ}, + {"ID_AA64AFR0_EL1", REG_ID_AA64AFR0_EL1, 0x180580, SR_READ}, + {"ID_AA64AFR1_EL1", REG_ID_AA64AFR1_EL1, 0x1805a0, SR_READ}, + {"ID_AA64DFR0_EL1", REG_ID_AA64DFR0_EL1, 0x180500, SR_READ}, + {"ID_AA64DFR1_EL1", REG_ID_AA64DFR1_EL1, 0x180520, SR_READ}, + {"ID_AA64ISAR0_EL1", REG_ID_AA64ISAR0_EL1, 0x180600, SR_READ}, + {"ID_AA64ISAR1_EL1", REG_ID_AA64ISAR1_EL1, 0x180620, SR_READ}, + {"ID_AA64MMFR0_EL1", REG_ID_AA64MMFR0_EL1, 0x180700, SR_READ}, + {"ID_AA64MMFR1_EL1", REG_ID_AA64MMFR1_EL1, 0x180720, SR_READ}, + {"ID_AA64MMFR2_EL1", REG_ID_AA64MMFR2_EL1, 0x180740, SR_READ}, + {"ID_AA64PFR0_EL1", REG_ID_AA64PFR0_EL1, 0x180400, SR_READ}, + {"ID_AA64PFR1_EL1", REG_ID_AA64PFR1_EL1, 0x180420, SR_READ}, + {"ID_AA64ZFR0_EL1", REG_ID_AA64ZFR0_EL1, 0x180480, SR_READ}, + {"ID_AFR0_EL1", REG_ID_AFR0_EL1, 0x180160, SR_READ}, + {"ID_DFR0_EL1", REG_ID_DFR0_EL1, 0x180140, SR_READ}, + {"ID_ISAR0_EL1", REG_ID_ISAR0_EL1, 0x180200, SR_READ}, + {"ID_ISAR1_EL1", REG_ID_ISAR1_EL1, 0x180220, SR_READ}, + {"ID_ISAR2_EL1", REG_ID_ISAR2_EL1, 0x180240, SR_READ}, + {"ID_ISAR3_EL1", REG_ID_ISAR3_EL1, 0x180260, SR_READ}, + {"ID_ISAR4_EL1", REG_ID_ISAR4_EL1, 0x180280, SR_READ}, + {"ID_ISAR5_EL1", REG_ID_ISAR5_EL1, 0x1802a0, SR_READ}, + {"ID_ISAR6_EL1", REG_ID_ISAR6_EL1, 0x1802e0, SR_READ}, + {"ID_MMFR0_EL1", REG_ID_MMFR0_EL1, 0x180180, SR_READ}, + {"ID_MMFR1_EL1", REG_ID_MMFR1_EL1, 0x1801a0, SR_READ}, + {"ID_MMFR2_EL1", REG_ID_MMFR2_EL1, 0x1801c0, SR_READ}, + {"ID_MMFR3_EL1", REG_ID_MMFR3_EL1, 0x1801e0, SR_READ}, + {"ID_MMFR4_EL1", REG_ID_MMFR4_EL1, 0x1802c0, SR_READ}, + {"ID_PFR0_EL1", REG_ID_PFR0_EL1, 0x180100, SR_READ}, + {"ID_PFR1_EL1", REG_ID_PFR1_EL1, 0x180120, SR_READ}, + {"ID_PFR2_EL1", REG_ID_PFR2_EL1, 0x180380, SR_READ}, + {"ISR_EL1", REG_ISR_EL1, 0x18c100, SR_READ}, + {"LORC_EL1", REG_LORC_EL1, 0x18a460, SR_READ | SR_WRITE}, + {"LOREA_EL1", REG_LOREA_EL1, 0x18a420, SR_READ | SR_WRITE}, + {"LORID_EL1", REG_LORID_EL1, 0x18a4e0, SR_READ}, + {"LORN_EL1", REG_LORN_EL1, 0x18a440, SR_READ | SR_WRITE}, + {"LORSA_EL1", REG_LORSA_EL1, 0x18a400, SR_READ | SR_WRITE}, + {"MAIR_EL1", REG_MAIR_EL1, 0x18a200, SR_READ | SR_WRITE}, + {"MDCCINT_EL1", REG_MDCCINT_EL1, 0x100200, SR_READ | SR_WRITE}, + {"MDCCSR_EL0", REG_MDCCSR_EL0, 0x130100, SR_READ}, + {"MDRAR_EL1", REG_MDRAR_EL1, 0x101000, SR_READ}, + {"MDSCR_EL1", REG_MDSCR_EL1, 0x100240, SR_READ | SR_WRITE}, + {"MIDR_EL1", REG_MIDR_EL1, 0x180000, SR_READ}, + {"MPAM0_EL1", REG_MPAM0_EL1, 0x18a520, SR_READ | SR_WRITE}, + {"MPAM1_EL1", REG_MPAM1_EL1, 0x18a500, SR_READ | SR_WRITE}, + {"MPAMIDR_EL1", REG_MPAMIDR_EL1, 0x18a480, SR_READ}, + {"MPIDR_EL1", REG_MPIDR_EL1, 0x1800a0, SR_READ}, + {"MVFR0_EL1", REG_MVFR0_EL1, 0x180300, SR_READ}, + {"MVFR1_EL1", REG_MVFR1_EL1, 0x180320, SR_READ}, + {"MVFR2_EL1", REG_MVFR2_EL1, 0x180340, SR_READ}, + {"NZCV", REG_NZCV, 0x1b4200, SR_READ | SR_WRITE}, + {"OSDLR_EL1", REG_OSDLR_EL1, 0x101380, SR_READ | SR_WRITE}, + {"OSDTRRX_EL1", REG_OSDTRRX_EL1, 0x100040, SR_READ | SR_WRITE}, + {"OSDTRTX_EL1", REG_OSDTRTX_EL1, 0x100340, SR_READ | SR_WRITE}, + {"OSECCR_EL1", REG_OSECCR_EL1, 0x100640, SR_READ | SR_WRITE}, + {"OSLAR_EL1", REG_OSLAR_EL1, 0x101080, SR_WRITE}, + {"OSLSR_EL1", REG_OSLSR_EL1, 0x101180, SR_READ}, + {"PAN", REG_PAN, 0x184260, SR_READ | SR_WRITE}, + {"PAR_EL1", REG_PAR_EL1, 0x187400, SR_READ | SR_WRITE}, + {"PMBIDR_EL1", REG_PMBIDR_EL1, 0x189ae0, SR_READ}, + {"PMBLIMITR_EL1", REG_PMBLIMITR_EL1, 0x189a00, SR_READ | SR_WRITE}, + {"PMBPTR_EL1", REG_PMBPTR_EL1, 0x189a20, SR_READ | SR_WRITE}, + {"PMBSR_EL1", REG_PMBSR_EL1, 0x189a60, SR_READ | SR_WRITE}, + {"PMCCFILTR_EL0", REG_PMCCFILTR_EL0, 0x1befe0, SR_READ | SR_WRITE}, + {"PMCCNTR_EL0", REG_PMCCNTR_EL0, 0x1b9d00, SR_READ | SR_WRITE}, + {"PMCEID0_EL0", REG_PMCEID0_EL0, 0x1b9cc0, SR_READ}, + {"PMCEID1_EL0", REG_PMCEID1_EL0, 0x1b9ce0, SR_READ}, + {"PMCNTENCLR_EL0", REG_PMCNTENCLR_EL0, 0x1b9c40, SR_READ | SR_WRITE}, + {"PMCNTENSET_EL0", REG_PMCNTENSET_EL0, 0x1b9c20, SR_READ | SR_WRITE}, + {"PMCR_EL0", REG_PMCR_EL0, 0x1b9c00, SR_READ | SR_WRITE}, + {"PMEVCNTR0_EL0", REG_PMEVCNTR0_EL0, 0x1be800, SR_READ | SR_WRITE}, + {"PMEVCNTR1_EL0", REG_PMEVCNTR1_EL0, 0x1be820, SR_READ | SR_WRITE}, + {"PMEVCNTR2_EL0", REG_PMEVCNTR2_EL0, 0x1be840, SR_READ | SR_WRITE}, + {"PMEVCNTR3_EL0", REG_PMEVCNTR3_EL0, 0x1be860, SR_READ | SR_WRITE}, + {"PMEVCNTR4_EL0", REG_PMEVCNTR4_EL0, 0x1be880, SR_READ | SR_WRITE}, + {"PMEVCNTR5_EL0", REG_PMEVCNTR5_EL0, 0x1be8a0, SR_READ | SR_WRITE}, + {"PMEVCNTR6_EL0", REG_PMEVCNTR6_EL0, 0x1be8c0, SR_READ | SR_WRITE}, + {"PMEVCNTR7_EL0", REG_PMEVCNTR7_EL0, 0x1be8e0, SR_READ | SR_WRITE}, + {"PMEVCNTR8_EL0", REG_PMEVCNTR8_EL0, 0x1be900, SR_READ | SR_WRITE}, + {"PMEVCNTR9_EL0", REG_PMEVCNTR9_EL0, 0x1be920, SR_READ | SR_WRITE}, + {"PMEVCNTR10_EL0", REG_PMEVCNTR10_EL0, 0x1be940, SR_READ | SR_WRITE}, + {"PMEVCNTR11_EL0", REG_PMEVCNTR11_EL0, 0x1be960, SR_READ | SR_WRITE}, + {"PMEVCNTR12_EL0", REG_PMEVCNTR12_EL0, 0x1be980, SR_READ | SR_WRITE}, + {"PMEVCNTR13_EL0", REG_PMEVCNTR13_EL0, 0x1be9a0, SR_READ | SR_WRITE}, + {"PMEVCNTR14_EL0", REG_PMEVCNTR14_EL0, 0x1be9c0, SR_READ | SR_WRITE}, + {"PMEVCNTR15_EL0", REG_PMEVCNTR15_EL0, 0x1be9e0, SR_READ | SR_WRITE}, + {"PMEVCNTR16_EL0", REG_PMEVCNTR16_EL0, 0x1bea00, SR_READ | SR_WRITE}, + {"PMEVCNTR17_EL0", REG_PMEVCNTR17_EL0, 0x1bea20, SR_READ | SR_WRITE}, + {"PMEVCNTR18_EL0", REG_PMEVCNTR18_EL0, 0x1bea40, SR_READ | SR_WRITE}, + {"PMEVCNTR19_EL0", REG_PMEVCNTR19_EL0, 0x1bea60, SR_READ | SR_WRITE}, + {"PMEVCNTR20_EL0", REG_PMEVCNTR20_EL0, 0x1bea80, SR_READ | SR_WRITE}, + {"PMEVCNTR21_EL0", REG_PMEVCNTR21_EL0, 0x1beaa0, SR_READ | SR_WRITE}, + {"PMEVCNTR22_EL0", REG_PMEVCNTR22_EL0, 0x1beac0, SR_READ | SR_WRITE}, + {"PMEVCNTR23_EL0", REG_PMEVCNTR23_EL0, 0x1beae0, SR_READ | SR_WRITE}, + {"PMEVCNTR24_EL0", REG_PMEVCNTR24_EL0, 0x1beb00, SR_READ | SR_WRITE}, + {"PMEVCNTR25_EL0", REG_PMEVCNTR25_EL0, 0x1beb20, SR_READ | SR_WRITE}, + {"PMEVCNTR26_EL0", REG_PMEVCNTR26_EL0, 0x1beb40, SR_READ | SR_WRITE}, + {"PMEVCNTR27_EL0", REG_PMEVCNTR27_EL0, 0x1beb60, SR_READ | SR_WRITE}, + {"PMEVCNTR28_EL0", REG_PMEVCNTR28_EL0, 0x1beb80, SR_READ | SR_WRITE}, + {"PMEVCNTR29_EL0", REG_PMEVCNTR29_EL0, 0x1beba0, SR_READ | SR_WRITE}, + {"PMEVCNTR30_EL0", REG_PMEVCNTR30_EL0, 0x1bebc0, SR_READ | SR_WRITE}, + {"PMEVTYPER0_EL0", REG_PMEVTYPER0_EL0, 0x1bec00, SR_READ | SR_WRITE}, + {"PMEVTYPER1_EL0", REG_PMEVTYPER1_EL0, 0x1bec20, SR_READ | SR_WRITE}, + {"PMEVTYPER2_EL0", REG_PMEVTYPER2_EL0, 0x1bec40, SR_READ | SR_WRITE}, + {"PMEVTYPER3_EL0", REG_PMEVTYPER3_EL0, 0x1bec60, SR_READ | SR_WRITE}, + {"PMEVTYPER4_EL0", REG_PMEVTYPER4_EL0, 0x1bec80, SR_READ | SR_WRITE}, + {"PMEVTYPER5_EL0", REG_PMEVTYPER5_EL0, 0x1beca0, SR_READ | SR_WRITE}, + {"PMEVTYPER6_EL0", REG_PMEVTYPER6_EL0, 0x1becc0, SR_READ | SR_WRITE}, + {"PMEVTYPER7_EL0", REG_PMEVTYPER7_EL0, 0x1bece0, SR_READ | SR_WRITE}, + {"PMEVTYPER8_EL0", REG_PMEVTYPER8_EL0, 0x1bed00, SR_READ | SR_WRITE}, + {"PMEVTYPER9_EL0", REG_PMEVTYPER9_EL0, 0x1bed20, SR_READ | SR_WRITE}, + {"PMEVTYPER10_EL0", REG_PMEVTYPER10_EL0, 0x1bed40, SR_READ | SR_WRITE}, + {"PMEVTYPER11_EL0", REG_PMEVTYPER11_EL0, 0x1bed60, SR_READ | SR_WRITE}, + {"PMEVTYPER12_EL0", REG_PMEVTYPER12_EL0, 0x1bed80, SR_READ | SR_WRITE}, + {"PMEVTYPER13_EL0", REG_PMEVTYPER13_EL0, 0x1beda0, SR_READ | SR_WRITE}, + {"PMEVTYPER14_EL0", REG_PMEVTYPER14_EL0, 0x1bedc0, SR_READ | SR_WRITE}, + {"PMEVTYPER15_EL0", REG_PMEVTYPER15_EL0, 0x1bede0, SR_READ | SR_WRITE}, + {"PMEVTYPER16_EL0", REG_PMEVTYPER16_EL0, 0x1bee00, SR_READ | SR_WRITE}, + {"PMEVTYPER17_EL0", REG_PMEVTYPER17_EL0, 0x1bee20, SR_READ | SR_WRITE}, + {"PMEVTYPER18_EL0", REG_PMEVTYPER18_EL0, 0x1bee40, SR_READ | SR_WRITE}, + {"PMEVTYPER19_EL0", REG_PMEVTYPER19_EL0, 0x1bee60, SR_READ | SR_WRITE}, + {"PMEVTYPER20_EL0", REG_PMEVTYPER20_EL0, 0x1bee80, SR_READ | SR_WRITE}, + {"PMEVTYPER21_EL0", REG_PMEVTYPER21_EL0, 0x1beea0, SR_READ | SR_WRITE}, + {"PMEVTYPER22_EL0", REG_PMEVTYPER22_EL0, 0x1beec0, SR_READ | SR_WRITE}, + {"PMEVTYPER23_EL0", REG_PMEVTYPER23_EL0, 0x1beee0, SR_READ | SR_WRITE}, + {"PMEVTYPER24_EL0", REG_PMEVTYPER24_EL0, 0x1bef00, SR_READ | SR_WRITE}, + {"PMEVTYPER25_EL0", REG_PMEVTYPER25_EL0, 0x1bef20, SR_READ | SR_WRITE}, + {"PMEVTYPER26_EL0", REG_PMEVTYPER26_EL0, 0x1bef40, SR_READ | SR_WRITE}, + {"PMEVTYPER27_EL0", REG_PMEVTYPER27_EL0, 0x1bef60, SR_READ | SR_WRITE}, + {"PMEVTYPER28_EL0", REG_PMEVTYPER28_EL0, 0x1bef80, SR_READ | SR_WRITE}, + {"PMEVTYPER29_EL0", REG_PMEVTYPER29_EL0, 0x1befa0, SR_READ | SR_WRITE}, + {"PMEVTYPER30_EL0", REG_PMEVTYPER30_EL0, 0x1befc0, SR_READ | SR_WRITE}, + {"PMINTENCLR_EL1", REG_PMINTENCLR_EL1, 0x189e40, SR_READ | SR_WRITE}, + {"PMINTENSET_EL1", REG_PMINTENSET_EL1, 0x189e20, SR_READ | SR_WRITE}, + {"PMMIR_EL1", REG_PMMIR_EL1, 0x189ec0, SR_READ}, + {"PMOVSCLR_EL0", REG_PMOVSCLR_EL0, 0x1b9c60, SR_READ | SR_WRITE}, + {"PMOVSSET_EL0", REG_PMOVSSET_EL0, 0x1b9e60, SR_READ | SR_WRITE}, + {"PMSCR_EL1", REG_PMSCR_EL1, 0x189900, SR_READ | SR_WRITE}, + {"PMSELR_EL0", REG_PMSELR_EL0, 0x1b9ca0, SR_READ | SR_WRITE}, + {"PMSEVFR_EL1", REG_PMSEVFR_EL1, 0x1899a0, SR_READ | SR_WRITE}, + {"PMSFCR_EL1", REG_PMSFCR_EL1, 0x189980, SR_READ | SR_WRITE}, + {"PMSICR_EL1", REG_PMSICR_EL1, 0x189940, SR_READ | SR_WRITE}, + {"PMSIDR_EL1", REG_PMSIDR_EL1, 0x1899e0, SR_READ}, + {"PMSIRR_EL1", REG_PMSIRR_EL1, 0x189960, SR_READ | SR_WRITE}, + {"PMSLATFR_EL1", REG_PMSLATFR_EL1, 0x1899c0, SR_READ | SR_WRITE}, + {"PMSWINC_EL0", REG_PMSWINC_EL0, 0x1b9c80, SR_WRITE}, + {"PMUSERENR_EL0", REG_PMUSERENR_EL0, 0x1b9e00, SR_READ | SR_WRITE}, + {"PMXEVCNTR_EL0", REG_PMXEVCNTR_EL0, 0x1b9d40, SR_READ | SR_WRITE}, + {"PMXEVTYPER_EL0", REG_PMXEVTYPER_EL0, 0x1b9d20, SR_READ | SR_WRITE}, + {"REVIDR_EL1", REG_REVIDR_EL1, 0x1800c0, SR_READ}, + {"RGSR_EL1", REG_RGSR_EL1, 0x1810a0, SR_READ | SR_WRITE}, + {"RMR_EL1", REG_RMR_EL1, 0x18c040, SR_READ | SR_WRITE}, + {"RNDR", REG_RNDR, 0x1b2400, SR_READ}, + {"RNDRRS", REG_RNDRRS, 0x1b2420, SR_READ}, + {"RVBAR_EL1", REG_RVBAR_EL1, 0x18c020, SR_READ}, + {"SCTLR_EL1", REG_SCTLR_EL1, 0x181000, SR_READ | SR_WRITE}, + {"SCXTNUM_EL0", REG_SCXTNUM_EL0, 0x1bd0e0, SR_READ | SR_WRITE}, + {"SCXTNUM_EL1", REG_SCXTNUM_EL1, 0x18d0e0, SR_READ | SR_WRITE}, + {"SP_EL0", REG_SP_EL0, 0x184100, SR_READ | SR_WRITE}, + {"SP_EL1", REG_SP_EL1, 0x1c4100, SR_READ | SR_WRITE}, + {"SPSel", REG_SPSel, 0x184200, SR_READ | SR_WRITE}, + {"SPSR_abt", REG_SPSR_abt, 0x1c4320, SR_READ | SR_WRITE}, + {"SPSR_EL1", REG_SPSR_EL1, 0x184000, SR_READ | SR_WRITE}, + {"SPSR_fiq", REG_SPSR_fiq, 0x1c4360, SR_READ | SR_WRITE}, + {"SPSR_irq", REG_SPSR_irq, 0x1c4300, SR_READ | SR_WRITE}, + {"SPSR_und", REG_SPSR_und, 0x1c4340, SR_READ | SR_WRITE}, + {"SSBS", REG_SSBS, 0x1b42c0, SR_READ | SR_WRITE}, + {"TCO", REG_TCO, 0x1b42e0, SR_READ | SR_WRITE}, + {"TCR_EL1", REG_TCR_EL1, 0x182040, SR_READ | SR_WRITE}, + {"TFSR_EL1", REG_TFSR_EL1, 0x185600, SR_READ | SR_WRITE}, + {"TFSRE0_EL1", REG_TFSRE0_EL1, 0x185620, SR_READ | SR_WRITE}, + {"TPIDR_EL0", REG_TPIDR_EL0, 0x1bd040, SR_READ | SR_WRITE}, + {"TPIDR_EL1", REG_TPIDR_EL1, 0x18d080, SR_READ | SR_WRITE}, + {"TPIDRRO_EL0", REG_TPIDRRO_EL0, 0x1bd060, SR_READ | SR_WRITE}, + {"TRFCR_EL1", REG_TRFCR_EL1, 0x181220, SR_READ | SR_WRITE}, + {"TTBR0_EL1", REG_TTBR0_EL1, 0x182000, SR_READ | SR_WRITE}, + {"TTBR1_EL1", REG_TTBR1_EL1, 0x182020, SR_READ | SR_WRITE}, + {"UAO", REG_UAO, 0x184280, SR_READ | SR_WRITE}, + {"VBAR_EL1", REG_VBAR_EL1, 0x18c000, SR_READ | SR_WRITE}, + {"ZCR_EL1", REG_ZCR_EL1, 0x181200, SR_READ | SR_WRITE}, } -func SysRegEnc(r int16) (string, uint32) { +func SysRegEnc(r int16) (string, uint32, uint8) { // The automatic generator guarantees that the order // of Reg in SystemReg struct is consistent with the // order of system register declarations - if r <= AUTO_SYSREG_BEGIN || r >= AUTO_SYSREG_END { - return "", 0 + if r <= SYSREG_BEGIN || r >= SYSREG_END { + return "", 0, 0 } - v := SystemReg[r-AUTO_SYSREG_BEGIN-1] - return v.Name, v.Enc + v := SystemReg[r-SYSREG_BEGIN-1] + return v.Name, v.Enc, v.AccessFlags }