Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/usr.sbin/cpuctl/arch Added more field definitions for ARMv8....



details:   https://anonhg.NetBSD.org/src/rev/13d08b638a08
branches:  trunk
changeset: 359440:13d08b638a08
user:      ryo <ryo%NetBSD.org@localhost>
date:      Thu Jan 06 09:01:16 2022 +0000

description:
Added more field definitions for ARMv8.x system registers

diffstat:

 usr.sbin/cpuctl/arch/aarch64.c |  292 ++++++++++++++++++++++++++++++++++++++--
 1 files changed, 277 insertions(+), 15 deletions(-)

diffs (truncated from 394 to 300 lines):

diff -r 0350571df72f -r 13d08b638a08 usr.sbin/cpuctl/arch/aarch64.c
--- a/usr.sbin/cpuctl/arch/aarch64.c    Thu Jan 06 08:46:43 2022 +0000
+++ b/usr.sbin/cpuctl/arch/aarch64.c    Thu Jan 06 09:01:16 2022 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: aarch64.c,v 1.17 2022/01/06 08:46:43 ryo Exp $ */
+/*     $NetBSD: aarch64.c,v 1.18 2022/01/06 09:01:16 ryo Exp $ */
 
 /*
  * Copyright (c) 2018 Ryo Shimizu <ryo%nerv.org@localhost>
@@ -29,7 +29,7 @@
 #include <sys/cdefs.h>
 
 #ifndef lint
-__RCSID("$NetBSD: aarch64.c,v 1.17 2022/01/06 08:46:43 ryo Exp $");
+__RCSID("$NetBSD: aarch64.c,v 1.18 2022/01/06 09:01:16 ryo Exp $");
 #endif /* no lint */
 
 #include <sys/types.h>
@@ -244,15 +244,31 @@
        },
        {
                FIELDINFO(8, 4, "MTE") {
-                       [0] = "Tagged Memory Extension not implemented",
-                       [1] = "Tagged Memory Extension implemented, EL0 only",
-                       [2] = "Tagged Memory Extension implemented"
+                       [0] = "Memory Tagging Extension not implemented",
+                       [1] = "Instruction-only Memory Taggined Extension"
+                           " implemented",
+                       [2] = "Full Memory Tagging Extension implemented",
+                       [3] = "Memory Tagging Extension implemented"
+                           " with Tag Check Fault handling"
                }
        },
        {
                FIELDINFO(12, 4, "RAS_frac") {
                        [0] = "Regular RAS",
-                       [1] = "RAS plus registers",
+                       [1] = "RAS plus registers"
+               }
+       },
+       {
+               FIELDINFO(16, 4, "MPAM_frac") {
+                       [0] = "MPAM not implemented, or v1.0",
+                       [1] = "MPAM v0.1 or v1.1"
+               }
+       },
+       {
+               FIELDINFO(32, 4, "CSV2_frac") {
+                       [0] = "not disclosed",
+                       [1] = "SCXTNUM_ELx registers not supported",
+                       [2] = "SCXTNUM_ELx registers supported"
                }
        },
        { .bitwidth = 0 }       /* end of table */
@@ -276,7 +292,9 @@
        {
                FIELDINFO(12, 4, "SHA2") {
                        [0] = "No SHA2",
-                       [1] = "SHA256H/SHA256H2/SHA256SU0/SHA256U1"
+                       [1] = "SHA256H/SHA256H2/SHA256SU0/SHA256SU1",
+                       [2] = "SHA256H/SHA256H2/SHA256SU0/SHA256SU1"
+                            "/SHA512H/SHA512H2/SHA512SU0/SHA512SU1"
                }
        },
        {
@@ -355,6 +373,121 @@
        { .bitwidth = 0 }       /* end of table */
 };
 
+/* ID_AA64ISAR0_EL1 - AArch64 Instruction Set Attribute Register 0 */
+struct fieldinfo id_aa64isar1_fieldinfo[] = {
+       {
+               FIELDINFO(0, 4, "DPB") {
+                       [0] = "No DC CVAP",
+                       [1] = "DC CVAP",
+                       [2] = "DC CVAP/DC CVADP"
+               }
+       },
+       {
+               FIELDINFO(4, 4, "APA") {
+                       [0] = "No Archtected Address Authentication algorithm",
+                       [1] = "QARMA with PAC",
+                       [2] = "QARMA with EnhancedPAC",
+                       [3] = "QARMA with EnhancedPAC2",
+                       [4] = "QARMA with EnhancedPAC/PAC2",
+                       [5] = "QARMA with EnhancedPAC/PAC2/FPACCombined"
+               }
+       },
+       {
+               FIELDINFO(8, 4, "API") {
+                       [0] = "No Address Authentication algorithm",
+                       [1] = "Address Authentication algorithm implemented",
+                       [2] = "EnhancedPAC",
+                       [3] = "EnhancedPAC2",
+                       [4] = "EnhancedPAC2/FPAC",
+                       [5] = "EnhancedPAC2/FPAC/FPACCombined"
+               }
+       },
+       {
+               FIELDINFO(12, 4, "JSCVT") {
+                       [0] = "No FJCVTZS",
+                       [1] = "FJCVTZS"
+               }
+       },
+       {
+               FIELDINFO(16, 4, "FCMA") {
+                       [0] = "No FCMA",
+                       [1] = "FCMLA/FCADD"
+               }
+       },
+       {
+               FIELDINFO(20, 4, "LRCPC") {
+                       [0] = "no LRCPC",
+                       [1] = "LDAPR",
+                       [2] = "LDAPR/LDAPUR/STLUR"
+               }
+       },
+       {
+               FIELDINFO(24, 4, "GPA") {
+                       [0] = "No Archtected Generic Authentication algorithm",
+                       [1] = "QARMA with PACGA"
+               }
+       },
+       {
+               FIELDINFO(28, 4, "GPI") {
+                       [0] = "No Generic Authentication algorithm",
+                       [1] = "Generic Authentication algorithm implemented"
+               }
+       },
+       {
+               FIELDINFO(32, 4, "FRINTTS") {
+                       [0] = "No FRINTTS",
+                       [1] = "FRINT32Z/FRINT32X/FRINT64Z/FRINT64X"
+               }
+       },
+       {
+               FIELDINFO(36, 4, "SB") {
+                       [0] = "No SB",
+                       [1] = "SB"
+               }
+       },
+       {
+               FIELDINFO(40, 4, "SPECRES") {
+                       [0] = "No SPECRES",
+                       [1] = "CFP RCTX/DVP RCTX/CPP RCTX"
+               }
+       },
+       {
+               FIELDINFO(44, 4, "BF16") {
+                       [0] = "No BFloat16",
+                       [1] = "BFCVT/BFCVTN/BFCVTN2/BFDOT"
+                           "/BFMLALB/BFMLALT/BFMMLA"
+               }
+       },
+       {
+               FIELDINFO(48, 4, "DGH") {
+                       [0] = "Data Gathering Hint not implemented",
+                       [1] = "Data Gathering Hint implemented"
+               }
+       },
+       {
+               FIELDINFO(52, 4, "I8MM") {
+                       [0] = "No Int8 matrix",
+                       [1] = "SMMLA/SUDOT/UMMLA/USMMLA/USDOT"
+               }
+       },
+       {
+               FIELDINFO(56, 4, "XS") {
+                       [0] = "No XS/nXS qualifier",
+                       [1] = "XS attribute, TLBI and DSB"
+                           " with nXS qualifier supported"
+               }
+       },
+       {
+               FIELDINFO(60, 4, "LS64") {
+                       [0] = "No LS64",
+                       [1] = "LD64B/ST64B",
+                       [2] = "LD64B/ST64B/ST64BV",
+                       [3] = "LD64B/ST64B/ST64BV/ST64BV0/ACCDATA_EL1",
+               }
+       },
+       { .bitwidth = 0 }       /* end of table */
+};
+
 /* ID_AA64MMFR0_EL1 - AArch64 Memory Model Feature Register 0 */
 struct fieldinfo id_aa64mmfr0_fieldinfo[] = {
        {
@@ -364,7 +497,8 @@
                        [2] = "40bits/1TB",
                        [3] = "42bits/4TB",
                        [4] = "44bits/16TB",
-                       [5] = "48bits/256TB"
+                       [5] = "48bits/256TB",
+                       [6] = "52bits/4PB"
                }
        },
        {
@@ -409,6 +543,51 @@
                        [15] = "No 4KB granule"
                }
        },
+       {
+               FIELDINFO(32, 4, "TGran16_2") {
+                       [0] = "same as TGran16",
+                       [1] = "No 16KB granule at stage2",
+                       [2] = "16KB granule at stage2",
+                       [3] = "16KB granule at stage2/52bit"
+               }
+       },
+       {
+               FIELDINFO(36, 4, "TGran64_2") {
+                       [0] = "same as TGran64",
+                       [1] = "No 64KB granule at stage2",
+                       [2] = "64KB granule at stage2"
+               }
+       },
+       {
+               FIELDINFO(40, 4, "TGran4_2") {
+                       [0] = "same as TGran4",
+                       [1] = "No 4KB granule at stage2",
+                       [2] = "4KB granule at stage2"
+               }
+       },
+       {
+               FIELDINFO(44, 4, "ExS") {
+                       [0] = "All Exception entries and exits are context"
+                           " synchronization events",
+                       [1] = "Non-context synchronizing exception entry and"
+                           " exit are supported"
+               }
+       },
+       {
+               FIELDINFO(56, 4, "FGT") {
+                       [0] = "fine-grained trap controls not implemented",
+                       [1] = "fine-grained trap controls implemented"
+               }
+       },
+       {
+               FIELDINFO(60, 4, "ECV") {
+                       [0] = "Enhanced Counter Virtualization not implemented",
+                       [1] = "Enhanced Counter Virtualization implemented",
+                       [2] = "Enhanced Counter Virtualization"
+                           " + CNTHCTL_EL2.ECV/CNTPOFF_EL2 implemented"
+               }
+       },
+
        { .bitwidth = 0 }       /* end of table */
 };
 
@@ -450,7 +629,9 @@
                FIELDINFO(20, 4, "PAN") {
                        [0] = "PAN not supported",
                        [1] = "PAN supported",
-                       [2] = "PAN supported, and instructions supported"
+                       [2] = "PAN supported, and instructions supported",
+                       [3] = "PAN supported, instructions supported"
+                           ", and SCTLR_EL[12].EPAN bits supported"
                }
        },
        {
@@ -461,8 +642,42 @@
        },
        {
                FIELDINFO(28, 4, "XNX") {
-                       [0] = "Distinction between EL0 and EL1 XN control at stage 2 not supported",
-                       [1] = "Distinction between EL0 and EL1 XN control at stage 2 supported"
+                       [0] = "Distinction between EL0 and EL1 XN control"
+                           " at stage2 not supported",
+                       [1] = "Distinction between EL0 and EL1 XN control"
+                           " at stage2 supported"
+               }
+       },
+       {
+               FIELDINFO(32, 4, "TWED") {
+                       [0] = "Configurable delayed trapping of WFE is not"
+                           " supported",
+                       [1] = "Configurable delayed trapping of WFE supported"
+               }
+       },
+       {
+               FIELDINFO(36, 4, "ETS") {
+                       [0] = "Enhanced Translation Synchronization not"
+                           " supported",
+                       [1] = "Enhanced Translation Synchronization supported"
+               }
+       },
+       {
+               FIELDINFO(40, 4, "HCX") {
+                       [0] = "HCRX_EL2 not supported",
+                       [1] = "HCRX_EL2 supported"
+               }
+       },
+       {
+               FIELDINFO(44, 4, "AFP") {
+                       [0] = "FPCR.{AH,FIZ,NEP} fields not supported",
+                       [1] = "FPCR.{AH,FIZ,NEP} fields supported"
+               }
+       },
+       {
+               FIELDINFO(48, 4, "nTLBPA") {



Home | Main Index | Thread Index | Old Index