]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
RISC-V: Add Smrnmi extension csrs.
authorJiawei <jiawei@iscas.ac.cn>
Tue, 24 Sep 2024 11:16:25 +0000 (19:16 +0800)
committerNelson Chu <nelson@rivosinc.com>
Wed, 25 Sep 2024 01:28:27 +0000 (09:28 +0800)
This patch support Smrnmi extension[1],
The csrs address can be find in[2].

[1] https://github.com/riscv/riscv-isa-manual/commit/35eb3948bf0b87c83fab5a7238bd68b6211faf62
[2] https://github.com/riscv/riscv-isa-manual/blob/smrnmi-1.0/src/priv-csrs.adoc

bfd/ChangeLog:

* elfxx-riscv.c: New extension.

gas/ChangeLog:

* NEWS: Add Smrnmi extension support.
* config/tc-riscv.c (enum riscv_csr_class): New extension class.
(riscv_csr_address): Ditto.
* testsuite/gas/riscv/csr-version-1p10.d: New csrs.
* testsuite/gas/riscv/csr-version-1p10.l: Ditto.
* testsuite/gas/riscv/csr-version-1p11.d: Ditto.
* testsuite/gas/riscv/csr-version-1p11.l: Ditto.
* testsuite/gas/riscv/csr-version-1p12.d: Ditto.
* testsuite/gas/riscv/csr-version-1p12.l: Ditto.
* testsuite/gas/riscv/csr.s:  Ditto.
* testsuite/gas/riscv/march-help.l: New extension.

include/ChangeLog:

* opcode/riscv-opc.h (CSR_MNSCRATCH): New csr.
(CSR_MNEPC): Ditto.
(CSR_MNCAUSE): Ditto.
(CSR_MNSTATUS): Ditto.
(DECLARE_CSR): New csr declarations.

12 files changed:
bfd/elfxx-riscv.c
gas/NEWS
gas/config/tc-riscv.c
gas/testsuite/gas/riscv/csr-version-1p10.d
gas/testsuite/gas/riscv/csr-version-1p10.l
gas/testsuite/gas/riscv/csr-version-1p11.d
gas/testsuite/gas/riscv/csr-version-1p11.l
gas/testsuite/gas/riscv/csr-version-1p12.d
gas/testsuite/gas/riscv/csr-version-1p12.l
gas/testsuite/gas/riscv/csr.s
gas/testsuite/gas/riscv/march-help.l
include/opcode/riscv-opc.h

index 64b7d71f2cbc24087500dda4791a5e9975af181a..26ec664d88a7801eba7545d424cda83b935b6f59 100644 (file)
@@ -1439,6 +1439,7 @@ static struct riscv_supported_ext riscv_supported_std_s_ext[] =
   {"smcsrind",         ISA_SPEC_CLASS_DRAFT,           1, 0, 0 },
   {"smcntrpmf",                ISA_SPEC_CLASS_DRAFT,           1, 0, 0 },
   {"smepmp",           ISA_SPEC_CLASS_DRAFT,           1, 0, 0 },
+  {"smrnmi",           ISA_SPEC_CLASS_DRAFT,           1, 0, 0 },
   {"smstateen",                ISA_SPEC_CLASS_DRAFT,           1, 0, 0 },
   {"ssaia",            ISA_SPEC_CLASS_DRAFT,           1, 0, 0 },
   {"ssccptr",          ISA_SPEC_CLASS_DRAFT,           1, 0, 0 },
index 24055d2f5e9d4678dbd02f7b10f4f2a5b34fa6bc..0083c8712000aaaca1eac6d19b155315da36a71b 100644 (file)
--- a/gas/NEWS
+++ b/gas/NEWS
@@ -1,7 +1,7 @@
 -*- text -*-
 
-* Add support for RISC-V Zcmp (cm.mva01s, cm.mvsa01) and CORE-V (xcvbitmanip,
-  xcvsimd) extensions with version 1.0.
+* Add support for RISC-V Zcmp (cm.mva01s, cm.mvsa01), Smrnmi and CORE-V
+  (xcvbitmanip, xcvsimd) extensions with version 1.0.
 
 Changes in 2.43:
 
index bf2020d656ba0d69efbe8cda4e3f66eb0735293b..301607b0aad7e721635bcf0423aa584814f3d8d8 100644 (file)
@@ -81,6 +81,7 @@ enum riscv_csr_class
   CSR_CLASS_SMCSRIND,          /* Smcsrind */
   CSR_CLASS_SMCNTRPMF,         /* Smcntrpmf */
   CSR_CLASS_SMCNTRPMF_32,      /* Smcntrpmf, rv32 only */
+  CSR_CLASS_SMRNMI,            /* Smrnmi */
   CSR_CLASS_SMSTATEEN,         /* Smstateen only */
   CSR_CLASS_SMSTATEEN_32,      /* Smstateen RV32 only */
   CSR_CLASS_SSAIA,             /* Ssaia */
@@ -1082,6 +1083,9 @@ riscv_csr_address (const char *csr_name,
       need_check_version = true;
       extension = "smcntrpmf";
       break;
+    case CSR_CLASS_SMRNMI:
+      extension = "smrnmi";
+      break;
     case CSR_CLASS_SMSTATEEN_32:
       is_rv32_only = true;
       /* Fall through.  */
index 5165f4bea0d37c89ae76d6dde304af4a814c6f59..ce28f59fa7449c953fc273b5fb3cdf522d152e0a 100644 (file)
@@ -645,6 +645,14 @@ Disassembly of section .text:
 [      ]+[0-9a-f]+:[   ]+72159073[     ]+csrw[         ]+mcyclecfgh,a1
 [      ]+[0-9a-f]+:[   ]+72202573[     ]+csrr[         ]+a0,minstretcfgh
 [      ]+[0-9a-f]+:[   ]+72259073[     ]+csrw[         ]+minstretcfgh,a1
+[      ]+[0-9a-f]+:[   ]+74102573[     ]+csrr[         ]+a0,mnepc
+[      ]+[0-9a-f]+:[   ]+74159073[     ]+csrw[         ]+mnepc,a1
+[      ]+[0-9a-f]+:[   ]+74202573[     ]+csrr[         ]+a0,mncause
+[      ]+[0-9a-f]+:[   ]+74259073[     ]+csrw[         ]+mncause,a1
+[      ]+[0-9a-f]+:[   ]+74002573[     ]+csrr[         ]+a0,mnscratch
+[      ]+[0-9a-f]+:[   ]+74059073[     ]+csrw[         ]+mnscratch,a1
+[      ]+[0-9a-f]+:[   ]+74402573[     ]+csrr[         ]+a0,mnstatus
+[      ]+[0-9a-f]+:[   ]+74459073[     ]+csrw[         ]+mnstatus,a1
 [      ]+[0-9a-f]+:[   ]+30c02573[     ]+csrr[         ]+a0,mstateen0
 [      ]+[0-9a-f]+:[   ]+30c59073[     ]+csrw[         ]+mstateen0,a1
 [      ]+[0-9a-f]+:[   ]+30d02573[     ]+csrr[         ]+a0,mstateen1
index 17a8bb638e8fa4fc779fe5a8f06942c9f30da199..5f6a956af5f5a3724fb27f82fcb86c59b2e6eb39 100644 (file)
 .*Info: macro .*
 .*Warning: invalid CSR `minstretcfgh', needs `smcntrpmf' extension
 .*Info: macro .*
+.*Warning: invalid CSR `mnepc', needs `smrnmi' extension
+.*Info: macro .*
+.*Warning: invalid CSR `mnepc', needs `smrnmi' extension
+.*Info: macro .*
+.*Warning: invalid CSR `mncause', needs `smrnmi' extension
+.*Info: macro .*
+.*Warning: invalid CSR `mncause', needs `smrnmi' extension
+.*Info: macro .*
+.*Warning: invalid CSR `mnscratch', needs `smrnmi' extension
+.*Info: macro .*
+.*Warning: invalid CSR `mnscratch', needs `smrnmi' extension
+.*Info: macro .*
+.*Warning: invalid CSR `mnstatus', needs `smrnmi' extension
+.*Info: macro .*
+.*Warning: invalid CSR `mnstatus', needs `smrnmi' extension
+.*Info: macro .*
 .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
 .*Info: macro .*
 .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
index 1cb5a917f1a78b322287ebb093b5edaab65fe448..7bbcf33048e6593ab122a37616ce26c7fb204073 100644 (file)
@@ -645,6 +645,14 @@ Disassembly of section .text:
 [      ]+[0-9a-f]+:[   ]+72159073[     ]+csrw[         ]+mcyclecfgh,a1
 [      ]+[0-9a-f]+:[   ]+72202573[     ]+csrr[         ]+a0,minstretcfgh
 [      ]+[0-9a-f]+:[   ]+72259073[     ]+csrw[         ]+minstretcfgh,a1
+[      ]+[0-9a-f]+:[   ]+74102573[     ]+csrr[         ]+a0,mnepc
+[      ]+[0-9a-f]+:[   ]+74159073[     ]+csrw[         ]+mnepc,a1
+[      ]+[0-9a-f]+:[   ]+74202573[     ]+csrr[         ]+a0,mncause
+[      ]+[0-9a-f]+:[   ]+74259073[     ]+csrw[         ]+mncause,a1
+[      ]+[0-9a-f]+:[   ]+74002573[     ]+csrr[         ]+a0,mnscratch
+[      ]+[0-9a-f]+:[   ]+74059073[     ]+csrw[         ]+mnscratch,a1
+[      ]+[0-9a-f]+:[   ]+74402573[     ]+csrr[         ]+a0,mnstatus
+[      ]+[0-9a-f]+:[   ]+74459073[     ]+csrw[         ]+mnstatus,a1
 [      ]+[0-9a-f]+:[   ]+30c02573[     ]+csrr[         ]+a0,mstateen0
 [      ]+[0-9a-f]+:[   ]+30c59073[     ]+csrw[         ]+mstateen0,a1
 [      ]+[0-9a-f]+:[   ]+30d02573[     ]+csrr[         ]+a0,mstateen1
index 8b797e8893e8d1613b166b69ae320859bb2b8d5d..412271ccdfda649f3c1dafa54f665a867b54a8c5 100644 (file)
 .*Info: macro .*
 .*Warning: invalid CSR `minstretcfgh', needs `smcntrpmf' extension
 .*Info: macro .*
+.*Warning: invalid CSR `mnepc', needs `smrnmi' extension
+.*Info: macro .*
+.*Warning: invalid CSR `mnepc', needs `smrnmi' extension
+.*Info: macro .*
+.*Warning: invalid CSR `mncause', needs `smrnmi' extension
+.*Info: macro .*
+.*Warning: invalid CSR `mncause', needs `smrnmi' extension
+.*Info: macro .*
+.*Warning: invalid CSR `mnscratch', needs `smrnmi' extension
+.*Info: macro .*
+.*Warning: invalid CSR `mnscratch', needs `smrnmi' extension
+.*Info: macro .*
+.*Warning: invalid CSR `mnstatus', needs `smrnmi' extension
+.*Info: macro .*
+.*Warning: invalid CSR `mnstatus', needs `smrnmi' extension
+.*Info: macro .*
 .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
 .*Info: macro .*
 .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
index ac88d9370f84bad4ed1d992e2e058918d602690b..25518dc8646f3384e33c2828274e6c9ec9e5c0b4 100644 (file)
@@ -645,6 +645,14 @@ Disassembly of section .text:
 [      ]+[0-9a-f]+:[   ]+72159073[     ]+csrw[         ]+mcyclecfgh,a1
 [      ]+[0-9a-f]+:[   ]+72202573[     ]+csrr[         ]+a0,minstretcfgh
 [      ]+[0-9a-f]+:[   ]+72259073[     ]+csrw[         ]+minstretcfgh,a1
+[      ]+[0-9a-f]+:[   ]+74102573[     ]+csrr[         ]+a0,mnepc
+[      ]+[0-9a-f]+:[   ]+74159073[     ]+csrw[         ]+mnepc,a1
+[      ]+[0-9a-f]+:[   ]+74202573[     ]+csrr[         ]+a0,mncause
+[      ]+[0-9a-f]+:[   ]+74259073[     ]+csrw[         ]+mncause,a1
+[      ]+[0-9a-f]+:[   ]+74002573[     ]+csrr[         ]+a0,mnscratch
+[      ]+[0-9a-f]+:[   ]+74059073[     ]+csrw[         ]+mnscratch,a1
+[      ]+[0-9a-f]+:[   ]+74402573[     ]+csrr[         ]+a0,mnstatus
+[      ]+[0-9a-f]+:[   ]+74459073[     ]+csrw[         ]+mnstatus,a1
 [      ]+[0-9a-f]+:[   ]+30c02573[     ]+csrr[         ]+a0,mstateen0
 [      ]+[0-9a-f]+:[   ]+30c59073[     ]+csrw[         ]+mstateen0,a1
 [      ]+[0-9a-f]+:[   ]+30d02573[     ]+csrr[         ]+a0,mstateen1
index 81a7aba25c877a624abccb79a44cee73320b8cf5..4848a68a8d9edbb4a295825f963765fa344b1fab 100644 (file)
 .*Info: macro .*
 .*Warning: invalid CSR `minstretcfgh', needs `smcntrpmf' extension
 .*Info: macro .*
+.*Warning: invalid CSR `mnepc', needs `smrnmi' extension
+.*Info: macro .*
+.*Warning: invalid CSR `mnepc', needs `smrnmi' extension
+.*Info: macro .*
+.*Warning: invalid CSR `mncause', needs `smrnmi' extension
+.*Info: macro .*
+.*Warning: invalid CSR `mncause', needs `smrnmi' extension
+.*Info: macro .*
+.*Warning: invalid CSR `mnscratch', needs `smrnmi' extension
+.*Info: macro .*
+.*Warning: invalid CSR `mnscratch', needs `smrnmi' extension
+.*Info: macro .*
+.*Warning: invalid CSR `mnstatus', needs `smrnmi' extension
+.*Info: macro .*
+.*Warning: invalid CSR `mnstatus', needs `smrnmi' extension
+.*Info: macro .*
 .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
 .*Info: macro .*
 .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
index 378caef35b08e3c3e175598c9e912696222f3b5c..8378e14d07d41dbcce2af01a37886c86f20d52d8 100644 (file)
        csr mcyclecfgh
        csr minstretcfgh
 
+       # smrnmi
+       csr mnepc
+       csr mncause
+       csr mnscratch
+       csr mnstatus
+
        # Smstateen/Ssstateen extensions
        csr mstateen0
        csr mstateen1
index 0c33d1ee76d761cf7c7c10dc3ca5f858fa2b3be2..003359242d0916e48a8832d35eadae9b189a7fee 100644 (file)
@@ -114,6 +114,7 @@ All available -march extensions for RISC-V:
        smcsrind                                1.0
        smcntrpmf                               1.0
        smepmp                                  1.0
+       smrnmi                                  1.0
        smstateen                               1.0
        ssaia                                   1.0
        ssccptr                                 1.0
index 73ee81158ae30dfadcc85ec65a26b0c2e6fe220a..2209e1a48c1412e9965c76b82d86487bf96b058b 100644 (file)
 #define CSR_MINSTRETCFG  0x322
 #define CSR_MCYCLECFGH   0x721
 #define CSR_MINSTRETCFGH 0x722
+/* Smrnmi extension.  */
+#define CSR_MNSCRATCH       0x740
+#define CSR_MNEPC           0x741
+#define CSR_MNCAUSE         0x742
+#define CSR_MNSTATUS        0x744
 /* Smstateen extension */
 #define CSR_MSTATEEN0 0x30c
 #define CSR_MSTATEEN1 0x30d
@@ -5172,6 +5177,11 @@ DECLARE_CSR(mcyclecfg, CSR_MCYCLECFG, CSR_CLASS_SMCNTRPMF, PRIV_SPEC_CLASS_1P10,
 DECLARE_CSR(minstretcfg, CSR_MINSTRETCFG, CSR_CLASS_SMCNTRPMF, PRIV_SPEC_CLASS_1P10, PRIV_SPEC_CLASS_DRAFT)
 DECLARE_CSR(mcyclecfgh, CSR_MCYCLECFGH, CSR_CLASS_SMCNTRPMF_32, PRIV_SPEC_CLASS_1P10, PRIV_SPEC_CLASS_DRAFT)
 DECLARE_CSR(minstretcfgh, CSR_MINSTRETCFGH, CSR_CLASS_SMCNTRPMF_32, PRIV_SPEC_CLASS_1P10, PRIV_SPEC_CLASS_DRAFT)
+/* Smrnmi extensions.  */
+DECLARE_CSR(mnepc, CSR_MNEPC, CSR_CLASS_SMRNMI, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(mncause, CSR_MNCAUSE, CSR_CLASS_SMRNMI, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(mnscratch, CSR_MNSCRATCH, CSR_CLASS_SMRNMI, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(mnstatus, CSR_MNSTATUS, CSR_CLASS_SMRNMI, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
 /* Smstateen/Ssstateen extensions.  */
 DECLARE_CSR(mstateen0, CSR_MSTATEEN0, CSR_CLASS_SMSTATEEN, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
 DECLARE_CSR(mstateen1, CSR_MSTATEEN1, CSR_CLASS_SMSTATEEN, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)