mirror of
https://github.com/armbian/build.git
synced 2025-09-19 04:31:38 +02:00
1477 lines
38 KiB
Diff
1477 lines
38 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Patrick Yavitz <pyavitz@armbian.com>
|
|
Date: Fri, 21 Jun 2024 11:54:06 -0400
|
|
Subject: add spacemit patch set
|
|
|
|
source: https://gitee.com/bianbu-linux/linux-6.1
|
|
|
|
Signed-off-by: Patrick Yavitz <pyavitz@armbian.com>
|
|
---
|
|
tools/lib/perf/cpumap.c | 10 +-
|
|
tools/perf/arch/riscv/util/Build | 1 +
|
|
tools/perf/arch/riscv/util/header.c | 104 ++
|
|
tools/perf/pmu-events/arch/riscv/mapfile.csv | 18 +
|
|
tools/perf/pmu-events/arch/riscv/riscv-sbi-firmware.json | 134 +++
|
|
tools/perf/pmu-events/arch/riscv/sifive/u74/firmware.json | 68 ++
|
|
tools/perf/pmu-events/arch/riscv/sifive/u74/instructions.json | 92 ++
|
|
tools/perf/pmu-events/arch/riscv/sifive/u74/memory.json | 32 +
|
|
tools/perf/pmu-events/arch/riscv/sifive/u74/microarch.json | 57 +
|
|
tools/perf/pmu-events/arch/riscv/spacemit/x60/branch.json | 62 ++
|
|
tools/perf/pmu-events/arch/riscv/spacemit/x60/cache.json | 122 +++
|
|
tools/perf/pmu-events/arch/riscv/spacemit/x60/instruction.json | 122 +++
|
|
tools/perf/pmu-events/arch/riscv/spacemit/x60/microarch.json | 522 ++++++++++
|
|
13 files changed, 1339 insertions(+), 5 deletions(-)
|
|
|
|
diff --git a/tools/lib/perf/cpumap.c b/tools/lib/perf/cpumap.c
|
|
index 111111111111..222222222222 100644
|
|
--- a/tools/lib/perf/cpumap.c
|
|
+++ b/tools/lib/perf/cpumap.c
|
|
@@ -351,8 +351,8 @@ struct perf_cpu_map *perf_cpu_map__merge(struct perf_cpu_map *orig,
|
|
struct perf_cpu_map *other)
|
|
{
|
|
struct perf_cpu *tmp_cpus;
|
|
- int tmp_len;
|
|
- int i, j, k;
|
|
+ unsigned int tmp_len;
|
|
+ unsigned int i, j, k;
|
|
struct perf_cpu_map *merged;
|
|
|
|
if (perf_cpu_map__is_subset(orig, other))
|
|
@@ -369,7 +369,7 @@ struct perf_cpu_map *perf_cpu_map__merge(struct perf_cpu_map *orig,
|
|
|
|
/* Standard merge algorithm from wikipedia */
|
|
i = j = k = 0;
|
|
- while (i < orig->nr && j < other->nr) {
|
|
+ while (i < (unsigned int)orig->nr && j < (unsigned int)other->nr) {
|
|
if (orig->map[i].cpu <= other->map[j].cpu) {
|
|
if (orig->map[i].cpu == other->map[j].cpu)
|
|
j++;
|
|
@@ -378,10 +378,10 @@ struct perf_cpu_map *perf_cpu_map__merge(struct perf_cpu_map *orig,
|
|
tmp_cpus[k++] = other->map[j++];
|
|
}
|
|
|
|
- while (i < orig->nr)
|
|
+ while (i < (unsigned int)orig->nr)
|
|
tmp_cpus[k++] = orig->map[i++];
|
|
|
|
- while (j < other->nr)
|
|
+ while (j < (unsigned int)other->nr)
|
|
tmp_cpus[k++] = other->map[j++];
|
|
assert(k <= tmp_len);
|
|
|
|
diff --git a/tools/perf/arch/riscv/util/Build b/tools/perf/arch/riscv/util/Build
|
|
index 111111111111..222222222222 100644
|
|
--- a/tools/perf/arch/riscv/util/Build
|
|
+++ b/tools/perf/arch/riscv/util/Build
|
|
@@ -1,4 +1,5 @@
|
|
perf-y += perf_regs.o
|
|
+perf-y += header.o
|
|
|
|
perf-$(CONFIG_DWARF) += dwarf-regs.o
|
|
perf-$(CONFIG_LIBDW_DWARF_UNWIND) += unwind-libdw.o
|
|
diff --git a/tools/perf/arch/riscv/util/header.c b/tools/perf/arch/riscv/util/header.c
|
|
new file mode 100644
|
|
index 000000000000..111111111111
|
|
--- /dev/null
|
|
+++ b/tools/perf/arch/riscv/util/header.c
|
|
@@ -0,0 +1,104 @@
|
|
+// SPDX-License-Identifier: GPL-2.0-only
|
|
+/*
|
|
+ * Implementation of get_cpuid().
|
|
+ *
|
|
+ * Author: Nikita Shubin <n.shubin@yadro.com>
|
|
+ */
|
|
+
|
|
+#include <stdio.h>
|
|
+#include <stdlib.h>
|
|
+#include <api/fs/fs.h>
|
|
+#include <errno.h>
|
|
+#include "../../util/debug.h"
|
|
+#include "../../util/header.h"
|
|
+
|
|
+#define CPUINFO_MVEN "mvendorid"
|
|
+#define CPUINFO_MARCH "marchid"
|
|
+#define CPUINFO_MIMP "mimpid"
|
|
+#define CPUINFO "/proc/cpuinfo"
|
|
+
|
|
+static char *_get_field(const char *line)
|
|
+{
|
|
+ char *line2, *nl;
|
|
+
|
|
+ line2 = strrchr(line, ' ');
|
|
+ if (!line2)
|
|
+ return NULL;
|
|
+
|
|
+ line2++;
|
|
+ nl = strrchr(line, '\n');
|
|
+ if (!nl)
|
|
+ return NULL;
|
|
+
|
|
+ return strndup(line2, nl - line2);
|
|
+}
|
|
+
|
|
+static char *_get_cpuid(void)
|
|
+{
|
|
+ char *line = NULL;
|
|
+ char *mvendorid = NULL;
|
|
+ char *marchid = NULL;
|
|
+ char *mimpid = NULL;
|
|
+ char *cpuid = NULL;
|
|
+ int read;
|
|
+ unsigned long line_sz;
|
|
+ FILE *cpuinfo;
|
|
+
|
|
+ cpuinfo = fopen(CPUINFO, "r");
|
|
+ if (cpuinfo == NULL)
|
|
+ return cpuid;
|
|
+
|
|
+ while ((read = getline(&line, &line_sz, cpuinfo)) != -1) {
|
|
+ if (!strncmp(line, CPUINFO_MVEN, strlen(CPUINFO_MVEN))) {
|
|
+ mvendorid = _get_field(line);
|
|
+ if (!mvendorid)
|
|
+ goto free;
|
|
+ } else if (!strncmp(line, CPUINFO_MARCH, strlen(CPUINFO_MARCH))) {
|
|
+ marchid = _get_field(line);
|
|
+ if (!marchid)
|
|
+ goto free;
|
|
+ } else if (!strncmp(line, CPUINFO_MIMP, strlen(CPUINFO_MIMP))) {
|
|
+ mimpid = _get_field(line);
|
|
+ if (!mimpid)
|
|
+ goto free;
|
|
+
|
|
+ break;
|
|
+ }
|
|
+ }
|
|
+
|
|
+ if (!mvendorid || !marchid || !mimpid)
|
|
+ goto free;
|
|
+
|
|
+ if (asprintf(&cpuid, "%s-%s-%s", mvendorid, marchid, mimpid) < 0)
|
|
+ cpuid = NULL;
|
|
+
|
|
+free:
|
|
+ fclose(cpuinfo);
|
|
+ free(mvendorid);
|
|
+ free(marchid);
|
|
+ free(mimpid);
|
|
+
|
|
+ return cpuid;
|
|
+}
|
|
+
|
|
+int get_cpuid(char *buffer, size_t sz)
|
|
+{
|
|
+ char *cpuid = _get_cpuid();
|
|
+ int ret = 0;
|
|
+
|
|
+ if (sz < strlen(cpuid)) {
|
|
+ ret = -EINVAL;
|
|
+ goto free;
|
|
+ }
|
|
+
|
|
+ scnprintf(buffer, sz, "%s", cpuid);
|
|
+free:
|
|
+ free(cpuid);
|
|
+ return ret;
|
|
+}
|
|
+
|
|
+char *
|
|
+get_cpuid_str(struct perf_pmu *pmu __maybe_unused)
|
|
+{
|
|
+ return _get_cpuid();
|
|
+}
|
|
diff --git a/tools/perf/pmu-events/arch/riscv/mapfile.csv b/tools/perf/pmu-events/arch/riscv/mapfile.csv
|
|
new file mode 100644
|
|
index 000000000000..111111111111
|
|
--- /dev/null
|
|
+++ b/tools/perf/pmu-events/arch/riscv/mapfile.csv
|
|
@@ -0,0 +1,18 @@
|
|
+# Format:
|
|
+# MVENDORID-MARCHID-MIMPID,Version,JSON/file/pathname,Type
|
|
+#
|
|
+# where
|
|
+# MVENDORID JEDEC code of the core provider
|
|
+# MARCHID base microarchitecture of the hart
|
|
+# MIMPID unique encoding of the version
|
|
+# of the processor implementation
|
|
+# Version could be used to track version of JSON file
|
|
+# but currently unused.
|
|
+# JSON/file/pathname is the path to JSON file, relative
|
|
+# to tools/perf/pmu-events/arch/riscv/.
|
|
+# Type is core, uncore etc
|
|
+#
|
|
+#
|
|
+#MVENDORID-MARCHID-MIMPID,Version,Filename,EventType
|
|
+0x489-0x8000000000000007-0x[[:xdigit:]]+,v1,sifive/u74,core
|
|
+0x710-0x8000000058000001-0x[[:xdigit:]]+,v1,spacemit/x60,core
|
|
diff --git a/tools/perf/pmu-events/arch/riscv/riscv-sbi-firmware.json b/tools/perf/pmu-events/arch/riscv/riscv-sbi-firmware.json
|
|
new file mode 100644
|
|
index 000000000000..111111111111
|
|
--- /dev/null
|
|
+++ b/tools/perf/pmu-events/arch/riscv/riscv-sbi-firmware.json
|
|
@@ -0,0 +1,134 @@
|
|
+[
|
|
+ {
|
|
+ "PublicDescription": "Misaligned load trap",
|
|
+ "ConfigCode": "0x8000000000000000",
|
|
+ "EventName": "FW_MISALIGNED_LOAD",
|
|
+ "BriefDescription": "Misaligned load trap event"
|
|
+ },
|
|
+ {
|
|
+ "PublicDescription": "Misaligned store trap",
|
|
+ "ConfigCode": "0x8000000000000001",
|
|
+ "EventName": "FW_MISALIGNED_STORE",
|
|
+ "BriefDescription": "Misaligned store trap event"
|
|
+ },
|
|
+ {
|
|
+ "PublicDescription": "Load access trap",
|
|
+ "ConfigCode": "0x8000000000000002",
|
|
+ "EventName": "FW_ACCESS_LOAD",
|
|
+ "BriefDescription": "Load access trap event"
|
|
+ },
|
|
+ {
|
|
+ "PublicDescription": "Store access trap",
|
|
+ "ConfigCode": "0x8000000000000003",
|
|
+ "EventName": "FW_ACCESS_STORE",
|
|
+ "BriefDescription": "Store access trap event"
|
|
+ },
|
|
+ {
|
|
+ "PublicDescription": "Illegal instruction trap",
|
|
+ "ConfigCode": "0x8000000000000004",
|
|
+ "EventName": "FW_ILLEGAL_INSN",
|
|
+ "BriefDescription": "Illegal instruction trap event"
|
|
+ },
|
|
+ {
|
|
+ "PublicDescription": "Set timer event",
|
|
+ "ConfigCode": "0x8000000000000005",
|
|
+ "EventName": "FW_SET_TIMER",
|
|
+ "BriefDescription": "Set timer event"
|
|
+ },
|
|
+ {
|
|
+ "PublicDescription": "Sent IPI to other HART event",
|
|
+ "ConfigCode": "0x8000000000000006",
|
|
+ "EventName": "FW_IPI_SENT",
|
|
+ "BriefDescription": "Sent IPI to other HART event"
|
|
+ },
|
|
+ {
|
|
+ "PublicDescription": "Received IPI from other HART event",
|
|
+ "ConfigCode": "0x8000000000000007",
|
|
+ "EventName": "FW_IPI_RECEIVED",
|
|
+ "BriefDescription": "Received IPI from other HART event"
|
|
+ },
|
|
+ {
|
|
+ "PublicDescription": "Sent FENCE.I request to other HART event",
|
|
+ "ConfigCode": "0x8000000000000008",
|
|
+ "EventName": "FW_FENCE_I_SENT",
|
|
+ "BriefDescription": "Sent FENCE.I request to other HART event"
|
|
+ },
|
|
+ {
|
|
+ "PublicDescription": "Received FENCE.I request from other HART event",
|
|
+ "ConfigCode": "0x8000000000000009",
|
|
+ "EventName": "FW_FENCE_I_RECEIVED",
|
|
+ "BriefDescription": "Received FENCE.I request from other HART event"
|
|
+ },
|
|
+ {
|
|
+ "PublicDescription": "Sent SFENCE.VMA request to other HART event",
|
|
+ "ConfigCode": "0x800000000000000a",
|
|
+ "EventName": "FW_SFENCE_VMA_SENT",
|
|
+ "BriefDescription": "Sent SFENCE.VMA request to other HART event"
|
|
+ },
|
|
+ {
|
|
+ "PublicDescription": "Received SFENCE.VMA request from other HART event",
|
|
+ "ConfigCode": "0x800000000000000b",
|
|
+ "EventName": "FW_SFENCE_VMA_RECEIVED",
|
|
+ "BriefDescription": "Received SFENCE.VMA request from other HART event"
|
|
+ },
|
|
+ {
|
|
+ "PublicDescription": "Sent SFENCE.VMA with ASID request to other HART event",
|
|
+ "ConfigCode": "0x800000000000000c",
|
|
+ "EventName": "FW_SFENCE_VMA_RECEIVED",
|
|
+ "BriefDescription": "Sent SFENCE.VMA with ASID request to other HART event"
|
|
+ },
|
|
+ {
|
|
+ "PublicDescription": "Received SFENCE.VMA with ASID request from other HART event",
|
|
+ "ConfigCode": "0x800000000000000d",
|
|
+ "EventName": "FW_SFENCE_VMA_ASID_RECEIVED",
|
|
+ "BriefDescription": "Received SFENCE.VMA with ASID request from other HART event"
|
|
+ },
|
|
+ {
|
|
+ "PublicDescription": "Sent HFENCE.GVMA request to other HART event",
|
|
+ "ConfigCode": "0x800000000000000e",
|
|
+ "EventName": "FW_HFENCE_GVMA_SENT",
|
|
+ "BriefDescription": "Sent HFENCE.GVMA request to other HART event"
|
|
+ },
|
|
+ {
|
|
+ "PublicDescription": "Received HFENCE.GVMA request from other HART event",
|
|
+ "ConfigCode": "0x800000000000000f",
|
|
+ "EventName": "FW_HFENCE_GVMA_RECEIVED",
|
|
+ "BriefDescription": "Received HFENCE.GVMA request from other HART event"
|
|
+ },
|
|
+ {
|
|
+ "PublicDescription": "Sent HFENCE.GVMA with VMID request to other HART event",
|
|
+ "ConfigCode": "0x8000000000000010",
|
|
+ "EventName": "FW_HFENCE_GVMA_VMID_SENT",
|
|
+ "BriefDescription": "Sent HFENCE.GVMA with VMID request to other HART event"
|
|
+ },
|
|
+ {
|
|
+ "PublicDescription": "Received HFENCE.GVMA with VMID request from other HART event",
|
|
+ "ConfigCode": "0x8000000000000011",
|
|
+ "EventName": "FW_HFENCE_GVMA_VMID_RECEIVED",
|
|
+ "BriefDescription": "Received HFENCE.GVMA with VMID request from other HART event"
|
|
+ },
|
|
+ {
|
|
+ "PublicDescription": "Sent HFENCE.VVMA request to other HART event",
|
|
+ "ConfigCode": "0x8000000000000012",
|
|
+ "EventName": "FW_HFENCE_VVMA_SENT",
|
|
+ "BriefDescription": "Sent HFENCE.VVMA request to other HART event"
|
|
+ },
|
|
+ {
|
|
+ "PublicDescription": "Received HFENCE.VVMA request from other HART event",
|
|
+ "ConfigCode": "0x8000000000000013",
|
|
+ "EventName": "FW_HFENCE_VVMA_RECEIVED",
|
|
+ "BriefDescription": "Received HFENCE.VVMA request from other HART event"
|
|
+ },
|
|
+ {
|
|
+ "PublicDescription": "Sent HFENCE.VVMA with ASID request to other HART event",
|
|
+ "ConfigCode": "0x8000000000000014",
|
|
+ "EventName": "FW_HFENCE_VVMA_ASID_SENT",
|
|
+ "BriefDescription": "Sent HFENCE.VVMA with ASID request to other HART event"
|
|
+ },
|
|
+ {
|
|
+ "PublicDescription": "Received HFENCE.VVMA with ASID request from other HART event",
|
|
+ "ConfigCode": "0x8000000000000015",
|
|
+ "EventName": "FW_HFENCE_VVMA_ASID_RECEIVED",
|
|
+ "BriefDescription": "Received HFENCE.VVMA with ASID request from other HART event"
|
|
+ }
|
|
+]
|
|
diff --git a/tools/perf/pmu-events/arch/riscv/sifive/u74/firmware.json b/tools/perf/pmu-events/arch/riscv/sifive/u74/firmware.json
|
|
new file mode 100644
|
|
index 000000000000..111111111111
|
|
--- /dev/null
|
|
+++ b/tools/perf/pmu-events/arch/riscv/sifive/u74/firmware.json
|
|
@@ -0,0 +1,68 @@
|
|
+[
|
|
+ {
|
|
+ "ArchStdEvent": "FW_MISALIGNED_LOAD"
|
|
+ },
|
|
+ {
|
|
+ "ArchStdEvent": "FW_MISALIGNED_STORE"
|
|
+ },
|
|
+ {
|
|
+ "ArchStdEvent": "FW_ACCESS_LOAD"
|
|
+ },
|
|
+ {
|
|
+ "ArchStdEvent": "FW_ACCESS_STORE"
|
|
+ },
|
|
+ {
|
|
+ "ArchStdEvent": "FW_ILLEGAL_INSN"
|
|
+ },
|
|
+ {
|
|
+ "ArchStdEvent": "FW_SET_TIMER"
|
|
+ },
|
|
+ {
|
|
+ "ArchStdEvent": "FW_IPI_SENT"
|
|
+ },
|
|
+ {
|
|
+ "ArchStdEvent": "FW_IPI_RECEIVED"
|
|
+ },
|
|
+ {
|
|
+ "ArchStdEvent": "FW_FENCE_I_SENT"
|
|
+ },
|
|
+ {
|
|
+ "ArchStdEvent": "FW_FENCE_I_RECEIVED"
|
|
+ },
|
|
+ {
|
|
+ "ArchStdEvent": "FW_SFENCE_VMA_SENT"
|
|
+ },
|
|
+ {
|
|
+ "ArchStdEvent": "FW_SFENCE_VMA_RECEIVED"
|
|
+ },
|
|
+ {
|
|
+ "ArchStdEvent": "FW_SFENCE_VMA_RECEIVED"
|
|
+ },
|
|
+ {
|
|
+ "ArchStdEvent": "FW_SFENCE_VMA_ASID_RECEIVED"
|
|
+ },
|
|
+ {
|
|
+ "ArchStdEvent": "FW_HFENCE_GVMA_SENT"
|
|
+ },
|
|
+ {
|
|
+ "ArchStdEvent": "FW_HFENCE_GVMA_RECEIVED"
|
|
+ },
|
|
+ {
|
|
+ "ArchStdEvent": "FW_HFENCE_GVMA_VMID_SENT"
|
|
+ },
|
|
+ {
|
|
+ "ArchStdEvent": "FW_HFENCE_GVMA_VMID_RECEIVED"
|
|
+ },
|
|
+ {
|
|
+ "ArchStdEvent": "FW_HFENCE_VVMA_SENT"
|
|
+ },
|
|
+ {
|
|
+ "ArchStdEvent": "FW_HFENCE_VVMA_RECEIVED"
|
|
+ },
|
|
+ {
|
|
+ "ArchStdEvent": "FW_HFENCE_VVMA_ASID_SENT"
|
|
+ },
|
|
+ {
|
|
+ "ArchStdEvent": "FW_HFENCE_VVMA_ASID_RECEIVED"
|
|
+ }
|
|
+]
|
|
diff --git a/tools/perf/pmu-events/arch/riscv/sifive/u74/instructions.json b/tools/perf/pmu-events/arch/riscv/sifive/u74/instructions.json
|
|
new file mode 100644
|
|
index 000000000000..111111111111
|
|
--- /dev/null
|
|
+++ b/tools/perf/pmu-events/arch/riscv/sifive/u74/instructions.json
|
|
@@ -0,0 +1,92 @@
|
|
+[
|
|
+ {
|
|
+ "EventName": "EXCEPTION_TAKEN",
|
|
+ "EventCode": "0x0000100",
|
|
+ "BriefDescription": "Exception taken"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "INTEGER_LOAD_RETIRED",
|
|
+ "EventCode": "0x0000200",
|
|
+ "BriefDescription": "Integer load instruction retired"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "INTEGER_STORE_RETIRED",
|
|
+ "EventCode": "0x0000400",
|
|
+ "BriefDescription": "Integer store instruction retired"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "ATOMIC_MEMORY_RETIRED",
|
|
+ "EventCode": "0x0000800",
|
|
+ "BriefDescription": "Atomic memory operation retired"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "SYSTEM_INSTRUCTION_RETIRED",
|
|
+ "EventCode": "0x0001000",
|
|
+ "BriefDescription": "System instruction retired"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "INTEGER_ARITHMETIC_RETIRED",
|
|
+ "EventCode": "0x0002000",
|
|
+ "BriefDescription": "Integer arithmetic instruction retired"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "CONDITIONAL_BRANCH_RETIRED",
|
|
+ "EventCode": "0x0004000",
|
|
+ "BriefDescription": "Conditional branch retired"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "JAL_INSTRUCTION_RETIRED",
|
|
+ "EventCode": "0x0008000",
|
|
+ "BriefDescription": "JAL instruction retired"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "JALR_INSTRUCTION_RETIRED",
|
|
+ "EventCode": "0x0010000",
|
|
+ "BriefDescription": "JALR instruction retired"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "INTEGER_MULTIPLICATION_RETIRED",
|
|
+ "EventCode": "0x0020000",
|
|
+ "BriefDescription": "Integer multiplication instruction retired"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "INTEGER_DIVISION_RETIRED",
|
|
+ "EventCode": "0x0040000",
|
|
+ "BriefDescription": "Integer division instruction retired"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "FP_LOAD_RETIRED",
|
|
+ "EventCode": "0x0080000",
|
|
+ "BriefDescription": "Floating-point load instruction retired"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "FP_STORE_RETIRED",
|
|
+ "EventCode": "0x0100000",
|
|
+ "BriefDescription": "Floating-point store instruction retired"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "FP_ADDITION_RETIRED",
|
|
+ "EventCode": "0x0200000",
|
|
+ "BriefDescription": "Floating-point addition retired"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "FP_MULTIPLICATION_RETIRED",
|
|
+ "EventCode": "0x0400000",
|
|
+ "BriefDescription": "Floating-point multiplication retired"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "FP_FUSEDMADD_RETIRED",
|
|
+ "EventCode": "0x0800000",
|
|
+ "BriefDescription": "Floating-point fused multiply-add retired"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "FP_DIV_SQRT_RETIRED",
|
|
+ "EventCode": "0x1000000",
|
|
+ "BriefDescription": "Floating-point division or square-root retired"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "OTHER_FP_RETIRED",
|
|
+ "EventCode": "0x2000000",
|
|
+ "BriefDescription": "Other floating-point instruction retired"
|
|
+ }
|
|
+]
|
|
\ No newline at end of file
|
|
diff --git a/tools/perf/pmu-events/arch/riscv/sifive/u74/memory.json b/tools/perf/pmu-events/arch/riscv/sifive/u74/memory.json
|
|
new file mode 100644
|
|
index 000000000000..111111111111
|
|
--- /dev/null
|
|
+++ b/tools/perf/pmu-events/arch/riscv/sifive/u74/memory.json
|
|
@@ -0,0 +1,32 @@
|
|
+[
|
|
+ {
|
|
+ "EventName": "ICACHE_RETIRED",
|
|
+ "EventCode": "0x0000102",
|
|
+ "BriefDescription": "Instruction cache miss"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "DCACHE_MISS_MMIO_ACCESSES",
|
|
+ "EventCode": "0x0000202",
|
|
+ "BriefDescription": "Data cache miss or memory-mapped I/O access"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "DCACHE_WRITEBACK",
|
|
+ "EventCode": "0x0000402",
|
|
+ "BriefDescription": "Data cache write-back"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "INST_TLB_MISS",
|
|
+ "EventCode": "0x0000802",
|
|
+ "BriefDescription": "Instruction TLB miss"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "DATA_TLB_MISS",
|
|
+ "EventCode": "0x0001002",
|
|
+ "BriefDescription": "Data TLB miss"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "UTLB_MISS",
|
|
+ "EventCode": "0x0002002",
|
|
+ "BriefDescription": "UTLB miss"
|
|
+ }
|
|
+]
|
|
\ No newline at end of file
|
|
diff --git a/tools/perf/pmu-events/arch/riscv/sifive/u74/microarch.json b/tools/perf/pmu-events/arch/riscv/sifive/u74/microarch.json
|
|
new file mode 100644
|
|
index 000000000000..111111111111
|
|
--- /dev/null
|
|
+++ b/tools/perf/pmu-events/arch/riscv/sifive/u74/microarch.json
|
|
@@ -0,0 +1,57 @@
|
|
+[
|
|
+ {
|
|
+ "EventName": "ADDRESSGEN_INTERLOCK",
|
|
+ "EventCode": "0x0000101",
|
|
+ "BriefDescription": "Address-generation interlock"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "LONGLAT_INTERLOCK",
|
|
+ "EventCode": "0x0000201",
|
|
+ "BriefDescription": "Long-latency interlock"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "CSR_READ_INTERLOCK",
|
|
+ "EventCode": "0x0000401",
|
|
+ "BriefDescription": "CSR read interlock"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "ICACHE_ITIM_BUSY",
|
|
+ "EventCode": "0x0000801",
|
|
+ "BriefDescription": "Instruction cache/ITIM busy"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "DCACHE_DTIM_BUSY",
|
|
+ "EventCode": "0x0001001",
|
|
+ "BriefDescription": "Data cache/DTIM busy"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "BRANCH_DIRECTION_MISPREDICTION",
|
|
+ "EventCode": "0x0002001",
|
|
+ "BriefDescription": "Branch direction misprediction"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "BRANCH_TARGET_MISPREDICTION",
|
|
+ "EventCode": "0x0004001",
|
|
+ "BriefDescription": "Branch/jump target misprediction"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "PIPE_FLUSH_CSR_WRITE",
|
|
+ "EventCode": "0x0008001",
|
|
+ "BriefDescription": "Pipeline flush from CSR write"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "PIPE_FLUSH_OTHER_EVENT",
|
|
+ "EventCode": "0x0010001",
|
|
+ "BriefDescription": "Pipeline flush from other event"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "INTEGER_MULTIPLICATION_INTERLOCK",
|
|
+ "EventCode": "0x0020001",
|
|
+ "BriefDescription": "Integer multiplication interlock"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "FP_INTERLOCK",
|
|
+ "EventCode": "0x0040001",
|
|
+ "BriefDescription": "Floating-point interlock"
|
|
+ }
|
|
+]
|
|
\ No newline at end of file
|
|
diff --git a/tools/perf/pmu-events/arch/riscv/spacemit/x60/branch.json b/tools/perf/pmu-events/arch/riscv/spacemit/x60/branch.json
|
|
new file mode 100644
|
|
index 000000000000..111111111111
|
|
--- /dev/null
|
|
+++ b/tools/perf/pmu-events/arch/riscv/spacemit/x60/branch.json
|
|
@@ -0,0 +1,62 @@
|
|
+[
|
|
+ {
|
|
+ "EventName": "cond_br_inst",
|
|
+ "EventCode": "1",
|
|
+ "BriefDescription": "Conditional branch instructions"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "cond_br_mispred",
|
|
+ "EventCode": "2",
|
|
+ "BriefDescription": "Conditional branch mispredictions"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "br_inst",
|
|
+ "EventCode": "60",
|
|
+ "BriefDescription": "Branch instructions"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "uncond_br_inst",
|
|
+ "EventCode": "61",
|
|
+ "BriefDescription": "Unconditional branch instructions"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "indirect_br_inst",
|
|
+ "EventCode": "62",
|
|
+ "BriefDescription": "Indirect branch instructions"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "indirect_br_mispred",
|
|
+ "EventCode": "66",
|
|
+ "BriefDescription": "Indirect branch mispredictions"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "br_mispred",
|
|
+ "EventCode": "69",
|
|
+ "BriefDescription": "Branch mispredictions"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "uncond_br_mispred",
|
|
+ "EventCode": "70",
|
|
+ "BriefDescription": "Unconditional branch mispredictions"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "taken_br_mispred",
|
|
+ "EventCode": "71",
|
|
+ "BriefDescription": "Taken branch mispredictions"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "taken_cond_br_inst",
|
|
+ "EventCode": "72",
|
|
+ "BriefDescription": "Taken conditional branch instructions"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "taken_cond_br_mispred",
|
|
+ "EventCode": "73",
|
|
+ "BriefDescription": "Taken conditional branch mispredictions"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "long_jump",
|
|
+ "EventCode": "74",
|
|
+ "BriefDescription": "Long jumps"
|
|
+ }
|
|
+]
|
|
diff --git a/tools/perf/pmu-events/arch/riscv/spacemit/x60/cache.json b/tools/perf/pmu-events/arch/riscv/spacemit/x60/cache.json
|
|
new file mode 100644
|
|
index 000000000000..111111111111
|
|
--- /dev/null
|
|
+++ b/tools/perf/pmu-events/arch/riscv/spacemit/x60/cache.json
|
|
@@ -0,0 +1,122 @@
|
|
+[
|
|
+ {
|
|
+ "EventName": "l1d_load_miss",
|
|
+ "EventCode": "5",
|
|
+ "BriefDescription": "L1 D-cache load misses"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "l1d_load_access",
|
|
+ "EventCode": "6",
|
|
+ "BriefDescription": "L1 D-cache load accesses"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "l1d_store_miss",
|
|
+ "EventCode": "9",
|
|
+ "BriefDescription": "L1 D-cache store misses"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "l1d_store_access",
|
|
+ "EventCode": "10",
|
|
+ "BriefDescription": "L1 D-cache store accesses"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "l1i_load_miss",
|
|
+ "EventCode": "11",
|
|
+ "BriefDescription": "L1 I-cache load misses"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "l1i_load_access",
|
|
+ "EventCode": "12",
|
|
+ "BriefDescription": "L1 I-cache load accesses"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "l1i_prefetch_miss",
|
|
+ "EventCode": "13",
|
|
+ "BriefDescription": "L1 I-cache prefetch misses"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "l1i_prefetch",
|
|
+ "EventCode": "14",
|
|
+ "BriefDescription": "L1 I-cache prefetches"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "dtlb_load_miss",
|
|
+ "EventCode": "21",
|
|
+ "BriefDescription": "DTLB load misses"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "dtlb_store_miss",
|
|
+ "EventCode": "25",
|
|
+ "BriefDescription": "DTLB store misses"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "itlb_load_miss",
|
|
+ "EventCode": "27",
|
|
+ "BriefDescription": "ITLB load misses"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "jtlb_miss",
|
|
+ "EventCode": "163",
|
|
+ "BriefDescription": "JTLB misses"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "l1d_access",
|
|
+ "EventCode": "170",
|
|
+ "BriefDescription": "L1 D-cache accesses"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "l1d_miss",
|
|
+ "EventCode": "171",
|
|
+ "BriefDescription": "L1 D-cache misses"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "l1d_excl_evict",
|
|
+ "EventCode": "172",
|
|
+ "BriefDescription": "L1 D-cache exclusive evictions to L2"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "l1d_amr_active",
|
|
+ "EventCode": "173",
|
|
+ "BriefDescription": "L1 D-cache AMR actives"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "l1d_prefetch_refill",
|
|
+ "EventCode": "174",
|
|
+ "BriefDescription": "L1 D-cache prefetch refills"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "l1d_prefetch_hit",
|
|
+ "EventCode": "175",
|
|
+ "BriefDescription": "L1 D-cache prefetch hits"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "l2_access",
|
|
+ "EventCode": "184",
|
|
+ "BriefDescription": "L2 cache accesses"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "l2_miss",
|
|
+ "EventCode": "185",
|
|
+ "BriefDescription": "L2 cache misses"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "l2_load_access",
|
|
+ "EventCode": "186",
|
|
+ "BriefDescription": "L2 cache load accesses"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "l2_load_stall",
|
|
+ "EventCode": "187",
|
|
+ "BriefDescription": "L2 cache load stalls"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "l2_store_access",
|
|
+ "EventCode": "188",
|
|
+ "BriefDescription": "L2 cache store accesses"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "l2_store_stall",
|
|
+ "EventCode": "189",
|
|
+ "BriefDescription": "L2 cache store stalls"
|
|
+ }
|
|
+]
|
|
diff --git a/tools/perf/pmu-events/arch/riscv/spacemit/x60/instruction.json b/tools/perf/pmu-events/arch/riscv/spacemit/x60/instruction.json
|
|
new file mode 100644
|
|
index 000000000000..111111111111
|
|
--- /dev/null
|
|
+++ b/tools/perf/pmu-events/arch/riscv/spacemit/x60/instruction.json
|
|
@@ -0,0 +1,122 @@
|
|
+[
|
|
+ {
|
|
+ "EventName": "alu_inst",
|
|
+ "EventCode": "36",
|
|
+ "BriefDescription": "ALU (integer) instructions"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "mult_inst",
|
|
+ "EventCode": "37",
|
|
+ "BriefDescription": "Multiplication instructions"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "div_inst",
|
|
+ "EventCode": "38",
|
|
+ "BriefDescription": "Division instructions"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "vector_div_inst",
|
|
+ "EventCode": "39",
|
|
+ "BriefDescription": "Vector division instructions"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "fp_div_inst",
|
|
+ "EventCode": "40",
|
|
+ "BriefDescription": "Floating-point division instructions"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "csr_inst",
|
|
+ "EventCode": "41",
|
|
+ "BriefDescription": "CSR instructions"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "ecall_inst",
|
|
+ "EventCode": "42",
|
|
+ "BriefDescription": "ECALL instructions"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "fp_inst",
|
|
+ "EventCode": "43",
|
|
+ "BriefDescription": "Floating-point instructions"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "store_inst",
|
|
+ "EventCode": "44",
|
|
+ "BriefDescription": "Store instructions"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "load_inst",
|
|
+ "EventCode": "45",
|
|
+ "BriefDescription": "Load instructions"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "unaligned_load_inst",
|
|
+ "EventCode": "46",
|
|
+ "BriefDescription": "Unaligned load instructions"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "unaligned_store_inst",
|
|
+ "EventCode": "47",
|
|
+ "BriefDescription": "Unaligned store instructions"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "atomic_inst",
|
|
+ "EventCode": "48",
|
|
+ "BriefDescription": "Atomic instructions"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "lr_inst",
|
|
+ "EventCode": "49",
|
|
+ "BriefDescription": "LR instructions"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "sc_inst",
|
|
+ "EventCode": "50",
|
|
+ "BriefDescription": "SC instructions"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "amo_inst",
|
|
+ "EventCode": "51",
|
|
+ "BriefDescription": "AMO instructions"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "fence_inst",
|
|
+ "EventCode": "52",
|
|
+ "BriefDescription": "FENCE instructions"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "failed_sc_inst",
|
|
+ "EventCode": "53",
|
|
+ "BriefDescription": "Failed SC instructions"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "bus_fence_inst",
|
|
+ "EventCode": "54",
|
|
+ "BriefDescription": "Bus FENCE instructions"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "fp_load_inst",
|
|
+ "EventCode": "55",
|
|
+ "BriefDescription": "Floating-point load instructions"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "fp_store_inst",
|
|
+ "EventCode": "56",
|
|
+ "BriefDescription": "Floating-point store instructions"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "vector_load_inst",
|
|
+ "EventCode": "57",
|
|
+ "BriefDescription": "Vector load instructions"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "vector_store_inst",
|
|
+ "EventCode": "58",
|
|
+ "BriefDescription": "Vector store instructions"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "vector_inst",
|
|
+ "EventCode": "59",
|
|
+ "BriefDescription": "Vector instructions"
|
|
+ }
|
|
+]
|
|
diff --git a/tools/perf/pmu-events/arch/riscv/spacemit/x60/microarch.json b/tools/perf/pmu-events/arch/riscv/spacemit/x60/microarch.json
|
|
new file mode 100644
|
|
index 000000000000..111111111111
|
|
--- /dev/null
|
|
+++ b/tools/perf/pmu-events/arch/riscv/spacemit/x60/microarch.json
|
|
@@ -0,0 +1,522 @@
|
|
+[
|
|
+ {
|
|
+ "EventName": "stalled_cycle_frontend",
|
|
+ "EventCode": "3",
|
|
+ "BriefDescription": "Stalled cycles frontend"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "stalled_cycle_backend",
|
|
+ "EventCode": "4",
|
|
+ "BriefDescription": "Stalled cycles backend"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "m_mode_cycle",
|
|
+ "EventCode": "32",
|
|
+ "BriefDescription": "M-mode cycles"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "s_mode_cycle",
|
|
+ "EventCode": "33",
|
|
+ "BriefDescription": "S-mode cycles"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "u_mode_cycle",
|
|
+ "EventCode": "34",
|
|
+ "BriefDescription": "U-mode cycles"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "pipeline_flush",
|
|
+ "EventCode": "63",
|
|
+ "BriefDescription": "Pipeline flushes"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "interrupt",
|
|
+ "EventCode": "64",
|
|
+ "BriefDescription": "Interrupts"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "exception",
|
|
+ "EventCode": "65",
|
|
+ "BriefDescription": "Exceptions"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "ifu_btb_miss",
|
|
+ "EventCode": "67",
|
|
+ "BriefDescription": "IFU (Instruction Fetch Unit) BTB misses"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "ifu_btb_access",
|
|
+ "EventCode": "68",
|
|
+ "BriefDescription": "IFU (Instruction Fetch Unit) BTB accesses"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "ecc_interrupt",
|
|
+ "EventCode": "75",
|
|
+ "BriefDescription": "ECC interrupts"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "async_abort",
|
|
+ "EventCode": "76",
|
|
+ "BriefDescription": "Asynchronous aborts"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "issued_inst",
|
|
+ "EventCode": "77",
|
|
+ "BriefDescription": "Issued instructions"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "if_stall",
|
|
+ "EventCode": "78",
|
|
+ "BriefDescription": "IF stalls"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "if_mmu_stall",
|
|
+ "EventCode": "79",
|
|
+ "BriefDescription": "IF-MMU stalls"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "if_refill_stall",
|
|
+ "EventCode": "80",
|
|
+ "BriefDescription": "IF-refill stalls"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "ip_stall",
|
|
+ "EventCode": "81",
|
|
+ "BriefDescription": "IP stalls"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "ib_stall",
|
|
+ "EventCode": "82",
|
|
+ "BriefDescription": "IB stalls"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "ib_vsetvl_stall",
|
|
+ "EventCode": "83",
|
|
+ "BriefDescription": "IB vsetvl stalls"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "ib_fifo_stall",
|
|
+ "EventCode": "84",
|
|
+ "BriefDescription": "IB FIFO stalls"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "ib_mispred_stall",
|
|
+ "EventCode": "85",
|
|
+ "BriefDescription": "IB misprediction stalls"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "ib_ind_btd_stall",
|
|
+ "EventCode": "86",
|
|
+ "BriefDescription": "IB IND BTB stalls"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "iq_full",
|
|
+ "EventCode": "87",
|
|
+ "BriefDescription": "IQ fulls"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "id_stall",
|
|
+ "EventCode": "88",
|
|
+ "BriefDescription": "ID stalls"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "id_inst_pipedown",
|
|
+ "EventCode": "89",
|
|
+ "BriefDescription": "ID instruction pipedowns"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "id_one_inst_pipedown",
|
|
+ "EventCode": "90",
|
|
+ "BriefDescription": "ID one instruction pipedowns"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "id_flush_stall",
|
|
+ "EventCode": "91",
|
|
+ "BriefDescription": "ID flush stalls"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "id_vsetvl_fof_stall",
|
|
+ "EventCode": "92",
|
|
+ "BriefDescription": " "
|
|
+ },
|
|
+ {
|
|
+ "EventName": "id_iid_not_vld_stall",
|
|
+ "EventCode": "93",
|
|
+ "BriefDescription": " "
|
|
+ },
|
|
+ {
|
|
+ "EventName": "id_csr_bef_fence_stall",
|
|
+ "EventCode": "94",
|
|
+ "BriefDescription": " "
|
|
+ },
|
|
+ {
|
|
+ "EventName": "id_mispred_stall",
|
|
+ "EventCode": "95",
|
|
+ "BriefDescription": "ID misprediction stalls"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "rf_stall",
|
|
+ "EventCode": "96",
|
|
+ "BriefDescription": "RF stalls"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "rf_inst_pipedown",
|
|
+ "EventCode": "97",
|
|
+ "BriefDescription": "RF instruction pipedowns"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "rf_one_inst_pipedown",
|
|
+ "EventCode": "98",
|
|
+ "BriefDescription": "RF one instruction pipedowns"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "rf_waw_stall",
|
|
+ "EventCode": "99",
|
|
+ "BriefDescription": "RF WAW stalls"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "rf_raw_stall",
|
|
+ "EventCode": "100",
|
|
+ "BriefDescription": "RF RAW stalls"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "rf_csr_aft_fence_stall",
|
|
+ "EventCode": "101",
|
|
+ "BriefDescription": " "
|
|
+ },
|
|
+ {
|
|
+ "EventName": "rf_structure_stall",
|
|
+ "EventCode": "102",
|
|
+ "BriefDescription": " "
|
|
+ },
|
|
+ {
|
|
+ "EventName": "eu_stall",
|
|
+ "EventCode": "103",
|
|
+ "BriefDescription": "EU (Execution Unit) stalls"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "eu_iu_full",
|
|
+ "EventCode": "104",
|
|
+ "BriefDescription": "EU IU (Integer Unit) fulls"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "eu_iu_control_full",
|
|
+ "EventCode": "105",
|
|
+ "BriefDescription": "EU IU (Integer Unit) control fulls"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "eu_bju_full",
|
|
+ "EventCode": "106",
|
|
+ "BriefDescription": "EU BJU (Branch and Jump Unit) fulls"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "eu_lsu_load_full",
|
|
+ "EventCode": "107",
|
|
+ "BriefDescription": "EU LSU (Load and Store Unit) load fulls"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "eu_lsu_store_full",
|
|
+ "EventCode": "108",
|
|
+ "BriefDescription": "EU LSU (Load and Store Unit) store fulls"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "eu_cp0_full",
|
|
+ "EventCode": "109",
|
|
+ "BriefDescription": "EU CP0 (Coprocessor 0) fulls"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "eu_vfpu_full",
|
|
+ "EventCode": "110",
|
|
+ "BriefDescription": "EU VFPU (Vector and Floating-point Processing Unit)"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "iu_dp_stall_pipe0",
|
|
+ "EventCode": "111",
|
|
+ "BriefDescription": " "
|
|
+ },
|
|
+ {
|
|
+ "EventName": "iu_mult_stall_pipe0",
|
|
+ "EventCode": "112",
|
|
+ "BriefDescription": " "
|
|
+ },
|
|
+ {
|
|
+ "EventName": "iu_div_ex1_stall_pipe0",
|
|
+ "EventCode": "113",
|
|
+ "BriefDescription": " "
|
|
+ },
|
|
+ {
|
|
+ "EventName": "iu_dp_pipe_stall_pipe1",
|
|
+ "EventCode": "114",
|
|
+ "BriefDescription": " "
|
|
+ },
|
|
+ {
|
|
+ "EventName": "iu_mult_stall_pipe1",
|
|
+ "EventCode": "115",
|
|
+ "BriefDescription": " "
|
|
+ },
|
|
+ {
|
|
+ "EventName": "iu_div_ex1_stall_pipe1",
|
|
+ "EventCode": "116",
|
|
+ "BriefDescription": " "
|
|
+ },
|
|
+ {
|
|
+ "EventName": "iu_dp_uncommit_pipe0",
|
|
+ "EventCode": "117",
|
|
+ "BriefDescription": " "
|
|
+ },
|
|
+ {
|
|
+ "EventName": "iu_dp_wb_conflict_pipe0",
|
|
+ "EventCode": "118",
|
|
+ "BriefDescription": " "
|
|
+ },
|
|
+ {
|
|
+ "EventName": "iu_dp_waw_stall_pipe0",
|
|
+ "EventCode": "119",
|
|
+ "BriefDescription": " "
|
|
+ },
|
|
+ {
|
|
+ "EventName": "iu_dp_uncommit_pipe1",
|
|
+ "EventCode": "120",
|
|
+ "BriefDescription": " "
|
|
+ },
|
|
+ {
|
|
+ "EventName": "iu_dp_wb_conflict_pipe1",
|
|
+ "EventCode": "121",
|
|
+ "BriefDescription": " "
|
|
+ },
|
|
+ {
|
|
+ "EventName": "iu_dp_waw_stall_pipe1",
|
|
+ "EventCode": "122",
|
|
+ "BriefDescription": " "
|
|
+ },
|
|
+ {
|
|
+ "EventName": "iu_mult_wb_stall",
|
|
+ "EventCode": "123",
|
|
+ "BriefDescription": " "
|
|
+ },
|
|
+ {
|
|
+ "EventName": "iu_mult_uncommit",
|
|
+ "EventCode": "124",
|
|
+ "BriefDescription": " "
|
|
+ },
|
|
+ {
|
|
+ "EventName": "iu_div_wb_stall",
|
|
+ "EventCode": "125",
|
|
+ "BriefDescription": " "
|
|
+ },
|
|
+ {
|
|
+ "EventName": "iu_div_uncommit",
|
|
+ "EventCode": "126",
|
|
+ "BriefDescription": " "
|
|
+ },
|
|
+ {
|
|
+ "EventName": "mult_inner_forward",
|
|
+ "EventCode": "127",
|
|
+ "BriefDescription": " "
|
|
+ },
|
|
+ {
|
|
+ "EventName": "div_buffer_hit",
|
|
+ "EventCode": "128",
|
|
+ "BriefDescription": " "
|
|
+ },
|
|
+ {
|
|
+ "EventName": "vpu_stall_pipe0",
|
|
+ "EventCode": "129",
|
|
+ "BriefDescription": "VPU (Vector Processing Unit) pipe0 stalls"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "vpu_stall_pipe1",
|
|
+ "EventCode": "130",
|
|
+ "BriefDescription": "VPU (Vector Processing Unit) pipe1 stalls"
|
|
+ },
|
|
+ {
|
|
+ "EventName": "vpu_hazard_stall_pipe0",
|
|
+ "EventCode": "131",
|
|
+ "BriefDescription": " "
|
|
+ },
|
|
+ {
|
|
+ "EventName": "vpu_uncommit_stall_pipe0",
|
|
+ "EventCode": "132",
|
|
+ "BriefDescription": " "
|
|
+ },
|
|
+ {
|
|
+ "EventName": "vpu_vlsu_stall_pipe0",
|
|
+ "EventCode": "133",
|
|
+ "BriefDescription": " "
|
|
+ },
|
|
+ {
|
|
+ "EventName": "vpu_hazard_stall_pipe1",
|
|
+ "EventCode": "134",
|
|
+ "BriefDescription": " "
|
|
+ },
|
|
+ {
|
|
+ "EventName": "vpu_uncommit_stall_pipe1",
|
|
+ "EventCode": "135",
|
|
+ "BriefDescription": " "
|
|
+ },
|
|
+ {
|
|
+ "EventName": "vpu_vlsu_stall_pipe1",
|
|
+ "EventCode": "136",
|
|
+ "BriefDescription": " "
|
|
+ },
|
|
+ {
|
|
+ "EventName": "vpu_div_busy",
|
|
+ "EventCode": "137",
|
|
+ "BriefDescription": " "
|
|
+ },
|
|
+ {
|
|
+ "EventName": "bju_cp0_stall",
|
|
+ "EventCode": "138",
|
|
+ "BriefDescription": " "
|
|
+ },
|
|
+ {
|
|
+ "EventName": "bju_ibuf_stall",
|
|
+ "EventCode": "139",
|
|
+ "BriefDescription": " "
|
|
+ },
|
|
+ {
|
|
+ "EventName": "bju_wb_stall",
|
|
+ "EventCode": "140",
|
|
+ "BriefDescription": " "
|
|
+ },
|
|
+ {
|
|
+ "EventName": "bju_pipedown",
|
|
+ "EventCode": "141",
|
|
+ "BriefDescription": " "
|
|
+ },
|
|
+ {
|
|
+ "EventName": "vidu_vec0_stall",
|
|
+ "EventCode": "142",
|
|
+ "BriefDescription": " "
|
|
+ },
|
|
+ {
|
|
+ "EventName": "vidu_vec1_stall",
|
|
+ "EventCode": "143",
|
|
+ "BriefDescription": " "
|
|
+ },
|
|
+ {
|
|
+ "EventName": "vidu_vec0_depend_stall",
|
|
+ "EventCode": "144",
|
|
+ "BriefDescription": " "
|
|
+ },
|
|
+ {
|
|
+ "EventName": "vidu_vec0_struct_hazard_stall",
|
|
+ "EventCode": "145",
|
|
+ "BriefDescription": " "
|
|
+ },
|
|
+ {
|
|
+ "EventName": "vidu_vec1_depend_stall",
|
|
+ "EventCode": "146",
|
|
+ "BriefDescription": " "
|
|
+ },
|
|
+ {
|
|
+ "EventName": "vidu_vec1_struct_hazard_stall",
|
|
+ "EventCode": "147",
|
|
+ "BriefDescription": " "
|
|
+ },
|
|
+ {
|
|
+ "EventName": "vidu_total_cycle",
|
|
+ "EventCode": "148",
|
|
+ "BriefDescription": " "
|
|
+ },
|
|
+ {
|
|
+ "EventName": "vidu_vec0_cycle",
|
|
+ "EventCode": "149",
|
|
+ "BriefDescription": " "
|
|
+ },
|
|
+ {
|
|
+ "EventName": "vidu_vec1_cycle",
|
|
+ "EventCode": "150",
|
|
+ "BriefDescription": " "
|
|
+ },
|
|
+ {
|
|
+ "EventName": "vector_micro_op",
|
|
+ "EventCode": "151",
|
|
+ "BriefDescription": " "
|
|
+ },
|
|
+ {
|
|
+ "EventName": "rtu_flush_cycle",
|
|
+ "EventCode": "152",
|
|
+ "BriefDescription": " "
|
|
+ },
|
|
+ {
|
|
+ "EventName": "rtu_only_iu_not_no_op",
|
|
+ "EventCode": "153",
|
|
+ "BriefDescription": " "
|
|
+ },
|
|
+ {
|
|
+ "EventName": "rtu_only_bju_not_no_op",
|
|
+ "EventCode": "154",
|
|
+ "BriefDescription": " "
|
|
+ },
|
|
+ {
|
|
+ "EventName": "rtu_only_cp0_not_no_op",
|
|
+ "EventCode": "155",
|
|
+ "BriefDescription": " "
|
|
+ },
|
|
+ {
|
|
+ "EventName": "rtu_only_lsu_not_no_op",
|
|
+ "EventCode": "156",
|
|
+ "BriefDescription": " "
|
|
+ },
|
|
+ {
|
|
+ "EventName": "rtu_only_vfpu_not_no_op",
|
|
+ "EventCode": "157",
|
|
+ "BriefDescription": " "
|
|
+ },
|
|
+ {
|
|
+ "EventName": "rtu_iu_not_no_op",
|
|
+ "EventCode": "158",
|
|
+ "BriefDescription": " "
|
|
+ },
|
|
+ {
|
|
+ "EventName": "rtu_bju_not_no_op",
|
|
+ "EventCode": "159",
|
|
+ "BriefDescription": " "
|
|
+ },
|
|
+ {
|
|
+ "EventName": "rtu_cp0_not_no_op",
|
|
+ "EventCode": "160",
|
|
+ "BriefDescription": " "
|
|
+ },
|
|
+ {
|
|
+ "EventName": "rtu_lsu_not_no_op",
|
|
+ "EventCode": "161",
|
|
+ "BriefDescription": " "
|
|
+ },
|
|
+ {
|
|
+ "EventName": "rtu_vfpu_not_no_op",
|
|
+ "EventCode": "162",
|
|
+ "BriefDescription": " "
|
|
+ },
|
|
+ {
|
|
+ "EventName": "lsu_fence_stall",
|
|
+ "EventCode": "164",
|
|
+ "BriefDescription": " "
|
|
+ },
|
|
+ {
|
|
+ "EventName": "lsu_load_waw_stall",
|
|
+ "EventCode": "165",
|
|
+ "BriefDescription": " "
|
|
+ },
|
|
+ {
|
|
+ "EventName": "lsu_load_commit_stall",
|
|
+ "EventCode": "166",
|
|
+ "BriefDescription": " "
|
|
+ },
|
|
+ {
|
|
+ "EventName": "lsu_load_raw_stall",
|
|
+ "EventCode": "167",
|
|
+ "BriefDescription": " "
|
|
+ },
|
|
+ {
|
|
+ "EventName": "lsu_store_commit_stall",
|
|
+ "EventCode": "168",
|
|
+ "BriefDescription": " "
|
|
+ },
|
|
+ {
|
|
+ "EventName": "vidu_rf_no_pipedown",
|
|
+ "EventCode": "169",
|
|
+ "BriefDescription": " "
|
|
+ }
|
|
+]
|
|
--
|
|
Armbian
|
|
|