aboutsummaryrefslogtreecommitdiff
path: root/bfd
diff options
context:
space:
mode:
authorTsukasa OI <research_trasio@irq.a4lg.com>2022-09-10 06:49:43 +0000
committerTsukasa OI <research_trasio@irq.a4lg.com>2022-09-30 04:02:13 +0000
commitd6b99a80716d2f0e21baae97a8653204dd354ad3 (patch)
tree2b929f2c661f19267768d8e1753062b0706156d8 /bfd
parentf3700471469ac0f395961e92892bc5d6e17ca177 (diff)
downloadgdb-d6b99a80716d2f0e21baae97a8653204dd354ad3.zip
gdb-d6b99a80716d2f0e21baae97a8653204dd354ad3.tar.gz
gdb-d6b99a80716d2f0e21baae97a8653204dd354ad3.tar.bz2
RISC-V: Add privileged extensions without instructions/CSRs
Currently, GNU Binutils does not support following privileged extensions: - 'Smepmp' - 'Svnapot' - 'Svpbmt' as they do not provide new CSRs or new instructions ('Smepmp' extends the privileged architecture CSRs but does not define the CSR itself). However, adding them might be useful as we no longer have to "filter" ISA strings just for toolchains (if full ISA string is given by a vendor, we can straightly use it). And there's a fact that supports this theory: there's already an (unprivileged) extension which does not provide CSRs or instructions (but only an architectural guarantee): 'Zkt' (constant timing guarantee for certain subset of RISC-V instructions). This simple commit simply adds three privileged extensions listed above. bfd/ChangeLog: * elfxx-riscv.c (riscv_supported_std_s_ext): Add 'Smepmp', 'Svnapot' and 'Svpbmt' extensions.
Diffstat (limited to 'bfd')
-rw-r--r--bfd/elfxx-riscv.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/bfd/elfxx-riscv.c b/bfd/elfxx-riscv.c
index fa393c7..c67d416 100644
--- a/bfd/elfxx-riscv.c
+++ b/bfd/elfxx-riscv.c
@@ -1211,10 +1211,13 @@ static struct riscv_supported_ext riscv_supported_std_z_ext[] =
static struct riscv_supported_ext riscv_supported_std_s_ext[] =
{
+ {"smepmp", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 },
{"smstateen", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 },
{"sscofpmf", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 },
{"sstc", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 },
{"svinval", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 },
+ {"svnapot", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 },
+ {"svpbmt", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 },
{NULL, 0, 0, 0, 0}
};