summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Richardson <Alexander.Richardson@cl.cam.ac.uk>2020-02-21 12:27:29 +0000
committerJohn Baldwin <jhb@FreeBSD.org>2022-10-13 11:25:32 -0700
commitd6a05f2cbf60ea5645942030d69e93e76c6bcb08 (patch)
treecc751c909d10f613bb96654742436b26c8b32efd
parent2f893d4ecca5196839ed5c2d76b9fa4568d427ff (diff)
downloadbinutils-gdb-d6a05f2cbf60ea5645942030d69e93e76c6bcb08.tar.gz
Add RISC-V CHERI register xml files
Co-authored-by: John Baldwin <jhb@FreeBSD.org>
-rw-r--r--gdb/features/Makefile2
-rw-r--r--gdb/features/riscv/32bit-cheri64.c47
-rw-r--r--gdb/features/riscv/32bit-cheri64.xml45
-rw-r--r--gdb/features/riscv/64bit-cheri128.c47
-rw-r--r--gdb/features/riscv/64bit-cheri128.xml45
5 files changed, 186 insertions, 0 deletions
diff --git a/gdb/features/Makefile b/gdb/features/Makefile
index c18f257cc62..ce24090ab1c 100644
--- a/gdb/features/Makefile
+++ b/gdb/features/Makefile
@@ -235,8 +235,10 @@ FEATURE_XMLFILES = aarch64-core.xml \
riscv/rv32e-xregs.xml \
riscv/32bit-cpu.xml \
riscv/32bit-fpu.xml \
+ riscv/32bit-cheri64.xml \
riscv/64bit-cpu.xml \
riscv/64bit-fpu.xml \
+ riscv/64bit-cheri128.xml \
tic6x-c6xp.xml \
tic6x-core.xml \
tic6x-gp.xml
diff --git a/gdb/features/riscv/32bit-cheri64.c b/gdb/features/riscv/32bit-cheri64.c
new file mode 100644
index 00000000000..8c3f5db922d
--- /dev/null
+++ b/gdb/features/riscv/32bit-cheri64.c
@@ -0,0 +1,47 @@
+/* THIS FILE IS GENERATED. -*- buffer-read-only: t -*- vi:set ro:
+ Original: 32bit-cheri64.xml */
+
+#include "gdbsupport/tdesc.h"
+
+static int
+create_feature_riscv_32bit_cheri64 (struct target_desc *result, long regnum)
+{
+ struct tdesc_feature *feature;
+
+ feature = tdesc_create_feature (result, "org.gnu.gdb.riscv.cheri");
+ tdesc_create_reg (feature, "cnull", regnum++, 1, "general", 64, "data_capability");
+ tdesc_create_reg (feature, "cra", regnum++, 1, "general", 64, "code_capability");
+ tdesc_create_reg (feature, "csp", regnum++, 1, "general", 64, "data_capability");
+ tdesc_create_reg (feature, "cgp", regnum++, 1, "general", 64, "data_capability");
+ tdesc_create_reg (feature, "ctp", regnum++, 1, "general", 64, "data_capability");
+ tdesc_create_reg (feature, "ct0", regnum++, 1, "general", 64, "data_capability");
+ tdesc_create_reg (feature, "ct1", regnum++, 1, "general", 64, "data_capability");
+ tdesc_create_reg (feature, "ct2", regnum++, 1, "general", 64, "data_capability");
+ tdesc_create_reg (feature, "cfp", regnum++, 1, "general", 64, "data_capability");
+ tdesc_create_reg (feature, "cs1", regnum++, 1, "general", 64, "data_capability");
+ tdesc_create_reg (feature, "ca0", regnum++, 1, "general", 64, "data_capability");
+ tdesc_create_reg (feature, "ca1", regnum++, 1, "general", 64, "data_capability");
+ tdesc_create_reg (feature, "ca2", regnum++, 1, "general", 64, "data_capability");
+ tdesc_create_reg (feature, "ca3", regnum++, 1, "general", 64, "data_capability");
+ tdesc_create_reg (feature, "ca4", regnum++, 1, "general", 64, "data_capability");
+ tdesc_create_reg (feature, "ca5", regnum++, 1, "general", 64, "data_capability");
+ tdesc_create_reg (feature, "ca6", regnum++, 1, "general", 64, "data_capability");
+ tdesc_create_reg (feature, "ca7", regnum++, 1, "general", 64, "data_capability");
+ tdesc_create_reg (feature, "cs2", regnum++, 1, "general", 64, "data_capability");
+ tdesc_create_reg (feature, "cs3", regnum++, 1, "general", 64, "data_capability");
+ tdesc_create_reg (feature, "cs4", regnum++, 1, "general", 64, "data_capability");
+ tdesc_create_reg (feature, "cs5", regnum++, 1, "general", 64, "data_capability");
+ tdesc_create_reg (feature, "cs6", regnum++, 1, "general", 64, "data_capability");
+ tdesc_create_reg (feature, "cs7", regnum++, 1, "general", 64, "data_capability");
+ tdesc_create_reg (feature, "cs8", regnum++, 1, "general", 64, "data_capability");
+ tdesc_create_reg (feature, "cs9", regnum++, 1, "general", 64, "data_capability");
+ tdesc_create_reg (feature, "cs10", regnum++, 1, "general", 64, "data_capability");
+ tdesc_create_reg (feature, "cs11", regnum++, 1, "general", 64, "data_capability");
+ tdesc_create_reg (feature, "ct3", regnum++, 1, "general", 64, "data_capability");
+ tdesc_create_reg (feature, "ct4", regnum++, 1, "general", 64, "data_capability");
+ tdesc_create_reg (feature, "ct5", regnum++, 1, "general", 64, "data_capability");
+ tdesc_create_reg (feature, "ct6", regnum++, 1, "general", 64, "data_capability");
+ tdesc_create_reg (feature, "pcc", regnum++, 1, "general", 64, "code_capability");
+ tdesc_create_reg (feature, "ddc", regnum++, 1, "general", 64, "data_capability");
+ return regnum;
+}
diff --git a/gdb/features/riscv/32bit-cheri64.xml b/gdb/features/riscv/32bit-cheri64.xml
new file mode 100644
index 00000000000..d17355576a1
--- /dev/null
+++ b/gdb/features/riscv/32bit-cheri64.xml
@@ -0,0 +1,45 @@
+<?xml version="1.0"?>
+<!-- Copyright (C) 2018-2019 Free Software Foundation, Inc.
+
+ Copying and distribution of this file, with or without modification,
+ are permitted in any medium without royalty provided the copyright
+ notice and this notice are preserved. -->
+
+<!DOCTYPE feature SYSTEM "gdb-target.dtd">
+<feature name="org.gnu.gdb.riscv.cheri">
+ <reg name="cnull" bitsize="64" type="data_capability" group="general"/>
+ <reg name="cra" bitsize="64" type="code_capability" group="general"/>
+ <reg name="csp" bitsize="64" type="data_capability" group="general"/>
+ <reg name="cgp" bitsize="64" type="data_capability" group="general"/>
+ <reg name="ctp" bitsize="64" type="data_capability" group="general"/>
+ <reg name="ct0" bitsize="64" type="data_capability" group="general"/>
+ <reg name="ct1" bitsize="64" type="data_capability" group="general"/>
+ <reg name="ct2" bitsize="64" type="data_capability" group="general"/>
+ <reg name="cfp" bitsize="64" type="data_capability" group="general"/>
+ <reg name="cs1" bitsize="64" type="data_capability" group="general"/>
+ <reg name="ca0" bitsize="64" type="data_capability" group="general"/>
+ <reg name="ca1" bitsize="64" type="data_capability" group="general"/>
+ <reg name="ca2" bitsize="64" type="data_capability" group="general"/>
+ <reg name="ca3" bitsize="64" type="data_capability" group="general"/>
+ <reg name="ca4" bitsize="64" type="data_capability" group="general"/>
+ <reg name="ca5" bitsize="64" type="data_capability" group="general"/>
+ <reg name="ca6" bitsize="64" type="data_capability" group="general"/>
+ <reg name="ca7" bitsize="64" type="data_capability" group="general"/>
+ <reg name="cs2" bitsize="64" type="data_capability" group="general"/>
+ <reg name="cs3" bitsize="64" type="data_capability" group="general"/>
+ <reg name="cs4" bitsize="64" type="data_capability" group="general"/>
+ <reg name="cs5" bitsize="64" type="data_capability" group="general"/>
+ <reg name="cs6" bitsize="64" type="data_capability" group="general"/>
+ <reg name="cs7" bitsize="64" type="data_capability" group="general"/>
+ <reg name="cs8" bitsize="64" type="data_capability" group="general"/>
+ <reg name="cs9" bitsize="64" type="data_capability" group="general"/>
+ <reg name="cs10" bitsize="64" type="data_capability" group="general"/>
+ <reg name="cs11" bitsize="64" type="data_capability" group="general"/>
+ <reg name="ct3" bitsize="64" type="data_capability" group="general"/>
+ <reg name="ct4" bitsize="64" type="data_capability" group="general"/>
+ <reg name="ct5" bitsize="64" type="data_capability" group="general"/>
+ <reg name="ct6" bitsize="64" type="data_capability" group="general"/>
+
+ <reg name="pcc" bitsize="64" type="code_capability" group="general"/>
+ <reg name="ddc" bitsize="64" type="data_capability" group="general"/>
+</feature>
diff --git a/gdb/features/riscv/64bit-cheri128.c b/gdb/features/riscv/64bit-cheri128.c
new file mode 100644
index 00000000000..7baf0dc36a3
--- /dev/null
+++ b/gdb/features/riscv/64bit-cheri128.c
@@ -0,0 +1,47 @@
+/* THIS FILE IS GENERATED. -*- buffer-read-only: t -*- vi:set ro:
+ Original: 64bit-cheri128.xml */
+
+#include "gdbsupport/tdesc.h"
+
+static int
+create_feature_riscv_64bit_cheri128 (struct target_desc *result, long regnum)
+{
+ struct tdesc_feature *feature;
+
+ feature = tdesc_create_feature (result, "org.gnu.gdb.riscv.cheri");
+ tdesc_create_reg (feature, "cnull", regnum++, 1, "general", 128, "data_capability");
+ tdesc_create_reg (feature, "cra", regnum++, 1, "general", 128, "code_capability");
+ tdesc_create_reg (feature, "csp", regnum++, 1, "general", 128, "data_capability");
+ tdesc_create_reg (feature, "cgp", regnum++, 1, "general", 128, "data_capability");
+ tdesc_create_reg (feature, "ctp", regnum++, 1, "general", 128, "data_capability");
+ tdesc_create_reg (feature, "ct0", regnum++, 1, "general", 128, "data_capability");
+ tdesc_create_reg (feature, "ct1", regnum++, 1, "general", 128, "data_capability");
+ tdesc_create_reg (feature, "ct2", regnum++, 1, "general", 128, "data_capability");
+ tdesc_create_reg (feature, "cfp", regnum++, 1, "general", 128, "data_capability");
+ tdesc_create_reg (feature, "cs1", regnum++, 1, "general", 128, "data_capability");
+ tdesc_create_reg (feature, "ca0", regnum++, 1, "general", 128, "data_capability");
+ tdesc_create_reg (feature, "ca1", regnum++, 1, "general", 128, "data_capability");
+ tdesc_create_reg (feature, "ca2", regnum++, 1, "general", 128, "data_capability");
+ tdesc_create_reg (feature, "ca3", regnum++, 1, "general", 128, "data_capability");
+ tdesc_create_reg (feature, "ca4", regnum++, 1, "general", 128, "data_capability");
+ tdesc_create_reg (feature, "ca5", regnum++, 1, "general", 128, "data_capability");
+ tdesc_create_reg (feature, "ca6", regnum++, 1, "general", 128, "data_capability");
+ tdesc_create_reg (feature, "ca7", regnum++, 1, "general", 128, "data_capability");
+ tdesc_create_reg (feature, "cs2", regnum++, 1, "general", 128, "data_capability");
+ tdesc_create_reg (feature, "cs3", regnum++, 1, "general", 128, "data_capability");
+ tdesc_create_reg (feature, "cs4", regnum++, 1, "general", 128, "data_capability");
+ tdesc_create_reg (feature, "cs5", regnum++, 1, "general", 128, "data_capability");
+ tdesc_create_reg (feature, "cs6", regnum++, 1, "general", 128, "data_capability");
+ tdesc_create_reg (feature, "cs7", regnum++, 1, "general", 128, "data_capability");
+ tdesc_create_reg (feature, "cs8", regnum++, 1, "general", 128, "data_capability");
+ tdesc_create_reg (feature, "cs9", regnum++, 1, "general", 128, "data_capability");
+ tdesc_create_reg (feature, "cs10", regnum++, 1, "general", 128, "data_capability");
+ tdesc_create_reg (feature, "cs11", regnum++, 1, "general", 128, "data_capability");
+ tdesc_create_reg (feature, "ct3", regnum++, 1, "general", 128, "data_capability");
+ tdesc_create_reg (feature, "ct4", regnum++, 1, "general", 128, "data_capability");
+ tdesc_create_reg (feature, "ct5", regnum++, 1, "general", 128, "data_capability");
+ tdesc_create_reg (feature, "ct6", regnum++, 1, "general", 128, "data_capability");
+ tdesc_create_reg (feature, "pcc", regnum++, 1, "general", 128, "code_capability");
+ tdesc_create_reg (feature, "ddc", regnum++, 1, "general", 128, "data_capability");
+ return regnum;
+}
diff --git a/gdb/features/riscv/64bit-cheri128.xml b/gdb/features/riscv/64bit-cheri128.xml
new file mode 100644
index 00000000000..a409fed643e
--- /dev/null
+++ b/gdb/features/riscv/64bit-cheri128.xml
@@ -0,0 +1,45 @@
+<?xml version="1.0"?>
+<!-- Copyright (C) 2018-2019 Free Software Foundation, Inc.
+
+ Copying and distribution of this file, with or without modification,
+ are permitted in any medium without royalty provided the copyright
+ notice and this notice are preserved. -->
+
+<!DOCTYPE feature SYSTEM "gdb-target.dtd">
+<feature name="org.gnu.gdb.riscv.cheri">
+ <reg name="cnull" bitsize="128" type="data_capability" group="general"/>
+ <reg name="cra" bitsize="128" type="code_capability" group="general"/>
+ <reg name="csp" bitsize="128" type="data_capability" group="general"/>
+ <reg name="cgp" bitsize="128" type="data_capability" group="general"/>
+ <reg name="ctp" bitsize="128" type="data_capability" group="general"/>
+ <reg name="ct0" bitsize="128" type="data_capability" group="general"/>
+ <reg name="ct1" bitsize="128" type="data_capability" group="general"/>
+ <reg name="ct2" bitsize="128" type="data_capability" group="general"/>
+ <reg name="cfp" bitsize="128" type="data_capability" group="general"/>
+ <reg name="cs1" bitsize="128" type="data_capability" group="general"/>
+ <reg name="ca0" bitsize="128" type="data_capability" group="general"/>
+ <reg name="ca1" bitsize="128" type="data_capability" group="general"/>
+ <reg name="ca2" bitsize="128" type="data_capability" group="general"/>
+ <reg name="ca3" bitsize="128" type="data_capability" group="general"/>
+ <reg name="ca4" bitsize="128" type="data_capability" group="general"/>
+ <reg name="ca5" bitsize="128" type="data_capability" group="general"/>
+ <reg name="ca6" bitsize="128" type="data_capability" group="general"/>
+ <reg name="ca7" bitsize="128" type="data_capability" group="general"/>
+ <reg name="cs2" bitsize="128" type="data_capability" group="general"/>
+ <reg name="cs3" bitsize="128" type="data_capability" group="general"/>
+ <reg name="cs4" bitsize="128" type="data_capability" group="general"/>
+ <reg name="cs5" bitsize="128" type="data_capability" group="general"/>
+ <reg name="cs6" bitsize="128" type="data_capability" group="general"/>
+ <reg name="cs7" bitsize="128" type="data_capability" group="general"/>
+ <reg name="cs8" bitsize="128" type="data_capability" group="general"/>
+ <reg name="cs9" bitsize="128" type="data_capability" group="general"/>
+ <reg name="cs10" bitsize="128" type="data_capability" group="general"/>
+ <reg name="cs11" bitsize="128" type="data_capability" group="general"/>
+ <reg name="ct3" bitsize="128" type="data_capability" group="general"/>
+ <reg name="ct4" bitsize="128" type="data_capability" group="general"/>
+ <reg name="ct5" bitsize="128" type="data_capability" group="general"/>
+ <reg name="ct6" bitsize="128" type="data_capability" group="general"/>
+
+ <reg name="pcc" bitsize="128" type="code_capability" group="general"/>
+ <reg name="ddc" bitsize="128" type="data_capability" group="general"/>
+</feature>