Skip to content

Releases: hrw/edk2-armcpuinfo

v1.3.0

05 May 14:22
@hrw hrw
Compare
Choose a tag to compare

Added partial support for rest of system registers: AFR0, AFR1, DFR1, FPFR0, ISAR3, MMFR3, MMFR4, PFR2. They are read and app shows their values. So far I did not met cpu which use them.

If cpu use any of above registers then message with link to issue tracker will be shown.

Output from QEMU 'max' cpu:

ArmCpuInfo v1.3.0

ID_AA64AFR0_EL1  = 0x0000000000000000
ID_AA64AFR1_EL1  = 0x0000000000000000
ID_AA64DFR0_EL1  = 0x1000000010305609
ID_AA64DFR1_EL1  = 0x0000000000000000
ID_AA64FPFR0_EL1 = 0x0000000000000000
ID_AA64ISAR0_EL1 = 0x1221111110212120
ID_AA64ISAR1_EL1 = 0x0011111101211052
ID_AA64ISAR2_EL1 = 0x0000000000110000
ID_AA64ISAR3_EL1 = 0x0000000000000000
ID_AA64MMFR0_EL1 = 0x2100032310201126
ID_AA64MMFR1_EL1 = 0x0010011010312122
ID_AA64MMFR2_EL1 = 0x1221011112011011
ID_AA64MMFR3_EL1 = 0x0000000000000000
ID_AA64MMFR4_EL1 = 0x0000000000000000
ID_AA64PFR0_EL1  = 0x1201001121112222
ID_AA64PFR1_EL1  = 0x0000001001000121
ID_AA64PFR2_EL1  = 0x0000000000000000
ID_AA64SMFR0_EL1 = 0x80F100FD00000000
ID_AA64ZFR0_EL1  = 0x0110110100110021

Reg   | Name         |  Bits | Value | Feature
------|--------------|-------|-------|----------------------------------------------
MMFR0 | ECV          | 63:60 |  0010 | FEAT_ECV implemented with extras.
MMFR0 | FGT          | 59:56 |  0001 | FEAT_FGT implemented.
MMFR0 | ExS          | 47:44 |  0000 | FEAT_ExS not implemented.
MMFR0 | TGran4       | 31:28 |  0001 |  4KB granule supported for 52-bit address.
MMFR0 | TGran4_2     | 43:40 |  0011 |  4KB granule supported at stage 2 for 52-bit address.
MMFR0 | TGran16      | 23:20 |  0010 | 16KB granule supported for 52-bit address.
MMFR0 | TGran16_2    | 35:32 |  0011 | 16KB granule supported at stage 2 for 52-bit address.
MMFR0 | TGran64      | 27:24 |  0000 | 64KB granule supported.
MMFR0 | TGran64_2    | 39:36 |  0010 | 64KB granule supported at stage 2.
MMFR0 | SNSMem       | 15:12 |  0001 | Supports a distinction between Secure and Non-Secure Memory.
MMFR0 | BigEnd       | 11:8  |  0001 | Mixed-endian support.
MMFR0 | BigEndEL0    | 19:16 |  0000 | No mixed-endian support at EL0.
MMFR0 | ASIDBits     |  7:4  |  0010 | ASID: 16 Bits
MMFR0 | PARange      |  3:0  |  0110 | 52 Bits (4PB) of physical address range supported.
      |              |       |       | FEAT_LPA implemented.
------|--------------|-------|-------|----------------------------------------------
MMFR1 | ECBHB        | 63:60 |  0000 | FEAT_ECBHB not implemented.
MMFR1 | CMOW         | 59:56 |  0000 | FEAT_CMOW not implemented.
MMFR1 | TIDCP1       | 55:52 |  0001 | FEAT_TIDCP1 implemented
MMFR1 | nTLBPA       | 51:48 |  0000 | FEAT_nTLBPA not implemented.
MMFR1 | AFP          | 47:44 |  0000 | FEAT_AFP not implemented.
MMFR1 | HCX          | 43:40 |  0001 | FEAT_HCX implemented.
MMFR1 | ETS          | 39:36 |  0001 | FEAT_ETS implemented.
MMFR1 | TWED         | 35:32 |  0000 | FEAT_TWED not implemented.
MMFR1 | XNX          | 31:28 |  0001 | FEAT_XNX implemented.
MMFR1 | SpecSEI      | 27:24 |  0000 | The PE never generates an SError interrupt due to an 
      |              |       |       | External abort on a speculative read.
MMFR1 | PAN          | 23:20 |  0011 | FEAT_PAN3 implemented.
MMFR1 | LO           | 19:16 |  0001 | FEAT_LOR implemented.
MMFR1 | HPDS         | 15:12 |  0010 | FEAT_HPDS2 implemented.
MMFR1 | VH           | 11:8  |  0001 | FEAT_VHE implemented.
MMFR1 | VMIDBits     |  7:4  |  0010 | FEAT_VMID16 implemented.
MMFR1 | HAFDBS       |  3:0  |  0010 | FEAT_HAFDBS implemented with dirty status support.
------|--------------|-------|-------|----------------------------------------------
MMFR2 | E0PD         | 63:60 |  0001 | FEAT_E0PD implemented.
MMFR2 | EVT          | 59:56 |  0010 | FEAT_EVT: HCR_EL2.{TTLBOS, TTLSBIS, TOCU, TICAB, TID4} 
      |              |       |       | traps.
MMFR2 | BBM          | 55:52 |  0010 | FEAT_BBM: Level 2 support for changing block size.
MMFR2 | TTL          | 51:48 |  0001 | FEAT_TTL implemented.
MMFR2 | FWB          | 43:40 |  0001 | FEAT_S2FWB implemented.
MMFR2 | IDS          | 39:36 |  0001 | FEAT_IDST implemented.
MMFR2 | AT           | 35:32 |  0001 | FEAT_LSE2 implemented.
MMFR2 | ST           | 31:28 |  0001 | FEAT_TTST implemented.
MMFR2 | NV           | 27:24 |  0010 | FEAT_NV2 implemented.
MMFR2 | CCIDX        | 23:20 |  0000 | FEAT_CCIDX not implemented.
MMFR2 | VARange      | 19:16 |  0001 | FEAT_LVA implemented.
MMFR2 | IESB         | 15:12 |  0001 | FEAT_IESB implemented.
MMFR2 | LSM          | 11:8  |  0000 | FEAT_LSMAOC not implemented.
MMFR2 | UAO          |  7:4  |  0001 | FEAT_UAO implemented.
MMFR2 | CnP          |  3:0  |  0001 | FEAT_TTCNP implemented.
------|--------------|-------|-------|----------------------------------------------
PFR0  | CSV3         | 63:60 |  0001 | FEAT_CSV3 implemented.
PFR0  | CSV2         | 59:56 |  0010 | FEAT_CSV2_2 implemented.
PFR0  | RME          | 55:52 |  0000 | FEAT_RME not implemented
PFR0  | DIT          | 51:48 |  0001 | FEAT_DIT implemented.
PFR0  | AMU          | 47:44 |  0000 | FEAT_AMU not implemented.
PFR0  | MPAM         | 43:40 |  0000 | FEAT_MPAM not implemented.
PFR0  | SEL2         | 39:36 |  0001 | Secure EL2 implemented.
PFR0  | SVE          | 35:32 |  0001 | FEAT_SVE implemented.
PFR0  | RAS          | 31:28 |  0010 | FEAT_RASv1p1 implemented. FEAT_DoubleFault implemented.
PFR0  | GIC          | 27:24 |  0001 | System registers to versions 3.0/4.0 of GIC CPU implemented.
PFR0  | AdvSIMD      | 23:20 |  0001 | Advanced SIMD with half precision support (FEAT_FP16).
PFR0  | FP           | 19:16 |  0001 | Floating-point with half-precision support (FEAT_FP16).
PFR0  | EL3          | 15:12 |  0010 | EL3 in AArch64 and AArch32
PFR0  | EL2          | 11:8  |  0010 | EL2 in AArch64 and AArch32
PFR0  | EL1          |  7:4  |  0010 | EL1 in AArch64 and AArch32
PFR0  | EL0          |  3:0  |  0010 | EL0 in AArch64 and AArch32
------|--------------|-------|-------|----------------------------------------------
PFR1  | PFAR         | 63:60 |  0000 | FEAT_PFAR not implemented.
PFR1  | DF2          | 59:56 |  0000 | FEAT_DoubleFault2 not implemented.
PFR1  | MTEX         | 55:52 |  0000 | Canonical Tag checking and Memory tagging with Address 
      |              |       |       | tagging disabled are not supported.
PFR1  | THE          | 51:48 |  0000 | FEAT_THE not implemented.
PFR1  | GCS          | 47:44 |  0000 | FEAT_GCS not implemented.
PFR1  | MTE_frac     | 43:40 |  0000 | FEAT_MTE_ASYNC implemented.
PFR1  | NMI          | 39:36 |  0001 | FEAT_NMI implemented.
PFR1  | RNDR_trap    | 31:28 |  0000 | FEAT_RNG_TRAP not implemented.
PFR1  | SME          | 27:24 |  0001 | FEAT_SME implemented.
PFR1  | MTE          | 11:8  |  0001 | FEAT_MTE implemented.
PFR1  | SSBS         |  7:4  |  0010 | FEAT_SSBS2 implemented.
PFR1  | BT           |  3:0  |  0001 | FEAT_BTI implemented.
------|--------------|-------|-------|----------------------------------------------
ISAR0 | RNDR         | 63:60 |  0001 | FEAT_RNG implemented.
ISAR0 | TLB          | 59:56 |  0010 | FEAT_TLBIRANGE implemented.
ISAR0 | TS           | 55:52 |  0010 | FEAT_FlagM2 implemented.
ISAR0 | FHM          | 51:48 |  0001 | FEAT_FHM implemented.
ISAR0 | DP           | 47:44 |  0001 | FEAT_DotProd implemented.
ISAR0 | SM4          | 43:40 |  0001 | FEAT_SM4 implemented.
ISAR0 | SM3          | 39:36 |  0001 | FEAT_SM3 implemented.
ISAR0 | SHA3         | 35:32 |  0001 | FEAT_SHA3 implemented.
ISAR0 | RDM          | 31:28 |  0001 | FEAT_RDM implemented.
ISAR0 | TME          | 27:24 |  0000 | TME instructions not implemented.
ISAR0 | Atomic       | 23:20 |  0010 | FEAT_LSE implemented.
ISAR0 | CRC32        | 19:16 |  0001 | CRC32 instructions implemented.
ISAR0 | SHA2         | 15:12 |  0010 | FEAT_SHA512 implemented.
ISAR0 | SHA1         | 11:8  |  0001 | FEAT_SHA1 implemented.
ISAR0 | AES          |  7:4  |  0010 | FEAT_AES and FEAT_PMULL implemented.
------|--------------|-------|-------|----------------------------------------------
ISAR1 | LS64         | 63:60 |  0000 | FEAT_LS64 not implemented.
ISAR1 | XS           | 59:56 |  0000 | FEAT_XS not implemented.
ISAR1 | I8MM         | 55:52 |  0001 | FEAT_I8MM implemented.
ISAR1 | DGH          | 51:48 |  0001 | FEAT_DGH implemented.
ISAR1 | BF16         | 47:44 |  0001 | FEAT_BF16 implemented.
ISAR1 | SPECRES      | 43:40 |  0001 | FEAT_SPECRES implemented.
ISAR1 | SB           | 39:36 |  0001 | FEAT_SB implemented.
ISAR1 | FRINTTS      | 35:32 |  0001 | FEAT_FRINTTS implemented.
ISAR1 | GPI          | 31:28 |  0000 | FEAT_PACIMP not implemented.
ISAR1 | GPA          | 27:24 |  0001 | FEAT_PACQARMA5 implemented.
ISAR1 | LRCPC        | 23:20 |  0010 | FEAT_LRCPC2 implemented.
ISAR1 | FCMA         | 19:16 |  0001 | FEAT_FCMA implemented.
ISAR1 | JSCVT        | 15:12 |  0001 | FEAT_JSCVT implemented.
ISAR1 | API          | 11:8  |  0000 | Address Authentication (API) not implemented.
ISAR1 | APA          |  7:4  |  0101 | FEAT_FPACCOMBINE implemented.
      |              |       |       | FEAT_PACQARMA5 implemented.
ISAR1 | DPB          |  3:0  |  0010 | FEAT_DPB2 implemented.
------|--------------|-------|-------|----------------------------------------------
ISAR2 | ATS1A        | 63:60 |  0000 | Address Translate Stage 1 instructions without Permissions 
      |              |       |       | Checks are not implemented.
ISAR2 | LUT          | 59:56 |  0000 | FEAT_LUT not implemented.
ISAR2 | CSSC         | 55:52 |  0000 | FEAT_CSSC not implemented.
ISAR2 | RPRFM        | 51:48 |  0000 | FEAT_RPRFM not implemented.
ISAR2 | PRFMSLC      | 43:40 |  0000 | FEAT_PRFMSLC not implemented.
ISAR2 | SYSINSTR_128 | 39:36 |  0000 | FEAT_SYSINSTR128 not implemented.
ISAR2 | SYSREG_128   | 35:32 |  0000 | FEAT_SYSREG128 not implemented.
ISAR2 | CLRBHB       | 31:28 |  0000 | FEAT_CLRBHB...
Read more

v1.2.0

26 Feb 11:48
@hrw hrw
Compare
Choose a tag to compare

Updated to Arm A-profile Architecture Registers 2023-12. Only already supported registers are handled.

Support for DFR1, FPFR0, ISAR3, MMFR4 and PFR2 will be added in one of future versions.

Output from QEMU 'max' cpu:

ArmCpuInfo v1.2.0

ID_AA64MMFR0_EL1 = 0x0100032310201126
ID_AA64MMFR1_EL1 = 0x0010011010312122
ID_AA64MMFR2_EL1 = 0x1221011112011011
ID_AA64PFR0_EL1  = 0x1201001121112222
ID_AA64PFR1_EL1  = 0x0000000001000121
ID_AA64ISAR0_EL1 = 0x1221111110212120
ID_AA64ISAR1_EL1 = 0x0011111101211052
ID_AA64ISAR2_EL1 = 0x0000000000110000
ID_AA64DFR0_EL1  = 0x1000000010305609
ID_AA64SMFR0_EL1 = 0x80F100FD00000000
ID_AA64ZFR0_EL1  = 0x0110110100110021

Reg   | Name         |  Bits | Value | Feature
------|--------------|-------|-------|----------------------------------------------
MMFR0 | ECV          | 63:60 |  0000 | FEAT_ECV not implemented.
MMFR0 | FGT          | 59:56 |  0001 | FEAT_FGT implemented.
MMFR0 | ExS          | 47:44 |  0000 | FEAT_ExS not implemented.
MMFR0 | TGran4       | 31:28 |  0001 |  4KB granule supported for 52-bit address.
MMFR0 | TGran4_2     | 43:40 |  0011 |  4KB granule supported at stage 2 for 52-bit address.
MMFR0 | TGran16      | 23:20 |  0010 | 16KB granule supported for 52-bit address.
MMFR0 | TGran16_2    | 35:32 |  0011 | 16KB granule supported at stage 2 for 52-bit address.
MMFR0 | TGran64      | 27:24 |  0000 | 64KB granule supported.
MMFR0 | TGran64_2    | 39:36 |  0010 | 64KB granule supported at stage 2.
MMFR0 | SNSMem       | 15:12 |  0001 | Supports a distinction between Secure and Non-Secure Memory.
MMFR0 | BigEnd       | 11:8  |  0001 | Mixed-endian support.
MMFR0 | BigEndEL0    | 19:16 |  0000 | No mixed-endian support at EL0.
MMFR0 | ASIDBits     |  7:4  |  0010 | ASID: 16 Bits
MMFR0 | PARange      |  3:0  |  0110 | 52 Bits (4PB) of physical address range supported.
      |              |       |       | FEAT_LPA implemented.
------|--------------|-------|-------|----------------------------------------------
MMFR1 | ECBHB        | 63:60 |  0000 | FEAT_ECBHB not implemented.
MMFR1 | CMOW         | 59:56 |  0000 | FEAT_CMOW not implemented.
MMFR1 | TIDCP1       | 55:52 |  0001 | FEAT_TIDCP1 implemented
MMFR1 | nTLBPA       | 51:48 |  0000 | FEAT_nTLBPA not implemented.
MMFR1 | AFP          | 47:44 |  0000 | FEAT_AFP not implemented.
MMFR1 | HCX          | 43:40 |  0001 | FEAT_HCX implemented.
MMFR1 | ETS          | 39:36 |  0001 | FEAT_ETS implemented.
MMFR1 | TWED         | 35:32 |  0000 | FEAT_TWED not implemented.
MMFR1 | XNX          | 31:28 |  0001 | FEAT_XNX implemented.
MMFR1 | SpecSEI      | 27:24 |  0000 | The PE never generates an SError interrupt due to an 
      |              |       |       | External abort on a speculative read.
MMFR1 | PAN          | 23:20 |  0011 | FEAT_PAN3 implemented.
MMFR1 | LO           | 19:16 |  0001 | FEAT_LOR implemented.
MMFR1 | HPDS         | 15:12 |  0010 | FEAT_HPDS2 implemented.
MMFR1 | VH           | 11:8  |  0001 | FEAT_VHE implemented.
MMFR1 | VMIDBits     |  7:4  |  0010 | FEAT_VMID16 implemented.
MMFR1 | HAFDBS       |  3:0  |  0010 | FEAT_HAFDBS implemented with dirty status support.
------|--------------|-------|-------|----------------------------------------------
MMFR2 | E0PD         | 63:60 |  0001 | FEAT_E0PD implemented.
MMFR2 | EVT          | 59:56 |  0010 | FEAT_EVT: HCR_EL2.{TTLBOS, TTLSBIS, TOCU, TICAB, TID4} 
      |              |       |       | traps.
MMFR2 | BBM          | 55:52 |  0010 | FEAT_BBM: Level 2 support for changing block size.
MMFR2 | TTL          | 51:48 |  0001 | FEAT_TTL implemented.
MMFR2 | FWB          | 43:40 |  0001 | FEAT_S2FWB implemented.
MMFR2 | IDS          | 39:36 |  0001 | FEAT_IDST implemented.
MMFR2 | AT           | 35:32 |  0001 | FEAT_LSE2 implemented.
MMFR2 | ST           | 31:28 |  0001 | FEAT_TTST implemented.
MMFR2 | NV           | 27:24 |  0010 | FEAT_NV2 implemented.
MMFR2 | CCIDX        | 23:20 |  0000 | FEAT_CCIDX not implemented.
MMFR2 | VARange      | 19:16 |  0001 | FEAT_LVA implemented.
MMFR2 | IESB         | 15:12 |  0001 | FEAT_IESB implemented.
MMFR2 | LSM          | 11:8  |  0000 | FEAT_LSMAOC not implemented.
MMFR2 | UAO          |  7:4  |  0001 | FEAT_UAO implemented.
MMFR2 | CnP          |  3:0  |  0001 | FEAT_TTCNP implemented.
------|--------------|-------|-------|----------------------------------------------
PFR0  | CSV3         | 63:60 |  0001 | FEAT_CSV3 implemented.
PFR0  | CSV2         | 59:56 |  0010 | FEAT_CSV2_2 implemented.
PFR0  | RME          | 55:52 |  0000 | FEAT_RME not implemented
PFR0  | DIT          | 51:48 |  0001 | FEAT_DIT implemented.
PFR0  | AMU          | 47:44 |  0000 | FEAT_AMU not implemented.
PFR0  | MPAM         | 43:40 |  0000 | FEAT_MPAM not implemented.
PFR0  | SEL2         | 39:36 |  0001 | Secure EL2 implemented.
PFR0  | SVE          | 35:32 |  0001 | FEAT_SVE implemented.
PFR0  | RAS          | 31:28 |  0010 | FEAT_RASv1p1 implemented. FEAT_DoubleFault implemented.
PFR0  | GIC          | 27:24 |  0001 | System registers to versions 3.0/4.0 of GIC CPU implemented.
PFR0  | AdvSIMD      | 23:20 |  0001 | Advanced SIMD with half precision support (FEAT_FP16).
PFR0  | FP           | 19:16 |  0001 | Floating-point with half-precision support (FEAT_FP16).
PFR0  | EL3          | 15:12 |  0010 | EL3 in AArch64 and AArch32
PFR0  | EL2          | 11:8  |  0010 | EL2 in AArch64 and AArch32
PFR0  | EL1          |  7:4  |  0010 | EL1 in AArch64 and AArch32
PFR0  | EL0          |  3:0  |  0010 | EL0 in AArch64 and AArch32
------|--------------|-------|-------|----------------------------------------------
PFR1  | PFAR         | 63:60 |  0000 | FEAT_PFAR not implemented.
PFR1  | DF2          | 59:56 |  0000 | FEAT_DoubleFault2 not implemented.
PFR1  | MTEX         | 55:52 |  0000 | Canonical Tag checking and Memory tagging with Address 
      |              |       |       | tagging disabled are not supported.
PFR1  | THE          | 51:48 |  0000 | FEAT_THE not implemented.
PFR1  | GCS          | 47:44 |  0000 | FEAT_GCS not implemented.
PFR1  | MTE_frac     | 43:40 |  0000 | FEAT_MTE_ASYNC implemented.
PFR1  | NMI          | 39:36 |  0000 | FEAT_NMI not implemented.
PFR1  | RNDR_trap    | 31:28 |  0000 | FEAT_RNG_TRAP not implemented.
PFR1  | SME          | 27:24 |  0001 | FEAT_SME implemented.
PFR1  | MTE          | 11:8  |  0001 | FEAT_MTE implemented.
PFR1  | SSBS         |  7:4  |  0010 | FEAT_SSBS2 implemented.
PFR1  | BT           |  3:0  |  0001 | FEAT_BTI implemented.
------|--------------|-------|-------|----------------------------------------------
ISAR0 | RNDR         | 63:60 |  0001 | FEAT_RNG implemented.
ISAR0 | TLB          | 59:56 |  0010 | FEAT_TLBIRANGE implemented.
ISAR0 | TS           | 55:52 |  0010 | FEAT_FlagM2 implemented.
ISAR0 | FHM          | 51:48 |  0001 | FEAT_FHM implemented.
ISAR0 | DP           | 47:44 |  0001 | FEAT_DotProd implemented.
ISAR0 | SM4          | 43:40 |  0001 | FEAT_SM4 implemented.
ISAR0 | SM3          | 39:36 |  0001 | FEAT_SM3 implemented.
ISAR0 | SHA3         | 35:32 |  0001 | FEAT_SHA3 implemented.
ISAR0 | RDM          | 31:28 |  0001 | FEAT_RDM implemented.
ISAR0 | TME          | 27:24 |  0000 | TME instructions not implemented.
ISAR0 | Atomic       | 23:20 |  0010 | FEAT_LSE implemented.
ISAR0 | CRC32        | 19:16 |  0001 | CRC32 instructions implemented.
ISAR0 | SHA2         | 15:12 |  0010 | FEAT_SHA512 implemented.
ISAR0 | SHA1         | 11:8  |  0001 | FEAT_SHA1 implemented.
ISAR0 | AES          |  7:4  |  0010 | FEAT_AES and FEAT_PMULL implemented.
------|--------------|-------|-------|----------------------------------------------
ISAR1 | LS64         | 63:60 |  0000 | FEAT_LS64 not implemented.
ISAR1 | XS           | 59:56 |  0000 | FEAT_XS not implemented.
ISAR1 | I8MM         | 55:52 |  0001 | FEAT_I8MM implemented.
ISAR1 | DGH          | 51:48 |  0001 | FEAT_DGH implemented.
ISAR1 | BF16         | 47:44 |  0001 | FEAT_BF16 implemented.
ISAR1 | SPECRES      | 43:40 |  0001 | FEAT_SPECRES implemented.
ISAR1 | SB           | 39:36 |  0001 | FEAT_SB implemented.
ISAR1 | FRINTTS      | 35:32 |  0001 | FEAT_FRINTTS implemented.
ISAR1 | GPI          | 31:28 |  0000 | FEAT_PACIMP not implemented.
ISAR1 | GPA          | 27:24 |  0001 | FEAT_PACQARMA5 implemented.
ISAR1 | LRCPC        | 23:20 |  0010 | FEAT_LRCPC2 implemented.
ISAR1 | FCMA         | 19:16 |  0001 | FEAT_FCMA implemented.
ISAR1 | JSCVT        | 15:12 |  0001 | FEAT_JSCVT implemented.
ISAR1 | API          | 11:8  |  0000 | Address Authentication (API) not implemented.
ISAR1 | APA          |  7:4  |  0101 | FEAT_FPACCOMBINE implemented.
      |              |       |       | FEAT_PACQARMA5 implemented.
ISAR1 | DPB          |  3:0  |  0010 | FEAT_DPB2 implemented.
------|--------------|-------|-------|----------------------------------------------
ISAR2 | ATS1A        | 63:60 |  0000 | Address Translate Stage 1 instructions without Permissions 
      |              |       |       | Checks are not implemented.
ISAR2 | LUT          | 59:56 |  0000 | FEAT_LUT not implemented.
ISAR2 | CSSC         | 55:52 |  0000 | FEAT_CSSC not implemented.
ISAR2 | RPRFM        | 51:48 |  0000 | FEAT_RPRFM not implemented.
ISAR2 | PRFMSLC      | 43:40 |  0000 | FEAT_PRFMSLC not implemented.
ISAR2 | SYSINSTR_128 | 39:36 |  0000 | FEAT_SYSINSTR128 not implemented.
ISAR2 | SYSREG_128   | 35:32 |  0000 | FEAT_SYSREG128 not implemented.
ISAR2 | CLRBHB       | 31:28 |  0000 | FEAT_CLRBHB not implemented.
ISAR2 | PAC_frac     | 27:24 |  0000 | FEAT_CONSTPACFIELD not implemented.
ISAR2 | BC           | 23:20 |  0001 | FEAT_HBC implemented.
ISAR2 | MOPS         | 19:16 |  0001 | FEAT_MOPS implemented.
ISAR2 | APA3         | 15:12 |  0000 | Address Authentication (APA3) not implemented.
ISAR2 | GPA3         | 11:8  |  0000 | FEAT_PACQARMA3 not implemented.
ISAR2 | RPRES    ...
Read more

v1.1.1

01 Dec 17:39
@hrw hrw
Compare
Choose a tag to compare

Minor release:

  • fixed TGran16 field name

v1.1.0

01 Dec 17:25
@hrw hrw
Compare
Choose a tag to compare

Changes:

  • updated to ArmArm J.a version
  • added field names
  • order changed to same as in ArmArm to make it easier to follow

Output from "max" cpu:

ArmCpuInfo v1.0.0

ID_AA64MMFR0_EL1 = 0x0100032310201126
ID_AA64MMFR1_EL1 = 0x0010011010312122
ID_AA64MMFR2_EL1 = 0x1221011110011011
ID_AA64PFR0_EL1  = 0x1201001121112222
ID_AA64PFR1_EL1  = 0x0000000001000121
ID_AA64ISAR0_EL1 = 0x1221111110212120
ID_AA64ISAR1_EL1 = 0x0011111101211052
ID_AA64ISAR2_EL1 = 0x0000000000110000
ID_AA64DFR0_EL1  = 0x1000000010305609
ID_AA64SMFR0_EL1 = 0x80F100FD00000000
ID_AA64ZFR0_EL1  = 0x0110110100110021

Reg   | Name        |  Bits | Value | Feature
------|-------------|-------|-------|----------------------------------------------
MMFR0 | ECV         | 63:60 |  0000 | FEAT_ECV not implemented.
MMFR0 | FGT         | 59:56 |  0001 | FEAT_FGT implemented.
MMFR0 | ExS         | 47:44 |  0000 | FEAT_ExS not implemented.
MMFR0 | TGran4      | 31:28 |  0001 |  4KB granule supported for 52-bit address.
MMFR0 | TGran4_2    | 43:40 |  0011 |  4KB granule supported at stage 2 for 52-bit address.
MMFR0 | Tgran16     | 23:20 |  0010 | 16KB granule supported for 52-bit address.
MMFR0 | TGran16_2   | 35:32 |  0011 | 16KB granule supported at stage 2 for 52-bit address.
MMFR0 | TGran64     | 27:24 |  0000 | 64KB granule supported.
MMFR0 | TGran64_2   | 39:36 |  0010 | 64KB granule supported at stage 2.
MMFR0 | SNSMem      | 15:12 |  0001 | Supports a distinction between Secure and Non-Secure Memory.
MMFR0 | BigEnd      | 11:8  |  0001 | Mixed-endian support.
MMFR0 | BigEndEL0   | 19:16 |  0000 | No mixed-endian support at EL0.
MMFR0 | ASIDBits    |  7:4  |  0010 | ASID: 16 Bits
MMFR0 | PARange     |  3:0  |  0110 | 52 Bits (4PB) of physical address range supported.
      |             |       |       | FEAT_LPA implemented.
------|-------------|-------|-------|----------------------------------------------
MMFR1 | CMOW        | 59:56 |  0000 | FEAT_CMOW not implemented.
MMFR1 | TIDCP1      | 55:52 |  0001 | FEAT_TIDCP1 implemented
MMFR1 | nTLBPA      | 51:48 |  0000 | FEAT_nTLBPA not implemented.
MMFR1 | AFP         | 47:44 |  0000 | FEAT_AFP not implemented.
MMFR1 | HCX         | 43:40 |  0001 | FEAT_HCX implemented.
MMFR1 | ETS         | 39:36 |  0001 | FEAT_ETS implemented.
MMFR1 | TWED        | 35:32 |  0000 | FEAT_TWED not implemented.
MMFR1 | XNX         | 31:28 |  0001 | FEAT_XNX implemented.
MMFR1 | SpecSEI     | 27:24 |  0000 | The PE never generates an SError interrupt due to
      |             |       |       | an External abort on a speculative read.
MMFR1 | PAN         | 23:20 |  0011 | FEAT_PAN3 implemented.
MMFR1 | LO          | 19:16 |  0001 | FEAT_LOR implemented.
MMFR1 | HPDS        | 15:12 |  0010 | FEAT_HPDS2 implemented.
MMFR1 | VH          | 11:8  |  0001 | FEAT_VHE implemented.
MMFR1 | VMIDBits    |  7:4  |  0010 | FEAT_VMID16 implemented.
MMFR1 | HAFDBS      |  3:0  |  0010 | FEAT_HAFDBS implemented with dirty status support.
------|-------------|-------|-------|----------------------------------------------
MMFR2 | E0PD        | 63:60 |  0001 | FEAT_E0PD implemented.
MMFR2 | EVT         | 59:56 |  0010 | FEAT_EVT: HCR_EL2.{TTLBOS, TTLSBIS, TOCU, TICAB, TID4} traps.
MMFR2 | BBM         | 55:52 |  0010 | FEAT_BBM: Level 2 support for changing block size.
MMFR2 | TTL         | 51:48 |  0001 | FEAT_TTL implemented.
MMFR2 | FWB         | 43:40 |  0001 | FEAT_S2FWB implemented.
MMFR2 | IDS         | 39:36 |  0001 | FEAT_IDST implemented.
MMFR2 | AT          | 35:32 |  0001 | FEAT_LSE2 implemented.
MMFR2 | ST          | 31:28 |  0001 | FEAT_TTST implemented.
MMFR2 | NV          | 27:24 |  0000 | FEAT_NV not implemented.
MMFR2 | CCIDX       | 23:20 |  0000 | FEAT_CCIDX not implemented.
MMFR2 | VARange     | 19:16 |  0001 | FEAT_LVA implemented.
MMFR2 | IESB        | 15:12 |  0001 | FEAT_IESB implemented.
MMFR2 | LSM         | 11:8  |  0000 | FEAT_LSMAOC not implemented.
MMFR2 | UAO         |  7:4  |  0001 | FEAT_UAO implemented.
MMFR2 | CnP         |  3:0  |  0001 | FEAT_TTCNP implemented.
------|-------------|-------|-------|----------------------------------------------
PFR0  | CSV3        | 63:60 |  0001 | FEAT_CSV3 implemented.
PFR0  | CSV2        | 59:56 |  0010 | FEAT_CSV2_2 implemented.
PFR0  | RME         | 55:52 |  0000 | FEAT_RME not implemented
PFR0  | DIT         | 51:48 |  0001 | FEAT_DIT implemented.
PFR0  | AMU         | 47:44 |  0000 | FEAT_AMU not implemented.
PFR0  | MPAM        | 43:40 |  0000 | FEAT_MPAM not implemented.
PFR0  | SEL2        | 39:36 |  0001 | Secure EL2 implemented.
PFR0  | SVE         | 35:32 |  0001 | FEAT_SVE implemented.
PFR0  | RAS         | 31:28 |  0010 | FEAT_RASv1p1 implemented. FEAT_DoubleFault implemented.
PFR0  | GIC         | 27:24 |  0001 | System registers to versions 3.0/4.0 of GIC CPU implemented.
PFR0  | AdvSIMD     | 23:20 |  0001 | Advanced SIMD with half precision support (FEAT_FP16).
PFR0  | FP          | 19:16 |  0001 | Floating-point with half-precision support (FEAT_FP16).
PFR0  | EL3         | 15:12 |  0010 | EL3 in AArch64 and AArch32
PFR0  | EL2         | 11:8  |  0010 | EL2 in AArch64 and AArch32
PFR0  | EL1         |  7:4  |  0010 | EL1 in AArch64 and AArch32
PFR0  | EL0         |  3:0  |  0010 | EL0 in AArch64 and AArch32
------|-------------|-------|-------|----------------------------------------------
PFR1  | NMI         | 39:36 |  0000 | FEAT_NMI not implemented.
PFR1  | RNDR_trap   | 31:28 |  0000 | FEAT_RNG_TRAP not implemented.
PFR1  | SME         | 27:24 |  0001 | FEAT_SME implemented.
PFR1  | MTE         | 11:8  |  0001 | FEAT_MTE implemented.
PFR1  | SSBS        |  7:4  |  0010 | FEAT_SSBS2 implemented.
PFR1  | BT          |  3:0  |  0001 | FEAT_BTI implemented.
------|-------------|-------|-------|----------------------------------------------
ISAR0 | RNDR        | 63:60 |  0001 | FEAT_RNG implemented.
ISAR0 | TLB         | 59:56 |  0010 | FEAT_TLBIRANGE implemented.
ISAR0 | TS          | 55:52 |  0010 | FEAT_FlagM2 implemented.
ISAR0 | FHM         | 51:48 |  0001 | FEAT_FHM implemented.
ISAR0 | DP          | 47:44 |  0001 | FEAT_DotProd implemented.
ISAR0 | SM4         | 43:40 |  0001 | FEAT_SM4 implemented.
ISAR0 | SM3         | 39:36 |  0001 | FEAT_SM3 implemented.
ISAR0 | SHA3        | 35:32 |  0001 | FEAT_SHA3 implemented.
ISAR0 | RDM         | 31:28 |  0001 | FEAT_RDM implemented.
ISAR0 | TME         | 27:24 |  0000 | TME instructions not implemented.
ISAR0 | Atomic      | 23:20 |  0010 | FEAT_LSE implemented.
ISAR0 | CRC32       | 19:16 |  0001 | CRC32 instructions implemented.
ISAR0 | SHA2        | 15:12 |  0010 | FEAT_SHA512 implemented.
ISAR0 | SHA1        | 11:8  |  0001 | FEAT_SHA1 implemented.
ISAR0 | AES         |  7:4  |  0010 | FEAT_AES and FEAT_PMULL implemented.
------|-------------|-------|-------|----------------------------------------------
ISAR1 | LS64        | 63:60 |  0000 | FEAT_LS64 not implemented.
ISAR1 | XS          | 59:56 |  0000 | FEAT_XS not implemented.
ISAR1 | I8MM        | 55:52 |  0001 | FEAT_I8MM implemented.
ISAR1 | DGH         | 51:48 |  0001 | FEAT_DGH implemented.
ISAR1 | BF16        | 47:44 |  0001 | FEAT_BF16 implemented.
ISAR1 | SPECRES     | 43:40 |  0001 | FEAT_SPECRES implemented.
ISAR1 | SB          | 39:36 |  0001 | FEAT_SB implemented.
ISAR1 | FRINTTS     | 35:32 |  0001 | FEAT_FRINTTS implemented.
ISAR1 | GPI         | 31:28 |  0000 | FEAT_PACIMP not implemented.
ISAR1 | GPA         | 27:24 |  0001 | FEAT_PACQARMA5 implemented.
ISAR1 | LRCPC       | 23:20 |  0010 | FEAT_LRCPC2 implemented.
ISAR1 | FCMA        | 19:16 |  0001 | FEAT_FCMA implemented.
ISAR1 | JSCVT       | 15:12 |  0001 | FEAT_JSCVT implemented.
ISAR1 | API         | 11:8  |  0000 | Address Authentication (API) not implemented.
ISAR1 | APA         |  7:4  |  0101 | FEAT_FPACCOMBINE implemented.
      |             |       |       | FEAT_PACQARMA5 implemented.
ISAR1 | DPB         |  3:0  |  0010 | FEAT_DPB2 implemented.
------|-------------|-------|-------|----------------------------------------------
ISAR2 | PAC_frac    | 27:24 |  0000 | FEAT_CONSTPACFIELD not implemented.
ISAR2 | BC          | 23:20 |  0001 | FEAT_HBC implemented.
ISAR2 | MOPS        | 19:16 |  0001 | FEAT_MOPS implemented.
ISAR2 | APA3        | 15:12 |  0000 | Address Authentication (APA3) not implemented.
ISAR2 | GPA3        | 11:8  |  0000 | FEAT_PACQARMA3 not implemented.
ISAR2 | RPRES       |  7:4  |  0000 | FEAT_RPRES not implemented.
ISAR2 | WFxT        |  3:0  |  0000 | FEAT_WFxT not implemented.
------|-------------|-------|-------|----------------------------------------------
DFR0  | HPMN0       | 63:60 |  0001 | FEAT_HPMN0 implemented.
DFR0  | BRBE        | 55:52 |  0000 | FEAT_BRBE not implemented.
DFR0  | MTPMU       | 51:48 |  0000 | FEAT_MTPMU not implemented.
DFR0  | TraceBuffer | 47:44 |  0000 | FEAT_TRBE not implemented.
DFR0  | TraceFilt   | 43:40 |  0000 | FEAT_TRF not implemented.
DFR0  | DoubleLock  | 39:36 |  0000 | FEAT_DoubleLock implemented.
DFR0  | PMSVer      | 35:32 |  0000 | FEAT_SPE not implemented.
DFR0  | CTX_CMPs    | 31:28 |  0001 | Number of breakpoints that are context-aware, minus 1.
DFR0  | WRPs        | 23:20 |  0011 | Number of watchpoints, minus 1.
DFR0  | BRPs        | 15:12 |  0101 | Number of breakpoints, minus 1.
DFR0  | PMUVer      | 11:8  |  0110 | FEAT_PMUv3p5 implemented.
DFR0  | TraceVer    |  7:4  |  0000 | Trace unit System registers not implemented.
DFR0  | DebugVer    |  3:0  |  1001 | FEAT_Debugv8p4 implemented.
------|-------------|-------|-------|----------------------------------------------
SMFR0 | FA64        |    63 |  0001 | FEAT_SME_FA64 implemented.
SMFR0 | SMEver      | 59:56 |  0000 | Mandatory SME instructions are implemented.
SMFR0 | I16I64      | 55:52 |  1111 | FEAT_SME_I16I64 implemented
SMFR0 | F64F64      |    48 |  0001 | FEAT_SME_F64...
Read more

v1.0.0

18 Oct 20:14
@hrw hrw
Compare
Choose a tag to compare

First numbered release.

Can be run from UEFI shell, U-Boot (with EFI support). Should work in any EFI environment.

QEMU "max" cpu information:

ArmCpuInfo v1.0.0

ID_AA64MMFR0_EL1 = 0x0100032310201126
ID_AA64MMFR1_EL1 = 0x0010011010312122
ID_AA64MMFR2_EL1 = 0x1221011110011011
ID_AA64PFR0_EL1  = 0x1201001121112222
ID_AA64PFR1_EL1  = 0x0000000001000121
ID_AA64ISAR0_EL1 = 0x1221111110212120
ID_AA64ISAR1_EL1 = 0x0011111101211052
ID_AA64ISAR2_EL1 = 0x0000000000110000
ID_AA64DFR0_EL1  = 0x0000000010305609
ID_AA64SMFR0_EL1 = 0x80F100FD00000000
ID_AA64ZFR0_EL1  = 0x0110110100110021

Reg   |  Bits | Value | Feature
------|-------|-------|----------------------------------------------
MMFR0 |  3:0  |  0110 | 52 Bits (4PB) of physical address range supported.
      |       |       | FEAT_LPA implemented.
MMFR0 |  7:4  |  0010 | ASID: 16 Bits
MMFR0 | 11:8  |  0001 | Mixed-endian support.
MMFR0 | 19:16 |  0000 | No mixed-endian support at EL0.
MMFR0 | 15:12 |  0001 | Supports a distinction between Secure and Non-Secure Memory.
MMFR0 | 31:28 |  0001 |  4KB granule supported for 52-bit address.
MMFR0 | 43:40 |  0011 |  4KB granule supported at stage 2 for 52-bit address.
MMFR0 | 23:20 |  0010 | 16KB granule supported for 52-bit address.
MMFR0 | 35:32 |  0011 | 16KB granule supported at stage 2 for 52-bit address.
MMFR0 | 27:24 |  0000 | 64KB granule supported.
MMFR0 | 39:36 |  0010 | 64KB granule supported at stage 2.
MMFR0 | 47:44 |  0000 | FEAT_ExS not implemented.
MMFR0 | 59:56 |  0001 | FEAT_FGT implemented.
MMFR0 | 63:60 |  0000 | FEAT_ECV not implemented.
------|-------|-------|----------------------------------------------
MMFR1 |  3:0  |  0010 | FEAT_HAFDBS implemented with dirty status support.
MMFR1 |  7:4  |  0010 | FEAT_VMID16 implemented.
MMFR1 | 11:8  |  0001 | FEAT_VHE implemented.
MMFR1 | 15:12 |  0010 | FEAT_HPDS2 implemented.
MMFR1 | 19:16 |  0001 | FEAT_LOR implemented.
MMFR1 | 23:20 |  0011 | FEAT_PAN3 implemented.
MMFR1 | 27:24 |  0000 | The PE never generates an SError interrupt due to
      |       |       | an External abort on a speculative read.
MMFR1 | 31:28 |  0001 | FEAT_XNX implemented.
MMFR1 | 35:32 |  0000 | FEAT_TWED not implemented.
MMFR1 | 39:36 |  0001 | FEAT_ETS implemented.
MMFR1 | 43:40 |  0001 | FEAT_HCX implemented.
MMFR1 | 47:44 |  0000 | FEAT_AFP not implemented.
MMFR1 | 51:48 |  0000 | FEAT_nTLBPA not implemented.
MMFR1 | 55:52 |  0001 | FEAT_TIDCP1 implemented
MMFR1 | 59:56 |  0000 | FEAT_CMOW not implemented.
------|-------|-------|----------------------------------------------
MMFR2 |  3:0  |  0001 | FEAT_TTCNP implemented.
MMFR2 |  7:4  |  0001 | FEAT_UAO implemented.
MMFR2 | 11:8  |  0000 | FEAT_LSMAOC not implemented.
MMFR2 | 15:12 |  0001 | FEAT_IESB implemented.
MMFR2 | 19:16 |  0001 | FEAT_LVA implemented.
MMFR2 | 23:20 |  0000 | FEAT_CCIDX not implemented.
MMFR2 | 27:24 |  0000 | FEAT_NV not implemented.
MMFR2 | 31:28 |  0001 | FEAT_TTST implemented.
MMFR2 | 35:32 |  0001 | FEAT_LSE2 implemented.
MMFR2 | 39:36 |  0001 | FEAT_IDST implemented.
MMFR2 | 43:40 |  0001 | FEAT_S2FWB implemented.
MMFR2 | 51:48 |  0001 | FEAT_TTL implemented.
MMFR2 | 55:52 |  0010 | FEAT_BBM: Level 2 support for changing block size is supported.
MMFR2 | 59:56 |  0010 | FEAT_EVT: HCR_EL2.{TTLBOS, TTLSBIS, TOCU, TICAB, TID4} traps are supported.
MMFR2 | 63:60 |  0001 | FEAT_E0PD implemented.
------|-------|-------|----------------------------------------------
PFR0  |  3:0  |  0010 | EL0 in AArch64 and AArch32
PFR0  |  7:4  |  0010 | EL1 in AArch64 and AArch32
PFR0  | 11:8  |  0010 | EL2 in AArch64 and AArch32
PFR0  | 15:12 |  0010 | EL3 in AArch64 and AArch32
PFR0  | 19:16 |  0001 | Floating-point with half-precision support (FEAT_FP16).
PFR0  | 23:20 |  0001 | Advanced SIMD with half precision support (FEAT_FP16).
PFR0  | 27:24 |  0001 | System registers to versions 3.0/4.0 of GIC CPU implemented.
PFR0  | 31:28 |  0010 | FEAT_RASv1p1 implemented. FEAT_DoubleFault implemented.
PFR0  | 35:32 |  0001 | FEAT_SVE implemented.
PFR0  | 39:36 |  0001 | Secure EL2 implemented.
PFR0  | 43:40 |  0000 | FEAT_MPAM not implemented.
PFR0  | 47:44 |  0000 | FEAT_AMU not implemented.
PFR0  | 51:48 |  0001 | FEAT_DIT implemented.
PFR0  | 55:52 |  0000 | FEAT_RME not implemented
PFR0  | 59:56 |  0010 | FEAT_CSV2_2 implemented.
PFR0  | 63:60 |  0001 | FEAT_CSV3 implemented.
------|-------|-------|----------------------------------------------
PFR1  |  3:0  |  0001 | FEAT_BTI implemented.
PFR1  |  7:4  |  0010 | FEAT_SSBS2 implemented.
PFR1  | 11:8  |  0001 | FEAT_MTE implemented.
PFR1  | 27:24 |  0001 | FEAT_SME implemented.
PFR1  | 31:28 |  0000 | FEAT_RNG_TRAP not implemented.
PFR1  | 39:36 |  0000 | FEAT_NMI not implemented.
------|-------|-------|----------------------------------------------
ISAR0 |  7:4  |  0010 | FEAT_AES and FEAT_PMULL implemented.
ISAR0 | 11:8  |  0001 | FEAT_SHA1 implemented.
ISAR0 | 15:12 |  0010 | FEAT_SHA512 implemented.
ISAR0 | 19:16 |  0001 | CRC32 instructions implemented.
ISAR0 | 23:20 |  0010 | FEAT_LSE implemented.
ISAR0 | 27:24 |  0000 | TME instructions not implemented.
ISAR0 | 31:28 |  0001 | FEAT_RDM implemented.
ISAR0 | 35:32 |  0001 | FEAT_SHA3 implemented.
ISAR0 | 39:36 |  0001 | FEAT_SM3 implemented.
ISAR0 | 43:40 |  0001 | FEAT_SM4 implemented.
ISAR0 | 47:44 |  0001 | FEAT_DotProd implemented.
ISAR0 | 51:48 |  0001 | FEAT_FHM implemented.
ISAR0 | 55:52 |  0010 | FEAT_FlagM2 implemented.
ISAR0 | 59:56 |  0010 | FEAT_TLBIRANGE implemented.
ISAR0 | 63:60 |  0001 | FEAT_RNG implemented.
------|-------|-------|----------------------------------------------
ISAR1 |  3:0  |  0010 | FEAT_DPB2 implemented.
ISAR1 |  7:4  |  0101 | FEAT_FPACCOMBINE implemented.
      |       |       | FEAT_PACQARMA5 implemented.
ISAR1 | 11:8  |  0000 | Address Authentication (API) not implemented.
ISAR1 | 15:12 |  0001 | FEAT_JSCVT implemented.
ISAR1 | 19:16 |  0001 | FEAT_FCMA implemented.
ISAR1 | 23:20 |  0010 | FEAT_LRCPC2 implemented.
ISAR1 | 27:24 |  0001 | FEAT_PACQARMA5 implemented.
ISAR1 | 31:28 |  0000 | FEAT_PACIMP not implemented.
ISAR1 | 35:32 |  0001 | FEAT_FRINTTS implemented.
ISAR1 | 39:36 |  0001 | FEAT_SB implemented.
ISAR1 | 43:40 |  0001 | FEAT_SPECRES implemented.
ISAR1 | 47:44 |  0001 | FEAT_BF16 implemented.
ISAR1 | 51:48 |  0001 | FEAT_DGH implemented.
ISAR1 | 55:52 |  0001 | FEAT_I8MM implemented.
ISAR1 | 59:56 |  0000 | FEAT_XS not implemented.
ISAR1 | 63:60 |  0000 | FEAT_LS64 not implemented.
------|-------|-------|----------------------------------------------
ISAR2 |  3:0  |  0000 | FEAT_WFxT not implemented.
ISAR2 |  7:4  |  0000 | FEAT_RPRES not implemented.
ISAR2 | 11:8  |  0000 | FEAT_PACQARMA3 not implemented.
ISAR2 | 15:12 |  0000 | Address Authentication (APA3) not implemented.
ISAR2 | 19:16 |  0001 | FEAT_MOPS implemented.
ISAR2 | 23:20 |  0001 | FEAT_HBC implemented.
ISAR2 | 27:24 |  0000 | FEAT_CONSTPACFIELD not implemented.
------|-------|-------|----------------------------------------------
DFR0  |  3:0  |  1001 | FEAT_Debugv8p4 implemented.
DFR0  |  7:4  |  0000 | Trace unit System registers not implemented.
DFR0  | 11:8  |  0110 | FEAT_PMUv3p5 implemented.
DFR0  | 15:12 |  0101 | Number of breakpoints, minus 1.
DFR0  | 23:20 |  0011 | Number of watchpoints, minus 1.
DFR0  | 31:28 |  0001 | Number of breakpoints that are context-aware, minus 1.
DFR0  | 35:32 |  0000 | FEAT_SPE not implemented.
DFR0  | 39:36 |  0000 | FEAT_DoubleLock implemented.
DFR0  | 43:40 |  0000 | FEAT_TRF not implemented.
DFR0  | 47:44 |  0000 | FEAT_TRBE not implemented.
DFR0  | 51:48 |  0000 | FEAT_MTPMU not implemented.
DFR0  | 55:52 |  0000 | FEAT_BRBE not implemented.
DFR0  | 63:60 |  0000 | Setting MDCR_EL2.HPMN to zero has CONSTRAINED UNPREDICTABLE behavior.
------|-------|-------|----------------------------------------------
SMFR0 |    32 |  0001 | SME F32F32 implemented.
SMFR0 |    34 |  0001 | SME B16F32 implemented.
SMFR0 |    35 |  0001 | SME F16F32 implemented.
SMFR0 | 39:36 |  1111 | SME I8I32 implemented.
SMFR0 |    48 |  0001 | SME F64F64 implemented.
SMFR0 | 55:52 |  1111 | SME I16I64 implemented
SMFR0 | 59:56 |  0000 | Mandatory SME instructions are implemented.
SMFR0 |    63 |  0001 | SME_FA64 implemented.
------|-------|-------|----------------------------------------------
ZFR0  |  3:0  |  0001 | FEAT_SVE2 implemented.
ZFR0  |  7:4  |  0010 | FEAT_SVE_AES and FEAT_SVE_PMULL128 implemented.
ZFR0  | 19:16 |  0001 | FEAT_SVE_BitPerm implemented.
ZFR0  | 23:20 |  0001 | FEAT_BF16 SVE implemented.
ZFR0  | 35:32 |  0001 | FEAT_SVE_SHA3 implemented.
ZFR0  | 43:40 |  0001 | FEAT_SVE_SM4 implemented.
ZFR0  | 47:44 |  0001 | FEAT_I8MM SVE implemented.
ZFR0  | 55:52 |  0001 | FEAT_F32MM SVE implemented
ZFR0  | 59:56 |  0001 | FEAT_F64MM SVE implemented
------|-------|-------|----------------------------------------------