Skip to content

v1.3.0

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

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 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        |  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  | ExtTrcBuff   | 59:56 |  0000 | Trace Buffer External Mode not 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  | SEBEP        | 27:24 |  0000 | FEAT_SEBEP not implemented.
DFR0  | WRPs         | 23:20 |  0011 | Number of watchpoints, minus 1.
DFR0  | PMSS         | 19:16 |  0000 | FEAT_PMUv2_SS not implemented.
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.
------|--------------|-------|-------|----------------------------------------------
ZFR0  | F64MM        | 59:56 |  0001 | FEAT_F64MM SVE implemented
ZFR0  | F32MM        | 55:52 |  0001 | FEAT_F32MM SVE implemented
ZFR0  | I8MM         | 47:44 |  0001 | FEAT_I8MM SVE implemented.
ZFR0  | SM4          | 43:40 |  0001 | FEAT_SVE_SM4 implemented.
ZFR0  | SHA3         | 35:32 |  0001 | FEAT_SVE_SHA3 implemented.
ZFR0  | B16B16       | 27:24 |  0000 | FEAT_SVE_B16B16 not implemented.
ZFR0  | BF16         | 23:20 |  0001 | FEAT_BF16 SVE implemented.
ZFR0  | BitPerm      | 19:16 |  0001 | FEAT_SVE_BitPerm implemented.
ZFR0  | AES          |  7:4  |  0010 | FEAT_SVE_AES and FEAT_SVE_PMULL128 implemented.
ZFR0  | SVEver       |  3:0  |  0001 | FEAT_SVE2 implemented.
------|--------------|-------|-------|----------------------------------------------
SMFR0 | FA64         |    63 |  0001 | FEAT_SME_FA64 implemented.
SMFR0 | LUTv2        |    60 |  0000 | FEAT_SME_LUTv2 not 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_F64F64 implemented.
SMFR0 | I16I32       | 47:44 |  0000 | SME2 I16I32 not implemented.
SMFR0 | B16B16       |    43 |  0000 | FEAT_SME_B16B16 not implemented.
SMFR0 | F16F16       |    42 |  0000 | FEAT_SME_F16F16 not implemented.
SMFR0 | F8F16        |    41 |  0000 | FEAT_SME_F8F16 not implemented.
SMFR0 | F8F32        |    40 |  0000 | FEAT_SME_F8F32 not implemented.
SMFR0 | I8I32        |    40 |  1111 | SME I8I32 implemented.
SMFR0 | F16F32       |    35 |  0001 | SME F16F32 implemented.
SMFR0 | B16F32       |    34 |  0001 | SME B16F32 implemented.
SMFR0 | BI32I32      |    33 |  0000 | SME BI32I32 not implemented.
SMFR0 | F32F32       |    32 |  0001 | SME F32F32 implemented.
SMFR0 | SF8FMA       |    30 |  0000 | FEAT_SSVE_FP8FMA not implemented.
SMFR0 | SF8DP4       |    29 |  0000 | FEAT_SSVE_FP8DOT4 not implemented.
SMFR0 | SF8DP2       |    28 |  0000 | FEAT_SSVE_FP8DOT2 not implemented.
------|--------------|-------|-------|----------------------------------------------

Full Changelog: v1.2.0...v1.3.0