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 More identification.
details: https://anonhg.NetBSD.org/src/rev/8514e82f4179
branches: trunk
changeset: 744271:8514e82f4179
user: maxv <maxv%NetBSD.org@localhost>
date: Tue Jan 28 17:36:42 2020 +0000
description:
More identification.
diffstat:
usr.sbin/cpuctl/arch/aarch64.c | 107 ++++++++++++++++++++++++++++++++++++++++-
1 files changed, 105 insertions(+), 2 deletions(-)
diffs (144 lines):
diff -r 9e021b4f2aef -r 8514e82f4179 usr.sbin/cpuctl/arch/aarch64.c
--- a/usr.sbin/cpuctl/arch/aarch64.c Tue Jan 28 17:33:07 2020 +0000
+++ b/usr.sbin/cpuctl/arch/aarch64.c Tue Jan 28 17:36:42 2020 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: aarch64.c,v 1.7 2019/05/09 07:38:44 mrg Exp $ */
+/* $NetBSD: aarch64.c,v 1.8 2020/01/28 17:36:42 maxv 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.7 2019/05/09 07:38:44 mrg Exp $");
+__RCSID("$NetBSD: aarch64.c,v 1.8 2020/01/28 17:36:42 maxv Exp $");
#endif /* no lint */
#include <sys/types.h>
@@ -158,6 +158,41 @@
{ .bitwidth = 0 } /* end of table */
};
+/* ID_AA64PFR1_EL1 - AArch64 Processor Feature Register 1 */
+struct fieldinfo id_aa64pfr1_fieldinfo[] = {
+ {
+ .bitpos = 0, .bitwidth = 4, .name = "BT",
+ .info = (const char *[16]) { /* 16=4bit */
+ [0] = "Branch Target Identification not implemented",
+ [1] = "Branch Target Identification implemented",
+ }
+ },
+ {
+ .bitpos = 4, .bitwidth = 4, .name = "SSBS",
+ .info = (const char *[16]) { /* 16=4bit */
+ [0] = "Speculative Store Bypassing control not implemented",
+ [1] = "Speculative Store Bypassing control implemented",
+ [2] = "Speculative Store Bypassing control implemented, plus MSR/MRS"
+ }
+ },
+ {
+ .bitpos = 8, .bitwidth = 4, .name = "MTE",
+ .info = (const char *[16]) { /* 16=4bit */
+ [0] = "Tagged Memory Extension not implemented",
+ [1] = "Tagged Memory Extension implemented, EL0 only",
+ [2] = "Tagged Memory Extension implemented"
+ }
+ },
+ {
+ .bitpos = 12, .bitwidth = 4, .name = "RAS_frac",
+ .info = (const char *[16]) { /* 16=4bit */
+ [0] = "Regular RAS",
+ [1] = "RAS plus registers",
+ }
+ },
+ { .bitwidth = 0 } /* end of table */
+};
+
/* ID_AA64ISAR0_EL1 - AArch64 Instruction Set Attribute Register 0 */
struct fieldinfo id_aa64isar0_fieldinfo[] = {
{
@@ -258,6 +293,70 @@
{ .bitwidth = 0 } /* end of table */
};
+/* ID_AA64MMFR1_EL1 - AArch64 Memory Model Feature Register 1 */
+struct fieldinfo id_aa64mmfr1_fieldinfo[] = {
+ {
+ .bitpos = 0, .bitwidth = 4, .name = "HAFDBS",
+ .info = (const char *[16]) { /* 16=4bit */
+ [0] = "Access and Dirty flags not supported",
+ [1] = "Access flag supported",
+ [2] = "Access and Dirty flags supported",
+ }
+ },
+ {
+ .bitpos = 4, .bitwidth = 4, .name = "VMIDBits",
+ .info = (const char *[16]) { /* 16=4bit */
+ [0] = "8bits",
+ [2] = "16bits"
+ }
+ },
+ {
+ .bitpos = 8, .bitwidth = 4, .name = "VH",
+ .info = (const char *[16]) { /* 16=4bit */
+ [0] = "Virtualization Host Extensions not supported",
+ [1] = "Virtualization Host Extensions supported",
+ }
+ },
+ {
+ .bitpos = 12, .bitwidth = 4, .name = "HPDS",
+ .info = (const char *[16]) { /* 16=4bit */
+ [0] = "Disabling of hierarchical controls not supported",
+ [1] = "Disabling of hierarchical controls supported",
+ [2] = "Disabling of hierarchical controls supported, plus PTD"
+ }
+ },
+ {
+ .bitpos = 16, .bitwidth = 4, .name = "LO",
+ .info = (const char *[16]) { /* 16=4bit */
+ [0] = "LORegions not supported",
+ [1] = "LORegions supported"
+ }
+ },
+ {
+ .bitpos = 20, .bitwidth = 4, .name = "PAN",
+ .info = (const char *[16]) { /* 16=4bit */
+ [0] = "PAN not supported",
+ [1] = "PAN supported",
+ [2] = "PAN supported, and instructions supported"
+ }
+ },
+ {
+ .bitpos = 24, .bitwidth = 4, .name = "SpecSEI",
+ .info = (const char *[16]) { /* 16=4bit */
+ [0] = "SError interrupt not supported",
+ [1] = "SError interrupt supported"
+ }
+ },
+ {
+ .bitpos = 28, .bitwidth = 4, .name = "XNX",
+ .info = (const char *[16]) { /* 16=4bit */
+ [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"
+ }
+ },
+ { .bitwidth = 0 } /* end of table */
+};
+
/* ID_AA64DFR0_EL1 - AArch64 Debug Feature Register 0 */
struct fieldinfo id_aa64dfr0_fieldinfo[] = {
{
@@ -610,8 +709,12 @@
id_aa64isar0_fieldinfo, id->ac_aa64isar0);
print_fieldinfo(cpuname, "memory model 0",
id_aa64mmfr0_fieldinfo, id->ac_aa64mmfr0);
+ print_fieldinfo(cpuname, "memory model 1",
+ id_aa64mmfr1_fieldinfo, id->ac_aa64mmfr1);
print_fieldinfo(cpuname, "processor feature 0",
id_aa64pfr0_fieldinfo, id->ac_aa64pfr0);
+ print_fieldinfo(cpuname, "processor feature 1",
+ id_aa64pfr1_fieldinfo, id->ac_aa64pfr1);
identify_dfr0(cpuname, id->ac_aa64dfr0);
print_fieldinfo(cpuname, "media and VFP features 0",
Home |
Main Index |
Thread Index |
Old Index