diff options
author | Alex Richardson <Alexander.Richardson@cl.cam.ac.uk> | 2020-02-21 12:27:29 +0000 |
---|---|---|
committer | John Baldwin <jhb@FreeBSD.org> | 2022-10-13 11:25:32 -0700 |
commit | d6a05f2cbf60ea5645942030d69e93e76c6bcb08 (patch) | |
tree | cc751c909d10f613bb96654742436b26c8b32efd | |
parent | 2f893d4ecca5196839ed5c2d76b9fa4568d427ff (diff) | |
download | binutils-gdb-d6a05f2cbf60ea5645942030d69e93e76c6bcb08.tar.gz |
Add RISC-V CHERI register xml files
Co-authored-by: John Baldwin <jhb@FreeBSD.org>
-rw-r--r-- | gdb/features/Makefile | 2 | ||||
-rw-r--r-- | gdb/features/riscv/32bit-cheri64.c | 47 | ||||
-rw-r--r-- | gdb/features/riscv/32bit-cheri64.xml | 45 | ||||
-rw-r--r-- | gdb/features/riscv/64bit-cheri128.c | 47 | ||||
-rw-r--r-- | gdb/features/riscv/64bit-cheri128.xml | 45 |
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> |