Skip to content

Instantly share code, notes, and snippets.

@skochinsky
Forked from bazad/arm64_sysregs_ios.py
Created December 8, 2020 23:02
Show Gist options
  • Save skochinsky/d2d3d74191dd8294f46b3fbaf04458de to your computer and use it in GitHub Desktop.
Save skochinsky/d2d3d74191dd8294f46b3fbaf04458de to your computer and use it in GitHub Desktop.
Label iOS arm64 system registers in IDA Pro
#
# arm64_sysregs_ios.py
# Brandon Azad
#
# Based on https://github.com/gdelugre/ida-arm-system-highlight by Guillaume Delugre.
#
import idautils
import idc
# AArch64 PSTATE accesses (op0 = 0b00, CRn = 0b0100).
PSTATE_ACCESS = {
0b011 : 'UAO',
0b100 : 'PAN',
0b101 : 'SPSel',
0b110 : 'DAIFSet',
0b111 : 'DAIFClr',
}
# AArch64 system registers (op0 = 0b01, 0b10, 0b11).
SYSTEM_REGISTERS = {
# SysReg_xml_v86A-2020-03
'S1_0_c7_c1_0' : ( 'IC IALLUIS', 'Instruction Cache Invalidate All to PoU, Inner Shareable' ),
'S1_0_c7_c5_0' : ( 'IC IALLU', 'Instruction Cache Invalidate All to PoU' ),
'S1_0_c7_c6_1' : ( 'DC IVAC', 'Data or unified Cache line Invalidate by VA to PoC' ),
'S1_0_c7_c6_2' : ( 'DC ISW', 'Data or unified Cache line Invalidate by Set/Way' ),
'S1_0_c7_c6_3' : ( 'DC IGVAC', 'Data, Allocation Tag or unified Cache line Invalidate of Allocation Tags by VA to PoC' ),
'S1_0_c7_c6_4' : ( 'DC IGSW', 'Data, Allocation Tag or unified Cache line Invalidate of Allocation Tags by Set/Way' ),
'S1_0_c7_c6_5' : ( 'DC IGDVAC', 'Data, Allocation Tag or unified Cache line Invalidate of Allocation Tags by VA to PoC' ),
'S1_0_c7_c6_6' : ( 'DC IGDSW', 'Data, Allocation Tag or unified Cache line Invalidate of Data and Allocation Tags by Set/Way' ),
'S1_0_c7_c8_0' : ( 'AT S1E1R', 'Address Translate Stage 1 EL1 Read' ),
'S1_0_c7_c8_1' : ( 'AT S1E1W', 'Address Translate Stage 1 EL1 Write' ),
'S1_0_c7_c8_2' : ( 'AT S1E0R', 'Address Translate Stage 1 EL0 Read' ),
'S1_0_c7_c8_3' : ( 'AT S1E0W', 'Address Translate Stage 1 EL0 Write' ),
'S1_0_c7_c9_0' : ( 'AT S1E1RP', 'Address Translate Stage 1 EL1 Read PAN' ),
'S1_0_c7_c9_1' : ( 'AT S1E1WP', 'Address Translate Stage 1 EL1 Write PAN' ),
'S1_0_c7_c10_2' : ( 'DC CSW', 'Data or unified Cache line Clean by Set/Way' ),
'S1_0_c7_c10_4' : ( 'DC CGSW', 'Data, Allocation Tag or unified Cache line Clean of Allocation Tags by Set/Way' ),
'S1_0_c7_c10_6' : ( 'DC CGDSW', 'Data, Allocation Tag or unified Cache line Clean of Data and Allocation Tags by Set/Way' ),
'S1_0_c7_c14_2' : ( 'DC CISW', 'Data or unified Cache line Clean and Invalidate by Set/Way' ),
'S1_0_c7_c14_4' : ( 'DC CIGSW', 'Data, Allocation Tag or unified Cache line Clean and Invalidate of Allocation Tags by Set/Way' ),
'S1_0_c7_c14_6' : ( 'DC CIGDSW', 'Data, Allocation Tag or unified Cache line Clean and Invalidate of Data and Allocation Tags by Set/Way' ),
'S1_0_c8_c1_0' : ( 'TLBI VMALLE1OS', 'TLB Invalidate by VMID, All at stage 1, EL1, Outer Shareable' ),
'S1_0_c8_c1_1' : ( 'TLBI VAE1OS', 'TLB Invalidate by VA, EL1, Outer Shareable' ),
'S1_0_c8_c1_2' : ( 'TLBI ASIDE1OS', 'TLB Invalidate by ASID, EL1, Outer Shareable' ),
'S1_0_c8_c1_3' : ( 'TLBI VAAE1OS', 'TLB Invalidate by VA, All ASID, EL1, Outer Shareable' ),
'S1_0_c8_c1_5' : ( 'TLBI VALE1OS', 'TLB Invalidate by VA, Last level, EL1, Outer Shareable' ),
'S1_0_c8_c1_7' : ( 'TLBI VAALE1OS', 'TLB Invalidate by VA, All ASID, Last Level, EL1, Outer Shareable' ),
'S1_0_c8_c2_1' : ( 'TLBI RVAE1IS', 'TLB Range Invalidate by VA, EL1, Inner Shareable' ),
'S1_0_c8_c2_3' : ( 'TLBI RVAAE1IS', 'TLB Range Invalidate by VA, All ASID, EL1, Inner Shareable' ),
'S1_0_c8_c2_5' : ( 'TLBI RVALE1IS', 'TLB Range Invalidate by VA, Last level, EL1, Inner Shareable' ),
'S1_0_c8_c2_7' : ( 'TLBI RVAALE1IS', 'TLB Range Invalidate by VA, All ASID, Last Level, EL1, Inner Shareable' ),
'S1_0_c8_c3_0' : ( 'TLBI VMALLE1IS', 'TLB Invalidate by VMID, All at stage 1, EL1, Inner Shareable' ),
'S1_0_c8_c3_1' : ( 'TLBI VAE1IS', 'TLB Invalidate by VA, EL1, Inner Shareable' ),
'S1_0_c8_c3_2' : ( 'TLBI ASIDE1IS', 'TLB Invalidate by ASID, EL1, Inner Shareable' ),
'S1_0_c8_c3_3' : ( 'TLBI VAAE1IS', 'TLB Invalidate by VA, All ASID, EL1, Inner Shareable' ),
'S1_0_c8_c3_5' : ( 'TLBI VALE1IS', 'TLB Invalidate by VA, Last level, EL1, Inner Shareable' ),
'S1_0_c8_c3_7' : ( 'TLBI VAALE1IS', 'TLB Invalidate by VA, All ASID, Last Level, EL1, Inner Shareable' ),
'S1_0_c8_c5_1' : ( 'TLBI RVAE1OS', 'TLB Range Invalidate by VA, EL1, Outer Shareable' ),
'S1_0_c8_c5_3' : ( 'TLBI RVAAE1OS', 'TLB Range Invalidate by VA, All ASID, EL1, Outer Shareable' ),
'S1_0_c8_c5_5' : ( 'TLBI RVALE1OS', 'TLB Range Invalidate by VA, Last level, EL1, Outer Shareable' ),
'S1_0_c8_c5_7' : ( 'TLBI RVAALE1OS', 'TLB Range Invalidate by VA, All ASID, Last Level, EL1, Outer Shareable' ),
'S1_0_c8_c6_1' : ( 'TLBI RVAE1', 'TLB Range Invalidate by VA, EL1' ),
'S1_0_c8_c6_3' : ( 'TLBI RVAAE1', 'TLB Range Invalidate by VA, All ASID, EL1' ),
'S1_0_c8_c6_5' : ( 'TLBI RVALE1', 'TLB Range Invalidate by VA, Last level, EL1' ),
'S1_0_c8_c6_7' : ( 'TLBI RVAALE1', 'TLB Range Invalidate by VA, All ASID, Last level, EL1' ),
'S1_0_c8_c7_0' : ( 'TLBI VMALLE1', 'TLB Invalidate by VMID, All at stage 1, EL1' ),
'S1_0_c8_c7_1' : ( 'TLBI VAE1', 'TLB Invalidate by VA, EL1' ),
'S1_0_c8_c7_2' : ( 'TLBI ASIDE1', 'TLB Invalidate by ASID, EL1' ),
'S1_0_c8_c7_3' : ( 'TLBI VAAE1', 'TLB Invalidate by VA, All ASID, EL1' ),
'S1_0_c8_c7_5' : ( 'TLBI VALE1', 'TLB Invalidate by VA, Last level, EL1' ),
'S1_0_c8_c7_7' : ( 'TLBI VAALE1', 'TLB Invalidate by VA, All ASID, Last level, EL1' ),
'S1_3_c7_c3_4' : ( 'CFP RCTX', 'Control Flow Prediction Restriction by Context' ),
'S1_3_c7_c3_5' : ( 'DVP RCTX', 'Data Value Prediction Restriction by Context' ),
'S1_3_c7_c3_7' : ( 'CPP RCTX', 'Cache Prefetch Prediction Restriction by Context' ),
'S1_3_c7_c4_1' : ( 'DC ZVA', 'Data Cache Zero by VA' ),
'S1_3_c7_c4_3' : ( 'DC GVA', 'Data Cache set Allocation Tag by VA' ),
'S1_3_c7_c4_4' : ( 'DC GZVA', 'Data Cache set Allocation Tags and Zero by VA' ),
'S1_3_c7_c5_1' : ( 'IC IVAU', 'Instruction Cache line Invalidate by VA to PoU' ),
'S1_3_c7_c10_1' : ( 'DC CVAC', 'Data or unified Cache line Clean by VA to PoC' ),
'S1_3_c7_c10_3' : ( 'DC CGVAC', 'Data, Allocation Tag or unified Cache line Clean of Allocation Tags by VA to PoC' ),
'S1_3_c7_c10_5' : ( 'DC CGDVAC', 'Data, Allocation Tag or unified Cache line Clean of Allocation Tags by VA to PoC' ),
'S1_3_c7_c11_1' : ( 'DC CVAU', 'Data or unified Cache line Clean by VA to PoU' ),
'S1_3_c7_c12_1' : ( 'DC CVAP', 'Data or unified Cache line Clean by VA to PoP' ),
'S1_3_c7_c12_3' : ( 'DC CGVAP', 'Data, Allocation Tag or unified Cache line Clean of Allocation Tags by VA to PoP' ),
'S1_3_c7_c12_5' : ( 'DC CGDVAP', 'Data, Allocation Tag or unified Cache line Clean of Data and Allocation Tags by VA to PoP' ),
'S1_3_c7_c13_1' : ( 'DC CVADP', 'Data or unified Cache line Clean by VA to PoDP' ),
'S1_3_c7_c13_3' : ( 'DC CGVADP', 'Clean of Allocation Tags by VA to PoDP' ),
'S1_3_c7_c13_5' : ( 'DC CGDVADP', 'Data, Allocation Tag or unified Cache line Clean of Allocation Tags by VA to PoDP' ),
'S1_3_c7_c14_1' : ( 'DC CIVAC', 'Data or unified Cache line Clean and Invalidate by VA to PoC' ),
'S1_3_c7_c14_3' : ( 'DC CIGVAC', 'Data, Allocation Tag or unified Cache line Clean and Invalidate of Allocation Tags by VA to PoC' ),
'S1_3_c7_c14_5' : ( 'DC CIGDVAC', 'Data, Allocation Tag or unified Cache line Clean and Invalidate of Data and Allocation Tags by VA to PoC' ),
'S1_4_c7_c8_0' : ( 'AT S1E2R', 'Address Translate Stage 1 EL2 Read' ),
'S1_4_c7_c8_1' : ( 'AT S1E2W', 'Address Translate Stage 1 EL2 Write' ),
'S1_4_c7_c8_4' : ( 'AT S12E1R', 'Address Translate Stages 1 and 2 EL1 Read' ),
'S1_4_c7_c8_5' : ( 'AT S12E1W', 'Address Translate Stages 1 and 2 EL1 Write' ),
'S1_4_c7_c8_6' : ( 'AT S12E0R', 'Address Translate Stages 1 and 2 EL0 Read' ),
'S1_4_c7_c8_7' : ( 'AT S12E0W', 'Address Translate Stages 1 and 2 EL0 Write' ),
'S1_4_c8_c0_1' : ( 'TLBI IPAS2E1IS', 'TLB Invalidate by Intermediate Physical Address, Stage 2, EL1, Inner Shareable' ),
'S1_4_c8_c0_2' : ( 'TLBI RIPAS2E1IS', 'TLB Range Invalidate by Intermediate Physical Address, Stage 2, EL1, Inner Shareable' ),
'S1_4_c8_c0_5' : ( 'TLBI IPAS2LE1IS', 'TLB Invalidate by Intermediate Physical Address, Stage 2, Last level, EL1, Inner Shareable' ),
'S1_4_c8_c0_6' : ( 'TLBI RIPAS2LE1IS', 'TLB Range Invalidate by Intermediate Physical Address, Stage 2, Last level, EL1, Inner Shareable' ),
'S1_4_c8_c1_0' : ( 'TLBI ALLE2OS', 'TLB Invalidate All, EL2, Outer Shareable' ),
'S1_4_c8_c1_1' : ( 'TLBI VAE2OS', 'TLB Invalidate by VA, EL2, Outer Shareable' ),
'S1_4_c8_c1_4' : ( 'TLBI ALLE1OS', 'TLB Invalidate All, EL1, Outer Shareable' ),
'S1_4_c8_c1_5' : ( 'TLBI VALE2OS', 'TLB Invalidate by VA, Last level, EL2, Outer Shareable' ),
'S1_4_c8_c1_6' : ( 'TLBI VMALLS12E1OS', 'TLB Invalidate by VMID, All at Stage 1 and 2, EL1, Outer Shareable' ),
'S1_4_c8_c2_1' : ( 'TLBI RVAE2IS', 'TLB Range Invalidate by VA, EL2, Inner Shareable' ),
'S1_4_c8_c2_5' : ( 'TLBI RVALE2IS', 'TLB Range Invalidate by VA, Last level, EL2, Inner Shareable' ),
'S1_4_c8_c3_0' : ( 'TLBI ALLE2IS', 'TLB Invalidate All, EL2, Inner Shareable' ),
'S1_4_c8_c3_1' : ( 'TLBI VAE2IS', 'TLB Invalidate by VA, EL2, Inner Shareable' ),
'S1_4_c8_c3_4' : ( 'TLBI ALLE1IS', 'TLB Invalidate All, EL1, Inner Shareable' ),
'S1_4_c8_c3_5' : ( 'TLBI VALE2IS', 'TLB Invalidate by VA, Last level, EL2, Inner Shareable' ),
'S1_4_c8_c3_6' : ( 'TLBI VMALLS12E1IS', 'TLB Invalidate by VMID, All at Stage 1 and 2, EL1, Inner Shareable' ),
'S1_4_c8_c4_0' : ( 'TLBI IPAS2E1OS', 'TLB Invalidate by Intermediate Physical Address, Stage 2, EL1, Outer Shareable' ),
'S1_4_c8_c4_1' : ( 'TLBI IPAS2E1', 'TLB Invalidate by Intermediate Physical Address, Stage 2, EL1' ),
'S1_4_c8_c4_2' : ( 'TLBI RIPAS2E1', 'TLB Range Invalidate by Intermediate Physical Address, Stage 2, EL1' ),
'S1_4_c8_c4_3' : ( 'TLBI RIPAS2E1OS', 'TLB Range Invalidate by Intermediate Physical Address, Stage 2, EL1, Outer Shareable' ),
'S1_4_c8_c4_4' : ( 'TLBI IPAS2LE1OS', 'TLB Invalidate by Intermediate Physical Address, Stage 2, Last level, EL1, Outer Shareable' ),
'S1_4_c8_c4_5' : ( 'TLBI IPAS2LE1', 'TLB Invalidate by Intermediate Physical Address, Stage 2, Last level, EL1' ),
'S1_4_c8_c4_6' : ( 'TLBI RIPAS2LE1', 'TLB Range Invalidate by Intermediate Physical Address, Stage 2, Last level, EL1' ),
'S1_4_c8_c4_7' : ( 'TLBI RIPAS2LE1OS', 'TLB Range Invalidate by Intermediate Physical Address, Stage 2, Last level, EL1, Outer Shareable' ),
'S1_4_c8_c5_1' : ( 'TLBI RVAE2OS', 'TLB Range Invalidate by VA, EL2, Outer Shareable' ),
'S1_4_c8_c5_5' : ( 'TLBI RVALE2OS', 'TLB Range Invalidate by VA, Last level, EL2, Outer Shareable' ),
'S1_4_c8_c6_1' : ( 'TLBI RVAE2', 'TLB Range Invalidate by VA, EL2' ),
'S1_4_c8_c6_5' : ( 'TLBI RVALE2', 'TLB Range Invalidate by VA, Last level, EL2' ),
'S1_4_c8_c7_0' : ( 'TLBI ALLE2', 'TLB Invalidate All, EL2' ),
'S1_4_c8_c7_1' : ( 'TLBI VAE2', 'TLB Invalidate by VA, EL2' ),
'S1_4_c8_c7_4' : ( 'TLBI ALLE1', 'TLB Invalidate All, EL1' ),
'S1_4_c8_c7_5' : ( 'TLBI VALE2', 'TLB Invalidate by VA, Last level, EL2' ),
'S1_4_c8_c7_6' : ( 'TLBI VMALLS12E1', 'TLB Invalidate by VMID, All at Stage 1 and 2, EL1' ),
'S1_6_c7_c8_0' : ( 'AT S1E3R', 'Address Translate Stage 1 EL3 Read' ),
'S1_6_c7_c8_1' : ( 'AT S1E3W', 'Address Translate Stage 1 EL3 Write' ),
'S1_6_c8_c1_0' : ( 'TLBI ALLE3OS', 'TLB Invalidate All, EL3, Outer Shareable' ),
'S1_6_c8_c1_1' : ( 'TLBI VAE3OS', 'TLB Invalidate by VA, EL3, Outer Shareable' ),
'S1_6_c8_c1_5' : ( 'TLBI VALE3OS', 'TLB Invalidate by VA, Last level, EL3, Outer Shareable' ),
'S1_6_c8_c2_1' : ( 'TLBI RVAE3IS', 'TLB Range Invalidate by VA, EL3, Inner Shareable' ),
'S1_6_c8_c2_5' : ( 'TLBI RVALE3IS', 'TLB Range Invalidate by VA, Last level, EL3, Inner Shareable' ),
'S1_6_c8_c3_0' : ( 'TLBI ALLE3IS', 'TLB Invalidate All, EL3, Inner Shareable' ),
'S1_6_c8_c3_1' : ( 'TLBI VAE3IS', 'TLB Invalidate by VA, EL3, Inner Shareable' ),
'S1_6_c8_c3_5' : ( 'TLBI VALE3IS', 'TLB Invalidate by VA, Last level, EL3, Inner Shareable' ),
'S1_6_c8_c5_1' : ( 'TLBI RVAE3OS', 'TLB Range Invalidate by VA, EL3, Outer Shareable' ),
'S1_6_c8_c5_5' : ( 'TLBI RVALE3OS', 'TLB Range Invalidate by VA, Last level, EL3, Outer Shareable' ),
'S1_6_c8_c6_1' : ( 'TLBI RVAE3', 'TLB Range Invalidate by VA, EL3' ),
'S1_6_c8_c6_5' : ( 'TLBI RVALE3', 'TLB Range Invalidate by VA, Last level, EL3' ),
'S1_6_c8_c7_0' : ( 'TLBI ALLE3', 'TLB Invalidate All, EL3' ),
'S1_6_c8_c7_1' : ( 'TLBI VAE3', 'TLB Invalidate by VA, EL3' ),
'S1_6_c8_c7_5' : ( 'TLBI VALE3', 'TLB Invalidate by VA, Last level, EL3' ),
'S2_0_c0_c0_2' : ( 'OSDTRRX_EL1', 'OS Lock Data Transfer Register, Receive' ),
'S2_0_c0_c0_4' : ( 'DBGBVR0_EL1', 'Debug Breakpoint Value Register 0' ),
'S2_0_c0_c0_5' : ( 'DBGBCR0_EL1', 'Debug Breakpoint Control Register 0' ),
'S2_0_c0_c0_6' : ( 'DBGWVR0_EL1', 'Debug Watchpoint Value Register 0' ),
'S2_0_c0_c0_7' : ( 'DBGWCR0_EL1', 'Debug Watchpoint Control Register 0' ),
'S2_0_c0_c1_4' : ( 'DBGBVR1_EL1', 'Debug Breakpoint Value Register 1' ),
'S2_0_c0_c1_5' : ( 'DBGBCR1_EL1', 'Debug Breakpoint Control Register 1' ),
'S2_0_c0_c1_6' : ( 'DBGWVR1_EL1', 'Debug Watchpoint Value Register 1' ),
'S2_0_c0_c1_7' : ( 'DBGWCR1_EL1', 'Debug Watchpoint Control Register 1' ),
'S2_0_c0_c2_0' : ( 'MDCCINT_EL1', 'Monitor DCC Interrupt Enable Register' ),
'S2_0_c0_c2_2' : ( 'MDSCR_EL1', 'Monitor Debug System Control Register' ),
'S2_0_c0_c2_4' : ( 'DBGBVR2_EL1', 'Debug Breakpoint Value Register 2' ),
'S2_0_c0_c2_5' : ( 'DBGBCR2_EL1', 'Debug Breakpoint Control Register 2' ),
'S2_0_c0_c2_6' : ( 'DBGWVR2_EL1', 'Debug Watchpoint Value Register 2' ),
'S2_0_c0_c2_7' : ( 'DBGWCR2_EL1', 'Debug Watchpoint Control Register 2' ),
'S2_0_c0_c3_2' : ( 'OSDTRTX_EL1', 'OS Lock Data Transfer Register, Transmit' ),
'S2_0_c0_c3_4' : ( 'DBGBVR3_EL1', 'Debug Breakpoint Value Register 3' ),
'S2_0_c0_c3_5' : ( 'DBGBCR3_EL1', 'Debug Breakpoint Control Register 3' ),
'S2_0_c0_c3_6' : ( 'DBGWVR3_EL1', 'Debug Watchpoint Value Register 3' ),
'S2_0_c0_c3_7' : ( 'DBGWCR3_EL1', 'Debug Watchpoint Control Register 3' ),
'S2_0_c0_c4_4' : ( 'DBGBVR4_EL1', 'Debug Breakpoint Value Register 4' ),
'S2_0_c0_c4_5' : ( 'DBGBCR4_EL1', 'Debug Breakpoint Control Register 4' ),
'S2_0_c0_c4_6' : ( 'DBGWVR4_EL1', 'Debug Watchpoint Value Register 4' ),
'S2_0_c0_c4_7' : ( 'DBGWCR4_EL1', 'Debug Watchpoint Control Register 4' ),
'S2_0_c0_c5_4' : ( 'DBGBVR5_EL1', 'Debug Breakpoint Value Register 5' ),
'S2_0_c0_c5_5' : ( 'DBGBCR5_EL1', 'Debug Breakpoint Control Register 5' ),
'S2_0_c0_c5_6' : ( 'DBGWVR5_EL1', 'Debug Watchpoint Value Register 5' ),
'S2_0_c0_c5_7' : ( 'DBGWCR5_EL1', 'Debug Watchpoint Control Register 5' ),
'S2_0_c0_c6_2' : ( 'OSECCR_EL1', 'OS Lock Exception Catch Control Register' ),
'S2_0_c0_c6_4' : ( 'DBGBVR6_EL1', 'Debug Breakpoint Value Register 6' ),
'S2_0_c0_c6_5' : ( 'DBGBCR6_EL1', 'Debug Breakpoint Control Register 6' ),
'S2_0_c0_c6_6' : ( 'DBGWVR6_EL1', 'Debug Watchpoint Value Register 6' ),
'S2_0_c0_c6_7' : ( 'DBGWCR6_EL1', 'Debug Watchpoint Control Register 6' ),
'S2_0_c0_c7_4' : ( 'DBGBVR7_EL1', 'Debug Breakpoint Value Register 7' ),
'S2_0_c0_c7_5' : ( 'DBGBCR7_EL1', 'Debug Breakpoint Control Register 7' ),
'S2_0_c0_c7_6' : ( 'DBGWVR7_EL1', 'Debug Watchpoint Value Register 7' ),
'S2_0_c0_c7_7' : ( 'DBGWCR7_EL1', 'Debug Watchpoint Control Register 7' ),
'S2_0_c0_c8_4' : ( 'DBGBVR8_EL1', 'Debug Breakpoint Value Register 8' ),
'S2_0_c0_c8_5' : ( 'DBGBCR8_EL1', 'Debug Breakpoint Control Register 8' ),
'S2_0_c0_c8_6' : ( 'DBGWVR8_EL1', 'Debug Watchpoint Value Register 8' ),
'S2_0_c0_c8_7' : ( 'DBGWCR8_EL1', 'Debug Watchpoint Control Register 8' ),
'S2_0_c0_c9_4' : ( 'DBGBVR9_EL1', 'Debug Breakpoint Value Register 9' ),
'S2_0_c0_c9_5' : ( 'DBGBCR9_EL1', 'Debug Breakpoint Control Register 9' ),
'S2_0_c0_c9_6' : ( 'DBGWVR9_EL1', 'Debug Watchpoint Value Register 9' ),
'S2_0_c0_c9_7' : ( 'DBGWCR9_EL1', 'Debug Watchpoint Control Register 9' ),
'S2_0_c0_c10_4' : ( 'DBGBVR10_EL1', 'Debug Breakpoint Value Register 10' ),
'S2_0_c0_c10_5' : ( 'DBGBCR10_EL1', 'Debug Breakpoint Control Register 10' ),
'S2_0_c0_c10_6' : ( 'DBGWVR10_EL1', 'Debug Watchpoint Value Register 10' ),
'S2_0_c0_c10_7' : ( 'DBGWCR10_EL1', 'Debug Watchpoint Control Register 10' ),
'S2_0_c0_c11_4' : ( 'DBGBVR11_EL1', 'Debug Breakpoint Value Register 11' ),
'S2_0_c0_c11_5' : ( 'DBGBCR11_EL1', 'Debug Breakpoint Control Register 11' ),
'S2_0_c0_c11_6' : ( 'DBGWVR11_EL1', 'Debug Watchpoint Value Register 11' ),
'S2_0_c0_c11_7' : ( 'DBGWCR11_EL1', 'Debug Watchpoint Control Register 11' ),
'S2_0_c0_c12_4' : ( 'DBGBVR12_EL1', 'Debug Breakpoint Value Register 12' ),
'S2_0_c0_c12_5' : ( 'DBGBCR12_EL1', 'Debug Breakpoint Control Register 12' ),
'S2_0_c0_c12_6' : ( 'DBGWVR12_EL1', 'Debug Watchpoint Value Register 12' ),
'S2_0_c0_c12_7' : ( 'DBGWCR12_EL1', 'Debug Watchpoint Control Register 12' ),
'S2_0_c0_c13_4' : ( 'DBGBVR13_EL1', 'Debug Breakpoint Value Register 13' ),
'S2_0_c0_c13_5' : ( 'DBGBCR13_EL1', 'Debug Breakpoint Control Register 13' ),
'S2_0_c0_c13_6' : ( 'DBGWVR13_EL1', 'Debug Watchpoint Value Register 13' ),
'S2_0_c0_c13_7' : ( 'DBGWCR13_EL1', 'Debug Watchpoint Control Register 13' ),
'S2_0_c0_c14_4' : ( 'DBGBVR14_EL1', 'Debug Breakpoint Value Register 14' ),
'S2_0_c0_c14_5' : ( 'DBGBCR14_EL1', 'Debug Breakpoint Control Register 14' ),
'S2_0_c0_c14_6' : ( 'DBGWVR14_EL1', 'Debug Watchpoint Value Register 14' ),
'S2_0_c0_c14_7' : ( 'DBGWCR14_EL1', 'Debug Watchpoint Control Register 14' ),
'S2_0_c0_c15_4' : ( 'DBGBVR15_EL1', 'Debug Breakpoint Value Register 15' ),
'S2_0_c0_c15_5' : ( 'DBGBCR15_EL1', 'Debug Breakpoint Control Register 15' ),
'S2_0_c0_c15_6' : ( 'DBGWVR15_EL1', 'Debug Watchpoint Value Register 15' ),
'S2_0_c0_c15_7' : ( 'DBGWCR15_EL1', 'Debug Watchpoint Control Register 15' ),
'S2_0_c1_c0_0' : ( 'MDRAR_EL1', 'Monitor Debug ROM Address Register' ),
'S2_0_c1_c0_4' : ( 'OSLAR_EL1', 'OS Lock Access Register' ),
'S2_0_c1_c1_4' : ( 'OSLSR_EL1', 'OS Lock Status Register' ),
'S2_0_c1_c3_4' : ( 'OSDLR_EL1', 'OS Double Lock Register' ),
'S2_0_c1_c4_4' : ( 'DBGPRCR_EL1', 'Debug Power Control Register' ),
'S2_0_c7_c8_6' : ( 'DBGCLAIMSET_EL1', 'Debug CLAIM Tag Set register' ),
'S2_0_c7_c9_6' : ( 'DBGCLAIMCLR_EL1', 'Debug CLAIM Tag Clear register' ),
'S2_0_c7_c14_6' : ( 'DBGAUTHSTATUS_EL1', 'Debug Authentication Status register' ),
'S2_3_c0_c1_0' : ( 'MDCCSR_EL0', 'Monitor DCC Status Register' ),
'S2_3_c0_c4_0' : ( 'DBGDTR_EL0', 'Debug Data Transfer Register, half-duplex' ),
'S2_3_c0_c5_0' : ( 'DBGDTRRX_EL0', 'Debug Data Transfer Register, Receive' ),
'S2_3_c0_c5_0' : ( 'DBGDTRTX_EL0', 'Debug Data Transfer Register, Transmit' ),
'S2_4_c0_c7_0' : ( 'DBGVCR32_EL2', 'Debug Vector Catch Register' ),
'S3_0_c0_c0_0' : ( 'MIDR_EL1', 'Main ID Register' ),
'S3_0_c0_c0_5' : ( 'MPIDR_EL1', 'Multiprocessor Affinity Register' ),
'S3_0_c0_c0_6' : ( 'REVIDR_EL1', 'Revision ID Register' ),
'S3_0_c0_c1_0' : ( 'ID_PFR0_EL1', 'AArch32 Processor Feature Register 0' ),
'S3_0_c0_c1_1' : ( 'ID_PFR1_EL1', 'AArch32 Processor Feature Register 1' ),
'S3_0_c0_c1_2' : ( 'ID_DFR0_EL1', 'AArch32 Debug Feature Register 0' ),
'S3_0_c0_c1_3' : ( 'ID_AFR0_EL1', 'AArch32 Auxiliary Feature Register 0' ),
'S3_0_c0_c1_4' : ( 'ID_MMFR0_EL1', 'AArch32 Memory Model Feature Register 0' ),
'S3_0_c0_c1_5' : ( 'ID_MMFR1_EL1', 'AArch32 Memory Model Feature Register 1' ),
'S3_0_c0_c1_6' : ( 'ID_MMFR2_EL1', 'AArch32 Memory Model Feature Register 2' ),
'S3_0_c0_c1_7' : ( 'ID_MMFR3_EL1', 'AArch32 Memory Model Feature Register 3' ),
'S3_0_c0_c2_0' : ( 'ID_ISAR0_EL1', 'AArch32 Instruction Set Attribute Register 0' ),
'S3_0_c0_c2_1' : ( 'ID_ISAR1_EL1', 'AArch32 Instruction Set Attribute Register 1' ),
'S3_0_c0_c2_2' : ( 'ID_ISAR2_EL1', 'AArch32 Instruction Set Attribute Register 2' ),
'S3_0_c0_c2_3' : ( 'ID_ISAR3_EL1', 'AArch32 Instruction Set Attribute Register 3' ),
'S3_0_c0_c2_4' : ( 'ID_ISAR4_EL1', 'AArch32 Instruction Set Attribute Register 4' ),
'S3_0_c0_c2_5' : ( 'ID_ISAR5_EL1', 'AArch32 Instruction Set Attribute Register 5' ),
'S3_0_c0_c2_6' : ( 'ID_MMFR4_EL1', 'AArch32 Memory Model Feature Register 4' ),
'S3_0_c0_c2_7' : ( 'ID_ISAR6_EL1', 'AArch32 Instruction Set Attribute Register 6' ),
'S3_0_c0_c3_0' : ( 'MVFR0_EL1', 'AArch32 Media and VFP Feature Register 0' ),
'S3_0_c0_c3_1' : ( 'MVFR1_EL1', 'AArch32 Media and VFP Feature Register 1' ),
'S3_0_c0_c3_2' : ( 'MVFR2_EL1', 'AArch32 Media and VFP Feature Register 2' ),
'S3_0_c0_c3_4' : ( 'ID_PFR2_EL1', 'AArch32 Processor Feature Register 2' ),
'S3_0_c0_c3_5' : ( 'ID_DFR1_EL1', 'Debug Feature Register 1' ),
'S3_0_c0_c3_6' : ( 'ID_MMFR5_EL1', 'AArch32 Memory Model Feature Register 5' ),
'S3_0_c0_c4_0' : ( 'ID_AA64PFR0_EL1', 'AArch64 Processor Feature Register 0' ),
'S3_0_c0_c4_1' : ( 'ID_AA64PFR1_EL1', 'AArch64 Processor Feature Register 1' ),
'S3_0_c0_c4_4' : ( 'ID_AA64ZFR0_EL1', 'SVE Feature ID register 0' ),
'S3_0_c0_c5_0' : ( 'ID_AA64DFR0_EL1', 'AArch64 Debug Feature Register 0' ),
'S3_0_c0_c5_1' : ( 'ID_AA64DFR1_EL1', 'AArch64 Debug Feature Register 1' ),
'S3_0_c0_c5_4' : ( 'ID_AA64AFR0_EL1', 'AArch64 Auxiliary Feature Register 0' ),
'S3_0_c0_c5_5' : ( 'ID_AA64AFR1_EL1', 'AArch64 Auxiliary Feature Register 1' ),
'S3_0_c0_c6_0' : ( 'ID_AA64ISAR0_EL1', 'AArch64 Instruction Set Attribute Register 0' ),
'S3_0_c0_c6_1' : ( 'ID_AA64ISAR1_EL1', 'AArch64 Instruction Set Attribute Register 1' ),
'S3_0_c0_c7_0' : ( 'ID_AA64MMFR0_EL1', 'AArch64 Memory Model Feature Register 0' ),
'S3_0_c0_c7_1' : ( 'ID_AA64MMFR1_EL1', 'AArch64 Memory Model Feature Register 1' ),
'S3_0_c0_c7_2' : ( 'ID_AA64MMFR2_EL1', 'AArch64 Memory Model Feature Register 2' ),
'S3_0_c1_c0_0' : ( 'SCTLR_EL1', 'System Control Register (EL1)' ),
'S3_0_c1_c0_1' : ( 'ACTLR_EL1', 'Auxiliary Control Register (EL1)' ),
'S3_0_c1_c0_2' : ( 'CPACR_EL1', 'Architectural Feature Access Control Register' ),
'S3_0_c1_c0_5' : ( 'RGSR_EL1', 'Random Allocation Tag Seed Register.' ),
'S3_0_c1_c0_6' : ( 'GCR_EL1', 'Tag Control Register.' ),
'S3_0_c1_c2_0' : ( 'ZCR_EL1', 'SVE Control Register for EL1' ),
'S3_0_c1_c2_1' : ( 'TRFCR_EL1', 'Trace Filter Control Register (EL1)' ),
'S3_0_c2_c0_0' : ( 'TTBR0_EL1', 'Translation Table Base Register 0 (EL1)' ),
'S3_0_c2_c0_1' : ( 'TTBR1_EL1', 'Translation Table Base Register 1 (EL1)' ),
'S3_0_c2_c0_2' : ( 'TCR_EL1', 'Translation Control Register (EL1)' ),
'S3_0_c2_c1_0' : ( 'APIAKeyLo_EL1', 'Pointer Authentication Key A for Instruction (bits[63:0]) ' ),
'S3_0_c2_c1_1' : ( 'APIAKeyHi_EL1', 'Pointer Authentication Key A for Instruction (bits[127:64]) ' ),
'S3_0_c2_c1_2' : ( 'APIBKeyLo_EL1', 'Pointer Authentication Key B for Instruction (bits[63:0]) ' ),
'S3_0_c2_c1_3' : ( 'APIBKeyHi_EL1', 'Pointer Authentication Key B for Instruction (bits[127:64]) ' ),
'S3_0_c2_c2_0' : ( 'APDAKeyLo_EL1', 'Pointer Authentication Key A for Data (bits[63:0]) ' ),
'S3_0_c2_c2_1' : ( 'APDAKeyHi_EL1', 'Pointer Authentication Key A for Data (bits[127:64]) ' ),
'S3_0_c2_c2_2' : ( 'APDBKeyLo_EL1', 'Pointer Authentication Key B for Data (bits[63:0]) ' ),
'S3_0_c2_c2_3' : ( 'APDBKeyHi_EL1', 'Pointer Authentication Key B for Data (bits[127:64]) ' ),
'S3_0_c2_c3_0' : ( 'APGAKeyLo_EL1', 'Pointer Authentication Key A for Code (bits[63:0]) ' ),
'S3_0_c2_c3_1' : ( 'APGAKeyHi_EL1', 'Pointer Authentication Key A for Code (bits[127:64]) ' ),
'S3_0_c4_c0_0' : ( 'SPSR_EL1', 'Saved Program Status Register (EL1)' ),
'S3_0_c4_c0_1' : ( 'ELR_EL1', 'Exception Link Register (EL1)' ),
'S3_0_c4_c1_0' : ( 'SP_EL0', 'Stack Pointer (EL0)' ),
'S3_0_c4_c2_0' : ( 'SPSel', 'Stack Pointer Select' ),
'S3_0_c4_c2_2' : ( 'CurrentEL', 'Current Exception Level' ),
'S3_0_c4_c2_3' : ( 'PAN', 'Privileged Access Never' ),
'S3_0_c4_c2_4' : ( 'UAO', 'User Access Override' ),
'S3_0_c4_c6_0' : ( 'ICC_PMR_EL1', 'Interrupt Controller Interrupt Priority Mask Register' ),
'S3_0_c4_c6_0' : ( 'ICV_PMR_EL1', 'Interrupt Controller Virtual Interrupt Priority Mask Register' ),
'S3_0_c5_c1_0' : ( 'AFSR0_EL1', 'Auxiliary Fault Status Register 0 (EL1)' ),
'S3_0_c5_c1_1' : ( 'AFSR1_EL1', 'Auxiliary Fault Status Register 1 (EL1)' ),
'S3_0_c5_c2_0' : ( 'ESR_EL1', 'Exception Syndrome Register (EL1)' ),
'S3_0_c5_c3_0' : ( 'ERRIDR_EL1', 'Error Record ID Register' ),
'S3_0_c5_c3_1' : ( 'ERRSELR_EL1', 'Error Record Select Register' ),
'S3_0_c5_c4_0' : ( 'ERXFR_EL1', 'Selected Error Record Feature Register' ),
'S3_0_c5_c4_1' : ( 'ERXCTLR_EL1', 'Selected Error Record Control Register' ),
'S3_0_c5_c4_2' : ( 'ERXSTATUS_EL1', 'Selected Error Record Primary Status Register' ),
'S3_0_c5_c4_3' : ( 'ERXADDR_EL1', 'Selected Error Record Address Register' ),
'S3_0_c5_c4_4' : ( 'ERXPFGF_EL1', 'Selected Pseudo-fault Generation Feature register' ),
'S3_0_c5_c4_5' : ( 'ERXPFGCTL_EL1', 'Selected Pseudo-fault Generation Control register' ),
'S3_0_c5_c4_6' : ( 'ERXPFGCDN_EL1', 'Selected Pseudo-fault Generation Countdown register' ),
'S3_0_c5_c5_0' : ( 'ERXMISC0_EL1', 'Selected Error Record Miscellaneous Register 0' ),
'S3_0_c5_c5_1' : ( 'ERXMISC1_EL1', 'Selected Error Record Miscellaneous Register 1' ),
'S3_0_c5_c5_2' : ( 'ERXMISC2_EL1', 'Selected Error Record Miscellaneous Register 2' ),
'S3_0_c5_c5_3' : ( 'ERXMISC3_EL1', 'Selected Error Record Miscellaneous Register 3' ),
'S3_0_c5_c6_0' : ( 'TFSR_EL1', 'Tag Fault Status Register (EL1)' ),
'S3_0_c5_c6_1' : ( 'TFSRE0_EL1', 'Tag Fault Status Register (EL0).' ),
'S3_0_c6_c0_0' : ( 'FAR_EL1', 'Fault Address Register (EL1)' ),
'S3_0_c7_c4_0' : ( 'PAR_EL1', 'Physical Address Register' ),
'S3_0_c9_c9_0' : ( 'PMSCR_EL1', 'Statistical Profiling Control Register (EL1)' ),
'S3_0_c9_c9_2' : ( 'PMSICR_EL1', 'Sampling Interval Counter Register' ),
'S3_0_c9_c9_3' : ( 'PMSIRR_EL1', 'Sampling Interval Reload Register' ),
'S3_0_c9_c9_4' : ( 'PMSFCR_EL1', 'Sampling Filter Control Register' ),
'S3_0_c9_c9_5' : ( 'PMSEVFR_EL1', 'Sampling Event Filter Register' ),
'S3_0_c9_c9_6' : ( 'PMSLATFR_EL1', 'Sampling Latency Filter Register' ),
'S3_0_c9_c9_7' : ( 'PMSIDR_EL1', 'Sampling Profiling ID Register' ),
'S3_0_c9_c10_0' : ( 'PMBLIMITR_EL1', 'Profiling Buffer Limit Address Register' ),
'S3_0_c9_c10_1' : ( 'PMBPTR_EL1', 'Profiling Buffer Write Pointer Register' ),
'S3_0_c9_c10_3' : ( 'PMBSR_EL1', 'Profiling Buffer Status/syndrome Register' ),
'S3_0_c9_c10_7' : ( 'PMBIDR_EL1', 'Profiling Buffer ID Register' ),
'S3_0_c9_c14_1' : ( 'PMINTENSET_EL1', 'Performance Monitors Interrupt Enable Set register' ),
'S3_0_c9_c14_2' : ( 'PMINTENCLR_EL1', 'Performance Monitors Interrupt Enable Clear register' ),
'S3_0_c9_c14_6' : ( 'PMMIR_EL1', 'Performance Monitors Machine Identification Register' ),
'S3_0_c10_c2_0' : ( 'MAIR_EL1', 'Memory Attribute Indirection Register (EL1)' ),
'S3_0_c10_c3_0' : ( 'AMAIR_EL1', 'Auxiliary Memory Attribute Indirection Register (EL1)' ),
'S3_0_c10_c4_0' : ( 'LORSA_EL1', 'LORegion Start Address (EL1)' ),
'S3_0_c10_c4_1' : ( 'LOREA_EL1', 'LORegion End Address (EL1)' ),
'S3_0_c10_c4_2' : ( 'LORN_EL1', 'LORegion Number (EL1)' ),
'S3_0_c10_c4_3' : ( 'LORC_EL1', 'LORegion Control (EL1)' ),
'S3_0_c10_c4_4' : ( 'MPAMIDR_EL1', 'MPAM ID Register (EL1)' ),
'S3_0_c10_c4_7' : ( 'LORID_EL1', 'LORegionID (EL1)' ),
'S3_0_c10_c5_0' : ( 'MPAM1_EL1', 'MPAM1 Register (EL1)' ),
'S3_0_c10_c5_1' : ( 'MPAM0_EL1', 'MPAM0 Register (EL1)' ),
'S3_0_c12_c0_0' : ( 'VBAR_EL1', 'Vector Base Address Register (EL1)' ),
'S3_0_c12_c0_1' : ( 'RVBAR_EL1', 'Reset Vector Base Address Register (if EL2 and EL3 not implemented)' ),
'S3_0_c12_c0_2' : ( 'RMR_EL1', 'Reset Management Register (EL1)' ),
'S3_0_c12_c1_0' : ( 'ISR_EL1', 'Interrupt Status Register' ),
'S3_0_c12_c1_1' : ( 'DISR_EL1', 'Deferred Interrupt Status Register' ),
'S3_0_c12_c8_0' : ( 'ICC_IAR0_EL1', 'Interrupt Controller Interrupt Acknowledge Register 0' ),
'S3_0_c12_c8_0' : ( 'ICV_IAR0_EL1', 'Interrupt Controller Virtual Interrupt Acknowledge Register 0' ),
'S3_0_c12_c8_1' : ( 'ICC_EOIR0_EL1', 'Interrupt Controller End Of Interrupt Register 0' ),
'S3_0_c12_c8_1' : ( 'ICV_EOIR0_EL1', 'Interrupt Controller Virtual End Of Interrupt Register 0' ),
'S3_0_c12_c8_2' : ( 'ICC_HPPIR0_EL1', 'Interrupt Controller Highest Priority Pending Interrupt Register 0' ),
'S3_0_c12_c8_2' : ( 'ICV_HPPIR0_EL1', 'Interrupt Controller Virtual Highest Priority Pending Interrupt Register 0' ),
'S3_0_c12_c8_3' : ( 'ICC_BPR0_EL1', 'Interrupt Controller Binary Point Register 0' ),
'S3_0_c12_c8_3' : ( 'ICV_BPR0_EL1', 'Interrupt Controller Virtual Binary Point Register 0' ),
'S3_0_c12_c8_4' : ( 'ICC_AP0R0_EL1', 'Interrupt Controller Active Priorities Group 0 Register 0' ),
'S3_0_c12_c8_4' : ( 'ICV_AP0R0_EL1', 'Interrupt Controller Virtual Active Priorities Group 0 Register 0' ),
'S3_0_c12_c8_5' : ( 'ICC_AP0R1_EL1', 'Interrupt Controller Active Priorities Group 0 Register 1' ),
'S3_0_c12_c8_5' : ( 'ICV_AP0R1_EL1', 'Interrupt Controller Virtual Active Priorities Group 0 Register 1' ),
'S3_0_c12_c8_6' : ( 'ICC_AP0R2_EL1', 'Interrupt Controller Active Priorities Group 0 Register 2' ),
'S3_0_c12_c8_6' : ( 'ICV_AP0R2_EL1', 'Interrupt Controller Virtual Active Priorities Group 0 Register 2' ),
'S3_0_c12_c8_7' : ( 'ICC_AP0R3_EL1', 'Interrupt Controller Active Priorities Group 0 Register 3' ),
'S3_0_c12_c8_7' : ( 'ICV_AP0R3_EL1', 'Interrupt Controller Virtual Active Priorities Group 0 Register 3' ),
'S3_0_c12_c9_0' : ( 'ICC_AP1R0_EL1', 'Interrupt Controller Active Priorities Group 1 Register 0' ),
'S3_0_c12_c9_0' : ( 'ICV_AP1R0_EL1', 'Interrupt Controller Virtual Active Priorities Group 1 Register 0' ),
'S3_0_c12_c9_1' : ( 'ICC_AP1R1_EL1', 'Interrupt Controller Active Priorities Group 1 Register 1' ),
'S3_0_c12_c9_1' : ( 'ICV_AP1R1_EL1', 'Interrupt Controller Virtual Active Priorities Group 1 Register 1' ),
'S3_0_c12_c9_2' : ( 'ICC_AP1R2_EL1', 'Interrupt Controller Active Priorities Group 1 Register 2' ),
'S3_0_c12_c9_2' : ( 'ICV_AP1R2_EL1', 'Interrupt Controller Virtual Active Priorities Group 1 Register 2' ),
'S3_0_c12_c9_3' : ( 'ICC_AP1R3_EL1', 'Interrupt Controller Active Priorities Group 1 Register 3' ),
'S3_0_c12_c9_3' : ( 'ICV_AP1R3_EL1', 'Interrupt Controller Virtual Active Priorities Group 1 Register 3' ),
'S3_0_c12_c11_1' : ( 'ICC_DIR_EL1', 'Interrupt Controller Deactivate Interrupt Register' ),
'S3_0_c12_c11_1' : ( 'ICV_DIR_EL1', 'Interrupt Controller Deactivate Virtual Interrupt Register' ),
'S3_0_c12_c11_3' : ( 'ICC_RPR_EL1', 'Interrupt Controller Running Priority Register' ),
'S3_0_c12_c11_3' : ( 'ICV_RPR_EL1', 'Interrupt Controller Virtual Running Priority Register' ),
'S3_0_c12_c11_5' : ( 'ICC_SGI1R_EL1', 'Interrupt Controller Software Generated Interrupt Group 1 Register' ),
'S3_0_c12_c11_6' : ( 'ICC_ASGI1R_EL1', 'Interrupt Controller Alias Software Generated Interrupt Group 1 Register' ),
'S3_0_c12_c11_7' : ( 'ICC_SGI0R_EL1', 'Interrupt Controller Software Generated Interrupt Group 0 Register' ),
'S3_0_c12_c12_0' : ( 'ICC_IAR1_EL1', 'Interrupt Controller Interrupt Acknowledge Register 1' ),
'S3_0_c12_c12_0' : ( 'ICV_IAR1_EL1', 'Interrupt Controller Virtual Interrupt Acknowledge Register 1' ),
'S3_0_c12_c12_1' : ( 'ICC_EOIR1_EL1', 'Interrupt Controller End Of Interrupt Register 1' ),
'S3_0_c12_c12_1' : ( 'ICV_EOIR1_EL1', 'Interrupt Controller Virtual End Of Interrupt Register 1' ),
'S3_0_c12_c12_2' : ( 'ICC_HPPIR1_EL1', 'Interrupt Controller Highest Priority Pending Interrupt Register 1' ),
'S3_0_c12_c12_2' : ( 'ICV_HPPIR1_EL1', 'Interrupt Controller Virtual Highest Priority Pending Interrupt Register 1' ),
'S3_0_c12_c12_3' : ( 'ICC_BPR1_EL1', 'Interrupt Controller Binary Point Register 1' ),
'S3_0_c12_c12_3' : ( 'ICV_BPR1_EL1', 'Interrupt Controller Virtual Binary Point Register 1' ),
'S3_0_c12_c12_4' : ( 'ICC_CTLR_EL1', 'Interrupt Controller Control Register (EL1)' ),
'S3_0_c12_c12_4' : ( 'ICV_CTLR_EL1', 'Interrupt Controller Virtual Control Register' ),
'S3_0_c12_c12_5' : ( 'ICC_SRE_EL1', 'Interrupt Controller System Register Enable register (EL1)' ),
'S3_0_c12_c12_6' : ( 'ICC_IGRPEN0_EL1', 'Interrupt Controller Interrupt Group 0 Enable register' ),
'S3_0_c12_c12_6' : ( 'ICV_IGRPEN0_EL1', 'Interrupt Controller Virtual Interrupt Group 0 Enable register' ),
'S3_0_c12_c12_7' : ( 'ICC_IGRPEN1_EL1', 'Interrupt Controller Interrupt Group 1 Enable register' ),
'S3_0_c12_c12_7' : ( 'ICV_IGRPEN1_EL1', 'Interrupt Controller Virtual Interrupt Group 1 Enable register' ),
'S3_0_c13_c0_1' : ( 'CONTEXTIDR_EL1', 'Context ID Register (EL1)' ),
'S3_0_c13_c0_4' : ( 'TPIDR_EL1', 'EL1 Software Thread ID Register' ),
'S3_0_c13_c0_7' : ( 'SCXTNUM_EL1', 'EL1 Read/Write Software Context Number' ),
'S3_0_c14_c1_0' : ( 'CNTKCTL_EL1', 'Counter-timer Kernel Control register' ),
'S3_1_c0_c0_0' : ( 'CCSIDR_EL1', 'Current Cache Size ID Register' ),
'S3_1_c0_c0_1' : ( 'CLIDR_EL1', 'Cache Level ID Register' ),
'S3_1_c0_c0_2' : ( 'CCSIDR2_EL1', 'Current Cache Size ID Register 2' ),
'S3_1_c0_c0_4' : ( 'GMID_EL1', ' Multiple tag transfer ID register' ),
'S3_1_c0_c0_7' : ( 'AIDR_EL1', 'Auxiliary ID Register' ),
'S3_2_c0_c0_0' : ( 'CSSELR_EL1', 'Cache Size Selection Register' ),
'S3_3_c0_c0_1' : ( 'CTR_EL0', 'Cache Type Register' ),
'S3_3_c0_c0_7' : ( 'DCZID_EL0', 'Data Cache Zero ID register' ),
'S3_3_c2_c4_0' : ( 'RNDR', 'Random Number' ),
'S3_3_c2_c4_1' : ( 'RNDRRS', 'Reseeded Random Number' ),
'S3_3_c4_c2_0' : ( 'NZCV', 'Condition Flags' ),
'S3_3_c4_c2_1' : ( 'DAIF', 'Interrupt Mask Bits' ),
'S3_3_c4_c2_5' : ( 'DIT', 'Data Independent Timing' ),
'S3_3_c4_c2_6' : ( 'SSBS', 'Speculative Store Bypass Safe' ),
'S3_3_c4_c2_7' : ( 'TCO', 'Tag Check Override' ),
'S3_3_c4_c4_0' : ( 'FPCR', 'Floating-point Control Register' ),
'S3_3_c4_c4_1' : ( 'FPSR', 'Floating-point Status Register' ),
'S3_3_c4_c5_0' : ( 'DSPSR_EL0', 'Debug Saved Program Status Register' ),
'S3_3_c4_c5_1' : ( 'DLR_EL0', 'Debug Link Register' ),
'S3_3_c9_c12_0' : ( 'PMCR_EL0', 'Performance Monitors Control Register' ),
'S3_3_c9_c12_1' : ( 'PMCNTENSET_EL0', 'Performance Monitors Count Enable Set register' ),
'S3_3_c9_c12_2' : ( 'PMCNTENCLR_EL0', 'Performance Monitors Count Enable Clear register' ),
'S3_3_c9_c12_3' : ( 'PMOVSCLR_EL0', 'Performance Monitors Overflow Flag Status Clear Register' ),
'S3_3_c9_c12_4' : ( 'PMSWINC_EL0', 'Performance Monitors Software Increment register' ),
'S3_3_c9_c12_5' : ( 'PMSELR_EL0', 'Performance Monitors Event Counter Selection Register' ),
'S3_3_c9_c12_6' : ( 'PMCEID0_EL0', 'Performance Monitors Common Event Identification register 0' ),
'S3_3_c9_c12_7' : ( 'PMCEID1_EL0', 'Performance Monitors Common Event Identification register 1' ),
'S3_3_c9_c13_0' : ( 'PMCCNTR_EL0', 'Performance Monitors Cycle Count Register' ),
'S3_3_c9_c13_1' : ( 'PMXEVTYPER_EL0', 'Performance Monitors Selected Event Type Register' ),
'S3_3_c9_c13_2' : ( 'PMXEVCNTR_EL0', 'Performance Monitors Selected Event Count Register' ),
'S3_3_c9_c14_0' : ( 'PMUSERENR_EL0', 'Performance Monitors User Enable Register' ),
'S3_3_c9_c14_3' : ( 'PMOVSSET_EL0', 'Performance Monitors Overflow Flag Status Set register' ),
'S3_3_c13_c0_2' : ( 'TPIDR_EL0', 'EL0 Read/Write Software Thread ID Register' ),
'S3_3_c13_c0_3' : ( 'TPIDRRO_EL0', 'EL0 Read-Only Software Thread ID Register' ),
'S3_3_c13_c0_7' : ( 'SCXTNUM_EL0', 'EL0 Read/Write Software Context Number' ),
'S3_3_c13_c2_0' : ( 'AMCR_EL0', 'Activity Monitors Control Register' ),
'S3_3_c13_c2_1' : ( 'AMCFGR_EL0', 'Activity Monitors Configuration Register' ),
'S3_3_c13_c2_2' : ( 'AMCGCR_EL0', 'Activity Monitors Counter Group Configuration Register' ),
'S3_3_c13_c2_3' : ( 'AMUSERENR_EL0', 'Activity Monitors User Enable Register' ),
'S3_3_c13_c2_4' : ( 'AMCNTENCLR0_EL0', 'Activity Monitors Count Enable Clear Register 0' ),
'S3_3_c13_c2_5' : ( 'AMCNTENSET0_EL0', 'Activity Monitors Count Enable Set Register 0' ),
'S3_3_c13_c2_6' : ( 'AMCG1IDR_EL0', 'Activity Monitors Counter Group 1 Identification Register' ),
'S3_3_c13_c3_0' : ( 'AMCNTENCLR1_EL0', 'Activity Monitors Count Enable Clear Register 1' ),
'S3_3_c13_c3_1' : ( 'AMCNTENSET1_EL0', 'Activity Monitors Count Enable Set Register 1' ),
'S3_3_c13_c4_0' : ( 'AMEVCNTR00_EL0', 'Activity Monitors Event Counter Register 0 0' ),
'S3_3_c13_c4_1' : ( 'AMEVCNTR01_EL0', 'Activity Monitors Event Counter Register 0 1' ),
'S3_3_c13_c4_2' : ( 'AMEVCNTR02_EL0', 'Activity Monitors Event Counter Register 0 2' ),
'S3_3_c13_c4_3' : ( 'AMEVCNTR03_EL0', 'Activity Monitors Event Counter Register 0 3' ),
'S3_3_c13_c4_4' : ( 'AMEVCNTR04_EL0', 'Activity Monitors Event Counter Register 0 4' ),
'S3_3_c13_c4_5' : ( 'AMEVCNTR05_EL0', 'Activity Monitors Event Counter Register 0 5' ),
'S3_3_c13_c4_6' : ( 'AMEVCNTR06_EL0', 'Activity Monitors Event Counter Register 0 6' ),
'S3_3_c13_c4_7' : ( 'AMEVCNTR07_EL0', 'Activity Monitors Event Counter Register 0 7' ),
'S3_3_c13_c5_0' : ( 'AMEVCNTR08_EL0', 'Activity Monitors Event Counter Register 0 8' ),
'S3_3_c13_c5_1' : ( 'AMEVCNTR09_EL0', 'Activity Monitors Event Counter Register 0 9' ),
'S3_3_c13_c5_2' : ( 'AMEVCNTR010_EL0', 'Activity Monitors Event Counter Register 0 10' ),
'S3_3_c13_c5_3' : ( 'AMEVCNTR011_EL0', 'Activity Monitors Event Counter Register 0 11' ),
'S3_3_c13_c5_4' : ( 'AMEVCNTR012_EL0', 'Activity Monitors Event Counter Register 0 12' ),
'S3_3_c13_c5_5' : ( 'AMEVCNTR013_EL0', 'Activity Monitors Event Counter Register 0 13' ),
'S3_3_c13_c5_6' : ( 'AMEVCNTR014_EL0', 'Activity Monitors Event Counter Register 0 14' ),
'S3_3_c13_c5_7' : ( 'AMEVCNTR015_EL0', 'Activity Monitors Event Counter Register 0 15' ),
'S3_3_c13_c6_0' : ( 'AMEVTYPER00_EL0', 'Activity Monitors Event Type Register 0 0' ),
'S3_3_c13_c6_1' : ( 'AMEVTYPER01_EL0', 'Activity Monitors Event Type Register 0 1' ),
'S3_3_c13_c6_2' : ( 'AMEVTYPER02_EL0', 'Activity Monitors Event Type Register 0 2' ),
'S3_3_c13_c6_3' : ( 'AMEVTYPER03_EL0', 'Activity Monitors Event Type Register 0 3' ),
'S3_3_c13_c6_4' : ( 'AMEVTYPER04_EL0', 'Activity Monitors Event Type Register 0 4' ),
'S3_3_c13_c6_5' : ( 'AMEVTYPER05_EL0', 'Activity Monitors Event Type Register 0 5' ),
'S3_3_c13_c6_6' : ( 'AMEVTYPER06_EL0', 'Activity Monitors Event Type Register 0 6' ),
'S3_3_c13_c6_7' : ( 'AMEVTYPER07_EL0', 'Activity Monitors Event Type Register 0 7' ),
'S3_3_c13_c7_0' : ( 'AMEVTYPER08_EL0', 'Activity Monitors Event Type Register 0 8' ),
'S3_3_c13_c7_1' : ( 'AMEVTYPER09_EL0', 'Activity Monitors Event Type Register 0 9' ),
'S3_3_c13_c7_2' : ( 'AMEVTYPER010_EL0', 'Activity Monitors Event Type Register 0 10' ),
'S3_3_c13_c7_3' : ( 'AMEVTYPER011_EL0', 'Activity Monitors Event Type Register 0 11' ),
'S3_3_c13_c7_4' : ( 'AMEVTYPER012_EL0', 'Activity Monitors Event Type Register 0 12' ),
'S3_3_c13_c7_5' : ( 'AMEVTYPER013_EL0', 'Activity Monitors Event Type Register 0 13' ),
'S3_3_c13_c7_6' : ( 'AMEVTYPER014_EL0', 'Activity Monitors Event Type Register 0 14' ),
'S3_3_c13_c7_7' : ( 'AMEVTYPER015_EL0', 'Activity Monitors Event Type Register 0 15' ),
'S3_3_c13_c12_0' : ( 'AMEVCNTR10_EL0', 'Activity Monitors Event Counter Register 1 0' ),
'S3_3_c13_c12_1' : ( 'AMEVCNTR11_EL0', 'Activity Monitors Event Counter Register 1 1' ),
'S3_3_c13_c12_2' : ( 'AMEVCNTR12_EL0', 'Activity Monitors Event Counter Register 1 2' ),
'S3_3_c13_c12_3' : ( 'AMEVCNTR13_EL0', 'Activity Monitors Event Counter Register 1 3' ),
'S3_3_c13_c12_4' : ( 'AMEVCNTR14_EL0', 'Activity Monitors Event Counter Register 1 4' ),
'S3_3_c13_c12_5' : ( 'AMEVCNTR15_EL0', 'Activity Monitors Event Counter Register 1 5' ),
'S3_3_c13_c12_6' : ( 'AMEVCNTR16_EL0', 'Activity Monitors Event Counter Register 1 6' ),
'S3_3_c13_c12_7' : ( 'AMEVCNTR17_EL0', 'Activity Monitors Event Counter Register 1 7' ),
'S3_3_c13_c13_0' : ( 'AMEVCNTR18_EL0', 'Activity Monitors Event Counter Register 1 8' ),
'S3_3_c13_c13_1' : ( 'AMEVCNTR19_EL0', 'Activity Monitors Event Counter Register 1 9' ),
'S3_3_c13_c13_2' : ( 'AMEVCNTR110_EL0', 'Activity Monitors Event Counter Register 1 10' ),
'S3_3_c13_c13_3' : ( 'AMEVCNTR111_EL0', 'Activity Monitors Event Counter Register 1 11' ),
'S3_3_c13_c13_4' : ( 'AMEVCNTR112_EL0', 'Activity Monitors Event Counter Register 1 12' ),
'S3_3_c13_c13_5' : ( 'AMEVCNTR113_EL0', 'Activity Monitors Event Counter Register 1 13' ),
'S3_3_c13_c13_6' : ( 'AMEVCNTR114_EL0', 'Activity Monitors Event Counter Register 1 14' ),
'S3_3_c13_c13_7' : ( 'AMEVCNTR115_EL0', 'Activity Monitors Event Counter Register 1 15' ),
'S3_3_c13_c14_0' : ( 'AMEVTYPER10_EL0', 'Activity Monitors Event Type Register 1 0' ),
'S3_3_c13_c14_1' : ( 'AMEVTYPER11_EL0', 'Activity Monitors Event Type Register 1 1' ),
'S3_3_c13_c14_2' : ( 'AMEVTYPER12_EL0', 'Activity Monitors Event Type Register 1 2' ),
'S3_3_c13_c14_3' : ( 'AMEVTYPER13_EL0', 'Activity Monitors Event Type Register 1 3' ),
'S3_3_c13_c14_4' : ( 'AMEVTYPER14_EL0', 'Activity Monitors Event Type Register 1 4' ),
'S3_3_c13_c14_5' : ( 'AMEVTYPER15_EL0', 'Activity Monitors Event Type Register 1 5' ),
'S3_3_c13_c14_6' : ( 'AMEVTYPER16_EL0', 'Activity Monitors Event Type Register 1 6' ),
'S3_3_c13_c14_7' : ( 'AMEVTYPER17_EL0', 'Activity Monitors Event Type Register 1 7' ),
'S3_3_c13_c15_0' : ( 'AMEVTYPER18_EL0', 'Activity Monitors Event Type Register 1 8' ),
'S3_3_c13_c15_1' : ( 'AMEVTYPER19_EL0', 'Activity Monitors Event Type Register 1 9' ),
'S3_3_c13_c15_2' : ( 'AMEVTYPER110_EL0', 'Activity Monitors Event Type Register 1 10' ),
'S3_3_c13_c15_3' : ( 'AMEVTYPER111_EL0', 'Activity Monitors Event Type Register 1 11' ),
'S3_3_c13_c15_4' : ( 'AMEVTYPER112_EL0', 'Activity Monitors Event Type Register 1 12' ),
'S3_3_c13_c15_5' : ( 'AMEVTYPER113_EL0', 'Activity Monitors Event Type Register 1 13' ),
'S3_3_c13_c15_6' : ( 'AMEVTYPER114_EL0', 'Activity Monitors Event Type Register 1 14' ),
'S3_3_c13_c15_7' : ( 'AMEVTYPER115_EL0', 'Activity Monitors Event Type Register 1 15' ),
'S3_3_c14_c0_0' : ( 'CNTFRQ_EL0', 'Counter-timer Frequency register' ),
'S3_3_c14_c0_1' : ( 'CNTPCT_EL0', 'Counter-timer Physical Count register' ),
'S3_3_c14_c0_2' : ( 'CNTVCT_EL0', 'Counter-timer Virtual Count register' ),
'S3_3_c14_c0_5' : ( 'CNTPCTSS_EL0', 'Counter-timer Self-Synchronized Physical Count register' ),
'S3_3_c14_c0_6' : ( 'CNTVCTSS_EL0', 'Counter-timer Self-Synchronized Virtual Count register' ),
'S3_3_c14_c2_0' : ( 'CNTP_TVAL_EL0', 'Counter-timer Physical Timer TimerValue register' ),
'S3_3_c14_c2_1' : ( 'CNTP_CTL_EL0', 'Counter-timer Physical Timer Control register' ),
'S3_3_c14_c2_2' : ( 'CNTP_CVAL_EL0', 'Counter-timer Physical Timer CompareValue register' ),
'S3_3_c14_c3_0' : ( 'CNTV_TVAL_EL0', 'Counter-timer Virtual Timer TimerValue register' ),
'S3_3_c14_c3_1' : ( 'CNTV_CTL_EL0', 'Counter-timer Virtual Timer Control register' ),
'S3_3_c14_c3_2' : ( 'CNTV_CVAL_EL0', 'Counter-timer Virtual Timer CompareValue register' ),
'S3_3_c14_c8_0' : ( 'PMEVCNTR0_EL0', 'Performance Monitors Event Count Register 0' ),
'S3_3_c14_c8_1' : ( 'PMEVCNTR1_EL0', 'Performance Monitors Event Count Register 1' ),
'S3_3_c14_c8_2' : ( 'PMEVCNTR2_EL0', 'Performance Monitors Event Count Register 2' ),
'S3_3_c14_c8_3' : ( 'PMEVCNTR3_EL0', 'Performance Monitors Event Count Register 3' ),
'S3_3_c14_c8_4' : ( 'PMEVCNTR4_EL0', 'Performance Monitors Event Count Register 4' ),
'S3_3_c14_c8_5' : ( 'PMEVCNTR5_EL0', 'Performance Monitors Event Count Register 5' ),
'S3_3_c14_c8_6' : ( 'PMEVCNTR6_EL0', 'Performance Monitors Event Count Register 6' ),
'S3_3_c14_c8_7' : ( 'PMEVCNTR7_EL0', 'Performance Monitors Event Count Register 7' ),
'S3_3_c14_c9_0' : ( 'PMEVCNTR8_EL0', 'Performance Monitors Event Count Register 8' ),
'S3_3_c14_c9_1' : ( 'PMEVCNTR9_EL0', 'Performance Monitors Event Count Register 9' ),
'S3_3_c14_c9_2' : ( 'PMEVCNTR10_EL0', 'Performance Monitors Event Count Register 10' ),
'S3_3_c14_c9_3' : ( 'PMEVCNTR11_EL0', 'Performance Monitors Event Count Register 11' ),
'S3_3_c14_c9_4' : ( 'PMEVCNTR12_EL0', 'Performance Monitors Event Count Register 12' ),
'S3_3_c14_c9_5' : ( 'PMEVCNTR13_EL0', 'Performance Monitors Event Count Register 13' ),
'S3_3_c14_c9_6' : ( 'PMEVCNTR14_EL0', 'Performance Monitors Event Count Register 14' ),
'S3_3_c14_c9_7' : ( 'PMEVCNTR15_EL0', 'Performance Monitors Event Count Register 15' ),
'S3_3_c14_c10_0' : ( 'PMEVCNTR16_EL0', 'Performance Monitors Event Count Register 16' ),
'S3_3_c14_c10_1' : ( 'PMEVCNTR17_EL0', 'Performance Monitors Event Count Register 17' ),
'S3_3_c14_c10_2' : ( 'PMEVCNTR18_EL0', 'Performance Monitors Event Count Register 18' ),
'S3_3_c14_c10_3' : ( 'PMEVCNTR19_EL0', 'Performance Monitors Event Count Register 19' ),
'S3_3_c14_c10_4' : ( 'PMEVCNTR20_EL0', 'Performance Monitors Event Count Register 20' ),
'S3_3_c14_c10_5' : ( 'PMEVCNTR21_EL0', 'Performance Monitors Event Count Register 21' ),
'S3_3_c14_c10_6' : ( 'PMEVCNTR22_EL0', 'Performance Monitors Event Count Register 22' ),
'S3_3_c14_c10_7' : ( 'PMEVCNTR23_EL0', 'Performance Monitors Event Count Register 23' ),
'S3_3_c14_c11_0' : ( 'PMEVCNTR24_EL0', 'Performance Monitors Event Count Register 24' ),
'S3_3_c14_c11_1' : ( 'PMEVCNTR25_EL0', 'Performance Monitors Event Count Register 25' ),
'S3_3_c14_c11_2' : ( 'PMEVCNTR26_EL0', 'Performance Monitors Event Count Register 26' ),
'S3_3_c14_c11_3' : ( 'PMEVCNTR27_EL0', 'Performance Monitors Event Count Register 27' ),
'S3_3_c14_c11_4' : ( 'PMEVCNTR28_EL0', 'Performance Monitors Event Count Register 28' ),
'S3_3_c14_c11_5' : ( 'PMEVCNTR29_EL0', 'Performance Monitors Event Count Register 29' ),
'S3_3_c14_c11_6' : ( 'PMEVCNTR30_EL0', 'Performance Monitors Event Count Register 30' ),
'S3_3_c14_c11_7' : ( 'PMEVCNTR31_EL0', 'Performance Monitors Event Count Register 31' ),
'S3_3_c14_c12_0' : ( 'PMEVTYPER0_EL0', 'Performance Monitors Event Type Register 0' ),
'S3_3_c14_c12_1' : ( 'PMEVTYPER1_EL0', 'Performance Monitors Event Type Register 1' ),
'S3_3_c14_c12_2' : ( 'PMEVTYPER2_EL0', 'Performance Monitors Event Type Register 2' ),
'S3_3_c14_c12_3' : ( 'PMEVTYPER3_EL0', 'Performance Monitors Event Type Register 3' ),
'S3_3_c14_c12_4' : ( 'PMEVTYPER4_EL0', 'Performance Monitors Event Type Register 4' ),
'S3_3_c14_c12_5' : ( 'PMEVTYPER5_EL0', 'Performance Monitors Event Type Register 5' ),
'S3_3_c14_c12_6' : ( 'PMEVTYPER6_EL0', 'Performance Monitors Event Type Register 6' ),
'S3_3_c14_c12_7' : ( 'PMEVTYPER7_EL0', 'Performance Monitors Event Type Register 7' ),
'S3_3_c14_c13_0' : ( 'PMEVTYPER8_EL0', 'Performance Monitors Event Type Register 8' ),
'S3_3_c14_c13_1' : ( 'PMEVTYPER9_EL0', 'Performance Monitors Event Type Register 9' ),
'S3_3_c14_c13_2' : ( 'PMEVTYPER10_EL0', 'Performance Monitors Event Type Register 10' ),
'S3_3_c14_c13_3' : ( 'PMEVTYPER11_EL0', 'Performance Monitors Event Type Register 11' ),
'S3_3_c14_c13_4' : ( 'PMEVTYPER12_EL0', 'Performance Monitors Event Type Register 12' ),
'S3_3_c14_c13_5' : ( 'PMEVTYPER13_EL0', 'Performance Monitors Event Type Register 13' ),
'S3_3_c14_c13_6' : ( 'PMEVTYPER14_EL0', 'Performance Monitors Event Type Register 14' ),
'S3_3_c14_c13_7' : ( 'PMEVTYPER15_EL0', 'Performance Monitors Event Type Register 15' ),
'S3_3_c14_c14_0' : ( 'PMEVTYPER16_EL0', 'Performance Monitors Event Type Register 16' ),
'S3_3_c14_c14_1' : ( 'PMEVTYPER17_EL0', 'Performance Monitors Event Type Register 17' ),
'S3_3_c14_c14_2' : ( 'PMEVTYPER18_EL0', 'Performance Monitors Event Type Register 18' ),
'S3_3_c14_c14_3' : ( 'PMEVTYPER19_EL0', 'Performance Monitors Event Type Register 19' ),
'S3_3_c14_c14_4' : ( 'PMEVTYPER20_EL0', 'Performance Monitors Event Type Register 20' ),
'S3_3_c14_c14_5' : ( 'PMEVTYPER21_EL0', 'Performance Monitors Event Type Register 21' ),
'S3_3_c14_c14_6' : ( 'PMEVTYPER22_EL0', 'Performance Monitors Event Type Register 22' ),
'S3_3_c14_c14_7' : ( 'PMEVTYPER23_EL0', 'Performance Monitors Event Type Register 23' ),
'S3_3_c14_c15_0' : ( 'PMEVTYPER24_EL0', 'Performance Monitors Event Type Register 24' ),
'S3_3_c14_c15_1' : ( 'PMEVTYPER25_EL0', 'Performance Monitors Event Type Register 25' ),
'S3_3_c14_c15_2' : ( 'PMEVTYPER26_EL0', 'Performance Monitors Event Type Register 26' ),
'S3_3_c14_c15_3' : ( 'PMEVTYPER27_EL0', 'Performance Monitors Event Type Register 27' ),
'S3_3_c14_c15_4' : ( 'PMEVTYPER28_EL0', 'Performance Monitors Event Type Register 28' ),
'S3_3_c14_c15_5' : ( 'PMEVTYPER29_EL0', 'Performance Monitors Event Type Register 29' ),
'S3_3_c14_c15_6' : ( 'PMEVTYPER30_EL0', 'Performance Monitors Event Type Register 30' ),
'S3_3_c14_c15_7' : ( 'PMCCFILTR_EL0', 'Performance Monitors Cycle Count Filter Register' ),
'S3_3_c14_c15_7' : ( 'PMEVTYPER31_EL0', 'Performance Monitors Event Type Register 31' ),
'S3_4_c0_c0_0' : ( 'VPIDR_EL2', 'Virtualization Processor ID Register' ),
'S3_4_c0_c0_5' : ( 'VMPIDR_EL2', 'Virtualization Multiprocessor ID Register' ),
'S3_4_c1_c0_0' : ( 'SCTLR_EL2', 'System Control Register (EL2)' ),
'S3_4_c1_c0_1' : ( 'ACTLR_EL2', 'Auxiliary Control Register (EL2)' ),
'S3_4_c1_c1_0' : ( 'HCR_EL2', 'Hypervisor Configuration Register' ),
'S3_4_c1_c1_1' : ( 'MDCR_EL2', 'Monitor Debug Configuration Register (EL2)' ),
'S3_4_c1_c1_2' : ( 'CPTR_EL2', 'Architectural Feature Trap Register (EL2)' ),
'S3_4_c1_c1_3' : ( 'HSTR_EL2', 'Hypervisor System Trap Register' ),
'S3_4_c1_c1_4' : ( 'HFGRTR_EL2', 'Hypervisor Fine-Grained Read Trap Register' ),
'S3_4_c1_c1_5' : ( 'HFGWTR_EL2', 'Hypervisor Fine-Grained Write Trap Register' ),
'S3_4_c1_c1_6' : ( 'HFGITR_EL2', 'Hypervisor Fine-Grained Instruction Trap Register' ),
'S3_4_c1_c1_7' : ( 'HACR_EL2', 'Hypervisor Auxiliary Control Register' ),
'S3_4_c1_c2_0' : ( 'ZCR_EL2', 'SVE Control Register for EL2' ),
'S3_4_c1_c2_1' : ( 'TRFCR_EL2', 'Trace Filter Control Register (EL2)' ),
'S3_4_c1_c3_1' : ( 'SDER32_EL2', 'AArch32 Secure Debug Enable Register' ),
'S3_4_c2_c0_0' : ( 'TTBR0_EL2', 'Translation Table Base Register 0 (EL2)' ),
'S3_4_c2_c0_1' : ( 'TTBR1_EL2', 'Translation Table Base Register 1 (EL2)' ),
'S3_4_c2_c0_2' : ( 'TCR_EL2', 'Translation Control Register (EL2)' ),
'S3_4_c2_c1_0' : ( 'VTTBR_EL2', 'Virtualization Translation Table Base Register' ),
'S3_4_c2_c1_2' : ( 'VTCR_EL2', 'Virtualization Translation Control Register' ),
'S3_4_c2_c2_0' : ( 'VNCR_EL2', 'Virtual Nested Control Register' ),
'S3_4_c2_c6_0' : ( 'VSTTBR_EL2', 'Virtualization Secure Translation Table Base Register' ),
'S3_4_c2_c6_2' : ( 'VSTCR_EL2', 'Virtualization Secure Translation Control Register' ),
'S3_4_c3_c0_0' : ( 'DACR32_EL2', 'Domain Access Control Register' ),
'S3_4_c3_c1_4' : ( 'HDFGRTR_EL2', 'Hypervisor Debug Fine-Grained Read Trap Register' ),
'S3_4_c3_c1_5' : ( 'HDFGWTR_EL2', 'Hypervisor Debug Fine-Grained Write Trap Register' ),
'S3_4_c3_c1_6' : ( 'HAFGRTR_EL2', 'Hypervisor Activity Monitors Fine-Grained Read Trap Register' ),
'S3_4_c4_c0_0' : ( 'SPSR_EL2', 'Saved Program Status Register (EL2)' ),
'S3_4_c4_c0_1' : ( 'ELR_EL2', 'Exception Link Register (EL2)' ),
'S3_4_c4_c1_0' : ( 'SP_EL1', 'Stack Pointer (EL1)' ),
'S3_4_c4_c3_0' : ( 'SPSR_irq', 'Saved Program Status Register (IRQ mode)' ),
'S3_4_c4_c3_1' : ( 'SPSR_abt', 'Saved Program Status Register (Abort mode)' ),
'S3_4_c4_c3_2' : ( 'SPSR_und', 'Saved Program Status Register (Undefined mode)' ),
'S3_4_c4_c3_3' : ( 'SPSR_fiq', 'Saved Program Status Register (FIQ mode)' ),
'S3_4_c5_c0_1' : ( 'IFSR32_EL2', 'Instruction Fault Status Register (EL2)' ),
'S3_4_c5_c1_0' : ( 'AFSR0_EL2', 'Auxiliary Fault Status Register 0 (EL2)' ),
'S3_4_c5_c1_1' : ( 'AFSR1_EL2', 'Auxiliary Fault Status Register 1 (EL2)' ),
'S3_4_c5_c2_0' : ( 'ESR_EL2', 'Exception Syndrome Register (EL2)' ),
'S3_4_c5_c2_3' : ( 'VSESR_EL2', 'Virtual SError Exception Syndrome Register' ),
'S3_4_c5_c3_0' : ( 'FPEXC32_EL2', 'Floating-Point Exception Control register' ),
'S3_4_c5_c6_0' : ( 'TFSR_EL2', 'Tag Fault Status Register (EL2)' ),
'S3_4_c6_c0_0' : ( 'FAR_EL2', 'Fault Address Register (EL2)' ),
'S3_4_c6_c0_4' : ( 'HPFAR_EL2', 'Hypervisor IPA Fault Address Register' ),
'S3_4_c9_c9_0' : ( 'PMSCR_EL2', 'Statistical Profiling Control Register (EL2)' ),
'S3_4_c10_c2_0' : ( 'MAIR_EL2', 'Memory Attribute Indirection Register (EL2)' ),
'S3_4_c10_c3_0' : ( 'AMAIR_EL2', 'Auxiliary Memory Attribute Indirection Register (EL2)' ),
'S3_4_c10_c4_0' : ( 'MPAMHCR_EL2', 'MPAM Hypervisor Control Register (EL2)' ),
'S3_4_c10_c4_1' : ( 'MPAMVPMV_EL2', 'MPAM Virtual Partition Mapping Valid Register' ),
'S3_4_c10_c5_0' : ( 'MPAM2_EL2', 'MPAM2 Register (EL2)' ),
'S3_4_c10_c6_0' : ( 'MPAMVPM0_EL2', 'MPAM Virtual PARTID Mapping Register 0' ),
'S3_4_c10_c6_1' : ( 'MPAMVPM1_EL2', 'MPAM Virtual PARTID Mapping Register 1' ),
'S3_4_c10_c6_2' : ( 'MPAMVPM2_EL2', 'MPAM Virtual PARTID Mapping Register 2' ),
'S3_4_c10_c6_3' : ( 'MPAMVPM3_EL2', 'MPAM Virtual PARTID Mapping Register 3' ),
'S3_4_c10_c6_4' : ( 'MPAMVPM4_EL2', 'MPAM Virtual PARTID Mapping Register 4' ),
'S3_4_c10_c6_5' : ( 'MPAMVPM5_EL2', 'MPAM Virtual PARTID Mapping Register 5' ),
'S3_4_c10_c6_6' : ( 'MPAMVPM6_EL2', 'MPAM Virtual PARTID Mapping Register 6' ),
'S3_4_c10_c6_7' : ( 'MPAMVPM7_EL2', 'MPAM Virtual PARTID Mapping Register 7' ),
'S3_4_c12_c0_0' : ( 'VBAR_EL2', 'Vector Base Address Register (EL2)' ),
'S3_4_c12_c0_1' : ( 'RVBAR_EL2', 'Reset Vector Base Address Register (if EL3 not implemented)' ),
'S3_4_c12_c0_2' : ( 'RMR_EL2', 'Reset Management Register (EL2)' ),
'S3_4_c12_c1_1' : ( 'VDISR_EL2', 'Virtual Deferred Interrupt Status Register' ),
'S3_4_c12_c8_0' : ( 'ICH_AP0R0_EL2', 'Interrupt Controller Hyp Active Priorities Group 0 Register 0' ),
'S3_4_c12_c8_1' : ( 'ICH_AP0R1_EL2', 'Interrupt Controller Hyp Active Priorities Group 0 Register 1' ),
'S3_4_c12_c8_2' : ( 'ICH_AP0R2_EL2', 'Interrupt Controller Hyp Active Priorities Group 0 Register 2' ),
'S3_4_c12_c8_3' : ( 'ICH_AP0R3_EL2', 'Interrupt Controller Hyp Active Priorities Group 0 Register 3' ),
'S3_4_c12_c9_0' : ( 'ICH_AP1R0_EL2', 'Interrupt Controller Hyp Active Priorities Group 1 Register 0' ),
'S3_4_c12_c9_1' : ( 'ICH_AP1R1_EL2', 'Interrupt Controller Hyp Active Priorities Group 1 Register 1' ),
'S3_4_c12_c9_2' : ( 'ICH_AP1R2_EL2', 'Interrupt Controller Hyp Active Priorities Group 1 Register 2' ),
'S3_4_c12_c9_3' : ( 'ICH_AP1R3_EL2', 'Interrupt Controller Hyp Active Priorities Group 1 Register 3' ),
'S3_4_c12_c9_5' : ( 'ICC_SRE_EL2', 'Interrupt Controller System Register Enable register (EL2)' ),
'S3_4_c12_c11_0' : ( 'ICH_HCR_EL2', 'Interrupt Controller Hyp Control Register' ),
'S3_4_c12_c11_1' : ( 'ICH_VTR_EL2', 'Interrupt Controller VGIC Type Register' ),
'S3_4_c12_c11_2' : ( 'ICH_MISR_EL2', 'Interrupt Controller Maintenance Interrupt State Register' ),
'S3_4_c12_c11_3' : ( 'ICH_EISR_EL2', 'Interrupt Controller End of Interrupt Status Register' ),
'S3_4_c12_c11_5' : ( 'ICH_ELRSR_EL2', 'Interrupt Controller Empty List Register Status Register' ),
'S3_4_c12_c11_7' : ( 'ICH_VMCR_EL2', 'Interrupt Controller Virtual Machine Control Register' ),
'S3_4_c12_c12_0' : ( 'ICH_LR0_EL2', 'Interrupt Controller List Register 0' ),
'S3_4_c12_c12_1' : ( 'ICH_LR1_EL2', 'Interrupt Controller List Register 1' ),
'S3_4_c12_c12_2' : ( 'ICH_LR2_EL2', 'Interrupt Controller List Register 2' ),
'S3_4_c12_c12_3' : ( 'ICH_LR3_EL2', 'Interrupt Controller List Register 3' ),
'S3_4_c12_c12_4' : ( 'ICH_LR4_EL2', 'Interrupt Controller List Register 4' ),
'S3_4_c12_c12_5' : ( 'ICH_LR5_EL2', 'Interrupt Controller List Register 5' ),
'S3_4_c12_c12_6' : ( 'ICH_LR6_EL2', 'Interrupt Controller List Register 6' ),
'S3_4_c12_c12_7' : ( 'ICH_LR7_EL2', 'Interrupt Controller List Register 7' ),
'S3_4_c12_c13_0' : ( 'ICH_LR8_EL2', 'Interrupt Controller List Register 8' ),
'S3_4_c12_c13_1' : ( 'ICH_LR9_EL2', 'Interrupt Controller List Register 9' ),
'S3_4_c12_c13_2' : ( 'ICH_LR10_EL2', 'Interrupt Controller List Register 10' ),
'S3_4_c12_c13_3' : ( 'ICH_LR11_EL2', 'Interrupt Controller List Register 11' ),
'S3_4_c12_c13_4' : ( 'ICH_LR12_EL2', 'Interrupt Controller List Register 12' ),
'S3_4_c12_c13_5' : ( 'ICH_LR13_EL2', 'Interrupt Controller List Register 13' ),
'S3_4_c12_c13_6' : ( 'ICH_LR14_EL2', 'Interrupt Controller List Register 14' ),
'S3_4_c12_c13_7' : ( 'ICH_LR15_EL2', 'Interrupt Controller List Register 15' ),
'S3_4_c13_c0_1' : ( 'CONTEXTIDR_EL2', 'Context ID Register (EL2)' ),
'S3_4_c13_c0_2' : ( 'TPIDR_EL2', 'EL2 Software Thread ID Register' ),
'S3_4_c13_c0_7' : ( 'SCXTNUM_EL2', 'EL2 Read/Write Software Context Number' ),
'S3_4_c13_c8_0' : ( 'AMEVCNTVOFF00_EL2', 'Activity Monitors Event Counter Virtual Offset Register 0 0' ),
'S3_4_c13_c8_1' : ( 'AMEVCNTVOFF01_EL2', 'Activity Monitors Event Counter Virtual Offset Register 0 1' ),
'S3_4_c13_c8_2' : ( 'AMEVCNTVOFF02_EL2', 'Activity Monitors Event Counter Virtual Offset Register 0 2' ),
'S3_4_c13_c8_3' : ( 'AMEVCNTVOFF03_EL2', 'Activity Monitors Event Counter Virtual Offset Register 0 3' ),
'S3_4_c13_c8_4' : ( 'AMEVCNTVOFF04_EL2', 'Activity Monitors Event Counter Virtual Offset Register 0 4' ),
'S3_4_c13_c8_5' : ( 'AMEVCNTVOFF05_EL2', 'Activity Monitors Event Counter Virtual Offset Register 0 5' ),
'S3_4_c13_c8_6' : ( 'AMEVCNTVOFF06_EL2', 'Activity Monitors Event Counter Virtual Offset Register 0 6' ),
'S3_4_c13_c8_7' : ( 'AMEVCNTVOFF07_EL2', 'Activity Monitors Event Counter Virtual Offset Register 0 7' ),
'S3_4_c13_c9_0' : ( 'AMEVCNTVOFF08_EL2', 'Activity Monitors Event Counter Virtual Offset Register 0 8' ),
'S3_4_c13_c9_1' : ( 'AMEVCNTVOFF09_EL2', 'Activity Monitors Event Counter Virtual Offset Register 0 9' ),
'S3_4_c13_c9_2' : ( 'AMEVCNTVOFF010_EL2', 'Activity Monitors Event Counter Virtual Offset Register 0 10' ),
'S3_4_c13_c9_3' : ( 'AMEVCNTVOFF011_EL2', 'Activity Monitors Event Counter Virtual Offset Register 0 11' ),
'S3_4_c13_c9_4' : ( 'AMEVCNTVOFF012_EL2', 'Activity Monitors Event Counter Virtual Offset Register 0 12' ),
'S3_4_c13_c9_5' : ( 'AMEVCNTVOFF013_EL2', 'Activity Monitors Event Counter Virtual Offset Register 0 13' ),
'S3_4_c13_c9_6' : ( 'AMEVCNTVOFF014_EL2', 'Activity Monitors Event Counter Virtual Offset Register 0 14' ),
'S3_4_c13_c9_7' : ( 'AMEVCNTVOFF015_EL2', 'Activity Monitors Event Counter Virtual Offset Register 0 15' ),
'S3_4_c13_c10_0' : ( 'AMEVCNTVOFF10_EL2', 'Activity Monitors Event Counter Virtual Offset Register 1 0' ),
'S3_4_c13_c10_1' : ( 'AMEVCNTVOFF11_EL2', 'Activity Monitors Event Counter Virtual Offset Register 1 1' ),
'S3_4_c13_c10_2' : ( 'AMEVCNTVOFF12_EL2', 'Activity Monitors Event Counter Virtual Offset Register 1 2' ),
'S3_4_c13_c10_3' : ( 'AMEVCNTVOFF13_EL2', 'Activity Monitors Event Counter Virtual Offset Register 1 3' ),
'S3_4_c13_c10_4' : ( 'AMEVCNTVOFF14_EL2', 'Activity Monitors Event Counter Virtual Offset Register 1 4' ),
'S3_4_c13_c10_5' : ( 'AMEVCNTVOFF15_EL2', 'Activity Monitors Event Counter Virtual Offset Register 1 5' ),
'S3_4_c13_c10_6' : ( 'AMEVCNTVOFF16_EL2', 'Activity Monitors Event Counter Virtual Offset Register 1 6' ),
'S3_4_c13_c10_7' : ( 'AMEVCNTVOFF17_EL2', 'Activity Monitors Event Counter Virtual Offset Register 1 7' ),
'S3_4_c13_c11_0' : ( 'AMEVCNTVOFF18_EL2', 'Activity Monitors Event Counter Virtual Offset Register 1 8' ),
'S3_4_c13_c11_1' : ( 'AMEVCNTVOFF19_EL2', 'Activity Monitors Event Counter Virtual Offset Register 1 9' ),
'S3_4_c13_c11_2' : ( 'AMEVCNTVOFF110_EL2', 'Activity Monitors Event Counter Virtual Offset Register 1 10' ),
'S3_4_c13_c11_3' : ( 'AMEVCNTVOFF111_EL2', 'Activity Monitors Event Counter Virtual Offset Register 1 11' ),
'S3_4_c13_c11_4' : ( 'AMEVCNTVOFF112_EL2', 'Activity Monitors Event Counter Virtual Offset Register 1 12' ),
'S3_4_c13_c11_5' : ( 'AMEVCNTVOFF113_EL2', 'Activity Monitors Event Counter Virtual Offset Register 1 13' ),
'S3_4_c13_c11_6' : ( 'AMEVCNTVOFF114_EL2', 'Activity Monitors Event Counter Virtual Offset Register 1 14' ),
'S3_4_c13_c11_7' : ( 'AMEVCNTVOFF115_EL2', 'Activity Monitors Event Counter Virtual Offset Register 1 15' ),
'S3_4_c14_c0_3' : ( 'CNTVOFF_EL2', 'Counter-timer Virtual Offset register' ),
'S3_4_c14_c0_6' : ( 'CNTPOFF_EL2', 'Counter-timer Physical Offset register' ),
'S3_4_c14_c1_0' : ( 'CNTHCTL_EL2', 'Counter-timer Hypervisor Control register' ),
'S3_4_c14_c2_0' : ( 'CNTHP_TVAL_EL2', 'Counter-timer Physical Timer TimerValue register (EL2)' ),
'S3_4_c14_c2_1' : ( 'CNTHP_CTL_EL2', 'Counter-timer Hypervisor Physical Timer Control register' ),
'S3_4_c14_c2_2' : ( 'CNTHP_CVAL_EL2', 'Counter-timer Physical Timer CompareValue register (EL2)' ),
'S3_4_c14_c3_0' : ( 'CNTHV_TVAL_EL2', 'Counter-timer Virtual Timer TimerValue Register (EL2)' ),
'S3_4_c14_c3_1' : ( 'CNTHV_CTL_EL2', 'Counter-timer Virtual Timer Control register (EL2)' ),
'S3_4_c14_c3_2' : ( 'CNTHV_CVAL_EL2', 'Counter-timer Virtual Timer CompareValue register (EL2)' ),
'S3_4_c14_c4_0' : ( 'CNTHVS_TVAL_EL2', 'Counter-timer Secure Virtual Timer TimerValue register (EL2)' ),
'S3_4_c14_c4_1' : ( 'CNTHVS_CTL_EL2', 'Counter-timer Secure Virtual Timer Control register (EL2)' ),
'S3_4_c14_c4_2' : ( 'CNTHVS_CVAL_EL2', 'Counter-timer Secure Virtual Timer CompareValue register (EL2)' ),
'S3_4_c14_c5_0' : ( 'CNTHPS_TVAL_EL2', 'Counter-timer Secure Physical Timer TimerValue register (EL2)' ),
'S3_4_c14_c5_1' : ( 'CNTHPS_CTL_EL2', 'Counter-timer Secure Physical Timer Control register (EL2)' ),
'S3_4_c14_c5_2' : ( 'CNTHPS_CVAL_EL2', 'Counter-timer Secure Physical Timer CompareValue register (EL2)' ),
'S3_6_c1_c0_0' : ( 'SCTLR_EL3', 'System Control Register (EL3)' ),
'S3_6_c1_c0_1' : ( 'ACTLR_EL3', 'Auxiliary Control Register (EL3)' ),
'S3_6_c1_c1_0' : ( 'SCR_EL3', 'Secure Configuration Register' ),
'S3_6_c1_c1_1' : ( 'SDER32_EL3', 'AArch32 Secure Debug Enable Register' ),
'S3_6_c1_c1_2' : ( 'CPTR_EL3', 'Architectural Feature Trap Register (EL3)' ),
'S3_6_c1_c2_0' : ( 'ZCR_EL3', 'SVE Control Register for EL3' ),
'S3_6_c1_c3_1' : ( 'MDCR_EL3', 'Monitor Debug Configuration Register (EL3)' ),
'S3_6_c2_c0_0' : ( 'TTBR0_EL3', 'Translation Table Base Register 0 (EL3)' ),
'S3_6_c2_c0_2' : ( 'TCR_EL3', 'Translation Control Register (EL3)' ),
'S3_6_c4_c0_0' : ( 'SPSR_EL3', 'Saved Program Status Register (EL3)' ),
'S3_6_c4_c0_1' : ( 'ELR_EL3', 'Exception Link Register (EL3)' ),
'S3_6_c4_c1_0' : ( 'SP_EL2', 'Stack Pointer (EL2)' ),
'S3_6_c5_c1_0' : ( 'AFSR0_EL3', 'Auxiliary Fault Status Register 0 (EL3)' ),
'S3_6_c5_c1_1' : ( 'AFSR1_EL3', 'Auxiliary Fault Status Register 1 (EL3)' ),
'S3_6_c5_c2_0' : ( 'ESR_EL3', 'Exception Syndrome Register (EL3)' ),
'S3_6_c5_c6_0' : ( 'TFSR_EL3', 'Tag Fault Status Register (EL3)' ),
'S3_6_c6_c0_0' : ( 'FAR_EL3', 'Fault Address Register (EL3)' ),
'S3_6_c10_c2_0' : ( 'MAIR_EL3', 'Memory Attribute Indirection Register (EL3)' ),
'S3_6_c10_c3_0' : ( 'AMAIR_EL3', 'Auxiliary Memory Attribute Indirection Register (EL3)' ),
'S3_6_c10_c5_0' : ( 'MPAM3_EL3', 'MPAM3 Register (EL3)' ),
'S3_6_c12_c0_0' : ( 'VBAR_EL3', 'Vector Base Address Register (EL3)' ),
'S3_6_c12_c0_1' : ( 'RVBAR_EL3', 'Reset Vector Base Address Register (if EL3 implemented)' ),
'S3_6_c12_c0_2' : ( 'RMR_EL3', 'Reset Management Register (EL3)' ),
'S3_6_c12_c12_4' : ( 'ICC_CTLR_EL3', 'Interrupt Controller Control Register (EL3)' ),
'S3_6_c12_c12_5' : ( 'ICC_SRE_EL3', 'Interrupt Controller System Register Enable register (EL3)' ),
'S3_6_c12_c12_7' : ( 'ICC_IGRPEN1_EL3', 'Interrupt Controller Interrupt Group 1 Enable register (EL3)' ),
'S3_6_c13_c0_2' : ( 'TPIDR_EL3', 'EL3 Software Thread ID Register' ),
'S3_6_c13_c0_7' : ( 'SCXTNUM_EL3', 'EL3 Read/Write Software Context Number' ),
'S3_7_c14_c2_0' : ( 'CNTPS_TVAL_EL1', 'Counter-timer Physical Secure Timer TimerValue register' ),
'S3_7_c14_c2_1' : ( 'CNTPS_CTL_EL1', 'Counter-timer Physical Secure Timer Control register' ),
'S3_7_c14_c2_2' : ( 'CNTPS_CVAL_EL1', 'Counter-timer Physical Secure Timer CompareValue register' ),
# Apple system registers.
'S3_0_c15_c0_0' : ( 'HID0', '' ),
'S3_0_c15_c0_1' : ( 'EHID0', '' ),
'S3_0_c15_c1_0' : ( 'HID1', '' ),
'S3_0_c15_c1_1' : ( 'EHID1', '' ),
'S3_0_c15_c2_0' : ( 'HID2', '' ),
'S3_0_c15_c2_1' : ( 'EHID2', '' ),
'S3_0_c15_c3_0' : ( 'HID3', '' ),
'S3_0_c15_c3_1' : ( 'EHID3', '' ),
'S3_0_c15_c4_0' : ( 'HID4', '' ),
'S3_0_c15_c4_1' : ( 'EHID4', '' ),
'S3_0_c15_c5_0' : ( 'HID5', '' ),
'S3_0_c15_c5_1' : ( 'EHID5', '' ),
'S3_0_c15_c6_0' : ( 'HID6', '' ),
'S3_0_c15_c7_0' : ( 'HID7', '' ),
'S3_0_c15_c8_0' : ( 'HID8', '' ),
'S3_0_c15_c9_0' : ( 'HID9', '' ),
'S3_0_c15_c10_0' : ( 'HID10', '' ),
'S3_0_c15_c10_1' : ( 'EHID10', '' ),
'S3_0_c15_c11_0' : ( 'HID11', '' ),
'S3_0_c15_c11_1' : ( 'EHID11', '' ),
'S3_0_c15_c14_0' : ( 'HID13', '' ),
'S3_0_c15_c15_0' : ( 'HID14', '' ),
'S3_0_c15_c15_2' : ( 'HID16', '' ),
'S3_1_c15_c0_0' : ( 'PMCR0', 'Apple Performance Monitor Control Register 0' ),
'S3_1_c15_c1_0' : ( 'PMCR1', 'Controls which execution modes count events' ),
'S3_1_c15_c2_0' : ( 'PMCR2', 'Controls watchpoint registers' ),
'S3_1_c15_c3_0' : ( 'PMCR3', 'Controls breakpoints and address matching' ),
'S3_1_c15_c4_0' : ( 'PMCR4', 'Controls opcode matching' ),
'S3_1_c15_c5_0' : ( 'PMESR0', '' ),
'S3_1_c15_c6_0' : ( 'PMESR1', '' ),
'S3_1_c15_c7_0' : ( 'OPMAT0', '' ),
'S3_1_c15_c8_0' : ( 'OPMAT1', '' ),
'S3_1_c15_c9_0' : ( 'OPMSK0', '' ),
'S3_1_c15_c10_0' : ( 'OPMSK1', '' ),
'S3_1_c15_c13_0' : ( 'PMSR', '' ),
'S3_2_c15_c0_0' : ( 'PMC0', '48-bit cycles counter' ),
'S3_2_c15_c1_0' : ( 'PMC1', '48-bit instructions counter' ),
'S3_2_c15_c2_0' : ( 'PMC2', '' ),
'S3_2_c15_c3_0' : ( 'PMC3', '' ),
'S3_2_c15_c4_0' : ( 'PMC4', '' ),
'S3_2_c15_c5_0' : ( 'PMC5', '' ),
'S3_2_c15_c6_0' : ( 'PMC6', '' ),
'S3_2_c15_c7_0' : ( 'PMC7', '' ),
'S3_2_c15_c9_0' : ( 'PMC8', '' ),
'S3_2_c15_c10_0' : ( 'PMC9', '' ),
'S3_2_c15_c12_0' : ( 'PMTRHLD6', '' ),
'S3_2_c15_c13_0' : ( 'PMTRHLD4', '' ),
'S3_2_c15_c14_0' : ( 'PMTRHLD2', '' ),
'S3_2_c15_c15_0' : ( 'PMMMAP', '' ),
'S3_3_c15_c0_0' : ( 'LSU_ERR_STS', 'LSU Error Status' ),
'S3_3_c15_c1_0' : ( 'LSU_ERR_CTL', 'LSU Error Control' ),
'S3_3_c15_c2_0' : ( 'E_LSU_ERR_STS', 'LSU Error Status' ),
'S3_3_c15_c7_0' : ( 'L2_CRAMCONFIG', 'LSU Error Status' ),
'S3_3_c15_c8_0' : ( 'LLC_ERR_STS', 'LLC Error Status' ),
'S3_3_c15_c8_1' : ( 'L2E_ERR_STS', '' ),
'S3_3_c15_c9_0' : ( 'LLC_ERR_ADR', 'LLC Error Address' ),
'S3_3_c15_c9_1' : ( 'L2E_ERR_ADR', '' ),
'S3_3_c15_c10_0' : ( 'LLC_ERR_INF', 'LLC Error Information' ),
'S3_3_c15_c10_1' : ( 'L2E_ERR_INF', '' ),
'S3_4_c15_c0_0' : ( 'FED_ERR_STS', 'FED Error Status' ),
'S3_4_c15_c0_2' : ( 'E_FED_ERR_STS', 'FED Error Status' ),
'S3_4_c15_c0_4' : ( 'APCTL_EL1/MIGSTS', '' ),
'S3_4_c15_c1_0' : ( 'KERNELKEYLO_EL1', 'PAC Kernel Key (bits[63:0])' ),
'S3_4_c15_c1_1' : ( 'KERNELKEYHI_EL1', 'PAC Kernel Key (bits[127:64])' ),
'S3_4_c15_c1_2' : ( 'VMSA_LOCK_EL1', 'VMSA Lock' ),
'S3_4_c15_c1_6' : ( 'CTRR_B_UPR_EL1', 'CTRR Upper Range B' ),
'S3_4_c15_c1_7' : ( 'CTRR_B_LWR_EL1', 'CTRR Lower Range B' ),
'S3_4_c15_c2_0' : ( 'APRR_0', 'APRR Register 0' ),
'S3_4_c15_c2_1' : ( 'APRR_1', 'APRR Register 1' ),
'S3_4_c15_c2_2' : ( 'CTRR_LOCK', 'CTRR Lockdown' ),
'S3_4_c15_c2_3' : ( 'CTRR_A_LWR_EL1', 'CTRR Lower Range' ),
'S3_4_c15_c2_4' : ( 'CTRR_A_UPR_EL1', 'CTRR Upper Range' ),
'S3_4_c15_c2_5' : ( 'CTRR_CTL_EL1', 'CTRR Control Register' ),
'S3_4_c15_c2_6' : ( 'APRR_6', 'APRR Register 6' ),
'S3_4_c15_c2_7' : ( 'APRR_7', 'APRR Register 7' ),
'S3_4_c15_c11_0' : ( 'ACC_CTRR_A_LWR_EL2', '' ),
'S3_4_c15_c11_1' : ( 'ACC_CTRR_A_UPR_EL2', '' ),
'S3_4_c15_c11_4' : ( 'ACC_CTRR_CTL_EL2', '' ),
'S3_4_c15_c11_5' : ( 'ACC_CTRR_LOCK_EL2', '' ),
'S3_5_c15_c0_0' : ( 'IPI_RR_LOCAL', '' ),
'S3_5_c15_c0_1' : ( 'IPI_RR_GLOBAL', '' ),
'S3_5_c15_c0_5' : ( 'DPC_ERR_STS', '' ),
'S3_5_c15_c1_1' : ( 'IPI_SR', '' ),
'S3_5_c15_c3_1' : ( 'IPI_CR', '' ),
'S3_5_c15_c4_0' : ( 'ACC_CFG/CYC_CFG', '' ),
'S3_5_c15_c5_0' : ( 'CYC_OVRD', '' ),
'S3_5_c15_c6_0' : ( 'ACC_OVRD', '' ),
'S3_5_c15_c6_1' : ( 'ACC_EBLK_OVRD', '' ),
'S3_6_c15_c0_0' : ( 'MMU_ERR_STS', 'MMU Error Status' ),
'S3_6_c15_c2_0' : ( 'E_MMU_ERR_STS', 'MMU Error Status' ),
'S3_6_c15_c12_4' : ( 'APSTS_EL1', '' ),
'S3_7_c15_c0_4' : ( 'UPMCR0', 'Controls which counters are enabled and how interrupts are generated for overflows' ),
'S3_7_c15_c0_5' : ( 'UPMC8', '' ),
'S3_7_c15_c1_4' : ( 'UPMESR0', 'Event selection register for counters 0-7' ),
'S3_7_c15_c1_5' : ( 'UPMC9', '' ),
'S3_7_c15_c2_5' : ( 'UPMC10', '' ),
'S3_7_c15_c3_4' : ( 'UPMECM0', 'Event core masks for counters 0-3' ),
'S3_7_c15_c3_5' : ( 'UPMC11', '' ),
'S3_7_c15_c4_4' : ( 'UPMECM1', 'Event core masks for counters 4-7' ),
'S3_7_c15_c4_5' : ( 'UPMC12', '' ),
'S3_7_c15_c5_4' : ( 'UPMPCM', '' ),
'S3_7_c15_c5_5' : ( 'UPMC13', '' ),
'S3_7_c15_c6_4' : ( 'UPMSR', '' ),
'S3_7_c15_c6_5' : ( 'UPMC14', '' ),
'S3_7_c15_c7_4' : ( 'UPMC0', '' ),
'S3_7_c15_c7_5' : ( 'UPMC15', '' ),
'S3_7_c15_c8_4' : ( 'UPMC1', '' ),
'S3_7_c15_c8_5' : ( 'UPMECM2', 'Event core masks for counters 8-11' ),
'S3_7_c15_c9_4' : ( 'UPMC2', '' ),
'S3_7_c15_c9_5' : ( 'UPMECM3', 'Event core masks for counters 12-15' ),
'S3_7_c15_c10_4' : ( 'UPMC3', '' ),
'S3_7_c15_c11_4' : ( 'UPMC4', '' ),
'S3_7_c15_c11_5' : ( 'UPMESR1', 'Event selection register for counters 8-15' ),
'S3_7_c15_c12_4' : ( 'UPMC5', '' ),
'S3_7_c15_c13_4' : ( 'UPMC6', '' ),
'S3_7_c15_c14_4' : ( 'UPMC7', '' ),
}
def add_comment(ea, comment):
existing = idc.get_cmt(ea, 0)
if not existing:
idc.set_cmt(ea, comment, 0)
def unknown(ea, category, value):
print('{:x} UNKNOWN {} {}'.format(ea, category, value))
def pstate_insn(ea, op2, CRm):
pstate = PSTATE_ACCESS.get(op2)
if pstate:
add_comment(ea, '{} {:#x}'.format(pstate, CRm))
else:
unknown(ea, 'PSTATE', '{:b}'.format(op2))
def sysreg_insn(ea, L, op0, op1, CRn, CRm, op2):
sr = 'S{}_{}_c{}_c{}_{}'.format(op0, op1, CRn, CRm, op2)
reg = SYSTEM_REGISTERS.get(sr)
if reg:
name = reg[0]
description = reg[1]
direction = '<' if L else '>' # L=0 => Transfer to system register.
comment = '[{}] {}'.format(direction, name)
if description:
comment += ' {}'.format(description)
add_comment(ea, comment)
else:
unknown(ea, 'SYSREG', sr)
def process_msr(ea, mnem):
insn = idc.get_wide_dword(ea)
assert(insn & 0xFFC00000 == 0xD5000000)
L = (insn >> 21) & 0x1
op0 = (insn >> 19) & 0x3
op1 = (insn >> 16) & 0x7
CRn = (insn >> 12) & 0xf
CRm = (insn >> 8) & 0xf
op2 = (insn >> 5) & 0x7
Rt = (insn >> 0) & 0x1f
if L == 0b0 and op0 == 0b00 and CRn == 0b0100 and Rt == 0b11111:
pstate_insn(ea, op2, CRm)
elif op0 != 0b00:
sysreg_insn(ea, L, op0, op1, CRn, CRm, op2)
else:
unknown(ea, mnem, '{:08x}'.format(insn))
SYSTEM_INSTRUCTIONS = {
'MSR' : process_msr,
'MRS' : process_msr,
'SYS' : process_msr,
}
def arm64_sysregs_ios():
for ea in idautils.Heads():
mnem = idc.print_insn_mnem(ea)
process_func = SYSTEM_INSTRUCTIONS.get(mnem)
if process_func:
process_func(ea, mnem)
arm64_sysregs_ios()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment