public inbox for binutils@sourceware.org
 help / color / mirror / Atom feed
* [REVIEW ONLY 0/2] UNRATIFIED RISC-V: Add 'Sspmp' extension and its TENTATIVE CSRs
@ 2022-11-29  1:20 Tsukasa OI
  2022-11-29  1:20 ` [REVIEW ONLY 1/2] " Tsukasa OI
  2022-11-29  1:20 ` [REVIEW ONLY 2/2] TEST: Add instantiation script on CSR allocation Tsukasa OI
  0 siblings, 2 replies; 7+ messages in thread
From: Tsukasa OI @ 2022-11-29  1:20 UTC (permalink / raw)
  To: Tsukasa OI; +Cc: binutils

*** WAIT FOR SPECIFICATION FREEZE ***
This is an implementation for unratified and not frozen RISC-V extension
and not intended to be merged for now.
The only intent to submit this patchset is to test new instructions for
your (possibly virtual) environment and early review for fast adoption
after ratification.


This patchset adds following unratified extension to GNU Binutils:

-   'Sspmp' (S-mode Physical Memory Protection - SPMP)
    version 0.8 (may change on ratification)

which adds 82 CSRs.

This extension, like regular PMP in M-mode, provides SPMP feature when
virtual memory system (paging) is not enabled.  Because of different
usecases than regular PMP, it comes with 2 CSRs to provide fast enabled
SPMP entry switching.


This is based on the commit c1e38ede20e4 of the specification document:
<https://github.com/riscv/riscv-spmp>


Note that all (82) CSR values are not allocated yet.
So, these CSRs are assigned with custom range values and this patchset comes
with an instantiation script ("$(srcdir)/instantiate-sspmp.sh") to assign
custom values (overwrites all related files and removes itself).




Tsukasa OI (2):
  UNRATIFIED RISC-V: Add 'Sspmp' extension and its TENTATIVE CSRs
  TEST: Add instantiation script on CSR allocation

 bfd/elfxx-riscv.c                           |   2 +
 gas/config/tc-riscv.c                       |   7 +
 gas/testsuite/gas/riscv/csr-dw-regnums.d    |  82 +++++++++
 gas/testsuite/gas/riscv/csr-dw-regnums.s    |  83 +++++++++
 gas/testsuite/gas/riscv/csr-version-1p10.d  | 164 ++++++++++++++++++
 gas/testsuite/gas/riscv/csr-version-1p10.l  | 182 ++++++++++++++++++++
 gas/testsuite/gas/riscv/csr-version-1p11.d  | 164 ++++++++++++++++++
 gas/testsuite/gas/riscv/csr-version-1p11.l  | 182 ++++++++++++++++++++
 gas/testsuite/gas/riscv/csr-version-1p12.d  | 164 ++++++++++++++++++
 gas/testsuite/gas/riscv/csr-version-1p12.l  | 182 ++++++++++++++++++++
 gas/testsuite/gas/riscv/csr-version-1p9p1.d | 164 ++++++++++++++++++
 gas/testsuite/gas/riscv/csr-version-1p9p1.l | 182 ++++++++++++++++++++
 gas/testsuite/gas/riscv/csr.s               |  84 +++++++++
 include/opcode/riscv-opc.h                  | 166 ++++++++++++++++++
 instantiate-sspmp.sh                        | 130 ++++++++++++++
 15 files changed, 1938 insertions(+)
 create mode 100755 instantiate-sspmp.sh


base-commit: cb44f89ce977b1ab2d4063f2487950bddfb75bc7
-- 
2.38.1


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [REVIEW ONLY 1/2] UNRATIFIED RISC-V: Add 'Sspmp' extension and its TENTATIVE CSRs
  2022-11-29  1:20 [REVIEW ONLY 0/2] UNRATIFIED RISC-V: Add 'Sspmp' extension and its TENTATIVE CSRs Tsukasa OI
@ 2022-11-29  1:20 ` Tsukasa OI
  2022-11-29  2:22   ` Palmer Dabbelt
  2022-11-29  1:20 ` [REVIEW ONLY 2/2] TEST: Add instantiation script on CSR allocation Tsukasa OI
  1 sibling, 1 reply; 7+ messages in thread
From: Tsukasa OI @ 2022-11-29  1:20 UTC (permalink / raw)
  To: Tsukasa OI; +Cc: binutils

From: Tsukasa OI <research_trasio@irq.a4lg.com>

[DO NOT MERGE]
Until 'Sspmp' extension is frozen/ratified and final version number is
determined, this patch should not be merged upstream. This commit uses
unratified version 0.8 as in the documentation (instead of possible 1.0
after ratification).

This commit adds RISC-V S-mode Physical Memory Protection (SPMP) version
0.8 based on the specification:
<https://github.com/riscv/riscv-spmp/blob/c1e38ede20e4fe0a534ec7e8302c99b2a0a0ca72/rv-spmp-spec.pdf>

Note

Because CSR addresses are not fixed yet, this commit uses tentative
addresses (a part of custom CSR space).

bfd/ChangeLog:

	* elfxx-riscv.c (riscv_implicit_subsets) Add implication 'Sspmp'
	-> 'Zicsr'.  (riscv_supported_std_s_ext): Add 'Sspmp' extension to
	valid 'S' extension list.

gas/ChangeLog:

	* config/tc-riscv.c (enum riscv_csr_class): Add CSR classes for
	the 'Sspmp' extension.  (riscv_csr_address): Add handling for new
	CSR classes.
	* testsuite/gas/riscv/csr-dw-regnums.d: Add new CSRs.
	* testsuite/gas/riscv/csr-dw-regnums.s: Likewise.
	* testsuite/gas/riscv/csr.s: Add new CSRs.
	* testsuite/gas/riscv/csr-version-1p9p1.d: Likewise.
	* testsuite/gas/riscv/csr-version-1p9p1.l: Likewise.
	* testsuite/gas/riscv/csr-version-1p10.d: Likewise.
	* testsuite/gas/riscv/csr-version-1p10.l: Likewise.
	* testsuite/gas/riscv/csr-version-1p11.d: Likewise.
	* testsuite/gas/riscv/csr-version-1p11.l: Likewise.
	* testsuite/gas/riscv/csr-version-1p12.d: Likewise.
	* testsuite/gas/riscv/csr-version-1p12.l: Likewise.

include/ChangeLog:

	* opcode/riscv-opc.h (CSR_SPMPCFG0, CSR_SPMPCFG1, CSR_SPMPCFG2,
	CSR_SPMPCFG3, CSR_SPMPCFG4, CSR_SPMPCFG5, CSR_SPMPCFG6,
	CSR_SPMPCFG7, CSR_SPMPCFG8, CSR_SPMPCFG9, CSR_SPMPCFG10,
	CSR_SPMPCFG11, CSR_SPMPCFG12, CSR_SPMPCFG13, CSR_SPMPCFG14,
	CSR_SPMPCFG15, CSR_SPMPSWITCH0, CSR_SPMPSWITCH1, CSR_SPMPADDR0,
	CSR_SPMPADDR1, CSR_SPMPADDR2, CSR_SPMPADDR3, CSR_SPMPADDR4,
	CSR_SPMPADDR5, CSR_SPMPADDR6, CSR_SPMPADDR7, CSR_SPMPADDR8,
	CSR_SPMPADDR9, CSR_SPMPADDR10, CSR_SPMPADDR11, CSR_SPMPADDR12,
	CSR_SPMPADDR13, CSR_SPMPADDR14, CSR_SPMPADDR15, CSR_SPMPADDR16,
	CSR_SPMPADDR17, CSR_SPMPADDR18, CSR_SPMPADDR19, CSR_SPMPADDR20,
	CSR_SPMPADDR21, CSR_SPMPADDR22, CSR_SPMPADDR23, CSR_SPMPADDR24,
	CSR_SPMPADDR25, CSR_SPMPADDR26, CSR_SPMPADDR27, CSR_SPMPADDR28,
	CSR_SPMPADDR29, CSR_SPMPADDR30, CSR_SPMPADDR31, CSR_SPMPADDR32,
	CSR_SPMPADDR33, CSR_SPMPADDR34, CSR_SPMPADDR35, CSR_SPMPADDR36,
	CSR_SPMPADDR37, CSR_SPMPADDR38, CSR_SPMPADDR39, CSR_SPMPADDR40,
	CSR_SPMPADDR41, CSR_SPMPADDR42, CSR_SPMPADDR43, CSR_SPMPADDR44,
	CSR_SPMPADDR45, CSR_SPMPADDR46, CSR_SPMPADDR47, CSR_SPMPADDR48,
	CSR_SPMPADDR49, CSR_SPMPADDR50, CSR_SPMPADDR51, CSR_SPMPADDR52,
	CSR_SPMPADDR53, CSR_SPMPADDR54, CSR_SPMPADDR55, CSR_SPMPADDR56,
	CSR_SPMPADDR57, CSR_SPMPADDR58, CSR_SPMPADDR59, CSR_SPMPADDR60,
	CSR_SPMPADDR61, CSR_SPMPADDR62, CSR_SPMPADDR63): New.
---
 bfd/elfxx-riscv.c                           |   2 +
 gas/config/tc-riscv.c                       |   7 +
 gas/testsuite/gas/riscv/csr-dw-regnums.d    |  82 +++++++++
 gas/testsuite/gas/riscv/csr-dw-regnums.s    |  83 +++++++++
 gas/testsuite/gas/riscv/csr-version-1p10.d  | 164 ++++++++++++++++++
 gas/testsuite/gas/riscv/csr-version-1p10.l  | 182 ++++++++++++++++++++
 gas/testsuite/gas/riscv/csr-version-1p11.d  | 164 ++++++++++++++++++
 gas/testsuite/gas/riscv/csr-version-1p11.l  | 182 ++++++++++++++++++++
 gas/testsuite/gas/riscv/csr-version-1p12.d  | 164 ++++++++++++++++++
 gas/testsuite/gas/riscv/csr-version-1p12.l  | 182 ++++++++++++++++++++
 gas/testsuite/gas/riscv/csr-version-1p9p1.d | 164 ++++++++++++++++++
 gas/testsuite/gas/riscv/csr-version-1p9p1.l | 182 ++++++++++++++++++++
 gas/testsuite/gas/riscv/csr.s               |  84 +++++++++
 include/opcode/riscv-opc.h                  | 166 ++++++++++++++++++
 14 files changed, 1808 insertions(+)

diff --git a/bfd/elfxx-riscv.c b/bfd/elfxx-riscv.c
index 0bcf2fdcfa34..c810b7d106e1 100644
--- a/bfd/elfxx-riscv.c
+++ b/bfd/elfxx-riscv.c
@@ -1106,6 +1106,7 @@ static struct riscv_implicit_subset riscv_implicit_subsets[] =
   {"smepmp", "zicsr",		check_implicit_always},
   {"ssaia", "zicsr",		check_implicit_always},
   {"sscofpmf", "zicsr",		check_implicit_always},
+  {"sspmp", "zicsr",		check_implicit_always},
   {"ssstateen", "zicsr",	check_implicit_always},
   {"sstc", "zicsr",		check_implicit_always},
   {NULL, NULL, NULL}
@@ -1228,6 +1229,7 @@ static struct riscv_supported_ext riscv_supported_std_s_ext[] =
   {"smstateen",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
   {"ssaia",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
   {"sscofpmf",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
+  {"sspmp",		ISA_SPEC_CLASS_DRAFT,		0, 8, 0 },
   {"ssstateen",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
   {"sstc",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
   {"svinval",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
diff --git a/gas/config/tc-riscv.c b/gas/config/tc-riscv.c
index 0682eb355241..15a151580d18 100644
--- a/gas/config/tc-riscv.c
+++ b/gas/config/tc-riscv.c
@@ -80,6 +80,8 @@ enum riscv_csr_class
   CSR_CLASS_SSAIA_AND_H,	/* Ssaia with H */
   CSR_CLASS_SSAIA_32,		/* Ssaia, rv32 only */
   CSR_CLASS_SSAIA_AND_H_32,	/* Ssaia with H, rv32 only */
+  CSR_CLASS_SSPMP,		/* Sspmp only */
+  CSR_CLASS_SSPMP_32,		/* Sspmp RV32 only */
   CSR_CLASS_SSSTATEEN,		/* S[ms]stateen only */
   CSR_CLASS_SSSTATEEN_AND_H,	/* S[ms]stateen only (with H) */
   CSR_CLASS_SSSTATEEN_AND_H_32,	/* S[ms]stateen RV32 only (with H) */
@@ -1064,6 +1066,11 @@ riscv_csr_address (const char *csr_name,
 		       || csr_class == CSR_CLASS_SSAIA_AND_H_32);
       extension = "ssaia";
       break;
+    case CSR_CLASS_SSPMP:
+    case CSR_CLASS_SSPMP_32:
+      is_rv32_only = (csr_class == CSR_CLASS_SSPMP_32);
+      extension = "sspmp";
+      break;
     case CSR_CLASS_SSSTATEEN:
     case CSR_CLASS_SSSTATEEN_AND_H:
     case CSR_CLASS_SSSTATEEN_AND_H_32:
diff --git a/gas/testsuite/gas/riscv/csr-dw-regnums.d b/gas/testsuite/gas/riscv/csr-dw-regnums.d
index fd830666ab89..2e68235c13fe 100644
--- a/gas/testsuite/gas/riscv/csr-dw-regnums.d
+++ b/gas/testsuite/gas/riscv/csr-dw-regnums.d
@@ -395,6 +395,88 @@ Contents of the .* section:
   DW_CFA_offset_extended_sf: r5949 \(mhpmevent29h\) at cfa\+7412
   DW_CFA_offset_extended_sf: r5950 \(mhpmevent30h\) at cfa\+7416
   DW_CFA_offset_extended_sf: r5951 \(mhpmevent31h\) at cfa\+7420
+  DW_CFA_offset_extended_sf: r5568 \(spmpcfg0\) at cfa\+5888
+  DW_CFA_offset_extended_sf: r5569 \(spmpcfg1\) at cfa\+5892
+  DW_CFA_offset_extended_sf: r5570 \(spmpcfg2\) at cfa\+5896
+  DW_CFA_offset_extended_sf: r5571 \(spmpcfg3\) at cfa\+5900
+  DW_CFA_offset_extended_sf: r5572 \(spmpcfg4\) at cfa\+5904
+  DW_CFA_offset_extended_sf: r5573 \(spmpcfg5\) at cfa\+5908
+  DW_CFA_offset_extended_sf: r5574 \(spmpcfg6\) at cfa\+5912
+  DW_CFA_offset_extended_sf: r5575 \(spmpcfg7\) at cfa\+5916
+  DW_CFA_offset_extended_sf: r5576 \(spmpcfg8\) at cfa\+5920
+  DW_CFA_offset_extended_sf: r5577 \(spmpcfg9\) at cfa\+5924
+  DW_CFA_offset_extended_sf: r5578 \(spmpcfg10\) at cfa\+5928
+  DW_CFA_offset_extended_sf: r5579 \(spmpcfg11\) at cfa\+5932
+  DW_CFA_offset_extended_sf: r5580 \(spmpcfg12\) at cfa\+5936
+  DW_CFA_offset_extended_sf: r5581 \(spmpcfg13\) at cfa\+5940
+  DW_CFA_offset_extended_sf: r5582 \(spmpcfg14\) at cfa\+5944
+  DW_CFA_offset_extended_sf: r5583 \(spmpcfg15\) at cfa\+5948
+  DW_CFA_offset_extended_sf: r5584 \(spmpswitch0\) at cfa\+5952
+  DW_CFA_offset_extended_sf: r5585 \(spmpswitch1\) at cfa\+5956
+  DW_CFA_offset_extended_sf: r6592 \(spmpaddr0\) at cfa\+9984
+  DW_CFA_offset_extended_sf: r6593 \(spmpaddr1\) at cfa\+9988
+  DW_CFA_offset_extended_sf: r6594 \(spmpaddr2\) at cfa\+9992
+  DW_CFA_offset_extended_sf: r6595 \(spmpaddr3\) at cfa\+9996
+  DW_CFA_offset_extended_sf: r6596 \(spmpaddr4\) at cfa\+10000
+  DW_CFA_offset_extended_sf: r6597 \(spmpaddr5\) at cfa\+10004
+  DW_CFA_offset_extended_sf: r6598 \(spmpaddr6\) at cfa\+10008
+  DW_CFA_offset_extended_sf: r6599 \(spmpaddr7\) at cfa\+10012
+  DW_CFA_offset_extended_sf: r6600 \(spmpaddr8\) at cfa\+10016
+  DW_CFA_offset_extended_sf: r6601 \(spmpaddr9\) at cfa\+10020
+  DW_CFA_offset_extended_sf: r6602 \(spmpaddr10\) at cfa\+10024
+  DW_CFA_offset_extended_sf: r6603 \(spmpaddr11\) at cfa\+10028
+  DW_CFA_offset_extended_sf: r6604 \(spmpaddr12\) at cfa\+10032
+  DW_CFA_offset_extended_sf: r6605 \(spmpaddr13\) at cfa\+10036
+  DW_CFA_offset_extended_sf: r6606 \(spmpaddr14\) at cfa\+10040
+  DW_CFA_offset_extended_sf: r6607 \(spmpaddr15\) at cfa\+10044
+  DW_CFA_offset_extended_sf: r6608 \(spmpaddr16\) at cfa\+10048
+  DW_CFA_offset_extended_sf: r6609 \(spmpaddr17\) at cfa\+10052
+  DW_CFA_offset_extended_sf: r6610 \(spmpaddr18\) at cfa\+10056
+  DW_CFA_offset_extended_sf: r6611 \(spmpaddr19\) at cfa\+10060
+  DW_CFA_offset_extended_sf: r6612 \(spmpaddr20\) at cfa\+10064
+  DW_CFA_offset_extended_sf: r6613 \(spmpaddr21\) at cfa\+10068
+  DW_CFA_offset_extended_sf: r6614 \(spmpaddr22\) at cfa\+10072
+  DW_CFA_offset_extended_sf: r6615 \(spmpaddr23\) at cfa\+10076
+  DW_CFA_offset_extended_sf: r6616 \(spmpaddr24\) at cfa\+10080
+  DW_CFA_offset_extended_sf: r6617 \(spmpaddr25\) at cfa\+10084
+  DW_CFA_offset_extended_sf: r6618 \(spmpaddr26\) at cfa\+10088
+  DW_CFA_offset_extended_sf: r6619 \(spmpaddr27\) at cfa\+10092
+  DW_CFA_offset_extended_sf: r6620 \(spmpaddr28\) at cfa\+10096
+  DW_CFA_offset_extended_sf: r6621 \(spmpaddr29\) at cfa\+10100
+  DW_CFA_offset_extended_sf: r6622 \(spmpaddr30\) at cfa\+10104
+  DW_CFA_offset_extended_sf: r6623 \(spmpaddr31\) at cfa\+10108
+  DW_CFA_offset_extended_sf: r6624 \(spmpaddr32\) at cfa\+10112
+  DW_CFA_offset_extended_sf: r6625 \(spmpaddr33\) at cfa\+10116
+  DW_CFA_offset_extended_sf: r6626 \(spmpaddr34\) at cfa\+10120
+  DW_CFA_offset_extended_sf: r6627 \(spmpaddr35\) at cfa\+10124
+  DW_CFA_offset_extended_sf: r6628 \(spmpaddr36\) at cfa\+10128
+  DW_CFA_offset_extended_sf: r6629 \(spmpaddr37\) at cfa\+10132
+  DW_CFA_offset_extended_sf: r6630 \(spmpaddr38\) at cfa\+10136
+  DW_CFA_offset_extended_sf: r6631 \(spmpaddr39\) at cfa\+10140
+  DW_CFA_offset_extended_sf: r6632 \(spmpaddr40\) at cfa\+10144
+  DW_CFA_offset_extended_sf: r6633 \(spmpaddr41\) at cfa\+10148
+  DW_CFA_offset_extended_sf: r6634 \(spmpaddr42\) at cfa\+10152
+  DW_CFA_offset_extended_sf: r6635 \(spmpaddr43\) at cfa\+10156
+  DW_CFA_offset_extended_sf: r6636 \(spmpaddr44\) at cfa\+10160
+  DW_CFA_offset_extended_sf: r6637 \(spmpaddr45\) at cfa\+10164
+  DW_CFA_offset_extended_sf: r6638 \(spmpaddr46\) at cfa\+10168
+  DW_CFA_offset_extended_sf: r6639 \(spmpaddr47\) at cfa\+10172
+  DW_CFA_offset_extended_sf: r6640 \(spmpaddr48\) at cfa\+10176
+  DW_CFA_offset_extended_sf: r6641 \(spmpaddr49\) at cfa\+10180
+  DW_CFA_offset_extended_sf: r6642 \(spmpaddr50\) at cfa\+10184
+  DW_CFA_offset_extended_sf: r6643 \(spmpaddr51\) at cfa\+10188
+  DW_CFA_offset_extended_sf: r6644 \(spmpaddr52\) at cfa\+10192
+  DW_CFA_offset_extended_sf: r6645 \(spmpaddr53\) at cfa\+10196
+  DW_CFA_offset_extended_sf: r6646 \(spmpaddr54\) at cfa\+10200
+  DW_CFA_offset_extended_sf: r6647 \(spmpaddr55\) at cfa\+10204
+  DW_CFA_offset_extended_sf: r6648 \(spmpaddr56\) at cfa\+10208
+  DW_CFA_offset_extended_sf: r6649 \(spmpaddr57\) at cfa\+10212
+  DW_CFA_offset_extended_sf: r6650 \(spmpaddr58\) at cfa\+10216
+  DW_CFA_offset_extended_sf: r6651 \(spmpaddr59\) at cfa\+10220
+  DW_CFA_offset_extended_sf: r6652 \(spmpaddr60\) at cfa\+10224
+  DW_CFA_offset_extended_sf: r6653 \(spmpaddr61\) at cfa\+10228
+  DW_CFA_offset_extended_sf: r6654 \(spmpaddr62\) at cfa\+10232
+  DW_CFA_offset_extended_sf: r6655 \(spmpaddr63\) at cfa\+10236
   DW_CFA_offset_extended_sf: r4429 \(stimecmp\) at cfa\+1332
   DW_CFA_offset_extended_sf: r4445 \(stimecmph\) at cfa\+1396
   DW_CFA_offset_extended_sf: r4685 \(vstimecmp\) at cfa\+2356
diff --git a/gas/testsuite/gas/riscv/csr-dw-regnums.s b/gas/testsuite/gas/riscv/csr-dw-regnums.s
index b8b0f7902297..397847c3d01d 100644
--- a/gas/testsuite/gas/riscv/csr-dw-regnums.s
+++ b/gas/testsuite/gas/riscv/csr-dw-regnums.s
@@ -395,6 +395,89 @@ _start:
 	.cfi_offset mhpmevent29h, 7412
 	.cfi_offset mhpmevent30h, 7416
 	.cfi_offset mhpmevent31h, 7420
+	# Sspmp extension
+	.cfi_offset spmpcfg0, 5888
+	.cfi_offset spmpcfg1, 5892
+	.cfi_offset spmpcfg2, 5896
+	.cfi_offset spmpcfg3, 5900
+	.cfi_offset spmpcfg4, 5904
+	.cfi_offset spmpcfg5, 5908
+	.cfi_offset spmpcfg6, 5912
+	.cfi_offset spmpcfg7, 5916
+	.cfi_offset spmpcfg8, 5920
+	.cfi_offset spmpcfg9, 5924
+	.cfi_offset spmpcfg10, 5928
+	.cfi_offset spmpcfg11, 5932
+	.cfi_offset spmpcfg12, 5936
+	.cfi_offset spmpcfg13, 5940
+	.cfi_offset spmpcfg14, 5944
+	.cfi_offset spmpcfg15, 5948
+	.cfi_offset spmpswitch0, 5952
+	.cfi_offset spmpswitch1, 5956
+	.cfi_offset spmpaddr0, 9984
+	.cfi_offset spmpaddr1, 9988
+	.cfi_offset spmpaddr2, 9992
+	.cfi_offset spmpaddr3, 9996
+	.cfi_offset spmpaddr4, 10000
+	.cfi_offset spmpaddr5, 10004
+	.cfi_offset spmpaddr6, 10008
+	.cfi_offset spmpaddr7, 10012
+	.cfi_offset spmpaddr8, 10016
+	.cfi_offset spmpaddr9, 10020
+	.cfi_offset spmpaddr10, 10024
+	.cfi_offset spmpaddr11, 10028
+	.cfi_offset spmpaddr12, 10032
+	.cfi_offset spmpaddr13, 10036
+	.cfi_offset spmpaddr14, 10040
+	.cfi_offset spmpaddr15, 10044
+	.cfi_offset spmpaddr16, 10048
+	.cfi_offset spmpaddr17, 10052
+	.cfi_offset spmpaddr18, 10056
+	.cfi_offset spmpaddr19, 10060
+	.cfi_offset spmpaddr20, 10064
+	.cfi_offset spmpaddr21, 10068
+	.cfi_offset spmpaddr22, 10072
+	.cfi_offset spmpaddr23, 10076
+	.cfi_offset spmpaddr24, 10080
+	.cfi_offset spmpaddr25, 10084
+	.cfi_offset spmpaddr26, 10088
+	.cfi_offset spmpaddr27, 10092
+	.cfi_offset spmpaddr28, 10096
+	.cfi_offset spmpaddr29, 10100
+	.cfi_offset spmpaddr30, 10104
+	.cfi_offset spmpaddr31, 10108
+	.cfi_offset spmpaddr32, 10112
+	.cfi_offset spmpaddr33, 10116
+	.cfi_offset spmpaddr34, 10120
+	.cfi_offset spmpaddr35, 10124
+	.cfi_offset spmpaddr36, 10128
+	.cfi_offset spmpaddr37, 10132
+	.cfi_offset spmpaddr38, 10136
+	.cfi_offset spmpaddr39, 10140
+	.cfi_offset spmpaddr40, 10144
+	.cfi_offset spmpaddr41, 10148
+	.cfi_offset spmpaddr42, 10152
+	.cfi_offset spmpaddr43, 10156
+	.cfi_offset spmpaddr44, 10160
+	.cfi_offset spmpaddr45, 10164
+	.cfi_offset spmpaddr46, 10168
+	.cfi_offset spmpaddr47, 10172
+	.cfi_offset spmpaddr48, 10176
+	.cfi_offset spmpaddr49, 10180
+	.cfi_offset spmpaddr50, 10184
+	.cfi_offset spmpaddr51, 10188
+	.cfi_offset spmpaddr52, 10192
+	.cfi_offset spmpaddr53, 10196
+	.cfi_offset spmpaddr54, 10200
+	.cfi_offset spmpaddr55, 10204
+	.cfi_offset spmpaddr56, 10208
+	.cfi_offset spmpaddr57, 10212
+	.cfi_offset spmpaddr58, 10216
+	.cfi_offset spmpaddr59, 10220
+	.cfi_offset spmpaddr60, 10224
+	.cfi_offset spmpaddr61, 10228
+	.cfi_offset spmpaddr62, 10232
+	.cfi_offset spmpaddr63, 10236
 	# Sstc extension
 	.cfi_offset stimecmp, 1332
 	.cfi_offset stimecmph, 1396
diff --git a/gas/testsuite/gas/riscv/csr-version-1p10.d b/gas/testsuite/gas/riscv/csr-version-1p10.d
index ee41e1025cce..ffea30674d33 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p10.d
+++ b/gas/testsuite/gas/riscv/csr-version-1p10.d
@@ -765,6 +765,170 @@ Disassembly of section .text:
 [ 	]+[0-9a-f]+:[ 	]+73e59073[ 	]+csrw[ 	]+mhpmevent30h,a1
 [ 	]+[0-9a-f]+:[ 	]+73f02573[ 	]+csrr[ 	]+a0,mhpmevent31h
 [ 	]+[0-9a-f]+:[ 	]+73f59073[ 	]+csrw[ 	]+mhpmevent31h,a1
+[ 	]+[0-9a-f]+:[ 	]+5c002573[ 	]+csrr[ 	]+a0,spmpcfg0
+[ 	]+[0-9a-f]+:[ 	]+5c059073[ 	]+csrw[ 	]+spmpcfg0,a1
+[ 	]+[0-9a-f]+:[ 	]+5c102573[ 	]+csrr[ 	]+a0,spmpcfg1
+[ 	]+[0-9a-f]+:[ 	]+5c159073[ 	]+csrw[ 	]+spmpcfg1,a1
+[ 	]+[0-9a-f]+:[ 	]+5c202573[ 	]+csrr[ 	]+a0,spmpcfg2
+[ 	]+[0-9a-f]+:[ 	]+5c259073[ 	]+csrw[ 	]+spmpcfg2,a1
+[ 	]+[0-9a-f]+:[ 	]+5c302573[ 	]+csrr[ 	]+a0,spmpcfg3
+[ 	]+[0-9a-f]+:[ 	]+5c359073[ 	]+csrw[ 	]+spmpcfg3,a1
+[ 	]+[0-9a-f]+:[ 	]+5c402573[ 	]+csrr[ 	]+a0,spmpcfg4
+[ 	]+[0-9a-f]+:[ 	]+5c459073[ 	]+csrw[ 	]+spmpcfg4,a1
+[ 	]+[0-9a-f]+:[ 	]+5c502573[ 	]+csrr[ 	]+a0,spmpcfg5
+[ 	]+[0-9a-f]+:[ 	]+5c559073[ 	]+csrw[ 	]+spmpcfg5,a1
+[ 	]+[0-9a-f]+:[ 	]+5c602573[ 	]+csrr[ 	]+a0,spmpcfg6
+[ 	]+[0-9a-f]+:[ 	]+5c659073[ 	]+csrw[ 	]+spmpcfg6,a1
+[ 	]+[0-9a-f]+:[ 	]+5c702573[ 	]+csrr[ 	]+a0,spmpcfg7
+[ 	]+[0-9a-f]+:[ 	]+5c759073[ 	]+csrw[ 	]+spmpcfg7,a1
+[ 	]+[0-9a-f]+:[ 	]+5c802573[ 	]+csrr[ 	]+a0,spmpcfg8
+[ 	]+[0-9a-f]+:[ 	]+5c859073[ 	]+csrw[ 	]+spmpcfg8,a1
+[ 	]+[0-9a-f]+:[ 	]+5c902573[ 	]+csrr[ 	]+a0,spmpcfg9
+[ 	]+[0-9a-f]+:[ 	]+5c959073[ 	]+csrw[ 	]+spmpcfg9,a1
+[ 	]+[0-9a-f]+:[ 	]+5ca02573[ 	]+csrr[ 	]+a0,spmpcfg10
+[ 	]+[0-9a-f]+:[ 	]+5ca59073[ 	]+csrw[ 	]+spmpcfg10,a1
+[ 	]+[0-9a-f]+:[ 	]+5cb02573[ 	]+csrr[ 	]+a0,spmpcfg11
+[ 	]+[0-9a-f]+:[ 	]+5cb59073[ 	]+csrw[ 	]+spmpcfg11,a1
+[ 	]+[0-9a-f]+:[ 	]+5cc02573[ 	]+csrr[ 	]+a0,spmpcfg12
+[ 	]+[0-9a-f]+:[ 	]+5cc59073[ 	]+csrw[ 	]+spmpcfg12,a1
+[ 	]+[0-9a-f]+:[ 	]+5cd02573[ 	]+csrr[ 	]+a0,spmpcfg13
+[ 	]+[0-9a-f]+:[ 	]+5cd59073[ 	]+csrw[ 	]+spmpcfg13,a1
+[ 	]+[0-9a-f]+:[ 	]+5ce02573[ 	]+csrr[ 	]+a0,spmpcfg14
+[ 	]+[0-9a-f]+:[ 	]+5ce59073[ 	]+csrw[ 	]+spmpcfg14,a1
+[ 	]+[0-9a-f]+:[ 	]+5cf02573[ 	]+csrr[ 	]+a0,spmpcfg15
+[ 	]+[0-9a-f]+:[ 	]+5cf59073[ 	]+csrw[ 	]+spmpcfg15,a1
+[ 	]+[0-9a-f]+:[ 	]+5d002573[ 	]+csrr[ 	]+a0,spmpswitch0
+[ 	]+[0-9a-f]+:[ 	]+5d059073[ 	]+csrw[ 	]+spmpswitch0,a1
+[ 	]+[0-9a-f]+:[ 	]+5d102573[ 	]+csrr[ 	]+a0,spmpswitch1
+[ 	]+[0-9a-f]+:[ 	]+5d159073[ 	]+csrw[ 	]+spmpswitch1,a1
+[ 	]+[0-9a-f]+:[ 	]+9c002573[ 	]+csrr[ 	]+a0,spmpaddr0
+[ 	]+[0-9a-f]+:[ 	]+9c059073[ 	]+csrw[ 	]+spmpaddr0,a1
+[ 	]+[0-9a-f]+:[ 	]+9c102573[ 	]+csrr[ 	]+a0,spmpaddr1
+[ 	]+[0-9a-f]+:[ 	]+9c159073[ 	]+csrw[ 	]+spmpaddr1,a1
+[ 	]+[0-9a-f]+:[ 	]+9c202573[ 	]+csrr[ 	]+a0,spmpaddr2
+[ 	]+[0-9a-f]+:[ 	]+9c259073[ 	]+csrw[ 	]+spmpaddr2,a1
+[ 	]+[0-9a-f]+:[ 	]+9c302573[ 	]+csrr[ 	]+a0,spmpaddr3
+[ 	]+[0-9a-f]+:[ 	]+9c359073[ 	]+csrw[ 	]+spmpaddr3,a1
+[ 	]+[0-9a-f]+:[ 	]+9c402573[ 	]+csrr[ 	]+a0,spmpaddr4
+[ 	]+[0-9a-f]+:[ 	]+9c459073[ 	]+csrw[ 	]+spmpaddr4,a1
+[ 	]+[0-9a-f]+:[ 	]+9c502573[ 	]+csrr[ 	]+a0,spmpaddr5
+[ 	]+[0-9a-f]+:[ 	]+9c559073[ 	]+csrw[ 	]+spmpaddr5,a1
+[ 	]+[0-9a-f]+:[ 	]+9c602573[ 	]+csrr[ 	]+a0,spmpaddr6
+[ 	]+[0-9a-f]+:[ 	]+9c659073[ 	]+csrw[ 	]+spmpaddr6,a1
+[ 	]+[0-9a-f]+:[ 	]+9c702573[ 	]+csrr[ 	]+a0,spmpaddr7
+[ 	]+[0-9a-f]+:[ 	]+9c759073[ 	]+csrw[ 	]+spmpaddr7,a1
+[ 	]+[0-9a-f]+:[ 	]+9c802573[ 	]+csrr[ 	]+a0,spmpaddr8
+[ 	]+[0-9a-f]+:[ 	]+9c859073[ 	]+csrw[ 	]+spmpaddr8,a1
+[ 	]+[0-9a-f]+:[ 	]+9c902573[ 	]+csrr[ 	]+a0,spmpaddr9
+[ 	]+[0-9a-f]+:[ 	]+9c959073[ 	]+csrw[ 	]+spmpaddr9,a1
+[ 	]+[0-9a-f]+:[ 	]+9ca02573[ 	]+csrr[ 	]+a0,spmpaddr10
+[ 	]+[0-9a-f]+:[ 	]+9ca59073[ 	]+csrw[ 	]+spmpaddr10,a1
+[ 	]+[0-9a-f]+:[ 	]+9cb02573[ 	]+csrr[ 	]+a0,spmpaddr11
+[ 	]+[0-9a-f]+:[ 	]+9cb59073[ 	]+csrw[ 	]+spmpaddr11,a1
+[ 	]+[0-9a-f]+:[ 	]+9cc02573[ 	]+csrr[ 	]+a0,spmpaddr12
+[ 	]+[0-9a-f]+:[ 	]+9cc59073[ 	]+csrw[ 	]+spmpaddr12,a1
+[ 	]+[0-9a-f]+:[ 	]+9cd02573[ 	]+csrr[ 	]+a0,spmpaddr13
+[ 	]+[0-9a-f]+:[ 	]+9cd59073[ 	]+csrw[ 	]+spmpaddr13,a1
+[ 	]+[0-9a-f]+:[ 	]+9ce02573[ 	]+csrr[ 	]+a0,spmpaddr14
+[ 	]+[0-9a-f]+:[ 	]+9ce59073[ 	]+csrw[ 	]+spmpaddr14,a1
+[ 	]+[0-9a-f]+:[ 	]+9cf02573[ 	]+csrr[ 	]+a0,spmpaddr15
+[ 	]+[0-9a-f]+:[ 	]+9cf59073[ 	]+csrw[ 	]+spmpaddr15,a1
+[ 	]+[0-9a-f]+:[ 	]+9d002573[ 	]+csrr[ 	]+a0,spmpaddr16
+[ 	]+[0-9a-f]+:[ 	]+9d059073[ 	]+csrw[ 	]+spmpaddr16,a1
+[ 	]+[0-9a-f]+:[ 	]+9d102573[ 	]+csrr[ 	]+a0,spmpaddr17
+[ 	]+[0-9a-f]+:[ 	]+9d159073[ 	]+csrw[ 	]+spmpaddr17,a1
+[ 	]+[0-9a-f]+:[ 	]+9d202573[ 	]+csrr[ 	]+a0,spmpaddr18
+[ 	]+[0-9a-f]+:[ 	]+9d259073[ 	]+csrw[ 	]+spmpaddr18,a1
+[ 	]+[0-9a-f]+:[ 	]+9d302573[ 	]+csrr[ 	]+a0,spmpaddr19
+[ 	]+[0-9a-f]+:[ 	]+9d359073[ 	]+csrw[ 	]+spmpaddr19,a1
+[ 	]+[0-9a-f]+:[ 	]+9d402573[ 	]+csrr[ 	]+a0,spmpaddr20
+[ 	]+[0-9a-f]+:[ 	]+9d459073[ 	]+csrw[ 	]+spmpaddr20,a1
+[ 	]+[0-9a-f]+:[ 	]+9d502573[ 	]+csrr[ 	]+a0,spmpaddr21
+[ 	]+[0-9a-f]+:[ 	]+9d559073[ 	]+csrw[ 	]+spmpaddr21,a1
+[ 	]+[0-9a-f]+:[ 	]+9d602573[ 	]+csrr[ 	]+a0,spmpaddr22
+[ 	]+[0-9a-f]+:[ 	]+9d659073[ 	]+csrw[ 	]+spmpaddr22,a1
+[ 	]+[0-9a-f]+:[ 	]+9d702573[ 	]+csrr[ 	]+a0,spmpaddr23
+[ 	]+[0-9a-f]+:[ 	]+9d759073[ 	]+csrw[ 	]+spmpaddr23,a1
+[ 	]+[0-9a-f]+:[ 	]+9d802573[ 	]+csrr[ 	]+a0,spmpaddr24
+[ 	]+[0-9a-f]+:[ 	]+9d859073[ 	]+csrw[ 	]+spmpaddr24,a1
+[ 	]+[0-9a-f]+:[ 	]+9d902573[ 	]+csrr[ 	]+a0,spmpaddr25
+[ 	]+[0-9a-f]+:[ 	]+9d959073[ 	]+csrw[ 	]+spmpaddr25,a1
+[ 	]+[0-9a-f]+:[ 	]+9da02573[ 	]+csrr[ 	]+a0,spmpaddr26
+[ 	]+[0-9a-f]+:[ 	]+9da59073[ 	]+csrw[ 	]+spmpaddr26,a1
+[ 	]+[0-9a-f]+:[ 	]+9db02573[ 	]+csrr[ 	]+a0,spmpaddr27
+[ 	]+[0-9a-f]+:[ 	]+9db59073[ 	]+csrw[ 	]+spmpaddr27,a1
+[ 	]+[0-9a-f]+:[ 	]+9dc02573[ 	]+csrr[ 	]+a0,spmpaddr28
+[ 	]+[0-9a-f]+:[ 	]+9dc59073[ 	]+csrw[ 	]+spmpaddr28,a1
+[ 	]+[0-9a-f]+:[ 	]+9dd02573[ 	]+csrr[ 	]+a0,spmpaddr29
+[ 	]+[0-9a-f]+:[ 	]+9dd59073[ 	]+csrw[ 	]+spmpaddr29,a1
+[ 	]+[0-9a-f]+:[ 	]+9de02573[ 	]+csrr[ 	]+a0,spmpaddr30
+[ 	]+[0-9a-f]+:[ 	]+9de59073[ 	]+csrw[ 	]+spmpaddr30,a1
+[ 	]+[0-9a-f]+:[ 	]+9df02573[ 	]+csrr[ 	]+a0,spmpaddr31
+[ 	]+[0-9a-f]+:[ 	]+9df59073[ 	]+csrw[ 	]+spmpaddr31,a1
+[ 	]+[0-9a-f]+:[ 	]+9e002573[ 	]+csrr[ 	]+a0,spmpaddr32
+[ 	]+[0-9a-f]+:[ 	]+9e059073[ 	]+csrw[ 	]+spmpaddr32,a1
+[ 	]+[0-9a-f]+:[ 	]+9e102573[ 	]+csrr[ 	]+a0,spmpaddr33
+[ 	]+[0-9a-f]+:[ 	]+9e159073[ 	]+csrw[ 	]+spmpaddr33,a1
+[ 	]+[0-9a-f]+:[ 	]+9e202573[ 	]+csrr[ 	]+a0,spmpaddr34
+[ 	]+[0-9a-f]+:[ 	]+9e259073[ 	]+csrw[ 	]+spmpaddr34,a1
+[ 	]+[0-9a-f]+:[ 	]+9e302573[ 	]+csrr[ 	]+a0,spmpaddr35
+[ 	]+[0-9a-f]+:[ 	]+9e359073[ 	]+csrw[ 	]+spmpaddr35,a1
+[ 	]+[0-9a-f]+:[ 	]+9e402573[ 	]+csrr[ 	]+a0,spmpaddr36
+[ 	]+[0-9a-f]+:[ 	]+9e459073[ 	]+csrw[ 	]+spmpaddr36,a1
+[ 	]+[0-9a-f]+:[ 	]+9e502573[ 	]+csrr[ 	]+a0,spmpaddr37
+[ 	]+[0-9a-f]+:[ 	]+9e559073[ 	]+csrw[ 	]+spmpaddr37,a1
+[ 	]+[0-9a-f]+:[ 	]+9e602573[ 	]+csrr[ 	]+a0,spmpaddr38
+[ 	]+[0-9a-f]+:[ 	]+9e659073[ 	]+csrw[ 	]+spmpaddr38,a1
+[ 	]+[0-9a-f]+:[ 	]+9e702573[ 	]+csrr[ 	]+a0,spmpaddr39
+[ 	]+[0-9a-f]+:[ 	]+9e759073[ 	]+csrw[ 	]+spmpaddr39,a1
+[ 	]+[0-9a-f]+:[ 	]+9e802573[ 	]+csrr[ 	]+a0,spmpaddr40
+[ 	]+[0-9a-f]+:[ 	]+9e859073[ 	]+csrw[ 	]+spmpaddr40,a1
+[ 	]+[0-9a-f]+:[ 	]+9e902573[ 	]+csrr[ 	]+a0,spmpaddr41
+[ 	]+[0-9a-f]+:[ 	]+9e959073[ 	]+csrw[ 	]+spmpaddr41,a1
+[ 	]+[0-9a-f]+:[ 	]+9ea02573[ 	]+csrr[ 	]+a0,spmpaddr42
+[ 	]+[0-9a-f]+:[ 	]+9ea59073[ 	]+csrw[ 	]+spmpaddr42,a1
+[ 	]+[0-9a-f]+:[ 	]+9eb02573[ 	]+csrr[ 	]+a0,spmpaddr43
+[ 	]+[0-9a-f]+:[ 	]+9eb59073[ 	]+csrw[ 	]+spmpaddr43,a1
+[ 	]+[0-9a-f]+:[ 	]+9ec02573[ 	]+csrr[ 	]+a0,spmpaddr44
+[ 	]+[0-9a-f]+:[ 	]+9ec59073[ 	]+csrw[ 	]+spmpaddr44,a1
+[ 	]+[0-9a-f]+:[ 	]+9ed02573[ 	]+csrr[ 	]+a0,spmpaddr45
+[ 	]+[0-9a-f]+:[ 	]+9ed59073[ 	]+csrw[ 	]+spmpaddr45,a1
+[ 	]+[0-9a-f]+:[ 	]+9ee02573[ 	]+csrr[ 	]+a0,spmpaddr46
+[ 	]+[0-9a-f]+:[ 	]+9ee59073[ 	]+csrw[ 	]+spmpaddr46,a1
+[ 	]+[0-9a-f]+:[ 	]+9ef02573[ 	]+csrr[ 	]+a0,spmpaddr47
+[ 	]+[0-9a-f]+:[ 	]+9ef59073[ 	]+csrw[ 	]+spmpaddr47,a1
+[ 	]+[0-9a-f]+:[ 	]+9f002573[ 	]+csrr[ 	]+a0,spmpaddr48
+[ 	]+[0-9a-f]+:[ 	]+9f059073[ 	]+csrw[ 	]+spmpaddr48,a1
+[ 	]+[0-9a-f]+:[ 	]+9f102573[ 	]+csrr[ 	]+a0,spmpaddr49
+[ 	]+[0-9a-f]+:[ 	]+9f159073[ 	]+csrw[ 	]+spmpaddr49,a1
+[ 	]+[0-9a-f]+:[ 	]+9f202573[ 	]+csrr[ 	]+a0,spmpaddr50
+[ 	]+[0-9a-f]+:[ 	]+9f259073[ 	]+csrw[ 	]+spmpaddr50,a1
+[ 	]+[0-9a-f]+:[ 	]+9f302573[ 	]+csrr[ 	]+a0,spmpaddr51
+[ 	]+[0-9a-f]+:[ 	]+9f359073[ 	]+csrw[ 	]+spmpaddr51,a1
+[ 	]+[0-9a-f]+:[ 	]+9f402573[ 	]+csrr[ 	]+a0,spmpaddr52
+[ 	]+[0-9a-f]+:[ 	]+9f459073[ 	]+csrw[ 	]+spmpaddr52,a1
+[ 	]+[0-9a-f]+:[ 	]+9f502573[ 	]+csrr[ 	]+a0,spmpaddr53
+[ 	]+[0-9a-f]+:[ 	]+9f559073[ 	]+csrw[ 	]+spmpaddr53,a1
+[ 	]+[0-9a-f]+:[ 	]+9f602573[ 	]+csrr[ 	]+a0,spmpaddr54
+[ 	]+[0-9a-f]+:[ 	]+9f659073[ 	]+csrw[ 	]+spmpaddr54,a1
+[ 	]+[0-9a-f]+:[ 	]+9f702573[ 	]+csrr[ 	]+a0,spmpaddr55
+[ 	]+[0-9a-f]+:[ 	]+9f759073[ 	]+csrw[ 	]+spmpaddr55,a1
+[ 	]+[0-9a-f]+:[ 	]+9f802573[ 	]+csrr[ 	]+a0,spmpaddr56
+[ 	]+[0-9a-f]+:[ 	]+9f859073[ 	]+csrw[ 	]+spmpaddr56,a1
+[ 	]+[0-9a-f]+:[ 	]+9f902573[ 	]+csrr[ 	]+a0,spmpaddr57
+[ 	]+[0-9a-f]+:[ 	]+9f959073[ 	]+csrw[ 	]+spmpaddr57,a1
+[ 	]+[0-9a-f]+:[ 	]+9fa02573[ 	]+csrr[ 	]+a0,spmpaddr58
+[ 	]+[0-9a-f]+:[ 	]+9fa59073[ 	]+csrw[ 	]+spmpaddr58,a1
+[ 	]+[0-9a-f]+:[ 	]+9fb02573[ 	]+csrr[ 	]+a0,spmpaddr59
+[ 	]+[0-9a-f]+:[ 	]+9fb59073[ 	]+csrw[ 	]+spmpaddr59,a1
+[ 	]+[0-9a-f]+:[ 	]+9fc02573[ 	]+csrr[ 	]+a0,spmpaddr60
+[ 	]+[0-9a-f]+:[ 	]+9fc59073[ 	]+csrw[ 	]+spmpaddr60,a1
+[ 	]+[0-9a-f]+:[ 	]+9fd02573[ 	]+csrr[ 	]+a0,spmpaddr61
+[ 	]+[0-9a-f]+:[ 	]+9fd59073[ 	]+csrw[ 	]+spmpaddr61,a1
+[ 	]+[0-9a-f]+:[ 	]+9fe02573[ 	]+csrr[ 	]+a0,spmpaddr62
+[ 	]+[0-9a-f]+:[ 	]+9fe59073[ 	]+csrw[ 	]+spmpaddr62,a1
+[ 	]+[0-9a-f]+:[ 	]+9ff02573[ 	]+csrr[ 	]+a0,spmpaddr63
+[ 	]+[0-9a-f]+:[ 	]+9ff59073[ 	]+csrw[ 	]+spmpaddr63,a1
 [ 	]+[0-9a-f]+:[ 	]+14d02573[ 	]+csrr[ 	]+a0,stimecmp
 [ 	]+[0-9a-f]+:[ 	]+14d59073[ 	]+csrw[ 	]+stimecmp,a1
 [ 	]+[0-9a-f]+:[ 	]+15d02573[ 	]+csrr[ 	]+a0,stimecmph
diff --git a/gas/testsuite/gas/riscv/csr-version-1p10.l b/gas/testsuite/gas/riscv/csr-version-1p10.l
index e677b78b8bb8..c1a91cee3c99 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p10.l
+++ b/gas/testsuite/gas/riscv/csr-version-1p10.l
@@ -727,6 +727,188 @@
 .*Warning: invalid CSR `mhpmevent31h', needs `sscofpmf' extension
 .*Warning: invalid CSR `mhpmevent31h', needs rv32i extension
 .*Warning: invalid CSR `mhpmevent31h', needs `sscofpmf' extension
+.*Warning: invalid CSR `spmpcfg0', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg0', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg1', needs rv32i extension
+.*Warning: invalid CSR `spmpcfg1', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg1', needs rv32i extension
+.*Warning: invalid CSR `spmpcfg1', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg2', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg2', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg3', needs rv32i extension
+.*Warning: invalid CSR `spmpcfg3', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg3', needs rv32i extension
+.*Warning: invalid CSR `spmpcfg3', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg4', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg4', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg5', needs rv32i extension
+.*Warning: invalid CSR `spmpcfg5', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg5', needs rv32i extension
+.*Warning: invalid CSR `spmpcfg5', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg6', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg6', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg7', needs rv32i extension
+.*Warning: invalid CSR `spmpcfg7', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg7', needs rv32i extension
+.*Warning: invalid CSR `spmpcfg7', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg8', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg8', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg9', needs rv32i extension
+.*Warning: invalid CSR `spmpcfg9', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg9', needs rv32i extension
+.*Warning: invalid CSR `spmpcfg9', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg10', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg10', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg11', needs rv32i extension
+.*Warning: invalid CSR `spmpcfg11', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg11', needs rv32i extension
+.*Warning: invalid CSR `spmpcfg11', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg12', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg12', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg13', needs rv32i extension
+.*Warning: invalid CSR `spmpcfg13', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg13', needs rv32i extension
+.*Warning: invalid CSR `spmpcfg13', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg14', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg14', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg15', needs rv32i extension
+.*Warning: invalid CSR `spmpcfg15', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg15', needs rv32i extension
+.*Warning: invalid CSR `spmpcfg15', needs `sspmp' extension
+.*Warning: invalid CSR `spmpswitch0', needs `sspmp' extension
+.*Warning: invalid CSR `spmpswitch0', needs `sspmp' extension
+.*Warning: invalid CSR `spmpswitch1', needs rv32i extension
+.*Warning: invalid CSR `spmpswitch1', needs `sspmp' extension
+.*Warning: invalid CSR `spmpswitch1', needs rv32i extension
+.*Warning: invalid CSR `spmpswitch1', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr0', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr0', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr1', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr1', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr2', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr2', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr3', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr3', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr4', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr4', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr5', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr5', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr6', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr6', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr7', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr7', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr8', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr8', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr9', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr9', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr10', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr10', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr11', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr11', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr12', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr12', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr13', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr13', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr14', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr14', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr15', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr15', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr16', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr16', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr17', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr17', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr18', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr18', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr19', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr19', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr20', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr20', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr21', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr21', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr22', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr22', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr23', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr23', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr24', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr24', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr25', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr25', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr26', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr26', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr27', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr27', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr28', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr28', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr29', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr29', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr30', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr30', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr31', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr31', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr32', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr32', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr33', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr33', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr34', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr34', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr35', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr35', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr36', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr36', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr37', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr37', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr38', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr38', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr39', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr39', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr40', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr40', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr41', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr41', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr42', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr42', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr43', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr43', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr44', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr44', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr45', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr45', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr46', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr46', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr47', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr47', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr48', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr48', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr49', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr49', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr50', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr50', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr51', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr51', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr52', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr52', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr53', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr53', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr54', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr54', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr55', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr55', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr56', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr56', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr57', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr57', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr58', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr58', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr59', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr59', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr60', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr60', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr61', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr61', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr62', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr62', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr63', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr63', needs `sspmp' extension
 .*Warning: invalid CSR `stimecmp', needs `sstc' extension
 .*Warning: invalid CSR `stimecmp', needs `sstc' extension
 .*Warning: invalid CSR `stimecmph', needs rv32i extension
diff --git a/gas/testsuite/gas/riscv/csr-version-1p11.d b/gas/testsuite/gas/riscv/csr-version-1p11.d
index a83b1bf68f98..ce8da6fac2f1 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p11.d
+++ b/gas/testsuite/gas/riscv/csr-version-1p11.d
@@ -765,6 +765,170 @@ Disassembly of section .text:
 [ 	]+[0-9a-f]+:[ 	]+73e59073[ 	]+csrw[ 	]+mhpmevent30h,a1
 [ 	]+[0-9a-f]+:[ 	]+73f02573[ 	]+csrr[ 	]+a0,mhpmevent31h
 [ 	]+[0-9a-f]+:[ 	]+73f59073[ 	]+csrw[ 	]+mhpmevent31h,a1
+[ 	]+[0-9a-f]+:[ 	]+5c002573[ 	]+csrr[ 	]+a0,spmpcfg0
+[ 	]+[0-9a-f]+:[ 	]+5c059073[ 	]+csrw[ 	]+spmpcfg0,a1
+[ 	]+[0-9a-f]+:[ 	]+5c102573[ 	]+csrr[ 	]+a0,spmpcfg1
+[ 	]+[0-9a-f]+:[ 	]+5c159073[ 	]+csrw[ 	]+spmpcfg1,a1
+[ 	]+[0-9a-f]+:[ 	]+5c202573[ 	]+csrr[ 	]+a0,spmpcfg2
+[ 	]+[0-9a-f]+:[ 	]+5c259073[ 	]+csrw[ 	]+spmpcfg2,a1
+[ 	]+[0-9a-f]+:[ 	]+5c302573[ 	]+csrr[ 	]+a0,spmpcfg3
+[ 	]+[0-9a-f]+:[ 	]+5c359073[ 	]+csrw[ 	]+spmpcfg3,a1
+[ 	]+[0-9a-f]+:[ 	]+5c402573[ 	]+csrr[ 	]+a0,spmpcfg4
+[ 	]+[0-9a-f]+:[ 	]+5c459073[ 	]+csrw[ 	]+spmpcfg4,a1
+[ 	]+[0-9a-f]+:[ 	]+5c502573[ 	]+csrr[ 	]+a0,spmpcfg5
+[ 	]+[0-9a-f]+:[ 	]+5c559073[ 	]+csrw[ 	]+spmpcfg5,a1
+[ 	]+[0-9a-f]+:[ 	]+5c602573[ 	]+csrr[ 	]+a0,spmpcfg6
+[ 	]+[0-9a-f]+:[ 	]+5c659073[ 	]+csrw[ 	]+spmpcfg6,a1
+[ 	]+[0-9a-f]+:[ 	]+5c702573[ 	]+csrr[ 	]+a0,spmpcfg7
+[ 	]+[0-9a-f]+:[ 	]+5c759073[ 	]+csrw[ 	]+spmpcfg7,a1
+[ 	]+[0-9a-f]+:[ 	]+5c802573[ 	]+csrr[ 	]+a0,spmpcfg8
+[ 	]+[0-9a-f]+:[ 	]+5c859073[ 	]+csrw[ 	]+spmpcfg8,a1
+[ 	]+[0-9a-f]+:[ 	]+5c902573[ 	]+csrr[ 	]+a0,spmpcfg9
+[ 	]+[0-9a-f]+:[ 	]+5c959073[ 	]+csrw[ 	]+spmpcfg9,a1
+[ 	]+[0-9a-f]+:[ 	]+5ca02573[ 	]+csrr[ 	]+a0,spmpcfg10
+[ 	]+[0-9a-f]+:[ 	]+5ca59073[ 	]+csrw[ 	]+spmpcfg10,a1
+[ 	]+[0-9a-f]+:[ 	]+5cb02573[ 	]+csrr[ 	]+a0,spmpcfg11
+[ 	]+[0-9a-f]+:[ 	]+5cb59073[ 	]+csrw[ 	]+spmpcfg11,a1
+[ 	]+[0-9a-f]+:[ 	]+5cc02573[ 	]+csrr[ 	]+a0,spmpcfg12
+[ 	]+[0-9a-f]+:[ 	]+5cc59073[ 	]+csrw[ 	]+spmpcfg12,a1
+[ 	]+[0-9a-f]+:[ 	]+5cd02573[ 	]+csrr[ 	]+a0,spmpcfg13
+[ 	]+[0-9a-f]+:[ 	]+5cd59073[ 	]+csrw[ 	]+spmpcfg13,a1
+[ 	]+[0-9a-f]+:[ 	]+5ce02573[ 	]+csrr[ 	]+a0,spmpcfg14
+[ 	]+[0-9a-f]+:[ 	]+5ce59073[ 	]+csrw[ 	]+spmpcfg14,a1
+[ 	]+[0-9a-f]+:[ 	]+5cf02573[ 	]+csrr[ 	]+a0,spmpcfg15
+[ 	]+[0-9a-f]+:[ 	]+5cf59073[ 	]+csrw[ 	]+spmpcfg15,a1
+[ 	]+[0-9a-f]+:[ 	]+5d002573[ 	]+csrr[ 	]+a0,spmpswitch0
+[ 	]+[0-9a-f]+:[ 	]+5d059073[ 	]+csrw[ 	]+spmpswitch0,a1
+[ 	]+[0-9a-f]+:[ 	]+5d102573[ 	]+csrr[ 	]+a0,spmpswitch1
+[ 	]+[0-9a-f]+:[ 	]+5d159073[ 	]+csrw[ 	]+spmpswitch1,a1
+[ 	]+[0-9a-f]+:[ 	]+9c002573[ 	]+csrr[ 	]+a0,spmpaddr0
+[ 	]+[0-9a-f]+:[ 	]+9c059073[ 	]+csrw[ 	]+spmpaddr0,a1
+[ 	]+[0-9a-f]+:[ 	]+9c102573[ 	]+csrr[ 	]+a0,spmpaddr1
+[ 	]+[0-9a-f]+:[ 	]+9c159073[ 	]+csrw[ 	]+spmpaddr1,a1
+[ 	]+[0-9a-f]+:[ 	]+9c202573[ 	]+csrr[ 	]+a0,spmpaddr2
+[ 	]+[0-9a-f]+:[ 	]+9c259073[ 	]+csrw[ 	]+spmpaddr2,a1
+[ 	]+[0-9a-f]+:[ 	]+9c302573[ 	]+csrr[ 	]+a0,spmpaddr3
+[ 	]+[0-9a-f]+:[ 	]+9c359073[ 	]+csrw[ 	]+spmpaddr3,a1
+[ 	]+[0-9a-f]+:[ 	]+9c402573[ 	]+csrr[ 	]+a0,spmpaddr4
+[ 	]+[0-9a-f]+:[ 	]+9c459073[ 	]+csrw[ 	]+spmpaddr4,a1
+[ 	]+[0-9a-f]+:[ 	]+9c502573[ 	]+csrr[ 	]+a0,spmpaddr5
+[ 	]+[0-9a-f]+:[ 	]+9c559073[ 	]+csrw[ 	]+spmpaddr5,a1
+[ 	]+[0-9a-f]+:[ 	]+9c602573[ 	]+csrr[ 	]+a0,spmpaddr6
+[ 	]+[0-9a-f]+:[ 	]+9c659073[ 	]+csrw[ 	]+spmpaddr6,a1
+[ 	]+[0-9a-f]+:[ 	]+9c702573[ 	]+csrr[ 	]+a0,spmpaddr7
+[ 	]+[0-9a-f]+:[ 	]+9c759073[ 	]+csrw[ 	]+spmpaddr7,a1
+[ 	]+[0-9a-f]+:[ 	]+9c802573[ 	]+csrr[ 	]+a0,spmpaddr8
+[ 	]+[0-9a-f]+:[ 	]+9c859073[ 	]+csrw[ 	]+spmpaddr8,a1
+[ 	]+[0-9a-f]+:[ 	]+9c902573[ 	]+csrr[ 	]+a0,spmpaddr9
+[ 	]+[0-9a-f]+:[ 	]+9c959073[ 	]+csrw[ 	]+spmpaddr9,a1
+[ 	]+[0-9a-f]+:[ 	]+9ca02573[ 	]+csrr[ 	]+a0,spmpaddr10
+[ 	]+[0-9a-f]+:[ 	]+9ca59073[ 	]+csrw[ 	]+spmpaddr10,a1
+[ 	]+[0-9a-f]+:[ 	]+9cb02573[ 	]+csrr[ 	]+a0,spmpaddr11
+[ 	]+[0-9a-f]+:[ 	]+9cb59073[ 	]+csrw[ 	]+spmpaddr11,a1
+[ 	]+[0-9a-f]+:[ 	]+9cc02573[ 	]+csrr[ 	]+a0,spmpaddr12
+[ 	]+[0-9a-f]+:[ 	]+9cc59073[ 	]+csrw[ 	]+spmpaddr12,a1
+[ 	]+[0-9a-f]+:[ 	]+9cd02573[ 	]+csrr[ 	]+a0,spmpaddr13
+[ 	]+[0-9a-f]+:[ 	]+9cd59073[ 	]+csrw[ 	]+spmpaddr13,a1
+[ 	]+[0-9a-f]+:[ 	]+9ce02573[ 	]+csrr[ 	]+a0,spmpaddr14
+[ 	]+[0-9a-f]+:[ 	]+9ce59073[ 	]+csrw[ 	]+spmpaddr14,a1
+[ 	]+[0-9a-f]+:[ 	]+9cf02573[ 	]+csrr[ 	]+a0,spmpaddr15
+[ 	]+[0-9a-f]+:[ 	]+9cf59073[ 	]+csrw[ 	]+spmpaddr15,a1
+[ 	]+[0-9a-f]+:[ 	]+9d002573[ 	]+csrr[ 	]+a0,spmpaddr16
+[ 	]+[0-9a-f]+:[ 	]+9d059073[ 	]+csrw[ 	]+spmpaddr16,a1
+[ 	]+[0-9a-f]+:[ 	]+9d102573[ 	]+csrr[ 	]+a0,spmpaddr17
+[ 	]+[0-9a-f]+:[ 	]+9d159073[ 	]+csrw[ 	]+spmpaddr17,a1
+[ 	]+[0-9a-f]+:[ 	]+9d202573[ 	]+csrr[ 	]+a0,spmpaddr18
+[ 	]+[0-9a-f]+:[ 	]+9d259073[ 	]+csrw[ 	]+spmpaddr18,a1
+[ 	]+[0-9a-f]+:[ 	]+9d302573[ 	]+csrr[ 	]+a0,spmpaddr19
+[ 	]+[0-9a-f]+:[ 	]+9d359073[ 	]+csrw[ 	]+spmpaddr19,a1
+[ 	]+[0-9a-f]+:[ 	]+9d402573[ 	]+csrr[ 	]+a0,spmpaddr20
+[ 	]+[0-9a-f]+:[ 	]+9d459073[ 	]+csrw[ 	]+spmpaddr20,a1
+[ 	]+[0-9a-f]+:[ 	]+9d502573[ 	]+csrr[ 	]+a0,spmpaddr21
+[ 	]+[0-9a-f]+:[ 	]+9d559073[ 	]+csrw[ 	]+spmpaddr21,a1
+[ 	]+[0-9a-f]+:[ 	]+9d602573[ 	]+csrr[ 	]+a0,spmpaddr22
+[ 	]+[0-9a-f]+:[ 	]+9d659073[ 	]+csrw[ 	]+spmpaddr22,a1
+[ 	]+[0-9a-f]+:[ 	]+9d702573[ 	]+csrr[ 	]+a0,spmpaddr23
+[ 	]+[0-9a-f]+:[ 	]+9d759073[ 	]+csrw[ 	]+spmpaddr23,a1
+[ 	]+[0-9a-f]+:[ 	]+9d802573[ 	]+csrr[ 	]+a0,spmpaddr24
+[ 	]+[0-9a-f]+:[ 	]+9d859073[ 	]+csrw[ 	]+spmpaddr24,a1
+[ 	]+[0-9a-f]+:[ 	]+9d902573[ 	]+csrr[ 	]+a0,spmpaddr25
+[ 	]+[0-9a-f]+:[ 	]+9d959073[ 	]+csrw[ 	]+spmpaddr25,a1
+[ 	]+[0-9a-f]+:[ 	]+9da02573[ 	]+csrr[ 	]+a0,spmpaddr26
+[ 	]+[0-9a-f]+:[ 	]+9da59073[ 	]+csrw[ 	]+spmpaddr26,a1
+[ 	]+[0-9a-f]+:[ 	]+9db02573[ 	]+csrr[ 	]+a0,spmpaddr27
+[ 	]+[0-9a-f]+:[ 	]+9db59073[ 	]+csrw[ 	]+spmpaddr27,a1
+[ 	]+[0-9a-f]+:[ 	]+9dc02573[ 	]+csrr[ 	]+a0,spmpaddr28
+[ 	]+[0-9a-f]+:[ 	]+9dc59073[ 	]+csrw[ 	]+spmpaddr28,a1
+[ 	]+[0-9a-f]+:[ 	]+9dd02573[ 	]+csrr[ 	]+a0,spmpaddr29
+[ 	]+[0-9a-f]+:[ 	]+9dd59073[ 	]+csrw[ 	]+spmpaddr29,a1
+[ 	]+[0-9a-f]+:[ 	]+9de02573[ 	]+csrr[ 	]+a0,spmpaddr30
+[ 	]+[0-9a-f]+:[ 	]+9de59073[ 	]+csrw[ 	]+spmpaddr30,a1
+[ 	]+[0-9a-f]+:[ 	]+9df02573[ 	]+csrr[ 	]+a0,spmpaddr31
+[ 	]+[0-9a-f]+:[ 	]+9df59073[ 	]+csrw[ 	]+spmpaddr31,a1
+[ 	]+[0-9a-f]+:[ 	]+9e002573[ 	]+csrr[ 	]+a0,spmpaddr32
+[ 	]+[0-9a-f]+:[ 	]+9e059073[ 	]+csrw[ 	]+spmpaddr32,a1
+[ 	]+[0-9a-f]+:[ 	]+9e102573[ 	]+csrr[ 	]+a0,spmpaddr33
+[ 	]+[0-9a-f]+:[ 	]+9e159073[ 	]+csrw[ 	]+spmpaddr33,a1
+[ 	]+[0-9a-f]+:[ 	]+9e202573[ 	]+csrr[ 	]+a0,spmpaddr34
+[ 	]+[0-9a-f]+:[ 	]+9e259073[ 	]+csrw[ 	]+spmpaddr34,a1
+[ 	]+[0-9a-f]+:[ 	]+9e302573[ 	]+csrr[ 	]+a0,spmpaddr35
+[ 	]+[0-9a-f]+:[ 	]+9e359073[ 	]+csrw[ 	]+spmpaddr35,a1
+[ 	]+[0-9a-f]+:[ 	]+9e402573[ 	]+csrr[ 	]+a0,spmpaddr36
+[ 	]+[0-9a-f]+:[ 	]+9e459073[ 	]+csrw[ 	]+spmpaddr36,a1
+[ 	]+[0-9a-f]+:[ 	]+9e502573[ 	]+csrr[ 	]+a0,spmpaddr37
+[ 	]+[0-9a-f]+:[ 	]+9e559073[ 	]+csrw[ 	]+spmpaddr37,a1
+[ 	]+[0-9a-f]+:[ 	]+9e602573[ 	]+csrr[ 	]+a0,spmpaddr38
+[ 	]+[0-9a-f]+:[ 	]+9e659073[ 	]+csrw[ 	]+spmpaddr38,a1
+[ 	]+[0-9a-f]+:[ 	]+9e702573[ 	]+csrr[ 	]+a0,spmpaddr39
+[ 	]+[0-9a-f]+:[ 	]+9e759073[ 	]+csrw[ 	]+spmpaddr39,a1
+[ 	]+[0-9a-f]+:[ 	]+9e802573[ 	]+csrr[ 	]+a0,spmpaddr40
+[ 	]+[0-9a-f]+:[ 	]+9e859073[ 	]+csrw[ 	]+spmpaddr40,a1
+[ 	]+[0-9a-f]+:[ 	]+9e902573[ 	]+csrr[ 	]+a0,spmpaddr41
+[ 	]+[0-9a-f]+:[ 	]+9e959073[ 	]+csrw[ 	]+spmpaddr41,a1
+[ 	]+[0-9a-f]+:[ 	]+9ea02573[ 	]+csrr[ 	]+a0,spmpaddr42
+[ 	]+[0-9a-f]+:[ 	]+9ea59073[ 	]+csrw[ 	]+spmpaddr42,a1
+[ 	]+[0-9a-f]+:[ 	]+9eb02573[ 	]+csrr[ 	]+a0,spmpaddr43
+[ 	]+[0-9a-f]+:[ 	]+9eb59073[ 	]+csrw[ 	]+spmpaddr43,a1
+[ 	]+[0-9a-f]+:[ 	]+9ec02573[ 	]+csrr[ 	]+a0,spmpaddr44
+[ 	]+[0-9a-f]+:[ 	]+9ec59073[ 	]+csrw[ 	]+spmpaddr44,a1
+[ 	]+[0-9a-f]+:[ 	]+9ed02573[ 	]+csrr[ 	]+a0,spmpaddr45
+[ 	]+[0-9a-f]+:[ 	]+9ed59073[ 	]+csrw[ 	]+spmpaddr45,a1
+[ 	]+[0-9a-f]+:[ 	]+9ee02573[ 	]+csrr[ 	]+a0,spmpaddr46
+[ 	]+[0-9a-f]+:[ 	]+9ee59073[ 	]+csrw[ 	]+spmpaddr46,a1
+[ 	]+[0-9a-f]+:[ 	]+9ef02573[ 	]+csrr[ 	]+a0,spmpaddr47
+[ 	]+[0-9a-f]+:[ 	]+9ef59073[ 	]+csrw[ 	]+spmpaddr47,a1
+[ 	]+[0-9a-f]+:[ 	]+9f002573[ 	]+csrr[ 	]+a0,spmpaddr48
+[ 	]+[0-9a-f]+:[ 	]+9f059073[ 	]+csrw[ 	]+spmpaddr48,a1
+[ 	]+[0-9a-f]+:[ 	]+9f102573[ 	]+csrr[ 	]+a0,spmpaddr49
+[ 	]+[0-9a-f]+:[ 	]+9f159073[ 	]+csrw[ 	]+spmpaddr49,a1
+[ 	]+[0-9a-f]+:[ 	]+9f202573[ 	]+csrr[ 	]+a0,spmpaddr50
+[ 	]+[0-9a-f]+:[ 	]+9f259073[ 	]+csrw[ 	]+spmpaddr50,a1
+[ 	]+[0-9a-f]+:[ 	]+9f302573[ 	]+csrr[ 	]+a0,spmpaddr51
+[ 	]+[0-9a-f]+:[ 	]+9f359073[ 	]+csrw[ 	]+spmpaddr51,a1
+[ 	]+[0-9a-f]+:[ 	]+9f402573[ 	]+csrr[ 	]+a0,spmpaddr52
+[ 	]+[0-9a-f]+:[ 	]+9f459073[ 	]+csrw[ 	]+spmpaddr52,a1
+[ 	]+[0-9a-f]+:[ 	]+9f502573[ 	]+csrr[ 	]+a0,spmpaddr53
+[ 	]+[0-9a-f]+:[ 	]+9f559073[ 	]+csrw[ 	]+spmpaddr53,a1
+[ 	]+[0-9a-f]+:[ 	]+9f602573[ 	]+csrr[ 	]+a0,spmpaddr54
+[ 	]+[0-9a-f]+:[ 	]+9f659073[ 	]+csrw[ 	]+spmpaddr54,a1
+[ 	]+[0-9a-f]+:[ 	]+9f702573[ 	]+csrr[ 	]+a0,spmpaddr55
+[ 	]+[0-9a-f]+:[ 	]+9f759073[ 	]+csrw[ 	]+spmpaddr55,a1
+[ 	]+[0-9a-f]+:[ 	]+9f802573[ 	]+csrr[ 	]+a0,spmpaddr56
+[ 	]+[0-9a-f]+:[ 	]+9f859073[ 	]+csrw[ 	]+spmpaddr56,a1
+[ 	]+[0-9a-f]+:[ 	]+9f902573[ 	]+csrr[ 	]+a0,spmpaddr57
+[ 	]+[0-9a-f]+:[ 	]+9f959073[ 	]+csrw[ 	]+spmpaddr57,a1
+[ 	]+[0-9a-f]+:[ 	]+9fa02573[ 	]+csrr[ 	]+a0,spmpaddr58
+[ 	]+[0-9a-f]+:[ 	]+9fa59073[ 	]+csrw[ 	]+spmpaddr58,a1
+[ 	]+[0-9a-f]+:[ 	]+9fb02573[ 	]+csrr[ 	]+a0,spmpaddr59
+[ 	]+[0-9a-f]+:[ 	]+9fb59073[ 	]+csrw[ 	]+spmpaddr59,a1
+[ 	]+[0-9a-f]+:[ 	]+9fc02573[ 	]+csrr[ 	]+a0,spmpaddr60
+[ 	]+[0-9a-f]+:[ 	]+9fc59073[ 	]+csrw[ 	]+spmpaddr60,a1
+[ 	]+[0-9a-f]+:[ 	]+9fd02573[ 	]+csrr[ 	]+a0,spmpaddr61
+[ 	]+[0-9a-f]+:[ 	]+9fd59073[ 	]+csrw[ 	]+spmpaddr61,a1
+[ 	]+[0-9a-f]+:[ 	]+9fe02573[ 	]+csrr[ 	]+a0,spmpaddr62
+[ 	]+[0-9a-f]+:[ 	]+9fe59073[ 	]+csrw[ 	]+spmpaddr62,a1
+[ 	]+[0-9a-f]+:[ 	]+9ff02573[ 	]+csrr[ 	]+a0,spmpaddr63
+[ 	]+[0-9a-f]+:[ 	]+9ff59073[ 	]+csrw[ 	]+spmpaddr63,a1
 [ 	]+[0-9a-f]+:[ 	]+14d02573[ 	]+csrr[ 	]+a0,stimecmp
 [ 	]+[0-9a-f]+:[ 	]+14d59073[ 	]+csrw[ 	]+stimecmp,a1
 [ 	]+[0-9a-f]+:[ 	]+15d02573[ 	]+csrr[ 	]+a0,stimecmph
diff --git a/gas/testsuite/gas/riscv/csr-version-1p11.l b/gas/testsuite/gas/riscv/csr-version-1p11.l
index 81ca86ca7bcc..542e3a70f34b 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p11.l
+++ b/gas/testsuite/gas/riscv/csr-version-1p11.l
@@ -725,6 +725,188 @@
 .*Warning: invalid CSR `mhpmevent31h', needs `sscofpmf' extension
 .*Warning: invalid CSR `mhpmevent31h', needs rv32i extension
 .*Warning: invalid CSR `mhpmevent31h', needs `sscofpmf' extension
+.*Warning: invalid CSR `spmpcfg0', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg0', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg1', needs rv32i extension
+.*Warning: invalid CSR `spmpcfg1', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg1', needs rv32i extension
+.*Warning: invalid CSR `spmpcfg1', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg2', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg2', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg3', needs rv32i extension
+.*Warning: invalid CSR `spmpcfg3', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg3', needs rv32i extension
+.*Warning: invalid CSR `spmpcfg3', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg4', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg4', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg5', needs rv32i extension
+.*Warning: invalid CSR `spmpcfg5', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg5', needs rv32i extension
+.*Warning: invalid CSR `spmpcfg5', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg6', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg6', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg7', needs rv32i extension
+.*Warning: invalid CSR `spmpcfg7', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg7', needs rv32i extension
+.*Warning: invalid CSR `spmpcfg7', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg8', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg8', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg9', needs rv32i extension
+.*Warning: invalid CSR `spmpcfg9', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg9', needs rv32i extension
+.*Warning: invalid CSR `spmpcfg9', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg10', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg10', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg11', needs rv32i extension
+.*Warning: invalid CSR `spmpcfg11', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg11', needs rv32i extension
+.*Warning: invalid CSR `spmpcfg11', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg12', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg12', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg13', needs rv32i extension
+.*Warning: invalid CSR `spmpcfg13', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg13', needs rv32i extension
+.*Warning: invalid CSR `spmpcfg13', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg14', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg14', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg15', needs rv32i extension
+.*Warning: invalid CSR `spmpcfg15', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg15', needs rv32i extension
+.*Warning: invalid CSR `spmpcfg15', needs `sspmp' extension
+.*Warning: invalid CSR `spmpswitch0', needs `sspmp' extension
+.*Warning: invalid CSR `spmpswitch0', needs `sspmp' extension
+.*Warning: invalid CSR `spmpswitch1', needs rv32i extension
+.*Warning: invalid CSR `spmpswitch1', needs `sspmp' extension
+.*Warning: invalid CSR `spmpswitch1', needs rv32i extension
+.*Warning: invalid CSR `spmpswitch1', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr0', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr0', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr1', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr1', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr2', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr2', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr3', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr3', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr4', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr4', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr5', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr5', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr6', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr6', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr7', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr7', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr8', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr8', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr9', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr9', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr10', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr10', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr11', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr11', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr12', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr12', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr13', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr13', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr14', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr14', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr15', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr15', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr16', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr16', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr17', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr17', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr18', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr18', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr19', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr19', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr20', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr20', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr21', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr21', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr22', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr22', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr23', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr23', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr24', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr24', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr25', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr25', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr26', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr26', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr27', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr27', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr28', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr28', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr29', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr29', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr30', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr30', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr31', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr31', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr32', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr32', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr33', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr33', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr34', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr34', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr35', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr35', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr36', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr36', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr37', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr37', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr38', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr38', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr39', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr39', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr40', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr40', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr41', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr41', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr42', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr42', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr43', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr43', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr44', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr44', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr45', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr45', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr46', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr46', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr47', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr47', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr48', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr48', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr49', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr49', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr50', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr50', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr51', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr51', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr52', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr52', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr53', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr53', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr54', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr54', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr55', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr55', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr56', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr56', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr57', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr57', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr58', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr58', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr59', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr59', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr60', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr60', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr61', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr61', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr62', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr62', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr63', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr63', needs `sspmp' extension
 .*Warning: invalid CSR `stimecmp', needs `sstc' extension
 .*Warning: invalid CSR `stimecmp', needs `sstc' extension
 .*Warning: invalid CSR `stimecmph', needs rv32i extension
diff --git a/gas/testsuite/gas/riscv/csr-version-1p12.d b/gas/testsuite/gas/riscv/csr-version-1p12.d
index 612aac280768..c1c31bbbf79b 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p12.d
+++ b/gas/testsuite/gas/riscv/csr-version-1p12.d
@@ -765,6 +765,170 @@ Disassembly of section .text:
 [ 	]+[0-9a-f]+:[ 	]+73e59073[ 	]+csrw[ 	]+mhpmevent30h,a1
 [ 	]+[0-9a-f]+:[ 	]+73f02573[ 	]+csrr[ 	]+a0,mhpmevent31h
 [ 	]+[0-9a-f]+:[ 	]+73f59073[ 	]+csrw[ 	]+mhpmevent31h,a1
+[ 	]+[0-9a-f]+:[ 	]+5c002573[ 	]+csrr[ 	]+a0,spmpcfg0
+[ 	]+[0-9a-f]+:[ 	]+5c059073[ 	]+csrw[ 	]+spmpcfg0,a1
+[ 	]+[0-9a-f]+:[ 	]+5c102573[ 	]+csrr[ 	]+a0,spmpcfg1
+[ 	]+[0-9a-f]+:[ 	]+5c159073[ 	]+csrw[ 	]+spmpcfg1,a1
+[ 	]+[0-9a-f]+:[ 	]+5c202573[ 	]+csrr[ 	]+a0,spmpcfg2
+[ 	]+[0-9a-f]+:[ 	]+5c259073[ 	]+csrw[ 	]+spmpcfg2,a1
+[ 	]+[0-9a-f]+:[ 	]+5c302573[ 	]+csrr[ 	]+a0,spmpcfg3
+[ 	]+[0-9a-f]+:[ 	]+5c359073[ 	]+csrw[ 	]+spmpcfg3,a1
+[ 	]+[0-9a-f]+:[ 	]+5c402573[ 	]+csrr[ 	]+a0,spmpcfg4
+[ 	]+[0-9a-f]+:[ 	]+5c459073[ 	]+csrw[ 	]+spmpcfg4,a1
+[ 	]+[0-9a-f]+:[ 	]+5c502573[ 	]+csrr[ 	]+a0,spmpcfg5
+[ 	]+[0-9a-f]+:[ 	]+5c559073[ 	]+csrw[ 	]+spmpcfg5,a1
+[ 	]+[0-9a-f]+:[ 	]+5c602573[ 	]+csrr[ 	]+a0,spmpcfg6
+[ 	]+[0-9a-f]+:[ 	]+5c659073[ 	]+csrw[ 	]+spmpcfg6,a1
+[ 	]+[0-9a-f]+:[ 	]+5c702573[ 	]+csrr[ 	]+a0,spmpcfg7
+[ 	]+[0-9a-f]+:[ 	]+5c759073[ 	]+csrw[ 	]+spmpcfg7,a1
+[ 	]+[0-9a-f]+:[ 	]+5c802573[ 	]+csrr[ 	]+a0,spmpcfg8
+[ 	]+[0-9a-f]+:[ 	]+5c859073[ 	]+csrw[ 	]+spmpcfg8,a1
+[ 	]+[0-9a-f]+:[ 	]+5c902573[ 	]+csrr[ 	]+a0,spmpcfg9
+[ 	]+[0-9a-f]+:[ 	]+5c959073[ 	]+csrw[ 	]+spmpcfg9,a1
+[ 	]+[0-9a-f]+:[ 	]+5ca02573[ 	]+csrr[ 	]+a0,spmpcfg10
+[ 	]+[0-9a-f]+:[ 	]+5ca59073[ 	]+csrw[ 	]+spmpcfg10,a1
+[ 	]+[0-9a-f]+:[ 	]+5cb02573[ 	]+csrr[ 	]+a0,spmpcfg11
+[ 	]+[0-9a-f]+:[ 	]+5cb59073[ 	]+csrw[ 	]+spmpcfg11,a1
+[ 	]+[0-9a-f]+:[ 	]+5cc02573[ 	]+csrr[ 	]+a0,spmpcfg12
+[ 	]+[0-9a-f]+:[ 	]+5cc59073[ 	]+csrw[ 	]+spmpcfg12,a1
+[ 	]+[0-9a-f]+:[ 	]+5cd02573[ 	]+csrr[ 	]+a0,spmpcfg13
+[ 	]+[0-9a-f]+:[ 	]+5cd59073[ 	]+csrw[ 	]+spmpcfg13,a1
+[ 	]+[0-9a-f]+:[ 	]+5ce02573[ 	]+csrr[ 	]+a0,spmpcfg14
+[ 	]+[0-9a-f]+:[ 	]+5ce59073[ 	]+csrw[ 	]+spmpcfg14,a1
+[ 	]+[0-9a-f]+:[ 	]+5cf02573[ 	]+csrr[ 	]+a0,spmpcfg15
+[ 	]+[0-9a-f]+:[ 	]+5cf59073[ 	]+csrw[ 	]+spmpcfg15,a1
+[ 	]+[0-9a-f]+:[ 	]+5d002573[ 	]+csrr[ 	]+a0,spmpswitch0
+[ 	]+[0-9a-f]+:[ 	]+5d059073[ 	]+csrw[ 	]+spmpswitch0,a1
+[ 	]+[0-9a-f]+:[ 	]+5d102573[ 	]+csrr[ 	]+a0,spmpswitch1
+[ 	]+[0-9a-f]+:[ 	]+5d159073[ 	]+csrw[ 	]+spmpswitch1,a1
+[ 	]+[0-9a-f]+:[ 	]+9c002573[ 	]+csrr[ 	]+a0,spmpaddr0
+[ 	]+[0-9a-f]+:[ 	]+9c059073[ 	]+csrw[ 	]+spmpaddr0,a1
+[ 	]+[0-9a-f]+:[ 	]+9c102573[ 	]+csrr[ 	]+a0,spmpaddr1
+[ 	]+[0-9a-f]+:[ 	]+9c159073[ 	]+csrw[ 	]+spmpaddr1,a1
+[ 	]+[0-9a-f]+:[ 	]+9c202573[ 	]+csrr[ 	]+a0,spmpaddr2
+[ 	]+[0-9a-f]+:[ 	]+9c259073[ 	]+csrw[ 	]+spmpaddr2,a1
+[ 	]+[0-9a-f]+:[ 	]+9c302573[ 	]+csrr[ 	]+a0,spmpaddr3
+[ 	]+[0-9a-f]+:[ 	]+9c359073[ 	]+csrw[ 	]+spmpaddr3,a1
+[ 	]+[0-9a-f]+:[ 	]+9c402573[ 	]+csrr[ 	]+a0,spmpaddr4
+[ 	]+[0-9a-f]+:[ 	]+9c459073[ 	]+csrw[ 	]+spmpaddr4,a1
+[ 	]+[0-9a-f]+:[ 	]+9c502573[ 	]+csrr[ 	]+a0,spmpaddr5
+[ 	]+[0-9a-f]+:[ 	]+9c559073[ 	]+csrw[ 	]+spmpaddr5,a1
+[ 	]+[0-9a-f]+:[ 	]+9c602573[ 	]+csrr[ 	]+a0,spmpaddr6
+[ 	]+[0-9a-f]+:[ 	]+9c659073[ 	]+csrw[ 	]+spmpaddr6,a1
+[ 	]+[0-9a-f]+:[ 	]+9c702573[ 	]+csrr[ 	]+a0,spmpaddr7
+[ 	]+[0-9a-f]+:[ 	]+9c759073[ 	]+csrw[ 	]+spmpaddr7,a1
+[ 	]+[0-9a-f]+:[ 	]+9c802573[ 	]+csrr[ 	]+a0,spmpaddr8
+[ 	]+[0-9a-f]+:[ 	]+9c859073[ 	]+csrw[ 	]+spmpaddr8,a1
+[ 	]+[0-9a-f]+:[ 	]+9c902573[ 	]+csrr[ 	]+a0,spmpaddr9
+[ 	]+[0-9a-f]+:[ 	]+9c959073[ 	]+csrw[ 	]+spmpaddr9,a1
+[ 	]+[0-9a-f]+:[ 	]+9ca02573[ 	]+csrr[ 	]+a0,spmpaddr10
+[ 	]+[0-9a-f]+:[ 	]+9ca59073[ 	]+csrw[ 	]+spmpaddr10,a1
+[ 	]+[0-9a-f]+:[ 	]+9cb02573[ 	]+csrr[ 	]+a0,spmpaddr11
+[ 	]+[0-9a-f]+:[ 	]+9cb59073[ 	]+csrw[ 	]+spmpaddr11,a1
+[ 	]+[0-9a-f]+:[ 	]+9cc02573[ 	]+csrr[ 	]+a0,spmpaddr12
+[ 	]+[0-9a-f]+:[ 	]+9cc59073[ 	]+csrw[ 	]+spmpaddr12,a1
+[ 	]+[0-9a-f]+:[ 	]+9cd02573[ 	]+csrr[ 	]+a0,spmpaddr13
+[ 	]+[0-9a-f]+:[ 	]+9cd59073[ 	]+csrw[ 	]+spmpaddr13,a1
+[ 	]+[0-9a-f]+:[ 	]+9ce02573[ 	]+csrr[ 	]+a0,spmpaddr14
+[ 	]+[0-9a-f]+:[ 	]+9ce59073[ 	]+csrw[ 	]+spmpaddr14,a1
+[ 	]+[0-9a-f]+:[ 	]+9cf02573[ 	]+csrr[ 	]+a0,spmpaddr15
+[ 	]+[0-9a-f]+:[ 	]+9cf59073[ 	]+csrw[ 	]+spmpaddr15,a1
+[ 	]+[0-9a-f]+:[ 	]+9d002573[ 	]+csrr[ 	]+a0,spmpaddr16
+[ 	]+[0-9a-f]+:[ 	]+9d059073[ 	]+csrw[ 	]+spmpaddr16,a1
+[ 	]+[0-9a-f]+:[ 	]+9d102573[ 	]+csrr[ 	]+a0,spmpaddr17
+[ 	]+[0-9a-f]+:[ 	]+9d159073[ 	]+csrw[ 	]+spmpaddr17,a1
+[ 	]+[0-9a-f]+:[ 	]+9d202573[ 	]+csrr[ 	]+a0,spmpaddr18
+[ 	]+[0-9a-f]+:[ 	]+9d259073[ 	]+csrw[ 	]+spmpaddr18,a1
+[ 	]+[0-9a-f]+:[ 	]+9d302573[ 	]+csrr[ 	]+a0,spmpaddr19
+[ 	]+[0-9a-f]+:[ 	]+9d359073[ 	]+csrw[ 	]+spmpaddr19,a1
+[ 	]+[0-9a-f]+:[ 	]+9d402573[ 	]+csrr[ 	]+a0,spmpaddr20
+[ 	]+[0-9a-f]+:[ 	]+9d459073[ 	]+csrw[ 	]+spmpaddr20,a1
+[ 	]+[0-9a-f]+:[ 	]+9d502573[ 	]+csrr[ 	]+a0,spmpaddr21
+[ 	]+[0-9a-f]+:[ 	]+9d559073[ 	]+csrw[ 	]+spmpaddr21,a1
+[ 	]+[0-9a-f]+:[ 	]+9d602573[ 	]+csrr[ 	]+a0,spmpaddr22
+[ 	]+[0-9a-f]+:[ 	]+9d659073[ 	]+csrw[ 	]+spmpaddr22,a1
+[ 	]+[0-9a-f]+:[ 	]+9d702573[ 	]+csrr[ 	]+a0,spmpaddr23
+[ 	]+[0-9a-f]+:[ 	]+9d759073[ 	]+csrw[ 	]+spmpaddr23,a1
+[ 	]+[0-9a-f]+:[ 	]+9d802573[ 	]+csrr[ 	]+a0,spmpaddr24
+[ 	]+[0-9a-f]+:[ 	]+9d859073[ 	]+csrw[ 	]+spmpaddr24,a1
+[ 	]+[0-9a-f]+:[ 	]+9d902573[ 	]+csrr[ 	]+a0,spmpaddr25
+[ 	]+[0-9a-f]+:[ 	]+9d959073[ 	]+csrw[ 	]+spmpaddr25,a1
+[ 	]+[0-9a-f]+:[ 	]+9da02573[ 	]+csrr[ 	]+a0,spmpaddr26
+[ 	]+[0-9a-f]+:[ 	]+9da59073[ 	]+csrw[ 	]+spmpaddr26,a1
+[ 	]+[0-9a-f]+:[ 	]+9db02573[ 	]+csrr[ 	]+a0,spmpaddr27
+[ 	]+[0-9a-f]+:[ 	]+9db59073[ 	]+csrw[ 	]+spmpaddr27,a1
+[ 	]+[0-9a-f]+:[ 	]+9dc02573[ 	]+csrr[ 	]+a0,spmpaddr28
+[ 	]+[0-9a-f]+:[ 	]+9dc59073[ 	]+csrw[ 	]+spmpaddr28,a1
+[ 	]+[0-9a-f]+:[ 	]+9dd02573[ 	]+csrr[ 	]+a0,spmpaddr29
+[ 	]+[0-9a-f]+:[ 	]+9dd59073[ 	]+csrw[ 	]+spmpaddr29,a1
+[ 	]+[0-9a-f]+:[ 	]+9de02573[ 	]+csrr[ 	]+a0,spmpaddr30
+[ 	]+[0-9a-f]+:[ 	]+9de59073[ 	]+csrw[ 	]+spmpaddr30,a1
+[ 	]+[0-9a-f]+:[ 	]+9df02573[ 	]+csrr[ 	]+a0,spmpaddr31
+[ 	]+[0-9a-f]+:[ 	]+9df59073[ 	]+csrw[ 	]+spmpaddr31,a1
+[ 	]+[0-9a-f]+:[ 	]+9e002573[ 	]+csrr[ 	]+a0,spmpaddr32
+[ 	]+[0-9a-f]+:[ 	]+9e059073[ 	]+csrw[ 	]+spmpaddr32,a1
+[ 	]+[0-9a-f]+:[ 	]+9e102573[ 	]+csrr[ 	]+a0,spmpaddr33
+[ 	]+[0-9a-f]+:[ 	]+9e159073[ 	]+csrw[ 	]+spmpaddr33,a1
+[ 	]+[0-9a-f]+:[ 	]+9e202573[ 	]+csrr[ 	]+a0,spmpaddr34
+[ 	]+[0-9a-f]+:[ 	]+9e259073[ 	]+csrw[ 	]+spmpaddr34,a1
+[ 	]+[0-9a-f]+:[ 	]+9e302573[ 	]+csrr[ 	]+a0,spmpaddr35
+[ 	]+[0-9a-f]+:[ 	]+9e359073[ 	]+csrw[ 	]+spmpaddr35,a1
+[ 	]+[0-9a-f]+:[ 	]+9e402573[ 	]+csrr[ 	]+a0,spmpaddr36
+[ 	]+[0-9a-f]+:[ 	]+9e459073[ 	]+csrw[ 	]+spmpaddr36,a1
+[ 	]+[0-9a-f]+:[ 	]+9e502573[ 	]+csrr[ 	]+a0,spmpaddr37
+[ 	]+[0-9a-f]+:[ 	]+9e559073[ 	]+csrw[ 	]+spmpaddr37,a1
+[ 	]+[0-9a-f]+:[ 	]+9e602573[ 	]+csrr[ 	]+a0,spmpaddr38
+[ 	]+[0-9a-f]+:[ 	]+9e659073[ 	]+csrw[ 	]+spmpaddr38,a1
+[ 	]+[0-9a-f]+:[ 	]+9e702573[ 	]+csrr[ 	]+a0,spmpaddr39
+[ 	]+[0-9a-f]+:[ 	]+9e759073[ 	]+csrw[ 	]+spmpaddr39,a1
+[ 	]+[0-9a-f]+:[ 	]+9e802573[ 	]+csrr[ 	]+a0,spmpaddr40
+[ 	]+[0-9a-f]+:[ 	]+9e859073[ 	]+csrw[ 	]+spmpaddr40,a1
+[ 	]+[0-9a-f]+:[ 	]+9e902573[ 	]+csrr[ 	]+a0,spmpaddr41
+[ 	]+[0-9a-f]+:[ 	]+9e959073[ 	]+csrw[ 	]+spmpaddr41,a1
+[ 	]+[0-9a-f]+:[ 	]+9ea02573[ 	]+csrr[ 	]+a0,spmpaddr42
+[ 	]+[0-9a-f]+:[ 	]+9ea59073[ 	]+csrw[ 	]+spmpaddr42,a1
+[ 	]+[0-9a-f]+:[ 	]+9eb02573[ 	]+csrr[ 	]+a0,spmpaddr43
+[ 	]+[0-9a-f]+:[ 	]+9eb59073[ 	]+csrw[ 	]+spmpaddr43,a1
+[ 	]+[0-9a-f]+:[ 	]+9ec02573[ 	]+csrr[ 	]+a0,spmpaddr44
+[ 	]+[0-9a-f]+:[ 	]+9ec59073[ 	]+csrw[ 	]+spmpaddr44,a1
+[ 	]+[0-9a-f]+:[ 	]+9ed02573[ 	]+csrr[ 	]+a0,spmpaddr45
+[ 	]+[0-9a-f]+:[ 	]+9ed59073[ 	]+csrw[ 	]+spmpaddr45,a1
+[ 	]+[0-9a-f]+:[ 	]+9ee02573[ 	]+csrr[ 	]+a0,spmpaddr46
+[ 	]+[0-9a-f]+:[ 	]+9ee59073[ 	]+csrw[ 	]+spmpaddr46,a1
+[ 	]+[0-9a-f]+:[ 	]+9ef02573[ 	]+csrr[ 	]+a0,spmpaddr47
+[ 	]+[0-9a-f]+:[ 	]+9ef59073[ 	]+csrw[ 	]+spmpaddr47,a1
+[ 	]+[0-9a-f]+:[ 	]+9f002573[ 	]+csrr[ 	]+a0,spmpaddr48
+[ 	]+[0-9a-f]+:[ 	]+9f059073[ 	]+csrw[ 	]+spmpaddr48,a1
+[ 	]+[0-9a-f]+:[ 	]+9f102573[ 	]+csrr[ 	]+a0,spmpaddr49
+[ 	]+[0-9a-f]+:[ 	]+9f159073[ 	]+csrw[ 	]+spmpaddr49,a1
+[ 	]+[0-9a-f]+:[ 	]+9f202573[ 	]+csrr[ 	]+a0,spmpaddr50
+[ 	]+[0-9a-f]+:[ 	]+9f259073[ 	]+csrw[ 	]+spmpaddr50,a1
+[ 	]+[0-9a-f]+:[ 	]+9f302573[ 	]+csrr[ 	]+a0,spmpaddr51
+[ 	]+[0-9a-f]+:[ 	]+9f359073[ 	]+csrw[ 	]+spmpaddr51,a1
+[ 	]+[0-9a-f]+:[ 	]+9f402573[ 	]+csrr[ 	]+a0,spmpaddr52
+[ 	]+[0-9a-f]+:[ 	]+9f459073[ 	]+csrw[ 	]+spmpaddr52,a1
+[ 	]+[0-9a-f]+:[ 	]+9f502573[ 	]+csrr[ 	]+a0,spmpaddr53
+[ 	]+[0-9a-f]+:[ 	]+9f559073[ 	]+csrw[ 	]+spmpaddr53,a1
+[ 	]+[0-9a-f]+:[ 	]+9f602573[ 	]+csrr[ 	]+a0,spmpaddr54
+[ 	]+[0-9a-f]+:[ 	]+9f659073[ 	]+csrw[ 	]+spmpaddr54,a1
+[ 	]+[0-9a-f]+:[ 	]+9f702573[ 	]+csrr[ 	]+a0,spmpaddr55
+[ 	]+[0-9a-f]+:[ 	]+9f759073[ 	]+csrw[ 	]+spmpaddr55,a1
+[ 	]+[0-9a-f]+:[ 	]+9f802573[ 	]+csrr[ 	]+a0,spmpaddr56
+[ 	]+[0-9a-f]+:[ 	]+9f859073[ 	]+csrw[ 	]+spmpaddr56,a1
+[ 	]+[0-9a-f]+:[ 	]+9f902573[ 	]+csrr[ 	]+a0,spmpaddr57
+[ 	]+[0-9a-f]+:[ 	]+9f959073[ 	]+csrw[ 	]+spmpaddr57,a1
+[ 	]+[0-9a-f]+:[ 	]+9fa02573[ 	]+csrr[ 	]+a0,spmpaddr58
+[ 	]+[0-9a-f]+:[ 	]+9fa59073[ 	]+csrw[ 	]+spmpaddr58,a1
+[ 	]+[0-9a-f]+:[ 	]+9fb02573[ 	]+csrr[ 	]+a0,spmpaddr59
+[ 	]+[0-9a-f]+:[ 	]+9fb59073[ 	]+csrw[ 	]+spmpaddr59,a1
+[ 	]+[0-9a-f]+:[ 	]+9fc02573[ 	]+csrr[ 	]+a0,spmpaddr60
+[ 	]+[0-9a-f]+:[ 	]+9fc59073[ 	]+csrw[ 	]+spmpaddr60,a1
+[ 	]+[0-9a-f]+:[ 	]+9fd02573[ 	]+csrr[ 	]+a0,spmpaddr61
+[ 	]+[0-9a-f]+:[ 	]+9fd59073[ 	]+csrw[ 	]+spmpaddr61,a1
+[ 	]+[0-9a-f]+:[ 	]+9fe02573[ 	]+csrr[ 	]+a0,spmpaddr62
+[ 	]+[0-9a-f]+:[ 	]+9fe59073[ 	]+csrw[ 	]+spmpaddr62,a1
+[ 	]+[0-9a-f]+:[ 	]+9ff02573[ 	]+csrr[ 	]+a0,spmpaddr63
+[ 	]+[0-9a-f]+:[ 	]+9ff59073[ 	]+csrw[ 	]+spmpaddr63,a1
 [ 	]+[0-9a-f]+:[ 	]+14d02573[ 	]+csrr[ 	]+a0,stimecmp
 [ 	]+[0-9a-f]+:[ 	]+14d59073[ 	]+csrw[ 	]+stimecmp,a1
 [ 	]+[0-9a-f]+:[ 	]+15d02573[ 	]+csrr[ 	]+a0,stimecmph
diff --git a/gas/testsuite/gas/riscv/csr-version-1p12.l b/gas/testsuite/gas/riscv/csr-version-1p12.l
index 1c0bb4ef2d8f..83933a198eda 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p12.l
+++ b/gas/testsuite/gas/riscv/csr-version-1p12.l
@@ -587,6 +587,188 @@
 .*Warning: invalid CSR `mhpmevent31h', needs `sscofpmf' extension
 .*Warning: invalid CSR `mhpmevent31h', needs rv32i extension
 .*Warning: invalid CSR `mhpmevent31h', needs `sscofpmf' extension
+.*Warning: invalid CSR `spmpcfg0', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg0', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg1', needs rv32i extension
+.*Warning: invalid CSR `spmpcfg1', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg1', needs rv32i extension
+.*Warning: invalid CSR `spmpcfg1', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg2', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg2', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg3', needs rv32i extension
+.*Warning: invalid CSR `spmpcfg3', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg3', needs rv32i extension
+.*Warning: invalid CSR `spmpcfg3', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg4', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg4', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg5', needs rv32i extension
+.*Warning: invalid CSR `spmpcfg5', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg5', needs rv32i extension
+.*Warning: invalid CSR `spmpcfg5', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg6', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg6', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg7', needs rv32i extension
+.*Warning: invalid CSR `spmpcfg7', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg7', needs rv32i extension
+.*Warning: invalid CSR `spmpcfg7', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg8', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg8', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg9', needs rv32i extension
+.*Warning: invalid CSR `spmpcfg9', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg9', needs rv32i extension
+.*Warning: invalid CSR `spmpcfg9', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg10', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg10', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg11', needs rv32i extension
+.*Warning: invalid CSR `spmpcfg11', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg11', needs rv32i extension
+.*Warning: invalid CSR `spmpcfg11', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg12', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg12', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg13', needs rv32i extension
+.*Warning: invalid CSR `spmpcfg13', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg13', needs rv32i extension
+.*Warning: invalid CSR `spmpcfg13', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg14', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg14', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg15', needs rv32i extension
+.*Warning: invalid CSR `spmpcfg15', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg15', needs rv32i extension
+.*Warning: invalid CSR `spmpcfg15', needs `sspmp' extension
+.*Warning: invalid CSR `spmpswitch0', needs `sspmp' extension
+.*Warning: invalid CSR `spmpswitch0', needs `sspmp' extension
+.*Warning: invalid CSR `spmpswitch1', needs rv32i extension
+.*Warning: invalid CSR `spmpswitch1', needs `sspmp' extension
+.*Warning: invalid CSR `spmpswitch1', needs rv32i extension
+.*Warning: invalid CSR `spmpswitch1', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr0', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr0', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr1', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr1', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr2', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr2', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr3', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr3', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr4', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr4', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr5', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr5', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr6', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr6', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr7', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr7', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr8', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr8', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr9', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr9', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr10', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr10', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr11', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr11', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr12', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr12', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr13', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr13', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr14', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr14', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr15', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr15', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr16', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr16', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr17', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr17', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr18', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr18', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr19', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr19', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr20', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr20', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr21', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr21', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr22', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr22', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr23', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr23', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr24', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr24', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr25', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr25', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr26', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr26', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr27', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr27', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr28', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr28', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr29', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr29', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr30', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr30', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr31', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr31', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr32', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr32', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr33', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr33', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr34', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr34', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr35', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr35', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr36', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr36', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr37', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr37', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr38', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr38', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr39', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr39', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr40', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr40', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr41', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr41', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr42', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr42', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr43', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr43', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr44', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr44', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr45', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr45', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr46', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr46', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr47', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr47', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr48', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr48', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr49', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr49', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr50', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr50', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr51', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr51', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr52', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr52', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr53', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr53', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr54', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr54', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr55', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr55', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr56', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr56', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr57', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr57', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr58', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr58', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr59', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr59', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr60', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr60', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr61', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr61', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr62', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr62', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr63', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr63', needs `sspmp' extension
 .*Warning: invalid CSR `stimecmp', needs `sstc' extension
 .*Warning: invalid CSR `stimecmp', needs `sstc' extension
 .*Warning: invalid CSR `stimecmph', needs rv32i extension
diff --git a/gas/testsuite/gas/riscv/csr-version-1p9p1.d b/gas/testsuite/gas/riscv/csr-version-1p9p1.d
index 0fe849c269c2..b304622e7f9c 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p9p1.d
+++ b/gas/testsuite/gas/riscv/csr-version-1p9p1.d
@@ -765,6 +765,170 @@ Disassembly of section .text:
 [ 	]+[0-9a-f]+:[ 	]+73e59073[ 	]+csrw[ 	]+mhpmevent30h,a1
 [ 	]+[0-9a-f]+:[ 	]+73f02573[ 	]+csrr[ 	]+a0,mhpmevent31h
 [ 	]+[0-9a-f]+:[ 	]+73f59073[ 	]+csrw[ 	]+mhpmevent31h,a1
+[ 	]+[0-9a-f]+:[ 	]+5c002573[ 	]+csrr[ 	]+a0,spmpcfg0
+[ 	]+[0-9a-f]+:[ 	]+5c059073[ 	]+csrw[ 	]+spmpcfg0,a1
+[ 	]+[0-9a-f]+:[ 	]+5c102573[ 	]+csrr[ 	]+a0,spmpcfg1
+[ 	]+[0-9a-f]+:[ 	]+5c159073[ 	]+csrw[ 	]+spmpcfg1,a1
+[ 	]+[0-9a-f]+:[ 	]+5c202573[ 	]+csrr[ 	]+a0,spmpcfg2
+[ 	]+[0-9a-f]+:[ 	]+5c259073[ 	]+csrw[ 	]+spmpcfg2,a1
+[ 	]+[0-9a-f]+:[ 	]+5c302573[ 	]+csrr[ 	]+a0,spmpcfg3
+[ 	]+[0-9a-f]+:[ 	]+5c359073[ 	]+csrw[ 	]+spmpcfg3,a1
+[ 	]+[0-9a-f]+:[ 	]+5c402573[ 	]+csrr[ 	]+a0,spmpcfg4
+[ 	]+[0-9a-f]+:[ 	]+5c459073[ 	]+csrw[ 	]+spmpcfg4,a1
+[ 	]+[0-9a-f]+:[ 	]+5c502573[ 	]+csrr[ 	]+a0,spmpcfg5
+[ 	]+[0-9a-f]+:[ 	]+5c559073[ 	]+csrw[ 	]+spmpcfg5,a1
+[ 	]+[0-9a-f]+:[ 	]+5c602573[ 	]+csrr[ 	]+a0,spmpcfg6
+[ 	]+[0-9a-f]+:[ 	]+5c659073[ 	]+csrw[ 	]+spmpcfg6,a1
+[ 	]+[0-9a-f]+:[ 	]+5c702573[ 	]+csrr[ 	]+a0,spmpcfg7
+[ 	]+[0-9a-f]+:[ 	]+5c759073[ 	]+csrw[ 	]+spmpcfg7,a1
+[ 	]+[0-9a-f]+:[ 	]+5c802573[ 	]+csrr[ 	]+a0,spmpcfg8
+[ 	]+[0-9a-f]+:[ 	]+5c859073[ 	]+csrw[ 	]+spmpcfg8,a1
+[ 	]+[0-9a-f]+:[ 	]+5c902573[ 	]+csrr[ 	]+a0,spmpcfg9
+[ 	]+[0-9a-f]+:[ 	]+5c959073[ 	]+csrw[ 	]+spmpcfg9,a1
+[ 	]+[0-9a-f]+:[ 	]+5ca02573[ 	]+csrr[ 	]+a0,spmpcfg10
+[ 	]+[0-9a-f]+:[ 	]+5ca59073[ 	]+csrw[ 	]+spmpcfg10,a1
+[ 	]+[0-9a-f]+:[ 	]+5cb02573[ 	]+csrr[ 	]+a0,spmpcfg11
+[ 	]+[0-9a-f]+:[ 	]+5cb59073[ 	]+csrw[ 	]+spmpcfg11,a1
+[ 	]+[0-9a-f]+:[ 	]+5cc02573[ 	]+csrr[ 	]+a0,spmpcfg12
+[ 	]+[0-9a-f]+:[ 	]+5cc59073[ 	]+csrw[ 	]+spmpcfg12,a1
+[ 	]+[0-9a-f]+:[ 	]+5cd02573[ 	]+csrr[ 	]+a0,spmpcfg13
+[ 	]+[0-9a-f]+:[ 	]+5cd59073[ 	]+csrw[ 	]+spmpcfg13,a1
+[ 	]+[0-9a-f]+:[ 	]+5ce02573[ 	]+csrr[ 	]+a0,spmpcfg14
+[ 	]+[0-9a-f]+:[ 	]+5ce59073[ 	]+csrw[ 	]+spmpcfg14,a1
+[ 	]+[0-9a-f]+:[ 	]+5cf02573[ 	]+csrr[ 	]+a0,spmpcfg15
+[ 	]+[0-9a-f]+:[ 	]+5cf59073[ 	]+csrw[ 	]+spmpcfg15,a1
+[ 	]+[0-9a-f]+:[ 	]+5d002573[ 	]+csrr[ 	]+a0,spmpswitch0
+[ 	]+[0-9a-f]+:[ 	]+5d059073[ 	]+csrw[ 	]+spmpswitch0,a1
+[ 	]+[0-9a-f]+:[ 	]+5d102573[ 	]+csrr[ 	]+a0,spmpswitch1
+[ 	]+[0-9a-f]+:[ 	]+5d159073[ 	]+csrw[ 	]+spmpswitch1,a1
+[ 	]+[0-9a-f]+:[ 	]+9c002573[ 	]+csrr[ 	]+a0,spmpaddr0
+[ 	]+[0-9a-f]+:[ 	]+9c059073[ 	]+csrw[ 	]+spmpaddr0,a1
+[ 	]+[0-9a-f]+:[ 	]+9c102573[ 	]+csrr[ 	]+a0,spmpaddr1
+[ 	]+[0-9a-f]+:[ 	]+9c159073[ 	]+csrw[ 	]+spmpaddr1,a1
+[ 	]+[0-9a-f]+:[ 	]+9c202573[ 	]+csrr[ 	]+a0,spmpaddr2
+[ 	]+[0-9a-f]+:[ 	]+9c259073[ 	]+csrw[ 	]+spmpaddr2,a1
+[ 	]+[0-9a-f]+:[ 	]+9c302573[ 	]+csrr[ 	]+a0,spmpaddr3
+[ 	]+[0-9a-f]+:[ 	]+9c359073[ 	]+csrw[ 	]+spmpaddr3,a1
+[ 	]+[0-9a-f]+:[ 	]+9c402573[ 	]+csrr[ 	]+a0,spmpaddr4
+[ 	]+[0-9a-f]+:[ 	]+9c459073[ 	]+csrw[ 	]+spmpaddr4,a1
+[ 	]+[0-9a-f]+:[ 	]+9c502573[ 	]+csrr[ 	]+a0,spmpaddr5
+[ 	]+[0-9a-f]+:[ 	]+9c559073[ 	]+csrw[ 	]+spmpaddr5,a1
+[ 	]+[0-9a-f]+:[ 	]+9c602573[ 	]+csrr[ 	]+a0,spmpaddr6
+[ 	]+[0-9a-f]+:[ 	]+9c659073[ 	]+csrw[ 	]+spmpaddr6,a1
+[ 	]+[0-9a-f]+:[ 	]+9c702573[ 	]+csrr[ 	]+a0,spmpaddr7
+[ 	]+[0-9a-f]+:[ 	]+9c759073[ 	]+csrw[ 	]+spmpaddr7,a1
+[ 	]+[0-9a-f]+:[ 	]+9c802573[ 	]+csrr[ 	]+a0,spmpaddr8
+[ 	]+[0-9a-f]+:[ 	]+9c859073[ 	]+csrw[ 	]+spmpaddr8,a1
+[ 	]+[0-9a-f]+:[ 	]+9c902573[ 	]+csrr[ 	]+a0,spmpaddr9
+[ 	]+[0-9a-f]+:[ 	]+9c959073[ 	]+csrw[ 	]+spmpaddr9,a1
+[ 	]+[0-9a-f]+:[ 	]+9ca02573[ 	]+csrr[ 	]+a0,spmpaddr10
+[ 	]+[0-9a-f]+:[ 	]+9ca59073[ 	]+csrw[ 	]+spmpaddr10,a1
+[ 	]+[0-9a-f]+:[ 	]+9cb02573[ 	]+csrr[ 	]+a0,spmpaddr11
+[ 	]+[0-9a-f]+:[ 	]+9cb59073[ 	]+csrw[ 	]+spmpaddr11,a1
+[ 	]+[0-9a-f]+:[ 	]+9cc02573[ 	]+csrr[ 	]+a0,spmpaddr12
+[ 	]+[0-9a-f]+:[ 	]+9cc59073[ 	]+csrw[ 	]+spmpaddr12,a1
+[ 	]+[0-9a-f]+:[ 	]+9cd02573[ 	]+csrr[ 	]+a0,spmpaddr13
+[ 	]+[0-9a-f]+:[ 	]+9cd59073[ 	]+csrw[ 	]+spmpaddr13,a1
+[ 	]+[0-9a-f]+:[ 	]+9ce02573[ 	]+csrr[ 	]+a0,spmpaddr14
+[ 	]+[0-9a-f]+:[ 	]+9ce59073[ 	]+csrw[ 	]+spmpaddr14,a1
+[ 	]+[0-9a-f]+:[ 	]+9cf02573[ 	]+csrr[ 	]+a0,spmpaddr15
+[ 	]+[0-9a-f]+:[ 	]+9cf59073[ 	]+csrw[ 	]+spmpaddr15,a1
+[ 	]+[0-9a-f]+:[ 	]+9d002573[ 	]+csrr[ 	]+a0,spmpaddr16
+[ 	]+[0-9a-f]+:[ 	]+9d059073[ 	]+csrw[ 	]+spmpaddr16,a1
+[ 	]+[0-9a-f]+:[ 	]+9d102573[ 	]+csrr[ 	]+a0,spmpaddr17
+[ 	]+[0-9a-f]+:[ 	]+9d159073[ 	]+csrw[ 	]+spmpaddr17,a1
+[ 	]+[0-9a-f]+:[ 	]+9d202573[ 	]+csrr[ 	]+a0,spmpaddr18
+[ 	]+[0-9a-f]+:[ 	]+9d259073[ 	]+csrw[ 	]+spmpaddr18,a1
+[ 	]+[0-9a-f]+:[ 	]+9d302573[ 	]+csrr[ 	]+a0,spmpaddr19
+[ 	]+[0-9a-f]+:[ 	]+9d359073[ 	]+csrw[ 	]+spmpaddr19,a1
+[ 	]+[0-9a-f]+:[ 	]+9d402573[ 	]+csrr[ 	]+a0,spmpaddr20
+[ 	]+[0-9a-f]+:[ 	]+9d459073[ 	]+csrw[ 	]+spmpaddr20,a1
+[ 	]+[0-9a-f]+:[ 	]+9d502573[ 	]+csrr[ 	]+a0,spmpaddr21
+[ 	]+[0-9a-f]+:[ 	]+9d559073[ 	]+csrw[ 	]+spmpaddr21,a1
+[ 	]+[0-9a-f]+:[ 	]+9d602573[ 	]+csrr[ 	]+a0,spmpaddr22
+[ 	]+[0-9a-f]+:[ 	]+9d659073[ 	]+csrw[ 	]+spmpaddr22,a1
+[ 	]+[0-9a-f]+:[ 	]+9d702573[ 	]+csrr[ 	]+a0,spmpaddr23
+[ 	]+[0-9a-f]+:[ 	]+9d759073[ 	]+csrw[ 	]+spmpaddr23,a1
+[ 	]+[0-9a-f]+:[ 	]+9d802573[ 	]+csrr[ 	]+a0,spmpaddr24
+[ 	]+[0-9a-f]+:[ 	]+9d859073[ 	]+csrw[ 	]+spmpaddr24,a1
+[ 	]+[0-9a-f]+:[ 	]+9d902573[ 	]+csrr[ 	]+a0,spmpaddr25
+[ 	]+[0-9a-f]+:[ 	]+9d959073[ 	]+csrw[ 	]+spmpaddr25,a1
+[ 	]+[0-9a-f]+:[ 	]+9da02573[ 	]+csrr[ 	]+a0,spmpaddr26
+[ 	]+[0-9a-f]+:[ 	]+9da59073[ 	]+csrw[ 	]+spmpaddr26,a1
+[ 	]+[0-9a-f]+:[ 	]+9db02573[ 	]+csrr[ 	]+a0,spmpaddr27
+[ 	]+[0-9a-f]+:[ 	]+9db59073[ 	]+csrw[ 	]+spmpaddr27,a1
+[ 	]+[0-9a-f]+:[ 	]+9dc02573[ 	]+csrr[ 	]+a0,spmpaddr28
+[ 	]+[0-9a-f]+:[ 	]+9dc59073[ 	]+csrw[ 	]+spmpaddr28,a1
+[ 	]+[0-9a-f]+:[ 	]+9dd02573[ 	]+csrr[ 	]+a0,spmpaddr29
+[ 	]+[0-9a-f]+:[ 	]+9dd59073[ 	]+csrw[ 	]+spmpaddr29,a1
+[ 	]+[0-9a-f]+:[ 	]+9de02573[ 	]+csrr[ 	]+a0,spmpaddr30
+[ 	]+[0-9a-f]+:[ 	]+9de59073[ 	]+csrw[ 	]+spmpaddr30,a1
+[ 	]+[0-9a-f]+:[ 	]+9df02573[ 	]+csrr[ 	]+a0,spmpaddr31
+[ 	]+[0-9a-f]+:[ 	]+9df59073[ 	]+csrw[ 	]+spmpaddr31,a1
+[ 	]+[0-9a-f]+:[ 	]+9e002573[ 	]+csrr[ 	]+a0,spmpaddr32
+[ 	]+[0-9a-f]+:[ 	]+9e059073[ 	]+csrw[ 	]+spmpaddr32,a1
+[ 	]+[0-9a-f]+:[ 	]+9e102573[ 	]+csrr[ 	]+a0,spmpaddr33
+[ 	]+[0-9a-f]+:[ 	]+9e159073[ 	]+csrw[ 	]+spmpaddr33,a1
+[ 	]+[0-9a-f]+:[ 	]+9e202573[ 	]+csrr[ 	]+a0,spmpaddr34
+[ 	]+[0-9a-f]+:[ 	]+9e259073[ 	]+csrw[ 	]+spmpaddr34,a1
+[ 	]+[0-9a-f]+:[ 	]+9e302573[ 	]+csrr[ 	]+a0,spmpaddr35
+[ 	]+[0-9a-f]+:[ 	]+9e359073[ 	]+csrw[ 	]+spmpaddr35,a1
+[ 	]+[0-9a-f]+:[ 	]+9e402573[ 	]+csrr[ 	]+a0,spmpaddr36
+[ 	]+[0-9a-f]+:[ 	]+9e459073[ 	]+csrw[ 	]+spmpaddr36,a1
+[ 	]+[0-9a-f]+:[ 	]+9e502573[ 	]+csrr[ 	]+a0,spmpaddr37
+[ 	]+[0-9a-f]+:[ 	]+9e559073[ 	]+csrw[ 	]+spmpaddr37,a1
+[ 	]+[0-9a-f]+:[ 	]+9e602573[ 	]+csrr[ 	]+a0,spmpaddr38
+[ 	]+[0-9a-f]+:[ 	]+9e659073[ 	]+csrw[ 	]+spmpaddr38,a1
+[ 	]+[0-9a-f]+:[ 	]+9e702573[ 	]+csrr[ 	]+a0,spmpaddr39
+[ 	]+[0-9a-f]+:[ 	]+9e759073[ 	]+csrw[ 	]+spmpaddr39,a1
+[ 	]+[0-9a-f]+:[ 	]+9e802573[ 	]+csrr[ 	]+a0,spmpaddr40
+[ 	]+[0-9a-f]+:[ 	]+9e859073[ 	]+csrw[ 	]+spmpaddr40,a1
+[ 	]+[0-9a-f]+:[ 	]+9e902573[ 	]+csrr[ 	]+a0,spmpaddr41
+[ 	]+[0-9a-f]+:[ 	]+9e959073[ 	]+csrw[ 	]+spmpaddr41,a1
+[ 	]+[0-9a-f]+:[ 	]+9ea02573[ 	]+csrr[ 	]+a0,spmpaddr42
+[ 	]+[0-9a-f]+:[ 	]+9ea59073[ 	]+csrw[ 	]+spmpaddr42,a1
+[ 	]+[0-9a-f]+:[ 	]+9eb02573[ 	]+csrr[ 	]+a0,spmpaddr43
+[ 	]+[0-9a-f]+:[ 	]+9eb59073[ 	]+csrw[ 	]+spmpaddr43,a1
+[ 	]+[0-9a-f]+:[ 	]+9ec02573[ 	]+csrr[ 	]+a0,spmpaddr44
+[ 	]+[0-9a-f]+:[ 	]+9ec59073[ 	]+csrw[ 	]+spmpaddr44,a1
+[ 	]+[0-9a-f]+:[ 	]+9ed02573[ 	]+csrr[ 	]+a0,spmpaddr45
+[ 	]+[0-9a-f]+:[ 	]+9ed59073[ 	]+csrw[ 	]+spmpaddr45,a1
+[ 	]+[0-9a-f]+:[ 	]+9ee02573[ 	]+csrr[ 	]+a0,spmpaddr46
+[ 	]+[0-9a-f]+:[ 	]+9ee59073[ 	]+csrw[ 	]+spmpaddr46,a1
+[ 	]+[0-9a-f]+:[ 	]+9ef02573[ 	]+csrr[ 	]+a0,spmpaddr47
+[ 	]+[0-9a-f]+:[ 	]+9ef59073[ 	]+csrw[ 	]+spmpaddr47,a1
+[ 	]+[0-9a-f]+:[ 	]+9f002573[ 	]+csrr[ 	]+a0,spmpaddr48
+[ 	]+[0-9a-f]+:[ 	]+9f059073[ 	]+csrw[ 	]+spmpaddr48,a1
+[ 	]+[0-9a-f]+:[ 	]+9f102573[ 	]+csrr[ 	]+a0,spmpaddr49
+[ 	]+[0-9a-f]+:[ 	]+9f159073[ 	]+csrw[ 	]+spmpaddr49,a1
+[ 	]+[0-9a-f]+:[ 	]+9f202573[ 	]+csrr[ 	]+a0,spmpaddr50
+[ 	]+[0-9a-f]+:[ 	]+9f259073[ 	]+csrw[ 	]+spmpaddr50,a1
+[ 	]+[0-9a-f]+:[ 	]+9f302573[ 	]+csrr[ 	]+a0,spmpaddr51
+[ 	]+[0-9a-f]+:[ 	]+9f359073[ 	]+csrw[ 	]+spmpaddr51,a1
+[ 	]+[0-9a-f]+:[ 	]+9f402573[ 	]+csrr[ 	]+a0,spmpaddr52
+[ 	]+[0-9a-f]+:[ 	]+9f459073[ 	]+csrw[ 	]+spmpaddr52,a1
+[ 	]+[0-9a-f]+:[ 	]+9f502573[ 	]+csrr[ 	]+a0,spmpaddr53
+[ 	]+[0-9a-f]+:[ 	]+9f559073[ 	]+csrw[ 	]+spmpaddr53,a1
+[ 	]+[0-9a-f]+:[ 	]+9f602573[ 	]+csrr[ 	]+a0,spmpaddr54
+[ 	]+[0-9a-f]+:[ 	]+9f659073[ 	]+csrw[ 	]+spmpaddr54,a1
+[ 	]+[0-9a-f]+:[ 	]+9f702573[ 	]+csrr[ 	]+a0,spmpaddr55
+[ 	]+[0-9a-f]+:[ 	]+9f759073[ 	]+csrw[ 	]+spmpaddr55,a1
+[ 	]+[0-9a-f]+:[ 	]+9f802573[ 	]+csrr[ 	]+a0,spmpaddr56
+[ 	]+[0-9a-f]+:[ 	]+9f859073[ 	]+csrw[ 	]+spmpaddr56,a1
+[ 	]+[0-9a-f]+:[ 	]+9f902573[ 	]+csrr[ 	]+a0,spmpaddr57
+[ 	]+[0-9a-f]+:[ 	]+9f959073[ 	]+csrw[ 	]+spmpaddr57,a1
+[ 	]+[0-9a-f]+:[ 	]+9fa02573[ 	]+csrr[ 	]+a0,spmpaddr58
+[ 	]+[0-9a-f]+:[ 	]+9fa59073[ 	]+csrw[ 	]+spmpaddr58,a1
+[ 	]+[0-9a-f]+:[ 	]+9fb02573[ 	]+csrr[ 	]+a0,spmpaddr59
+[ 	]+[0-9a-f]+:[ 	]+9fb59073[ 	]+csrw[ 	]+spmpaddr59,a1
+[ 	]+[0-9a-f]+:[ 	]+9fc02573[ 	]+csrr[ 	]+a0,spmpaddr60
+[ 	]+[0-9a-f]+:[ 	]+9fc59073[ 	]+csrw[ 	]+spmpaddr60,a1
+[ 	]+[0-9a-f]+:[ 	]+9fd02573[ 	]+csrr[ 	]+a0,spmpaddr61
+[ 	]+[0-9a-f]+:[ 	]+9fd59073[ 	]+csrw[ 	]+spmpaddr61,a1
+[ 	]+[0-9a-f]+:[ 	]+9fe02573[ 	]+csrr[ 	]+a0,spmpaddr62
+[ 	]+[0-9a-f]+:[ 	]+9fe59073[ 	]+csrw[ 	]+spmpaddr62,a1
+[ 	]+[0-9a-f]+:[ 	]+9ff02573[ 	]+csrr[ 	]+a0,spmpaddr63
+[ 	]+[0-9a-f]+:[ 	]+9ff59073[ 	]+csrw[ 	]+spmpaddr63,a1
 [ 	]+[0-9a-f]+:[ 	]+14d02573[ 	]+csrr[ 	]+a0,stimecmp
 [ 	]+[0-9a-f]+:[ 	]+14d59073[ 	]+csrw[ 	]+stimecmp,a1
 [ 	]+[0-9a-f]+:[ 	]+15d02573[ 	]+csrr[ 	]+a0,stimecmph
diff --git a/gas/testsuite/gas/riscv/csr-version-1p9p1.l b/gas/testsuite/gas/riscv/csr-version-1p9p1.l
index c65d0b48e414..bceb315f576d 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p9p1.l
+++ b/gas/testsuite/gas/riscv/csr-version-1p9p1.l
@@ -777,6 +777,188 @@
 .*Warning: invalid CSR `mhpmevent31h', needs `sscofpmf' extension
 .*Warning: invalid CSR `mhpmevent31h', needs rv32i extension
 .*Warning: invalid CSR `mhpmevent31h', needs `sscofpmf' extension
+.*Warning: invalid CSR `spmpcfg0', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg0', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg1', needs rv32i extension
+.*Warning: invalid CSR `spmpcfg1', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg1', needs rv32i extension
+.*Warning: invalid CSR `spmpcfg1', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg2', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg2', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg3', needs rv32i extension
+.*Warning: invalid CSR `spmpcfg3', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg3', needs rv32i extension
+.*Warning: invalid CSR `spmpcfg3', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg4', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg4', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg5', needs rv32i extension
+.*Warning: invalid CSR `spmpcfg5', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg5', needs rv32i extension
+.*Warning: invalid CSR `spmpcfg5', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg6', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg6', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg7', needs rv32i extension
+.*Warning: invalid CSR `spmpcfg7', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg7', needs rv32i extension
+.*Warning: invalid CSR `spmpcfg7', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg8', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg8', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg9', needs rv32i extension
+.*Warning: invalid CSR `spmpcfg9', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg9', needs rv32i extension
+.*Warning: invalid CSR `spmpcfg9', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg10', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg10', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg11', needs rv32i extension
+.*Warning: invalid CSR `spmpcfg11', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg11', needs rv32i extension
+.*Warning: invalid CSR `spmpcfg11', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg12', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg12', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg13', needs rv32i extension
+.*Warning: invalid CSR `spmpcfg13', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg13', needs rv32i extension
+.*Warning: invalid CSR `spmpcfg13', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg14', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg14', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg15', needs rv32i extension
+.*Warning: invalid CSR `spmpcfg15', needs `sspmp' extension
+.*Warning: invalid CSR `spmpcfg15', needs rv32i extension
+.*Warning: invalid CSR `spmpcfg15', needs `sspmp' extension
+.*Warning: invalid CSR `spmpswitch0', needs `sspmp' extension
+.*Warning: invalid CSR `spmpswitch0', needs `sspmp' extension
+.*Warning: invalid CSR `spmpswitch1', needs rv32i extension
+.*Warning: invalid CSR `spmpswitch1', needs `sspmp' extension
+.*Warning: invalid CSR `spmpswitch1', needs rv32i extension
+.*Warning: invalid CSR `spmpswitch1', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr0', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr0', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr1', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr1', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr2', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr2', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr3', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr3', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr4', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr4', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr5', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr5', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr6', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr6', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr7', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr7', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr8', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr8', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr9', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr9', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr10', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr10', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr11', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr11', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr12', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr12', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr13', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr13', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr14', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr14', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr15', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr15', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr16', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr16', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr17', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr17', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr18', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr18', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr19', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr19', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr20', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr20', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr21', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr21', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr22', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr22', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr23', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr23', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr24', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr24', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr25', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr25', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr26', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr26', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr27', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr27', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr28', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr28', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr29', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr29', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr30', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr30', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr31', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr31', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr32', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr32', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr33', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr33', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr34', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr34', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr35', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr35', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr36', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr36', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr37', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr37', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr38', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr38', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr39', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr39', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr40', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr40', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr41', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr41', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr42', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr42', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr43', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr43', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr44', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr44', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr45', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr45', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr46', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr46', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr47', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr47', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr48', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr48', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr49', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr49', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr50', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr50', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr51', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr51', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr52', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr52', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr53', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr53', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr54', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr54', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr55', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr55', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr56', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr56', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr57', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr57', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr58', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr58', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr59', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr59', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr60', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr60', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr61', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr61', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr62', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr62', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr63', needs `sspmp' extension
+.*Warning: invalid CSR `spmpaddr63', needs `sspmp' extension
 .*Warning: invalid CSR `stimecmp', needs `sstc' extension
 .*Warning: invalid CSR `stimecmp', needs `sstc' extension
 .*Warning: invalid CSR `stimecmph', needs rv32i extension
diff --git a/gas/testsuite/gas/riscv/csr.s b/gas/testsuite/gas/riscv/csr.s
index c7406ce34c2e..ec1b91950228 100644
--- a/gas/testsuite/gas/riscv/csr.s
+++ b/gas/testsuite/gas/riscv/csr.s
@@ -427,6 +427,90 @@
 	csr mhpmevent30h
 	csr mhpmevent31h
 
+	# Sspmp extension
+	csr spmpcfg0
+	csr spmpcfg1
+	csr spmpcfg2
+	csr spmpcfg3
+	csr spmpcfg4
+	csr spmpcfg5
+	csr spmpcfg6
+	csr spmpcfg7
+	csr spmpcfg8
+	csr spmpcfg9
+	csr spmpcfg10
+	csr spmpcfg11
+	csr spmpcfg12
+	csr spmpcfg13
+	csr spmpcfg14
+	csr spmpcfg15
+	csr spmpswitch0
+	csr spmpswitch1
+	csr spmpaddr0
+	csr spmpaddr1
+	csr spmpaddr2
+	csr spmpaddr3
+	csr spmpaddr4
+	csr spmpaddr5
+	csr spmpaddr6
+	csr spmpaddr7
+	csr spmpaddr8
+	csr spmpaddr9
+	csr spmpaddr10
+	csr spmpaddr11
+	csr spmpaddr12
+	csr spmpaddr13
+	csr spmpaddr14
+	csr spmpaddr15
+	csr spmpaddr16
+	csr spmpaddr17
+	csr spmpaddr18
+	csr spmpaddr19
+	csr spmpaddr20
+	csr spmpaddr21
+	csr spmpaddr22
+	csr spmpaddr23
+	csr spmpaddr24
+	csr spmpaddr25
+	csr spmpaddr26
+	csr spmpaddr27
+	csr spmpaddr28
+	csr spmpaddr29
+	csr spmpaddr30
+	csr spmpaddr31
+	csr spmpaddr32
+	csr spmpaddr33
+	csr spmpaddr34
+	csr spmpaddr35
+	csr spmpaddr36
+	csr spmpaddr37
+	csr spmpaddr38
+	csr spmpaddr39
+	csr spmpaddr40
+	csr spmpaddr41
+	csr spmpaddr42
+	csr spmpaddr43
+	csr spmpaddr44
+	csr spmpaddr45
+	csr spmpaddr46
+	csr spmpaddr47
+	csr spmpaddr48
+	csr spmpaddr49
+	csr spmpaddr50
+	csr spmpaddr51
+	csr spmpaddr52
+	csr spmpaddr53
+	csr spmpaddr54
+	csr spmpaddr55
+	csr spmpaddr56
+	csr spmpaddr57
+	csr spmpaddr58
+	csr spmpaddr59
+	csr spmpaddr60
+	csr spmpaddr61
+	csr spmpaddr62
+	csr spmpaddr63
+
 	# Sstc extension
 	csr stimecmp
 	csr stimecmph
diff --git a/include/opcode/riscv-opc.h b/include/opcode/riscv-opc.h
index 06e3df0f5a63..fc839454f7d3 100644
--- a/include/opcode/riscv-opc.h
+++ b/include/opcode/riscv-opc.h
@@ -2747,6 +2747,89 @@
 #define CSR_MHPMEVENT29H 0x73d
 #define CSR_MHPMEVENT30H 0x73e
 #define CSR_MHPMEVENT31H 0x73f
+/* Sspmp extension CSR addresses.  */
+#define CSR_SPMPCFG0 0x5c0      /* TENTATIVELY use custom CSR address.  */
+#define CSR_SPMPCFG1 0x5c1      /* TENTATIVELY use custom CSR address.  */
+#define CSR_SPMPCFG2 0x5c2      /* TENTATIVELY use custom CSR address.  */
+#define CSR_SPMPCFG3 0x5c3      /* TENTATIVELY use custom CSR address.  */
+#define CSR_SPMPCFG4 0x5c4      /* TENTATIVELY use custom CSR address.  */
+#define CSR_SPMPCFG5 0x5c5      /* TENTATIVELY use custom CSR address.  */
+#define CSR_SPMPCFG6 0x5c6      /* TENTATIVELY use custom CSR address.  */
+#define CSR_SPMPCFG7 0x5c7      /* TENTATIVELY use custom CSR address.  */
+#define CSR_SPMPCFG8 0x5c8      /* TENTATIVELY use custom CSR address.  */
+#define CSR_SPMPCFG9 0x5c9      /* TENTATIVELY use custom CSR address.  */
+#define CSR_SPMPCFG10 0x5ca     /* TENTATIVELY use custom CSR address.  */
+#define CSR_SPMPCFG11 0x5cb     /* TENTATIVELY use custom CSR address.  */
+#define CSR_SPMPCFG12 0x5cc     /* TENTATIVELY use custom CSR address.  */
+#define CSR_SPMPCFG13 0x5cd     /* TENTATIVELY use custom CSR address.  */
+#define CSR_SPMPCFG14 0x5ce     /* TENTATIVELY use custom CSR address.  */
+#define CSR_SPMPCFG15 0x5cf     /* TENTATIVELY use custom CSR address.  */
+#define CSR_SPMPSWITCH0 0x5d0   /* TENTATIVELY use custom CSR address.  */
+#define CSR_SPMPSWITCH1 0x5d1   /* TENTATIVELY use custom CSR address.  */
+#define CSR_SPMPADDR0 0x9c0     /* TENTATIVELY use custom CSR address.  */
+#define CSR_SPMPADDR1 0x9c1     /* TENTATIVELY use custom CSR address.  */
+#define CSR_SPMPADDR2 0x9c2     /* TENTATIVELY use custom CSR address.  */
+#define CSR_SPMPADDR3 0x9c3     /* TENTATIVELY use custom CSR address.  */
+#define CSR_SPMPADDR4 0x9c4     /* TENTATIVELY use custom CSR address.  */
+#define CSR_SPMPADDR5 0x9c5     /* TENTATIVELY use custom CSR address.  */
+#define CSR_SPMPADDR6 0x9c6     /* TENTATIVELY use custom CSR address.  */
+#define CSR_SPMPADDR7 0x9c7     /* TENTATIVELY use custom CSR address.  */
+#define CSR_SPMPADDR8 0x9c8     /* TENTATIVELY use custom CSR address.  */
+#define CSR_SPMPADDR9 0x9c9     /* TENTATIVELY use custom CSR address.  */
+#define CSR_SPMPADDR10 0x9ca    /* TENTATIVELY use custom CSR address.  */
+#define CSR_SPMPADDR11 0x9cb    /* TENTATIVELY use custom CSR address.  */
+#define CSR_SPMPADDR12 0x9cc    /* TENTATIVELY use custom CSR address.  */
+#define CSR_SPMPADDR13 0x9cd    /* TENTATIVELY use custom CSR address.  */
+#define CSR_SPMPADDR14 0x9ce    /* TENTATIVELY use custom CSR address.  */
+#define CSR_SPMPADDR15 0x9cf    /* TENTATIVELY use custom CSR address.  */
+#define CSR_SPMPADDR16 0x9d0    /* TENTATIVELY use custom CSR address.  */
+#define CSR_SPMPADDR17 0x9d1    /* TENTATIVELY use custom CSR address.  */
+#define CSR_SPMPADDR18 0x9d2    /* TENTATIVELY use custom CSR address.  */
+#define CSR_SPMPADDR19 0x9d3    /* TENTATIVELY use custom CSR address.  */
+#define CSR_SPMPADDR20 0x9d4    /* TENTATIVELY use custom CSR address.  */
+#define CSR_SPMPADDR21 0x9d5    /* TENTATIVELY use custom CSR address.  */
+#define CSR_SPMPADDR22 0x9d6    /* TENTATIVELY use custom CSR address.  */
+#define CSR_SPMPADDR23 0x9d7    /* TENTATIVELY use custom CSR address.  */
+#define CSR_SPMPADDR24 0x9d8    /* TENTATIVELY use custom CSR address.  */
+#define CSR_SPMPADDR25 0x9d9    /* TENTATIVELY use custom CSR address.  */
+#define CSR_SPMPADDR26 0x9da    /* TENTATIVELY use custom CSR address.  */
+#define CSR_SPMPADDR27 0x9db    /* TENTATIVELY use custom CSR address.  */
+#define CSR_SPMPADDR28 0x9dc    /* TENTATIVELY use custom CSR address.  */
+#define CSR_SPMPADDR29 0x9dd    /* TENTATIVELY use custom CSR address.  */
+#define CSR_SPMPADDR30 0x9de    /* TENTATIVELY use custom CSR address.  */
+#define CSR_SPMPADDR31 0x9df    /* TENTATIVELY use custom CSR address.  */
+#define CSR_SPMPADDR32 0x9e0    /* TENTATIVELY use custom CSR address.  */
+#define CSR_SPMPADDR33 0x9e1    /* TENTATIVELY use custom CSR address.  */
+#define CSR_SPMPADDR34 0x9e2    /* TENTATIVELY use custom CSR address.  */
+#define CSR_SPMPADDR35 0x9e3    /* TENTATIVELY use custom CSR address.  */
+#define CSR_SPMPADDR36 0x9e4    /* TENTATIVELY use custom CSR address.  */
+#define CSR_SPMPADDR37 0x9e5    /* TENTATIVELY use custom CSR address.  */
+#define CSR_SPMPADDR38 0x9e6    /* TENTATIVELY use custom CSR address.  */
+#define CSR_SPMPADDR39 0x9e7    /* TENTATIVELY use custom CSR address.  */
+#define CSR_SPMPADDR40 0x9e8    /* TENTATIVELY use custom CSR address.  */
+#define CSR_SPMPADDR41 0x9e9    /* TENTATIVELY use custom CSR address.  */
+#define CSR_SPMPADDR42 0x9ea    /* TENTATIVELY use custom CSR address.  */
+#define CSR_SPMPADDR43 0x9eb    /* TENTATIVELY use custom CSR address.  */
+#define CSR_SPMPADDR44 0x9ec    /* TENTATIVELY use custom CSR address.  */
+#define CSR_SPMPADDR45 0x9ed    /* TENTATIVELY use custom CSR address.  */
+#define CSR_SPMPADDR46 0x9ee    /* TENTATIVELY use custom CSR address.  */
+#define CSR_SPMPADDR47 0x9ef    /* TENTATIVELY use custom CSR address.  */
+#define CSR_SPMPADDR48 0x9f0    /* TENTATIVELY use custom CSR address.  */
+#define CSR_SPMPADDR49 0x9f1    /* TENTATIVELY use custom CSR address.  */
+#define CSR_SPMPADDR50 0x9f2    /* TENTATIVELY use custom CSR address.  */
+#define CSR_SPMPADDR51 0x9f3    /* TENTATIVELY use custom CSR address.  */
+#define CSR_SPMPADDR52 0x9f4    /* TENTATIVELY use custom CSR address.  */
+#define CSR_SPMPADDR53 0x9f5    /* TENTATIVELY use custom CSR address.  */
+#define CSR_SPMPADDR54 0x9f6    /* TENTATIVELY use custom CSR address.  */
+#define CSR_SPMPADDR55 0x9f7    /* TENTATIVELY use custom CSR address.  */
+#define CSR_SPMPADDR56 0x9f8    /* TENTATIVELY use custom CSR address.  */
+#define CSR_SPMPADDR57 0x9f9    /* TENTATIVELY use custom CSR address.  */
+#define CSR_SPMPADDR58 0x9fa    /* TENTATIVELY use custom CSR address.  */
+#define CSR_SPMPADDR59 0x9fb    /* TENTATIVELY use custom CSR address.  */
+#define CSR_SPMPADDR60 0x9fc    /* TENTATIVELY use custom CSR address.  */
+#define CSR_SPMPADDR61 0x9fd    /* TENTATIVELY use custom CSR address.  */
+#define CSR_SPMPADDR62 0x9fe    /* TENTATIVELY use custom CSR address.  */
+#define CSR_SPMPADDR63 0x9ff    /* TENTATIVELY use custom CSR address.  */
 /* Sstc extension */
 #define CSR_STIMECMP 0x14d
 #define CSR_STIMECMPH 0x15d
@@ -3624,6 +3707,89 @@ DECLARE_CSR(mhpmevent28h, CSR_MHPMEVENT28H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLA
 DECLARE_CSR(mhpmevent29h, CSR_MHPMEVENT29H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
 DECLARE_CSR(mhpmevent30h, CSR_MHPMEVENT30H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
 DECLARE_CSR(mhpmevent31h, CSR_MHPMEVENT31H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+/* Sspmp extension CSRs.  */
+DECLARE_CSR(spmpcfg0, CSR_SPMPCFG0, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(spmpcfg1, CSR_SPMPCFG1, CSR_CLASS_SSPMP_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(spmpcfg2, CSR_SPMPCFG2, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(spmpcfg3, CSR_SPMPCFG3, CSR_CLASS_SSPMP_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(spmpcfg4, CSR_SPMPCFG4, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(spmpcfg5, CSR_SPMPCFG5, CSR_CLASS_SSPMP_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(spmpcfg6, CSR_SPMPCFG6, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(spmpcfg7, CSR_SPMPCFG7, CSR_CLASS_SSPMP_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(spmpcfg8, CSR_SPMPCFG8, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(spmpcfg9, CSR_SPMPCFG9, CSR_CLASS_SSPMP_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(spmpcfg10, CSR_SPMPCFG10, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(spmpcfg11, CSR_SPMPCFG11, CSR_CLASS_SSPMP_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(spmpcfg12, CSR_SPMPCFG12, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(spmpcfg13, CSR_SPMPCFG13, CSR_CLASS_SSPMP_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(spmpcfg14, CSR_SPMPCFG14, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(spmpcfg15, CSR_SPMPCFG15, CSR_CLASS_SSPMP_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(spmpswitch0, CSR_SPMPSWITCH0, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(spmpswitch1, CSR_SPMPSWITCH1, CSR_CLASS_SSPMP_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(spmpaddr0, CSR_SPMPADDR0, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(spmpaddr1, CSR_SPMPADDR1, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(spmpaddr2, CSR_SPMPADDR2, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(spmpaddr3, CSR_SPMPADDR3, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(spmpaddr4, CSR_SPMPADDR4, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(spmpaddr5, CSR_SPMPADDR5, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(spmpaddr6, CSR_SPMPADDR6, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(spmpaddr7, CSR_SPMPADDR7, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(spmpaddr8, CSR_SPMPADDR8, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(spmpaddr9, CSR_SPMPADDR9, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(spmpaddr10, CSR_SPMPADDR10, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(spmpaddr11, CSR_SPMPADDR11, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(spmpaddr12, CSR_SPMPADDR12, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(spmpaddr13, CSR_SPMPADDR13, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(spmpaddr14, CSR_SPMPADDR14, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(spmpaddr15, CSR_SPMPADDR15, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(spmpaddr16, CSR_SPMPADDR16, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(spmpaddr17, CSR_SPMPADDR17, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(spmpaddr18, CSR_SPMPADDR18, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(spmpaddr19, CSR_SPMPADDR19, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(spmpaddr20, CSR_SPMPADDR20, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(spmpaddr21, CSR_SPMPADDR21, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(spmpaddr22, CSR_SPMPADDR22, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(spmpaddr23, CSR_SPMPADDR23, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(spmpaddr24, CSR_SPMPADDR24, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(spmpaddr25, CSR_SPMPADDR25, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(spmpaddr26, CSR_SPMPADDR26, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(spmpaddr27, CSR_SPMPADDR27, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(spmpaddr28, CSR_SPMPADDR28, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(spmpaddr29, CSR_SPMPADDR29, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(spmpaddr30, CSR_SPMPADDR30, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(spmpaddr31, CSR_SPMPADDR31, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(spmpaddr32, CSR_SPMPADDR32, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(spmpaddr33, CSR_SPMPADDR33, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(spmpaddr34, CSR_SPMPADDR34, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(spmpaddr35, CSR_SPMPADDR35, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(spmpaddr36, CSR_SPMPADDR36, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(spmpaddr37, CSR_SPMPADDR37, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(spmpaddr38, CSR_SPMPADDR38, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(spmpaddr39, CSR_SPMPADDR39, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(spmpaddr40, CSR_SPMPADDR40, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(spmpaddr41, CSR_SPMPADDR41, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(spmpaddr42, CSR_SPMPADDR42, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(spmpaddr43, CSR_SPMPADDR43, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(spmpaddr44, CSR_SPMPADDR44, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(spmpaddr45, CSR_SPMPADDR45, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(spmpaddr46, CSR_SPMPADDR46, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(spmpaddr47, CSR_SPMPADDR47, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(spmpaddr48, CSR_SPMPADDR48, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(spmpaddr49, CSR_SPMPADDR49, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(spmpaddr50, CSR_SPMPADDR50, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(spmpaddr51, CSR_SPMPADDR51, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(spmpaddr52, CSR_SPMPADDR52, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(spmpaddr53, CSR_SPMPADDR53, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(spmpaddr54, CSR_SPMPADDR54, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(spmpaddr55, CSR_SPMPADDR55, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(spmpaddr56, CSR_SPMPADDR56, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(spmpaddr57, CSR_SPMPADDR57, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(spmpaddr58, CSR_SPMPADDR58, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(spmpaddr59, CSR_SPMPADDR59, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(spmpaddr60, CSR_SPMPADDR60, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(spmpaddr61, CSR_SPMPADDR61, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(spmpaddr62, CSR_SPMPADDR62, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(spmpaddr63, CSR_SPMPADDR63, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
 /* Sstc extension */
 DECLARE_CSR(stimecmp, CSR_STIMECMP, CSR_CLASS_SSTC, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
 DECLARE_CSR(stimecmph, CSR_STIMECMPH, CSR_CLASS_SSTC_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
-- 
2.38.1


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [REVIEW ONLY 2/2] TEST: Add instantiation script on CSR allocation
  2022-11-29  1:20 [REVIEW ONLY 0/2] UNRATIFIED RISC-V: Add 'Sspmp' extension and its TENTATIVE CSRs Tsukasa OI
  2022-11-29  1:20 ` [REVIEW ONLY 1/2] " Tsukasa OI
@ 2022-11-29  1:20 ` Tsukasa OI
  2022-11-29  2:22   ` Palmer Dabbelt
  1 sibling, 1 reply; 7+ messages in thread
From: Tsukasa OI @ 2022-11-29  1:20 UTC (permalink / raw)
  To: Tsukasa OI; +Cc: binutils

From: Tsukasa OI <research_trasio@irq.a4lg.com>

---
 instantiate-sspmp.sh | 130 +++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 130 insertions(+)
 create mode 100755 instantiate-sspmp.sh

diff --git a/instantiate-sspmp.sh b/instantiate-sspmp.sh
new file mode 100755
index 000000000000..23b6a2f554e6
--- /dev/null
+++ b/instantiate-sspmp.sh
@@ -0,0 +1,130 @@
+#! /bin/bash
+# SPDX-License-Identifier: CC0-1.0
+# Author: Tsukasa OI <research_trasio@irq.a4lg.com>
+# Year: 2022
+
+check_csr_addr ()
+{
+	ADDR="$1"
+	case "$ADDR" in
+	0x* | 0X*)
+		ADDR="${ADDR#??}"
+		;;
+	esac
+	case "$ADDR" in
+	[0-9a-fA-F])
+		ADDR=00$ADDR
+		;;
+	[0-9a-fA-F][0-9a-fA-F])
+		ADDR=0$ADDR
+		;;
+	[0-9a-fA-F][0-9a-fA-F][0-9a-fA-F])
+		;;
+	*)
+		echo "ERROR: \`$1' is not a valid CSR address for \`$2'." 1>&2
+		exit 1
+		;;
+	esac
+	ADDR=$(echo $ADDR | tr A-F a-f)
+	printf %s $ADDR
+	return 0
+}
+
+canonicalize_hex ()
+{
+	ADDR=$1
+	while :
+	do
+		case $ADDR in
+		0)
+			break
+			;;
+		0?*)
+			ADDR=${ADDR#0}
+			;;
+		*)
+			break
+			;;
+		esac
+	done
+	printf 0x%s $ADDR
+}
+
+dwarf_regnum ()
+{
+	echo -n $(($1 + 4096))
+}
+
+dwarf_offset ()
+{
+	echo -n $(($1 * 4))
+}
+
+test_path ()
+{
+	if test '!' -f "$1"
+	then
+		echo "ERROR: file \`$1' is not found." 1>&2
+		exit 1
+	fi
+}
+
+if test $# -ne 4
+then
+	ERRMSG="usage: $0 ADDR_SPMPCFG0 ADDR_SPMPADDR0 ADDR_SPMPSWITCH0 ADDR_SPMPSWITCH1"
+	echo "$ERRMSG" 1>&2
+	exit 1
+fi
+
+PRIV_VERSIONS="1p9p1 1p10 1p11 1p12"
+
+test_path include/opcode/riscv-opc.h
+for V in $PRIV_VERSIONS
+do
+	test_path gas/testsuite/gas/riscv/csr-version-$V.d
+done
+test_path gas/testsuite/gas/riscv/csr-dw-regnums.s
+test_path gas/testsuite/gas/riscv/csr-dw-regnums.d
+
+do_csr_instantiation ()
+{
+	CSR="$1"
+	CSR_UPPER=$(echo $CSR | tr a-z A-Z)
+	ADDR=$(check_csr_addr "$2" $CSR)
+	HEXC=$(canonicalize_hex $ADDR)
+	DWREG=$(dwarf_regnum $HEXC)
+	DWOFF=$(dwarf_offset $HEXC)
+	ORIG_ADDR=$(grep "a0,${CSR}\$" gas/testsuite/gas/riscv/csr-version-1p12.d | head -n 1 | sed 's/.*+\([0-9a-f]\{3\}\)02573.*/\1/')
+	sed -i "s/^#define CSR_${CSR_UPPER} .*/#define CSR_${CSR_UPPER} $HEXC/" include/opcode/riscv-opc.h
+	for V in $PRIV_VERSIONS
+	do
+		sed -i "s/+${ORIG_ADDR}\\(02573\\|59073\\)/+${ADDR}\\1/" gas/testsuite/gas/riscv/csr-version-$V.d
+	done
+	sed -i "s/\\.cfi_offset ${CSR}, .*/.cfi_offset ${CSR}, ${DWOFF}/" gas/testsuite/gas/riscv/csr-dw-regnums.s
+	sed -i "s/DW_CFA_offset_extended_sf: r[0-9]\\+ \\\\(${CSR}\\\\) at cfa\\\\+[0-9]\\+/DW_CFA_offset_extended_sf: r${DWREG} \\\\(${CSR}\\\\) at cfa\\\\+${DWOFF}/" gas/testsuite/gas/riscv/csr-dw-regnums.d
+}
+
+ADDR=$(check_csr_addr "$1" spmpcfg0)
+NADDR=$((0x$ADDR))
+for N in $(seq 0 15)
+do
+	ADDR_N=$(printf %03x $(($NADDR + $N)))
+	do_csr_instantiation spmpcfg$N $ADDR_N
+done
+
+ADDR=$(check_csr_addr "$2" spmpaddr0)
+NADDR=$((0x$ADDR))
+for N in $(seq 0 63)
+do
+	ADDR_N=$(printf %03x $(($NADDR + $N)))
+	do_csr_instantiation spmpaddr$N $ADDR_N
+done
+
+do_csr_instantiation spmpswitch0 "$3"
+do_csr_instantiation spmpswitch1 "$4"
+
+if test -f "$0"
+then
+	rm -f "$0"
+fi
+exit 0
-- 
2.38.1


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [REVIEW ONLY 1/2] UNRATIFIED RISC-V: Add 'Sspmp' extension and its TENTATIVE CSRs
  2022-11-29  1:20 ` [REVIEW ONLY 1/2] " Tsukasa OI
@ 2022-11-29  2:22   ` Palmer Dabbelt
  0 siblings, 0 replies; 7+ messages in thread
From: Palmer Dabbelt @ 2022-11-29  2:22 UTC (permalink / raw)
  To: binutils; +Cc: research_trasio, binutils

On Mon, 28 Nov 2022 17:20:57 PST (-0800), binutils@sourceware.org wrote:
> From: Tsukasa OI <research_trasio@irq.a4lg.com>
>
> [DO NOT MERGE]
> Until 'Sspmp' extension is frozen/ratified and final version number is
> determined, this patch should not be merged upstream. This commit uses
> unratified version 0.8 as in the documentation (instead of possible 1.0
> after ratification).
>
> This commit adds RISC-V S-mode Physical Memory Protection (SPMP) version
> 0.8 based on the specification:
> <https://github.com/riscv/riscv-spmp/blob/c1e38ede20e4fe0a534ec7e8302c99b2a0a0ca72/rv-spmp-spec.pdf>

Looks like there's also vSPMP and hgPMP extensions (see chapter 4)?  
Those are still somewhat vague in the spec, though.  Otherwise

Reviewed-by: Palmer Dabbelt <palmer@rivosinc.com> # pending freeze

Thanks!

>
> Note
>
> Because CSR addresses are not fixed yet, this commit uses tentative
> addresses (a part of custom CSR space).
>
> bfd/ChangeLog:
>
> 	* elfxx-riscv.c (riscv_implicit_subsets) Add implication 'Sspmp'
> 	-> 'Zicsr'.  (riscv_supported_std_s_ext): Add 'Sspmp' extension to
> 	valid 'S' extension list.
>
> gas/ChangeLog:
>
> 	* config/tc-riscv.c (enum riscv_csr_class): Add CSR classes for
> 	the 'Sspmp' extension.  (riscv_csr_address): Add handling for new
> 	CSR classes.
> 	* testsuite/gas/riscv/csr-dw-regnums.d: Add new CSRs.
> 	* testsuite/gas/riscv/csr-dw-regnums.s: Likewise.
> 	* testsuite/gas/riscv/csr.s: Add new CSRs.
> 	* testsuite/gas/riscv/csr-version-1p9p1.d: Likewise.
> 	* testsuite/gas/riscv/csr-version-1p9p1.l: Likewise.
> 	* testsuite/gas/riscv/csr-version-1p10.d: Likewise.
> 	* testsuite/gas/riscv/csr-version-1p10.l: Likewise.
> 	* testsuite/gas/riscv/csr-version-1p11.d: Likewise.
> 	* testsuite/gas/riscv/csr-version-1p11.l: Likewise.
> 	* testsuite/gas/riscv/csr-version-1p12.d: Likewise.
> 	* testsuite/gas/riscv/csr-version-1p12.l: Likewise.
>
> include/ChangeLog:
>
> 	* opcode/riscv-opc.h (CSR_SPMPCFG0, CSR_SPMPCFG1, CSR_SPMPCFG2,
> 	CSR_SPMPCFG3, CSR_SPMPCFG4, CSR_SPMPCFG5, CSR_SPMPCFG6,
> 	CSR_SPMPCFG7, CSR_SPMPCFG8, CSR_SPMPCFG9, CSR_SPMPCFG10,
> 	CSR_SPMPCFG11, CSR_SPMPCFG12, CSR_SPMPCFG13, CSR_SPMPCFG14,
> 	CSR_SPMPCFG15, CSR_SPMPSWITCH0, CSR_SPMPSWITCH1, CSR_SPMPADDR0,
> 	CSR_SPMPADDR1, CSR_SPMPADDR2, CSR_SPMPADDR3, CSR_SPMPADDR4,
> 	CSR_SPMPADDR5, CSR_SPMPADDR6, CSR_SPMPADDR7, CSR_SPMPADDR8,
> 	CSR_SPMPADDR9, CSR_SPMPADDR10, CSR_SPMPADDR11, CSR_SPMPADDR12,
> 	CSR_SPMPADDR13, CSR_SPMPADDR14, CSR_SPMPADDR15, CSR_SPMPADDR16,
> 	CSR_SPMPADDR17, CSR_SPMPADDR18, CSR_SPMPADDR19, CSR_SPMPADDR20,
> 	CSR_SPMPADDR21, CSR_SPMPADDR22, CSR_SPMPADDR23, CSR_SPMPADDR24,
> 	CSR_SPMPADDR25, CSR_SPMPADDR26, CSR_SPMPADDR27, CSR_SPMPADDR28,
> 	CSR_SPMPADDR29, CSR_SPMPADDR30, CSR_SPMPADDR31, CSR_SPMPADDR32,
> 	CSR_SPMPADDR33, CSR_SPMPADDR34, CSR_SPMPADDR35, CSR_SPMPADDR36,
> 	CSR_SPMPADDR37, CSR_SPMPADDR38, CSR_SPMPADDR39, CSR_SPMPADDR40,
> 	CSR_SPMPADDR41, CSR_SPMPADDR42, CSR_SPMPADDR43, CSR_SPMPADDR44,
> 	CSR_SPMPADDR45, CSR_SPMPADDR46, CSR_SPMPADDR47, CSR_SPMPADDR48,
> 	CSR_SPMPADDR49, CSR_SPMPADDR50, CSR_SPMPADDR51, CSR_SPMPADDR52,
> 	CSR_SPMPADDR53, CSR_SPMPADDR54, CSR_SPMPADDR55, CSR_SPMPADDR56,
> 	CSR_SPMPADDR57, CSR_SPMPADDR58, CSR_SPMPADDR59, CSR_SPMPADDR60,
> 	CSR_SPMPADDR61, CSR_SPMPADDR62, CSR_SPMPADDR63): New.
> ---
>  bfd/elfxx-riscv.c                           |   2 +
>  gas/config/tc-riscv.c                       |   7 +
>  gas/testsuite/gas/riscv/csr-dw-regnums.d    |  82 +++++++++
>  gas/testsuite/gas/riscv/csr-dw-regnums.s    |  83 +++++++++
>  gas/testsuite/gas/riscv/csr-version-1p10.d  | 164 ++++++++++++++++++
>  gas/testsuite/gas/riscv/csr-version-1p10.l  | 182 ++++++++++++++++++++
>  gas/testsuite/gas/riscv/csr-version-1p11.d  | 164 ++++++++++++++++++
>  gas/testsuite/gas/riscv/csr-version-1p11.l  | 182 ++++++++++++++++++++
>  gas/testsuite/gas/riscv/csr-version-1p12.d  | 164 ++++++++++++++++++
>  gas/testsuite/gas/riscv/csr-version-1p12.l  | 182 ++++++++++++++++++++
>  gas/testsuite/gas/riscv/csr-version-1p9p1.d | 164 ++++++++++++++++++
>  gas/testsuite/gas/riscv/csr-version-1p9p1.l | 182 ++++++++++++++++++++
>  gas/testsuite/gas/riscv/csr.s               |  84 +++++++++
>  include/opcode/riscv-opc.h                  | 166 ++++++++++++++++++
>  14 files changed, 1808 insertions(+)
>
> diff --git a/bfd/elfxx-riscv.c b/bfd/elfxx-riscv.c
> index 0bcf2fdcfa34..c810b7d106e1 100644
> --- a/bfd/elfxx-riscv.c
> +++ b/bfd/elfxx-riscv.c
> @@ -1106,6 +1106,7 @@ static struct riscv_implicit_subset riscv_implicit_subsets[] =
>    {"smepmp", "zicsr",		check_implicit_always},
>    {"ssaia", "zicsr",		check_implicit_always},
>    {"sscofpmf", "zicsr",		check_implicit_always},
> +  {"sspmp", "zicsr",		check_implicit_always},
>    {"ssstateen", "zicsr",	check_implicit_always},
>    {"sstc", "zicsr",		check_implicit_always},
>    {NULL, NULL, NULL}
> @@ -1228,6 +1229,7 @@ static struct riscv_supported_ext riscv_supported_std_s_ext[] =
>    {"smstateen",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
>    {"ssaia",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
>    {"sscofpmf",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
> +  {"sspmp",		ISA_SPEC_CLASS_DRAFT,		0, 8, 0 },
>    {"ssstateen",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
>    {"sstc",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
>    {"svinval",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
> diff --git a/gas/config/tc-riscv.c b/gas/config/tc-riscv.c
> index 0682eb355241..15a151580d18 100644
> --- a/gas/config/tc-riscv.c
> +++ b/gas/config/tc-riscv.c
> @@ -80,6 +80,8 @@ enum riscv_csr_class
>    CSR_CLASS_SSAIA_AND_H,	/* Ssaia with H */
>    CSR_CLASS_SSAIA_32,		/* Ssaia, rv32 only */
>    CSR_CLASS_SSAIA_AND_H_32,	/* Ssaia with H, rv32 only */
> +  CSR_CLASS_SSPMP,		/* Sspmp only */
> +  CSR_CLASS_SSPMP_32,		/* Sspmp RV32 only */
>    CSR_CLASS_SSSTATEEN,		/* S[ms]stateen only */
>    CSR_CLASS_SSSTATEEN_AND_H,	/* S[ms]stateen only (with H) */
>    CSR_CLASS_SSSTATEEN_AND_H_32,	/* S[ms]stateen RV32 only (with H) */
> @@ -1064,6 +1066,11 @@ riscv_csr_address (const char *csr_name,
>  		       || csr_class == CSR_CLASS_SSAIA_AND_H_32);
>        extension = "ssaia";
>        break;
> +    case CSR_CLASS_SSPMP:
> +    case CSR_CLASS_SSPMP_32:
> +      is_rv32_only = (csr_class == CSR_CLASS_SSPMP_32);
> +      extension = "sspmp";
> +      break;
>      case CSR_CLASS_SSSTATEEN:
>      case CSR_CLASS_SSSTATEEN_AND_H:
>      case CSR_CLASS_SSSTATEEN_AND_H_32:
> diff --git a/gas/testsuite/gas/riscv/csr-dw-regnums.d b/gas/testsuite/gas/riscv/csr-dw-regnums.d
> index fd830666ab89..2e68235c13fe 100644
> --- a/gas/testsuite/gas/riscv/csr-dw-regnums.d
> +++ b/gas/testsuite/gas/riscv/csr-dw-regnums.d
> @@ -395,6 +395,88 @@ Contents of the .* section:
>    DW_CFA_offset_extended_sf: r5949 \(mhpmevent29h\) at cfa\+7412
>    DW_CFA_offset_extended_sf: r5950 \(mhpmevent30h\) at cfa\+7416
>    DW_CFA_offset_extended_sf: r5951 \(mhpmevent31h\) at cfa\+7420
> +  DW_CFA_offset_extended_sf: r5568 \(spmpcfg0\) at cfa\+5888
> +  DW_CFA_offset_extended_sf: r5569 \(spmpcfg1\) at cfa\+5892
> +  DW_CFA_offset_extended_sf: r5570 \(spmpcfg2\) at cfa\+5896
> +  DW_CFA_offset_extended_sf: r5571 \(spmpcfg3\) at cfa\+5900
> +  DW_CFA_offset_extended_sf: r5572 \(spmpcfg4\) at cfa\+5904
> +  DW_CFA_offset_extended_sf: r5573 \(spmpcfg5\) at cfa\+5908
> +  DW_CFA_offset_extended_sf: r5574 \(spmpcfg6\) at cfa\+5912
> +  DW_CFA_offset_extended_sf: r5575 \(spmpcfg7\) at cfa\+5916
> +  DW_CFA_offset_extended_sf: r5576 \(spmpcfg8\) at cfa\+5920
> +  DW_CFA_offset_extended_sf: r5577 \(spmpcfg9\) at cfa\+5924
> +  DW_CFA_offset_extended_sf: r5578 \(spmpcfg10\) at cfa\+5928
> +  DW_CFA_offset_extended_sf: r5579 \(spmpcfg11\) at cfa\+5932
> +  DW_CFA_offset_extended_sf: r5580 \(spmpcfg12\) at cfa\+5936
> +  DW_CFA_offset_extended_sf: r5581 \(spmpcfg13\) at cfa\+5940
> +  DW_CFA_offset_extended_sf: r5582 \(spmpcfg14\) at cfa\+5944
> +  DW_CFA_offset_extended_sf: r5583 \(spmpcfg15\) at cfa\+5948
> +  DW_CFA_offset_extended_sf: r5584 \(spmpswitch0\) at cfa\+5952
> +  DW_CFA_offset_extended_sf: r5585 \(spmpswitch1\) at cfa\+5956
> +  DW_CFA_offset_extended_sf: r6592 \(spmpaddr0\) at cfa\+9984
> +  DW_CFA_offset_extended_sf: r6593 \(spmpaddr1\) at cfa\+9988
> +  DW_CFA_offset_extended_sf: r6594 \(spmpaddr2\) at cfa\+9992
> +  DW_CFA_offset_extended_sf: r6595 \(spmpaddr3\) at cfa\+9996
> +  DW_CFA_offset_extended_sf: r6596 \(spmpaddr4\) at cfa\+10000
> +  DW_CFA_offset_extended_sf: r6597 \(spmpaddr5\) at cfa\+10004
> +  DW_CFA_offset_extended_sf: r6598 \(spmpaddr6\) at cfa\+10008
> +  DW_CFA_offset_extended_sf: r6599 \(spmpaddr7\) at cfa\+10012
> +  DW_CFA_offset_extended_sf: r6600 \(spmpaddr8\) at cfa\+10016
> +  DW_CFA_offset_extended_sf: r6601 \(spmpaddr9\) at cfa\+10020
> +  DW_CFA_offset_extended_sf: r6602 \(spmpaddr10\) at cfa\+10024
> +  DW_CFA_offset_extended_sf: r6603 \(spmpaddr11\) at cfa\+10028
> +  DW_CFA_offset_extended_sf: r6604 \(spmpaddr12\) at cfa\+10032
> +  DW_CFA_offset_extended_sf: r6605 \(spmpaddr13\) at cfa\+10036
> +  DW_CFA_offset_extended_sf: r6606 \(spmpaddr14\) at cfa\+10040
> +  DW_CFA_offset_extended_sf: r6607 \(spmpaddr15\) at cfa\+10044
> +  DW_CFA_offset_extended_sf: r6608 \(spmpaddr16\) at cfa\+10048
> +  DW_CFA_offset_extended_sf: r6609 \(spmpaddr17\) at cfa\+10052
> +  DW_CFA_offset_extended_sf: r6610 \(spmpaddr18\) at cfa\+10056
> +  DW_CFA_offset_extended_sf: r6611 \(spmpaddr19\) at cfa\+10060
> +  DW_CFA_offset_extended_sf: r6612 \(spmpaddr20\) at cfa\+10064
> +  DW_CFA_offset_extended_sf: r6613 \(spmpaddr21\) at cfa\+10068
> +  DW_CFA_offset_extended_sf: r6614 \(spmpaddr22\) at cfa\+10072
> +  DW_CFA_offset_extended_sf: r6615 \(spmpaddr23\) at cfa\+10076
> +  DW_CFA_offset_extended_sf: r6616 \(spmpaddr24\) at cfa\+10080
> +  DW_CFA_offset_extended_sf: r6617 \(spmpaddr25\) at cfa\+10084
> +  DW_CFA_offset_extended_sf: r6618 \(spmpaddr26\) at cfa\+10088
> +  DW_CFA_offset_extended_sf: r6619 \(spmpaddr27\) at cfa\+10092
> +  DW_CFA_offset_extended_sf: r6620 \(spmpaddr28\) at cfa\+10096
> +  DW_CFA_offset_extended_sf: r6621 \(spmpaddr29\) at cfa\+10100
> +  DW_CFA_offset_extended_sf: r6622 \(spmpaddr30\) at cfa\+10104
> +  DW_CFA_offset_extended_sf: r6623 \(spmpaddr31\) at cfa\+10108
> +  DW_CFA_offset_extended_sf: r6624 \(spmpaddr32\) at cfa\+10112
> +  DW_CFA_offset_extended_sf: r6625 \(spmpaddr33\) at cfa\+10116
> +  DW_CFA_offset_extended_sf: r6626 \(spmpaddr34\) at cfa\+10120
> +  DW_CFA_offset_extended_sf: r6627 \(spmpaddr35\) at cfa\+10124
> +  DW_CFA_offset_extended_sf: r6628 \(spmpaddr36\) at cfa\+10128
> +  DW_CFA_offset_extended_sf: r6629 \(spmpaddr37\) at cfa\+10132
> +  DW_CFA_offset_extended_sf: r6630 \(spmpaddr38\) at cfa\+10136
> +  DW_CFA_offset_extended_sf: r6631 \(spmpaddr39\) at cfa\+10140
> +  DW_CFA_offset_extended_sf: r6632 \(spmpaddr40\) at cfa\+10144
> +  DW_CFA_offset_extended_sf: r6633 \(spmpaddr41\) at cfa\+10148
> +  DW_CFA_offset_extended_sf: r6634 \(spmpaddr42\) at cfa\+10152
> +  DW_CFA_offset_extended_sf: r6635 \(spmpaddr43\) at cfa\+10156
> +  DW_CFA_offset_extended_sf: r6636 \(spmpaddr44\) at cfa\+10160
> +  DW_CFA_offset_extended_sf: r6637 \(spmpaddr45\) at cfa\+10164
> +  DW_CFA_offset_extended_sf: r6638 \(spmpaddr46\) at cfa\+10168
> +  DW_CFA_offset_extended_sf: r6639 \(spmpaddr47\) at cfa\+10172
> +  DW_CFA_offset_extended_sf: r6640 \(spmpaddr48\) at cfa\+10176
> +  DW_CFA_offset_extended_sf: r6641 \(spmpaddr49\) at cfa\+10180
> +  DW_CFA_offset_extended_sf: r6642 \(spmpaddr50\) at cfa\+10184
> +  DW_CFA_offset_extended_sf: r6643 \(spmpaddr51\) at cfa\+10188
> +  DW_CFA_offset_extended_sf: r6644 \(spmpaddr52\) at cfa\+10192
> +  DW_CFA_offset_extended_sf: r6645 \(spmpaddr53\) at cfa\+10196
> +  DW_CFA_offset_extended_sf: r6646 \(spmpaddr54\) at cfa\+10200
> +  DW_CFA_offset_extended_sf: r6647 \(spmpaddr55\) at cfa\+10204
> +  DW_CFA_offset_extended_sf: r6648 \(spmpaddr56\) at cfa\+10208
> +  DW_CFA_offset_extended_sf: r6649 \(spmpaddr57\) at cfa\+10212
> +  DW_CFA_offset_extended_sf: r6650 \(spmpaddr58\) at cfa\+10216
> +  DW_CFA_offset_extended_sf: r6651 \(spmpaddr59\) at cfa\+10220
> +  DW_CFA_offset_extended_sf: r6652 \(spmpaddr60\) at cfa\+10224
> +  DW_CFA_offset_extended_sf: r6653 \(spmpaddr61\) at cfa\+10228
> +  DW_CFA_offset_extended_sf: r6654 \(spmpaddr62\) at cfa\+10232
> +  DW_CFA_offset_extended_sf: r6655 \(spmpaddr63\) at cfa\+10236
>    DW_CFA_offset_extended_sf: r4429 \(stimecmp\) at cfa\+1332
>    DW_CFA_offset_extended_sf: r4445 \(stimecmph\) at cfa\+1396
>    DW_CFA_offset_extended_sf: r4685 \(vstimecmp\) at cfa\+2356
> diff --git a/gas/testsuite/gas/riscv/csr-dw-regnums.s b/gas/testsuite/gas/riscv/csr-dw-regnums.s
> index b8b0f7902297..397847c3d01d 100644
> --- a/gas/testsuite/gas/riscv/csr-dw-regnums.s
> +++ b/gas/testsuite/gas/riscv/csr-dw-regnums.s
> @@ -395,6 +395,89 @@ _start:
>  	.cfi_offset mhpmevent29h, 7412
>  	.cfi_offset mhpmevent30h, 7416
>  	.cfi_offset mhpmevent31h, 7420
> +	# Sspmp extension
> +	.cfi_offset spmpcfg0, 5888
> +	.cfi_offset spmpcfg1, 5892
> +	.cfi_offset spmpcfg2, 5896
> +	.cfi_offset spmpcfg3, 5900
> +	.cfi_offset spmpcfg4, 5904
> +	.cfi_offset spmpcfg5, 5908
> +	.cfi_offset spmpcfg6, 5912
> +	.cfi_offset spmpcfg7, 5916
> +	.cfi_offset spmpcfg8, 5920
> +	.cfi_offset spmpcfg9, 5924
> +	.cfi_offset spmpcfg10, 5928
> +	.cfi_offset spmpcfg11, 5932
> +	.cfi_offset spmpcfg12, 5936
> +	.cfi_offset spmpcfg13, 5940
> +	.cfi_offset spmpcfg14, 5944
> +	.cfi_offset spmpcfg15, 5948
> +	.cfi_offset spmpswitch0, 5952
> +	.cfi_offset spmpswitch1, 5956
> +	.cfi_offset spmpaddr0, 9984
> +	.cfi_offset spmpaddr1, 9988
> +	.cfi_offset spmpaddr2, 9992
> +	.cfi_offset spmpaddr3, 9996
> +	.cfi_offset spmpaddr4, 10000
> +	.cfi_offset spmpaddr5, 10004
> +	.cfi_offset spmpaddr6, 10008
> +	.cfi_offset spmpaddr7, 10012
> +	.cfi_offset spmpaddr8, 10016
> +	.cfi_offset spmpaddr9, 10020
> +	.cfi_offset spmpaddr10, 10024
> +	.cfi_offset spmpaddr11, 10028
> +	.cfi_offset spmpaddr12, 10032
> +	.cfi_offset spmpaddr13, 10036
> +	.cfi_offset spmpaddr14, 10040
> +	.cfi_offset spmpaddr15, 10044
> +	.cfi_offset spmpaddr16, 10048
> +	.cfi_offset spmpaddr17, 10052
> +	.cfi_offset spmpaddr18, 10056
> +	.cfi_offset spmpaddr19, 10060
> +	.cfi_offset spmpaddr20, 10064
> +	.cfi_offset spmpaddr21, 10068
> +	.cfi_offset spmpaddr22, 10072
> +	.cfi_offset spmpaddr23, 10076
> +	.cfi_offset spmpaddr24, 10080
> +	.cfi_offset spmpaddr25, 10084
> +	.cfi_offset spmpaddr26, 10088
> +	.cfi_offset spmpaddr27, 10092
> +	.cfi_offset spmpaddr28, 10096
> +	.cfi_offset spmpaddr29, 10100
> +	.cfi_offset spmpaddr30, 10104
> +	.cfi_offset spmpaddr31, 10108
> +	.cfi_offset spmpaddr32, 10112
> +	.cfi_offset spmpaddr33, 10116
> +	.cfi_offset spmpaddr34, 10120
> +	.cfi_offset spmpaddr35, 10124
> +	.cfi_offset spmpaddr36, 10128
> +	.cfi_offset spmpaddr37, 10132
> +	.cfi_offset spmpaddr38, 10136
> +	.cfi_offset spmpaddr39, 10140
> +	.cfi_offset spmpaddr40, 10144
> +	.cfi_offset spmpaddr41, 10148
> +	.cfi_offset spmpaddr42, 10152
> +	.cfi_offset spmpaddr43, 10156
> +	.cfi_offset spmpaddr44, 10160
> +	.cfi_offset spmpaddr45, 10164
> +	.cfi_offset spmpaddr46, 10168
> +	.cfi_offset spmpaddr47, 10172
> +	.cfi_offset spmpaddr48, 10176
> +	.cfi_offset spmpaddr49, 10180
> +	.cfi_offset spmpaddr50, 10184
> +	.cfi_offset spmpaddr51, 10188
> +	.cfi_offset spmpaddr52, 10192
> +	.cfi_offset spmpaddr53, 10196
> +	.cfi_offset spmpaddr54, 10200
> +	.cfi_offset spmpaddr55, 10204
> +	.cfi_offset spmpaddr56, 10208
> +	.cfi_offset spmpaddr57, 10212
> +	.cfi_offset spmpaddr58, 10216
> +	.cfi_offset spmpaddr59, 10220
> +	.cfi_offset spmpaddr60, 10224
> +	.cfi_offset spmpaddr61, 10228
> +	.cfi_offset spmpaddr62, 10232
> +	.cfi_offset spmpaddr63, 10236
>  	# Sstc extension
>  	.cfi_offset stimecmp, 1332
>  	.cfi_offset stimecmph, 1396
> diff --git a/gas/testsuite/gas/riscv/csr-version-1p10.d b/gas/testsuite/gas/riscv/csr-version-1p10.d
> index ee41e1025cce..ffea30674d33 100644
> --- a/gas/testsuite/gas/riscv/csr-version-1p10.d
> +++ b/gas/testsuite/gas/riscv/csr-version-1p10.d
> @@ -765,6 +765,170 @@ Disassembly of section .text:
>  [ 	]+[0-9a-f]+:[ 	]+73e59073[ 	]+csrw[ 	]+mhpmevent30h,a1
>  [ 	]+[0-9a-f]+:[ 	]+73f02573[ 	]+csrr[ 	]+a0,mhpmevent31h
>  [ 	]+[0-9a-f]+:[ 	]+73f59073[ 	]+csrw[ 	]+mhpmevent31h,a1
> +[ 	]+[0-9a-f]+:[ 	]+5c002573[ 	]+csrr[ 	]+a0,spmpcfg0
> +[ 	]+[0-9a-f]+:[ 	]+5c059073[ 	]+csrw[ 	]+spmpcfg0,a1
> +[ 	]+[0-9a-f]+:[ 	]+5c102573[ 	]+csrr[ 	]+a0,spmpcfg1
> +[ 	]+[0-9a-f]+:[ 	]+5c159073[ 	]+csrw[ 	]+spmpcfg1,a1
> +[ 	]+[0-9a-f]+:[ 	]+5c202573[ 	]+csrr[ 	]+a0,spmpcfg2
> +[ 	]+[0-9a-f]+:[ 	]+5c259073[ 	]+csrw[ 	]+spmpcfg2,a1
> +[ 	]+[0-9a-f]+:[ 	]+5c302573[ 	]+csrr[ 	]+a0,spmpcfg3
> +[ 	]+[0-9a-f]+:[ 	]+5c359073[ 	]+csrw[ 	]+spmpcfg3,a1
> +[ 	]+[0-9a-f]+:[ 	]+5c402573[ 	]+csrr[ 	]+a0,spmpcfg4
> +[ 	]+[0-9a-f]+:[ 	]+5c459073[ 	]+csrw[ 	]+spmpcfg4,a1
> +[ 	]+[0-9a-f]+:[ 	]+5c502573[ 	]+csrr[ 	]+a0,spmpcfg5
> +[ 	]+[0-9a-f]+:[ 	]+5c559073[ 	]+csrw[ 	]+spmpcfg5,a1
> +[ 	]+[0-9a-f]+:[ 	]+5c602573[ 	]+csrr[ 	]+a0,spmpcfg6
> +[ 	]+[0-9a-f]+:[ 	]+5c659073[ 	]+csrw[ 	]+spmpcfg6,a1
> +[ 	]+[0-9a-f]+:[ 	]+5c702573[ 	]+csrr[ 	]+a0,spmpcfg7
> +[ 	]+[0-9a-f]+:[ 	]+5c759073[ 	]+csrw[ 	]+spmpcfg7,a1
> +[ 	]+[0-9a-f]+:[ 	]+5c802573[ 	]+csrr[ 	]+a0,spmpcfg8
> +[ 	]+[0-9a-f]+:[ 	]+5c859073[ 	]+csrw[ 	]+spmpcfg8,a1
> +[ 	]+[0-9a-f]+:[ 	]+5c902573[ 	]+csrr[ 	]+a0,spmpcfg9
> +[ 	]+[0-9a-f]+:[ 	]+5c959073[ 	]+csrw[ 	]+spmpcfg9,a1
> +[ 	]+[0-9a-f]+:[ 	]+5ca02573[ 	]+csrr[ 	]+a0,spmpcfg10
> +[ 	]+[0-9a-f]+:[ 	]+5ca59073[ 	]+csrw[ 	]+spmpcfg10,a1
> +[ 	]+[0-9a-f]+:[ 	]+5cb02573[ 	]+csrr[ 	]+a0,spmpcfg11
> +[ 	]+[0-9a-f]+:[ 	]+5cb59073[ 	]+csrw[ 	]+spmpcfg11,a1
> +[ 	]+[0-9a-f]+:[ 	]+5cc02573[ 	]+csrr[ 	]+a0,spmpcfg12
> +[ 	]+[0-9a-f]+:[ 	]+5cc59073[ 	]+csrw[ 	]+spmpcfg12,a1
> +[ 	]+[0-9a-f]+:[ 	]+5cd02573[ 	]+csrr[ 	]+a0,spmpcfg13
> +[ 	]+[0-9a-f]+:[ 	]+5cd59073[ 	]+csrw[ 	]+spmpcfg13,a1
> +[ 	]+[0-9a-f]+:[ 	]+5ce02573[ 	]+csrr[ 	]+a0,spmpcfg14
> +[ 	]+[0-9a-f]+:[ 	]+5ce59073[ 	]+csrw[ 	]+spmpcfg14,a1
> +[ 	]+[0-9a-f]+:[ 	]+5cf02573[ 	]+csrr[ 	]+a0,spmpcfg15
> +[ 	]+[0-9a-f]+:[ 	]+5cf59073[ 	]+csrw[ 	]+spmpcfg15,a1
> +[ 	]+[0-9a-f]+:[ 	]+5d002573[ 	]+csrr[ 	]+a0,spmpswitch0
> +[ 	]+[0-9a-f]+:[ 	]+5d059073[ 	]+csrw[ 	]+spmpswitch0,a1
> +[ 	]+[0-9a-f]+:[ 	]+5d102573[ 	]+csrr[ 	]+a0,spmpswitch1
> +[ 	]+[0-9a-f]+:[ 	]+5d159073[ 	]+csrw[ 	]+spmpswitch1,a1
> +[ 	]+[0-9a-f]+:[ 	]+9c002573[ 	]+csrr[ 	]+a0,spmpaddr0
> +[ 	]+[0-9a-f]+:[ 	]+9c059073[ 	]+csrw[ 	]+spmpaddr0,a1
> +[ 	]+[0-9a-f]+:[ 	]+9c102573[ 	]+csrr[ 	]+a0,spmpaddr1
> +[ 	]+[0-9a-f]+:[ 	]+9c159073[ 	]+csrw[ 	]+spmpaddr1,a1
> +[ 	]+[0-9a-f]+:[ 	]+9c202573[ 	]+csrr[ 	]+a0,spmpaddr2
> +[ 	]+[0-9a-f]+:[ 	]+9c259073[ 	]+csrw[ 	]+spmpaddr2,a1
> +[ 	]+[0-9a-f]+:[ 	]+9c302573[ 	]+csrr[ 	]+a0,spmpaddr3
> +[ 	]+[0-9a-f]+:[ 	]+9c359073[ 	]+csrw[ 	]+spmpaddr3,a1
> +[ 	]+[0-9a-f]+:[ 	]+9c402573[ 	]+csrr[ 	]+a0,spmpaddr4
> +[ 	]+[0-9a-f]+:[ 	]+9c459073[ 	]+csrw[ 	]+spmpaddr4,a1
> +[ 	]+[0-9a-f]+:[ 	]+9c502573[ 	]+csrr[ 	]+a0,spmpaddr5
> +[ 	]+[0-9a-f]+:[ 	]+9c559073[ 	]+csrw[ 	]+spmpaddr5,a1
> +[ 	]+[0-9a-f]+:[ 	]+9c602573[ 	]+csrr[ 	]+a0,spmpaddr6
> +[ 	]+[0-9a-f]+:[ 	]+9c659073[ 	]+csrw[ 	]+spmpaddr6,a1
> +[ 	]+[0-9a-f]+:[ 	]+9c702573[ 	]+csrr[ 	]+a0,spmpaddr7
> +[ 	]+[0-9a-f]+:[ 	]+9c759073[ 	]+csrw[ 	]+spmpaddr7,a1
> +[ 	]+[0-9a-f]+:[ 	]+9c802573[ 	]+csrr[ 	]+a0,spmpaddr8
> +[ 	]+[0-9a-f]+:[ 	]+9c859073[ 	]+csrw[ 	]+spmpaddr8,a1
> +[ 	]+[0-9a-f]+:[ 	]+9c902573[ 	]+csrr[ 	]+a0,spmpaddr9
> +[ 	]+[0-9a-f]+:[ 	]+9c959073[ 	]+csrw[ 	]+spmpaddr9,a1
> +[ 	]+[0-9a-f]+:[ 	]+9ca02573[ 	]+csrr[ 	]+a0,spmpaddr10
> +[ 	]+[0-9a-f]+:[ 	]+9ca59073[ 	]+csrw[ 	]+spmpaddr10,a1
> +[ 	]+[0-9a-f]+:[ 	]+9cb02573[ 	]+csrr[ 	]+a0,spmpaddr11
> +[ 	]+[0-9a-f]+:[ 	]+9cb59073[ 	]+csrw[ 	]+spmpaddr11,a1
> +[ 	]+[0-9a-f]+:[ 	]+9cc02573[ 	]+csrr[ 	]+a0,spmpaddr12
> +[ 	]+[0-9a-f]+:[ 	]+9cc59073[ 	]+csrw[ 	]+spmpaddr12,a1
> +[ 	]+[0-9a-f]+:[ 	]+9cd02573[ 	]+csrr[ 	]+a0,spmpaddr13
> +[ 	]+[0-9a-f]+:[ 	]+9cd59073[ 	]+csrw[ 	]+spmpaddr13,a1
> +[ 	]+[0-9a-f]+:[ 	]+9ce02573[ 	]+csrr[ 	]+a0,spmpaddr14
> +[ 	]+[0-9a-f]+:[ 	]+9ce59073[ 	]+csrw[ 	]+spmpaddr14,a1
> +[ 	]+[0-9a-f]+:[ 	]+9cf02573[ 	]+csrr[ 	]+a0,spmpaddr15
> +[ 	]+[0-9a-f]+:[ 	]+9cf59073[ 	]+csrw[ 	]+spmpaddr15,a1
> +[ 	]+[0-9a-f]+:[ 	]+9d002573[ 	]+csrr[ 	]+a0,spmpaddr16
> +[ 	]+[0-9a-f]+:[ 	]+9d059073[ 	]+csrw[ 	]+spmpaddr16,a1
> +[ 	]+[0-9a-f]+:[ 	]+9d102573[ 	]+csrr[ 	]+a0,spmpaddr17
> +[ 	]+[0-9a-f]+:[ 	]+9d159073[ 	]+csrw[ 	]+spmpaddr17,a1
> +[ 	]+[0-9a-f]+:[ 	]+9d202573[ 	]+csrr[ 	]+a0,spmpaddr18
> +[ 	]+[0-9a-f]+:[ 	]+9d259073[ 	]+csrw[ 	]+spmpaddr18,a1
> +[ 	]+[0-9a-f]+:[ 	]+9d302573[ 	]+csrr[ 	]+a0,spmpaddr19
> +[ 	]+[0-9a-f]+:[ 	]+9d359073[ 	]+csrw[ 	]+spmpaddr19,a1
> +[ 	]+[0-9a-f]+:[ 	]+9d402573[ 	]+csrr[ 	]+a0,spmpaddr20
> +[ 	]+[0-9a-f]+:[ 	]+9d459073[ 	]+csrw[ 	]+spmpaddr20,a1
> +[ 	]+[0-9a-f]+:[ 	]+9d502573[ 	]+csrr[ 	]+a0,spmpaddr21
> +[ 	]+[0-9a-f]+:[ 	]+9d559073[ 	]+csrw[ 	]+spmpaddr21,a1
> +[ 	]+[0-9a-f]+:[ 	]+9d602573[ 	]+csrr[ 	]+a0,spmpaddr22
> +[ 	]+[0-9a-f]+:[ 	]+9d659073[ 	]+csrw[ 	]+spmpaddr22,a1
> +[ 	]+[0-9a-f]+:[ 	]+9d702573[ 	]+csrr[ 	]+a0,spmpaddr23
> +[ 	]+[0-9a-f]+:[ 	]+9d759073[ 	]+csrw[ 	]+spmpaddr23,a1
> +[ 	]+[0-9a-f]+:[ 	]+9d802573[ 	]+csrr[ 	]+a0,spmpaddr24
> +[ 	]+[0-9a-f]+:[ 	]+9d859073[ 	]+csrw[ 	]+spmpaddr24,a1
> +[ 	]+[0-9a-f]+:[ 	]+9d902573[ 	]+csrr[ 	]+a0,spmpaddr25
> +[ 	]+[0-9a-f]+:[ 	]+9d959073[ 	]+csrw[ 	]+spmpaddr25,a1
> +[ 	]+[0-9a-f]+:[ 	]+9da02573[ 	]+csrr[ 	]+a0,spmpaddr26
> +[ 	]+[0-9a-f]+:[ 	]+9da59073[ 	]+csrw[ 	]+spmpaddr26,a1
> +[ 	]+[0-9a-f]+:[ 	]+9db02573[ 	]+csrr[ 	]+a0,spmpaddr27
> +[ 	]+[0-9a-f]+:[ 	]+9db59073[ 	]+csrw[ 	]+spmpaddr27,a1
> +[ 	]+[0-9a-f]+:[ 	]+9dc02573[ 	]+csrr[ 	]+a0,spmpaddr28
> +[ 	]+[0-9a-f]+:[ 	]+9dc59073[ 	]+csrw[ 	]+spmpaddr28,a1
> +[ 	]+[0-9a-f]+:[ 	]+9dd02573[ 	]+csrr[ 	]+a0,spmpaddr29
> +[ 	]+[0-9a-f]+:[ 	]+9dd59073[ 	]+csrw[ 	]+spmpaddr29,a1
> +[ 	]+[0-9a-f]+:[ 	]+9de02573[ 	]+csrr[ 	]+a0,spmpaddr30
> +[ 	]+[0-9a-f]+:[ 	]+9de59073[ 	]+csrw[ 	]+spmpaddr30,a1
> +[ 	]+[0-9a-f]+:[ 	]+9df02573[ 	]+csrr[ 	]+a0,spmpaddr31
> +[ 	]+[0-9a-f]+:[ 	]+9df59073[ 	]+csrw[ 	]+spmpaddr31,a1
> +[ 	]+[0-9a-f]+:[ 	]+9e002573[ 	]+csrr[ 	]+a0,spmpaddr32
> +[ 	]+[0-9a-f]+:[ 	]+9e059073[ 	]+csrw[ 	]+spmpaddr32,a1
> +[ 	]+[0-9a-f]+:[ 	]+9e102573[ 	]+csrr[ 	]+a0,spmpaddr33
> +[ 	]+[0-9a-f]+:[ 	]+9e159073[ 	]+csrw[ 	]+spmpaddr33,a1
> +[ 	]+[0-9a-f]+:[ 	]+9e202573[ 	]+csrr[ 	]+a0,spmpaddr34
> +[ 	]+[0-9a-f]+:[ 	]+9e259073[ 	]+csrw[ 	]+spmpaddr34,a1
> +[ 	]+[0-9a-f]+:[ 	]+9e302573[ 	]+csrr[ 	]+a0,spmpaddr35
> +[ 	]+[0-9a-f]+:[ 	]+9e359073[ 	]+csrw[ 	]+spmpaddr35,a1
> +[ 	]+[0-9a-f]+:[ 	]+9e402573[ 	]+csrr[ 	]+a0,spmpaddr36
> +[ 	]+[0-9a-f]+:[ 	]+9e459073[ 	]+csrw[ 	]+spmpaddr36,a1
> +[ 	]+[0-9a-f]+:[ 	]+9e502573[ 	]+csrr[ 	]+a0,spmpaddr37
> +[ 	]+[0-9a-f]+:[ 	]+9e559073[ 	]+csrw[ 	]+spmpaddr37,a1
> +[ 	]+[0-9a-f]+:[ 	]+9e602573[ 	]+csrr[ 	]+a0,spmpaddr38
> +[ 	]+[0-9a-f]+:[ 	]+9e659073[ 	]+csrw[ 	]+spmpaddr38,a1
> +[ 	]+[0-9a-f]+:[ 	]+9e702573[ 	]+csrr[ 	]+a0,spmpaddr39
> +[ 	]+[0-9a-f]+:[ 	]+9e759073[ 	]+csrw[ 	]+spmpaddr39,a1
> +[ 	]+[0-9a-f]+:[ 	]+9e802573[ 	]+csrr[ 	]+a0,spmpaddr40
> +[ 	]+[0-9a-f]+:[ 	]+9e859073[ 	]+csrw[ 	]+spmpaddr40,a1
> +[ 	]+[0-9a-f]+:[ 	]+9e902573[ 	]+csrr[ 	]+a0,spmpaddr41
> +[ 	]+[0-9a-f]+:[ 	]+9e959073[ 	]+csrw[ 	]+spmpaddr41,a1
> +[ 	]+[0-9a-f]+:[ 	]+9ea02573[ 	]+csrr[ 	]+a0,spmpaddr42
> +[ 	]+[0-9a-f]+:[ 	]+9ea59073[ 	]+csrw[ 	]+spmpaddr42,a1
> +[ 	]+[0-9a-f]+:[ 	]+9eb02573[ 	]+csrr[ 	]+a0,spmpaddr43
> +[ 	]+[0-9a-f]+:[ 	]+9eb59073[ 	]+csrw[ 	]+spmpaddr43,a1
> +[ 	]+[0-9a-f]+:[ 	]+9ec02573[ 	]+csrr[ 	]+a0,spmpaddr44
> +[ 	]+[0-9a-f]+:[ 	]+9ec59073[ 	]+csrw[ 	]+spmpaddr44,a1
> +[ 	]+[0-9a-f]+:[ 	]+9ed02573[ 	]+csrr[ 	]+a0,spmpaddr45
> +[ 	]+[0-9a-f]+:[ 	]+9ed59073[ 	]+csrw[ 	]+spmpaddr45,a1
> +[ 	]+[0-9a-f]+:[ 	]+9ee02573[ 	]+csrr[ 	]+a0,spmpaddr46
> +[ 	]+[0-9a-f]+:[ 	]+9ee59073[ 	]+csrw[ 	]+spmpaddr46,a1
> +[ 	]+[0-9a-f]+:[ 	]+9ef02573[ 	]+csrr[ 	]+a0,spmpaddr47
> +[ 	]+[0-9a-f]+:[ 	]+9ef59073[ 	]+csrw[ 	]+spmpaddr47,a1
> +[ 	]+[0-9a-f]+:[ 	]+9f002573[ 	]+csrr[ 	]+a0,spmpaddr48
> +[ 	]+[0-9a-f]+:[ 	]+9f059073[ 	]+csrw[ 	]+spmpaddr48,a1
> +[ 	]+[0-9a-f]+:[ 	]+9f102573[ 	]+csrr[ 	]+a0,spmpaddr49
> +[ 	]+[0-9a-f]+:[ 	]+9f159073[ 	]+csrw[ 	]+spmpaddr49,a1
> +[ 	]+[0-9a-f]+:[ 	]+9f202573[ 	]+csrr[ 	]+a0,spmpaddr50
> +[ 	]+[0-9a-f]+:[ 	]+9f259073[ 	]+csrw[ 	]+spmpaddr50,a1
> +[ 	]+[0-9a-f]+:[ 	]+9f302573[ 	]+csrr[ 	]+a0,spmpaddr51
> +[ 	]+[0-9a-f]+:[ 	]+9f359073[ 	]+csrw[ 	]+spmpaddr51,a1
> +[ 	]+[0-9a-f]+:[ 	]+9f402573[ 	]+csrr[ 	]+a0,spmpaddr52
> +[ 	]+[0-9a-f]+:[ 	]+9f459073[ 	]+csrw[ 	]+spmpaddr52,a1
> +[ 	]+[0-9a-f]+:[ 	]+9f502573[ 	]+csrr[ 	]+a0,spmpaddr53
> +[ 	]+[0-9a-f]+:[ 	]+9f559073[ 	]+csrw[ 	]+spmpaddr53,a1
> +[ 	]+[0-9a-f]+:[ 	]+9f602573[ 	]+csrr[ 	]+a0,spmpaddr54
> +[ 	]+[0-9a-f]+:[ 	]+9f659073[ 	]+csrw[ 	]+spmpaddr54,a1
> +[ 	]+[0-9a-f]+:[ 	]+9f702573[ 	]+csrr[ 	]+a0,spmpaddr55
> +[ 	]+[0-9a-f]+:[ 	]+9f759073[ 	]+csrw[ 	]+spmpaddr55,a1
> +[ 	]+[0-9a-f]+:[ 	]+9f802573[ 	]+csrr[ 	]+a0,spmpaddr56
> +[ 	]+[0-9a-f]+:[ 	]+9f859073[ 	]+csrw[ 	]+spmpaddr56,a1
> +[ 	]+[0-9a-f]+:[ 	]+9f902573[ 	]+csrr[ 	]+a0,spmpaddr57
> +[ 	]+[0-9a-f]+:[ 	]+9f959073[ 	]+csrw[ 	]+spmpaddr57,a1
> +[ 	]+[0-9a-f]+:[ 	]+9fa02573[ 	]+csrr[ 	]+a0,spmpaddr58
> +[ 	]+[0-9a-f]+:[ 	]+9fa59073[ 	]+csrw[ 	]+spmpaddr58,a1
> +[ 	]+[0-9a-f]+:[ 	]+9fb02573[ 	]+csrr[ 	]+a0,spmpaddr59
> +[ 	]+[0-9a-f]+:[ 	]+9fb59073[ 	]+csrw[ 	]+spmpaddr59,a1
> +[ 	]+[0-9a-f]+:[ 	]+9fc02573[ 	]+csrr[ 	]+a0,spmpaddr60
> +[ 	]+[0-9a-f]+:[ 	]+9fc59073[ 	]+csrw[ 	]+spmpaddr60,a1
> +[ 	]+[0-9a-f]+:[ 	]+9fd02573[ 	]+csrr[ 	]+a0,spmpaddr61
> +[ 	]+[0-9a-f]+:[ 	]+9fd59073[ 	]+csrw[ 	]+spmpaddr61,a1
> +[ 	]+[0-9a-f]+:[ 	]+9fe02573[ 	]+csrr[ 	]+a0,spmpaddr62
> +[ 	]+[0-9a-f]+:[ 	]+9fe59073[ 	]+csrw[ 	]+spmpaddr62,a1
> +[ 	]+[0-9a-f]+:[ 	]+9ff02573[ 	]+csrr[ 	]+a0,spmpaddr63
> +[ 	]+[0-9a-f]+:[ 	]+9ff59073[ 	]+csrw[ 	]+spmpaddr63,a1
>  [ 	]+[0-9a-f]+:[ 	]+14d02573[ 	]+csrr[ 	]+a0,stimecmp
>  [ 	]+[0-9a-f]+:[ 	]+14d59073[ 	]+csrw[ 	]+stimecmp,a1
>  [ 	]+[0-9a-f]+:[ 	]+15d02573[ 	]+csrr[ 	]+a0,stimecmph
> diff --git a/gas/testsuite/gas/riscv/csr-version-1p10.l b/gas/testsuite/gas/riscv/csr-version-1p10.l
> index e677b78b8bb8..c1a91cee3c99 100644
> --- a/gas/testsuite/gas/riscv/csr-version-1p10.l
> +++ b/gas/testsuite/gas/riscv/csr-version-1p10.l
> @@ -727,6 +727,188 @@
>  .*Warning: invalid CSR `mhpmevent31h', needs `sscofpmf' extension
>  .*Warning: invalid CSR `mhpmevent31h', needs rv32i extension
>  .*Warning: invalid CSR `mhpmevent31h', needs `sscofpmf' extension
> +.*Warning: invalid CSR `spmpcfg0', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg0', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg1', needs rv32i extension
> +.*Warning: invalid CSR `spmpcfg1', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg1', needs rv32i extension
> +.*Warning: invalid CSR `spmpcfg1', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg2', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg2', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg3', needs rv32i extension
> +.*Warning: invalid CSR `spmpcfg3', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg3', needs rv32i extension
> +.*Warning: invalid CSR `spmpcfg3', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg4', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg4', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg5', needs rv32i extension
> +.*Warning: invalid CSR `spmpcfg5', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg5', needs rv32i extension
> +.*Warning: invalid CSR `spmpcfg5', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg6', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg6', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg7', needs rv32i extension
> +.*Warning: invalid CSR `spmpcfg7', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg7', needs rv32i extension
> +.*Warning: invalid CSR `spmpcfg7', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg8', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg8', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg9', needs rv32i extension
> +.*Warning: invalid CSR `spmpcfg9', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg9', needs rv32i extension
> +.*Warning: invalid CSR `spmpcfg9', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg10', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg10', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg11', needs rv32i extension
> +.*Warning: invalid CSR `spmpcfg11', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg11', needs rv32i extension
> +.*Warning: invalid CSR `spmpcfg11', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg12', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg12', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg13', needs rv32i extension
> +.*Warning: invalid CSR `spmpcfg13', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg13', needs rv32i extension
> +.*Warning: invalid CSR `spmpcfg13', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg14', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg14', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg15', needs rv32i extension
> +.*Warning: invalid CSR `spmpcfg15', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg15', needs rv32i extension
> +.*Warning: invalid CSR `spmpcfg15', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpswitch0', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpswitch0', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpswitch1', needs rv32i extension
> +.*Warning: invalid CSR `spmpswitch1', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpswitch1', needs rv32i extension
> +.*Warning: invalid CSR `spmpswitch1', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr0', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr0', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr1', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr1', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr2', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr2', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr3', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr3', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr4', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr4', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr5', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr5', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr6', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr6', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr7', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr7', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr8', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr8', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr9', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr9', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr10', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr10', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr11', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr11', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr12', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr12', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr13', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr13', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr14', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr14', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr15', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr15', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr16', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr16', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr17', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr17', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr18', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr18', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr19', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr19', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr20', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr20', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr21', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr21', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr22', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr22', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr23', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr23', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr24', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr24', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr25', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr25', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr26', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr26', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr27', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr27', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr28', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr28', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr29', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr29', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr30', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr30', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr31', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr31', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr32', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr32', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr33', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr33', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr34', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr34', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr35', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr35', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr36', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr36', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr37', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr37', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr38', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr38', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr39', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr39', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr40', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr40', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr41', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr41', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr42', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr42', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr43', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr43', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr44', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr44', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr45', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr45', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr46', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr46', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr47', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr47', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr48', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr48', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr49', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr49', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr50', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr50', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr51', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr51', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr52', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr52', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr53', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr53', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr54', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr54', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr55', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr55', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr56', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr56', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr57', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr57', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr58', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr58', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr59', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr59', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr60', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr60', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr61', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr61', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr62', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr62', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr63', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr63', needs `sspmp' extension
>  .*Warning: invalid CSR `stimecmp', needs `sstc' extension
>  .*Warning: invalid CSR `stimecmp', needs `sstc' extension
>  .*Warning: invalid CSR `stimecmph', needs rv32i extension
> diff --git a/gas/testsuite/gas/riscv/csr-version-1p11.d b/gas/testsuite/gas/riscv/csr-version-1p11.d
> index a83b1bf68f98..ce8da6fac2f1 100644
> --- a/gas/testsuite/gas/riscv/csr-version-1p11.d
> +++ b/gas/testsuite/gas/riscv/csr-version-1p11.d
> @@ -765,6 +765,170 @@ Disassembly of section .text:
>  [ 	]+[0-9a-f]+:[ 	]+73e59073[ 	]+csrw[ 	]+mhpmevent30h,a1
>  [ 	]+[0-9a-f]+:[ 	]+73f02573[ 	]+csrr[ 	]+a0,mhpmevent31h
>  [ 	]+[0-9a-f]+:[ 	]+73f59073[ 	]+csrw[ 	]+mhpmevent31h,a1
> +[ 	]+[0-9a-f]+:[ 	]+5c002573[ 	]+csrr[ 	]+a0,spmpcfg0
> +[ 	]+[0-9a-f]+:[ 	]+5c059073[ 	]+csrw[ 	]+spmpcfg0,a1
> +[ 	]+[0-9a-f]+:[ 	]+5c102573[ 	]+csrr[ 	]+a0,spmpcfg1
> +[ 	]+[0-9a-f]+:[ 	]+5c159073[ 	]+csrw[ 	]+spmpcfg1,a1
> +[ 	]+[0-9a-f]+:[ 	]+5c202573[ 	]+csrr[ 	]+a0,spmpcfg2
> +[ 	]+[0-9a-f]+:[ 	]+5c259073[ 	]+csrw[ 	]+spmpcfg2,a1
> +[ 	]+[0-9a-f]+:[ 	]+5c302573[ 	]+csrr[ 	]+a0,spmpcfg3
> +[ 	]+[0-9a-f]+:[ 	]+5c359073[ 	]+csrw[ 	]+spmpcfg3,a1
> +[ 	]+[0-9a-f]+:[ 	]+5c402573[ 	]+csrr[ 	]+a0,spmpcfg4
> +[ 	]+[0-9a-f]+:[ 	]+5c459073[ 	]+csrw[ 	]+spmpcfg4,a1
> +[ 	]+[0-9a-f]+:[ 	]+5c502573[ 	]+csrr[ 	]+a0,spmpcfg5
> +[ 	]+[0-9a-f]+:[ 	]+5c559073[ 	]+csrw[ 	]+spmpcfg5,a1
> +[ 	]+[0-9a-f]+:[ 	]+5c602573[ 	]+csrr[ 	]+a0,spmpcfg6
> +[ 	]+[0-9a-f]+:[ 	]+5c659073[ 	]+csrw[ 	]+spmpcfg6,a1
> +[ 	]+[0-9a-f]+:[ 	]+5c702573[ 	]+csrr[ 	]+a0,spmpcfg7
> +[ 	]+[0-9a-f]+:[ 	]+5c759073[ 	]+csrw[ 	]+spmpcfg7,a1
> +[ 	]+[0-9a-f]+:[ 	]+5c802573[ 	]+csrr[ 	]+a0,spmpcfg8
> +[ 	]+[0-9a-f]+:[ 	]+5c859073[ 	]+csrw[ 	]+spmpcfg8,a1
> +[ 	]+[0-9a-f]+:[ 	]+5c902573[ 	]+csrr[ 	]+a0,spmpcfg9
> +[ 	]+[0-9a-f]+:[ 	]+5c959073[ 	]+csrw[ 	]+spmpcfg9,a1
> +[ 	]+[0-9a-f]+:[ 	]+5ca02573[ 	]+csrr[ 	]+a0,spmpcfg10
> +[ 	]+[0-9a-f]+:[ 	]+5ca59073[ 	]+csrw[ 	]+spmpcfg10,a1
> +[ 	]+[0-9a-f]+:[ 	]+5cb02573[ 	]+csrr[ 	]+a0,spmpcfg11
> +[ 	]+[0-9a-f]+:[ 	]+5cb59073[ 	]+csrw[ 	]+spmpcfg11,a1
> +[ 	]+[0-9a-f]+:[ 	]+5cc02573[ 	]+csrr[ 	]+a0,spmpcfg12
> +[ 	]+[0-9a-f]+:[ 	]+5cc59073[ 	]+csrw[ 	]+spmpcfg12,a1
> +[ 	]+[0-9a-f]+:[ 	]+5cd02573[ 	]+csrr[ 	]+a0,spmpcfg13
> +[ 	]+[0-9a-f]+:[ 	]+5cd59073[ 	]+csrw[ 	]+spmpcfg13,a1
> +[ 	]+[0-9a-f]+:[ 	]+5ce02573[ 	]+csrr[ 	]+a0,spmpcfg14
> +[ 	]+[0-9a-f]+:[ 	]+5ce59073[ 	]+csrw[ 	]+spmpcfg14,a1
> +[ 	]+[0-9a-f]+:[ 	]+5cf02573[ 	]+csrr[ 	]+a0,spmpcfg15
> +[ 	]+[0-9a-f]+:[ 	]+5cf59073[ 	]+csrw[ 	]+spmpcfg15,a1
> +[ 	]+[0-9a-f]+:[ 	]+5d002573[ 	]+csrr[ 	]+a0,spmpswitch0
> +[ 	]+[0-9a-f]+:[ 	]+5d059073[ 	]+csrw[ 	]+spmpswitch0,a1
> +[ 	]+[0-9a-f]+:[ 	]+5d102573[ 	]+csrr[ 	]+a0,spmpswitch1
> +[ 	]+[0-9a-f]+:[ 	]+5d159073[ 	]+csrw[ 	]+spmpswitch1,a1
> +[ 	]+[0-9a-f]+:[ 	]+9c002573[ 	]+csrr[ 	]+a0,spmpaddr0
> +[ 	]+[0-9a-f]+:[ 	]+9c059073[ 	]+csrw[ 	]+spmpaddr0,a1
> +[ 	]+[0-9a-f]+:[ 	]+9c102573[ 	]+csrr[ 	]+a0,spmpaddr1
> +[ 	]+[0-9a-f]+:[ 	]+9c159073[ 	]+csrw[ 	]+spmpaddr1,a1
> +[ 	]+[0-9a-f]+:[ 	]+9c202573[ 	]+csrr[ 	]+a0,spmpaddr2
> +[ 	]+[0-9a-f]+:[ 	]+9c259073[ 	]+csrw[ 	]+spmpaddr2,a1
> +[ 	]+[0-9a-f]+:[ 	]+9c302573[ 	]+csrr[ 	]+a0,spmpaddr3
> +[ 	]+[0-9a-f]+:[ 	]+9c359073[ 	]+csrw[ 	]+spmpaddr3,a1
> +[ 	]+[0-9a-f]+:[ 	]+9c402573[ 	]+csrr[ 	]+a0,spmpaddr4
> +[ 	]+[0-9a-f]+:[ 	]+9c459073[ 	]+csrw[ 	]+spmpaddr4,a1
> +[ 	]+[0-9a-f]+:[ 	]+9c502573[ 	]+csrr[ 	]+a0,spmpaddr5
> +[ 	]+[0-9a-f]+:[ 	]+9c559073[ 	]+csrw[ 	]+spmpaddr5,a1
> +[ 	]+[0-9a-f]+:[ 	]+9c602573[ 	]+csrr[ 	]+a0,spmpaddr6
> +[ 	]+[0-9a-f]+:[ 	]+9c659073[ 	]+csrw[ 	]+spmpaddr6,a1
> +[ 	]+[0-9a-f]+:[ 	]+9c702573[ 	]+csrr[ 	]+a0,spmpaddr7
> +[ 	]+[0-9a-f]+:[ 	]+9c759073[ 	]+csrw[ 	]+spmpaddr7,a1
> +[ 	]+[0-9a-f]+:[ 	]+9c802573[ 	]+csrr[ 	]+a0,spmpaddr8
> +[ 	]+[0-9a-f]+:[ 	]+9c859073[ 	]+csrw[ 	]+spmpaddr8,a1
> +[ 	]+[0-9a-f]+:[ 	]+9c902573[ 	]+csrr[ 	]+a0,spmpaddr9
> +[ 	]+[0-9a-f]+:[ 	]+9c959073[ 	]+csrw[ 	]+spmpaddr9,a1
> +[ 	]+[0-9a-f]+:[ 	]+9ca02573[ 	]+csrr[ 	]+a0,spmpaddr10
> +[ 	]+[0-9a-f]+:[ 	]+9ca59073[ 	]+csrw[ 	]+spmpaddr10,a1
> +[ 	]+[0-9a-f]+:[ 	]+9cb02573[ 	]+csrr[ 	]+a0,spmpaddr11
> +[ 	]+[0-9a-f]+:[ 	]+9cb59073[ 	]+csrw[ 	]+spmpaddr11,a1
> +[ 	]+[0-9a-f]+:[ 	]+9cc02573[ 	]+csrr[ 	]+a0,spmpaddr12
> +[ 	]+[0-9a-f]+:[ 	]+9cc59073[ 	]+csrw[ 	]+spmpaddr12,a1
> +[ 	]+[0-9a-f]+:[ 	]+9cd02573[ 	]+csrr[ 	]+a0,spmpaddr13
> +[ 	]+[0-9a-f]+:[ 	]+9cd59073[ 	]+csrw[ 	]+spmpaddr13,a1
> +[ 	]+[0-9a-f]+:[ 	]+9ce02573[ 	]+csrr[ 	]+a0,spmpaddr14
> +[ 	]+[0-9a-f]+:[ 	]+9ce59073[ 	]+csrw[ 	]+spmpaddr14,a1
> +[ 	]+[0-9a-f]+:[ 	]+9cf02573[ 	]+csrr[ 	]+a0,spmpaddr15
> +[ 	]+[0-9a-f]+:[ 	]+9cf59073[ 	]+csrw[ 	]+spmpaddr15,a1
> +[ 	]+[0-9a-f]+:[ 	]+9d002573[ 	]+csrr[ 	]+a0,spmpaddr16
> +[ 	]+[0-9a-f]+:[ 	]+9d059073[ 	]+csrw[ 	]+spmpaddr16,a1
> +[ 	]+[0-9a-f]+:[ 	]+9d102573[ 	]+csrr[ 	]+a0,spmpaddr17
> +[ 	]+[0-9a-f]+:[ 	]+9d159073[ 	]+csrw[ 	]+spmpaddr17,a1
> +[ 	]+[0-9a-f]+:[ 	]+9d202573[ 	]+csrr[ 	]+a0,spmpaddr18
> +[ 	]+[0-9a-f]+:[ 	]+9d259073[ 	]+csrw[ 	]+spmpaddr18,a1
> +[ 	]+[0-9a-f]+:[ 	]+9d302573[ 	]+csrr[ 	]+a0,spmpaddr19
> +[ 	]+[0-9a-f]+:[ 	]+9d359073[ 	]+csrw[ 	]+spmpaddr19,a1
> +[ 	]+[0-9a-f]+:[ 	]+9d402573[ 	]+csrr[ 	]+a0,spmpaddr20
> +[ 	]+[0-9a-f]+:[ 	]+9d459073[ 	]+csrw[ 	]+spmpaddr20,a1
> +[ 	]+[0-9a-f]+:[ 	]+9d502573[ 	]+csrr[ 	]+a0,spmpaddr21
> +[ 	]+[0-9a-f]+:[ 	]+9d559073[ 	]+csrw[ 	]+spmpaddr21,a1
> +[ 	]+[0-9a-f]+:[ 	]+9d602573[ 	]+csrr[ 	]+a0,spmpaddr22
> +[ 	]+[0-9a-f]+:[ 	]+9d659073[ 	]+csrw[ 	]+spmpaddr22,a1
> +[ 	]+[0-9a-f]+:[ 	]+9d702573[ 	]+csrr[ 	]+a0,spmpaddr23
> +[ 	]+[0-9a-f]+:[ 	]+9d759073[ 	]+csrw[ 	]+spmpaddr23,a1
> +[ 	]+[0-9a-f]+:[ 	]+9d802573[ 	]+csrr[ 	]+a0,spmpaddr24
> +[ 	]+[0-9a-f]+:[ 	]+9d859073[ 	]+csrw[ 	]+spmpaddr24,a1
> +[ 	]+[0-9a-f]+:[ 	]+9d902573[ 	]+csrr[ 	]+a0,spmpaddr25
> +[ 	]+[0-9a-f]+:[ 	]+9d959073[ 	]+csrw[ 	]+spmpaddr25,a1
> +[ 	]+[0-9a-f]+:[ 	]+9da02573[ 	]+csrr[ 	]+a0,spmpaddr26
> +[ 	]+[0-9a-f]+:[ 	]+9da59073[ 	]+csrw[ 	]+spmpaddr26,a1
> +[ 	]+[0-9a-f]+:[ 	]+9db02573[ 	]+csrr[ 	]+a0,spmpaddr27
> +[ 	]+[0-9a-f]+:[ 	]+9db59073[ 	]+csrw[ 	]+spmpaddr27,a1
> +[ 	]+[0-9a-f]+:[ 	]+9dc02573[ 	]+csrr[ 	]+a0,spmpaddr28
> +[ 	]+[0-9a-f]+:[ 	]+9dc59073[ 	]+csrw[ 	]+spmpaddr28,a1
> +[ 	]+[0-9a-f]+:[ 	]+9dd02573[ 	]+csrr[ 	]+a0,spmpaddr29
> +[ 	]+[0-9a-f]+:[ 	]+9dd59073[ 	]+csrw[ 	]+spmpaddr29,a1
> +[ 	]+[0-9a-f]+:[ 	]+9de02573[ 	]+csrr[ 	]+a0,spmpaddr30
> +[ 	]+[0-9a-f]+:[ 	]+9de59073[ 	]+csrw[ 	]+spmpaddr30,a1
> +[ 	]+[0-9a-f]+:[ 	]+9df02573[ 	]+csrr[ 	]+a0,spmpaddr31
> +[ 	]+[0-9a-f]+:[ 	]+9df59073[ 	]+csrw[ 	]+spmpaddr31,a1
> +[ 	]+[0-9a-f]+:[ 	]+9e002573[ 	]+csrr[ 	]+a0,spmpaddr32
> +[ 	]+[0-9a-f]+:[ 	]+9e059073[ 	]+csrw[ 	]+spmpaddr32,a1
> +[ 	]+[0-9a-f]+:[ 	]+9e102573[ 	]+csrr[ 	]+a0,spmpaddr33
> +[ 	]+[0-9a-f]+:[ 	]+9e159073[ 	]+csrw[ 	]+spmpaddr33,a1
> +[ 	]+[0-9a-f]+:[ 	]+9e202573[ 	]+csrr[ 	]+a0,spmpaddr34
> +[ 	]+[0-9a-f]+:[ 	]+9e259073[ 	]+csrw[ 	]+spmpaddr34,a1
> +[ 	]+[0-9a-f]+:[ 	]+9e302573[ 	]+csrr[ 	]+a0,spmpaddr35
> +[ 	]+[0-9a-f]+:[ 	]+9e359073[ 	]+csrw[ 	]+spmpaddr35,a1
> +[ 	]+[0-9a-f]+:[ 	]+9e402573[ 	]+csrr[ 	]+a0,spmpaddr36
> +[ 	]+[0-9a-f]+:[ 	]+9e459073[ 	]+csrw[ 	]+spmpaddr36,a1
> +[ 	]+[0-9a-f]+:[ 	]+9e502573[ 	]+csrr[ 	]+a0,spmpaddr37
> +[ 	]+[0-9a-f]+:[ 	]+9e559073[ 	]+csrw[ 	]+spmpaddr37,a1
> +[ 	]+[0-9a-f]+:[ 	]+9e602573[ 	]+csrr[ 	]+a0,spmpaddr38
> +[ 	]+[0-9a-f]+:[ 	]+9e659073[ 	]+csrw[ 	]+spmpaddr38,a1
> +[ 	]+[0-9a-f]+:[ 	]+9e702573[ 	]+csrr[ 	]+a0,spmpaddr39
> +[ 	]+[0-9a-f]+:[ 	]+9e759073[ 	]+csrw[ 	]+spmpaddr39,a1
> +[ 	]+[0-9a-f]+:[ 	]+9e802573[ 	]+csrr[ 	]+a0,spmpaddr40
> +[ 	]+[0-9a-f]+:[ 	]+9e859073[ 	]+csrw[ 	]+spmpaddr40,a1
> +[ 	]+[0-9a-f]+:[ 	]+9e902573[ 	]+csrr[ 	]+a0,spmpaddr41
> +[ 	]+[0-9a-f]+:[ 	]+9e959073[ 	]+csrw[ 	]+spmpaddr41,a1
> +[ 	]+[0-9a-f]+:[ 	]+9ea02573[ 	]+csrr[ 	]+a0,spmpaddr42
> +[ 	]+[0-9a-f]+:[ 	]+9ea59073[ 	]+csrw[ 	]+spmpaddr42,a1
> +[ 	]+[0-9a-f]+:[ 	]+9eb02573[ 	]+csrr[ 	]+a0,spmpaddr43
> +[ 	]+[0-9a-f]+:[ 	]+9eb59073[ 	]+csrw[ 	]+spmpaddr43,a1
> +[ 	]+[0-9a-f]+:[ 	]+9ec02573[ 	]+csrr[ 	]+a0,spmpaddr44
> +[ 	]+[0-9a-f]+:[ 	]+9ec59073[ 	]+csrw[ 	]+spmpaddr44,a1
> +[ 	]+[0-9a-f]+:[ 	]+9ed02573[ 	]+csrr[ 	]+a0,spmpaddr45
> +[ 	]+[0-9a-f]+:[ 	]+9ed59073[ 	]+csrw[ 	]+spmpaddr45,a1
> +[ 	]+[0-9a-f]+:[ 	]+9ee02573[ 	]+csrr[ 	]+a0,spmpaddr46
> +[ 	]+[0-9a-f]+:[ 	]+9ee59073[ 	]+csrw[ 	]+spmpaddr46,a1
> +[ 	]+[0-9a-f]+:[ 	]+9ef02573[ 	]+csrr[ 	]+a0,spmpaddr47
> +[ 	]+[0-9a-f]+:[ 	]+9ef59073[ 	]+csrw[ 	]+spmpaddr47,a1
> +[ 	]+[0-9a-f]+:[ 	]+9f002573[ 	]+csrr[ 	]+a0,spmpaddr48
> +[ 	]+[0-9a-f]+:[ 	]+9f059073[ 	]+csrw[ 	]+spmpaddr48,a1
> +[ 	]+[0-9a-f]+:[ 	]+9f102573[ 	]+csrr[ 	]+a0,spmpaddr49
> +[ 	]+[0-9a-f]+:[ 	]+9f159073[ 	]+csrw[ 	]+spmpaddr49,a1
> +[ 	]+[0-9a-f]+:[ 	]+9f202573[ 	]+csrr[ 	]+a0,spmpaddr50
> +[ 	]+[0-9a-f]+:[ 	]+9f259073[ 	]+csrw[ 	]+spmpaddr50,a1
> +[ 	]+[0-9a-f]+:[ 	]+9f302573[ 	]+csrr[ 	]+a0,spmpaddr51
> +[ 	]+[0-9a-f]+:[ 	]+9f359073[ 	]+csrw[ 	]+spmpaddr51,a1
> +[ 	]+[0-9a-f]+:[ 	]+9f402573[ 	]+csrr[ 	]+a0,spmpaddr52
> +[ 	]+[0-9a-f]+:[ 	]+9f459073[ 	]+csrw[ 	]+spmpaddr52,a1
> +[ 	]+[0-9a-f]+:[ 	]+9f502573[ 	]+csrr[ 	]+a0,spmpaddr53
> +[ 	]+[0-9a-f]+:[ 	]+9f559073[ 	]+csrw[ 	]+spmpaddr53,a1
> +[ 	]+[0-9a-f]+:[ 	]+9f602573[ 	]+csrr[ 	]+a0,spmpaddr54
> +[ 	]+[0-9a-f]+:[ 	]+9f659073[ 	]+csrw[ 	]+spmpaddr54,a1
> +[ 	]+[0-9a-f]+:[ 	]+9f702573[ 	]+csrr[ 	]+a0,spmpaddr55
> +[ 	]+[0-9a-f]+:[ 	]+9f759073[ 	]+csrw[ 	]+spmpaddr55,a1
> +[ 	]+[0-9a-f]+:[ 	]+9f802573[ 	]+csrr[ 	]+a0,spmpaddr56
> +[ 	]+[0-9a-f]+:[ 	]+9f859073[ 	]+csrw[ 	]+spmpaddr56,a1
> +[ 	]+[0-9a-f]+:[ 	]+9f902573[ 	]+csrr[ 	]+a0,spmpaddr57
> +[ 	]+[0-9a-f]+:[ 	]+9f959073[ 	]+csrw[ 	]+spmpaddr57,a1
> +[ 	]+[0-9a-f]+:[ 	]+9fa02573[ 	]+csrr[ 	]+a0,spmpaddr58
> +[ 	]+[0-9a-f]+:[ 	]+9fa59073[ 	]+csrw[ 	]+spmpaddr58,a1
> +[ 	]+[0-9a-f]+:[ 	]+9fb02573[ 	]+csrr[ 	]+a0,spmpaddr59
> +[ 	]+[0-9a-f]+:[ 	]+9fb59073[ 	]+csrw[ 	]+spmpaddr59,a1
> +[ 	]+[0-9a-f]+:[ 	]+9fc02573[ 	]+csrr[ 	]+a0,spmpaddr60
> +[ 	]+[0-9a-f]+:[ 	]+9fc59073[ 	]+csrw[ 	]+spmpaddr60,a1
> +[ 	]+[0-9a-f]+:[ 	]+9fd02573[ 	]+csrr[ 	]+a0,spmpaddr61
> +[ 	]+[0-9a-f]+:[ 	]+9fd59073[ 	]+csrw[ 	]+spmpaddr61,a1
> +[ 	]+[0-9a-f]+:[ 	]+9fe02573[ 	]+csrr[ 	]+a0,spmpaddr62
> +[ 	]+[0-9a-f]+:[ 	]+9fe59073[ 	]+csrw[ 	]+spmpaddr62,a1
> +[ 	]+[0-9a-f]+:[ 	]+9ff02573[ 	]+csrr[ 	]+a0,spmpaddr63
> +[ 	]+[0-9a-f]+:[ 	]+9ff59073[ 	]+csrw[ 	]+spmpaddr63,a1
>  [ 	]+[0-9a-f]+:[ 	]+14d02573[ 	]+csrr[ 	]+a0,stimecmp
>  [ 	]+[0-9a-f]+:[ 	]+14d59073[ 	]+csrw[ 	]+stimecmp,a1
>  [ 	]+[0-9a-f]+:[ 	]+15d02573[ 	]+csrr[ 	]+a0,stimecmph
> diff --git a/gas/testsuite/gas/riscv/csr-version-1p11.l b/gas/testsuite/gas/riscv/csr-version-1p11.l
> index 81ca86ca7bcc..542e3a70f34b 100644
> --- a/gas/testsuite/gas/riscv/csr-version-1p11.l
> +++ b/gas/testsuite/gas/riscv/csr-version-1p11.l
> @@ -725,6 +725,188 @@
>  .*Warning: invalid CSR `mhpmevent31h', needs `sscofpmf' extension
>  .*Warning: invalid CSR `mhpmevent31h', needs rv32i extension
>  .*Warning: invalid CSR `mhpmevent31h', needs `sscofpmf' extension
> +.*Warning: invalid CSR `spmpcfg0', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg0', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg1', needs rv32i extension
> +.*Warning: invalid CSR `spmpcfg1', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg1', needs rv32i extension
> +.*Warning: invalid CSR `spmpcfg1', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg2', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg2', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg3', needs rv32i extension
> +.*Warning: invalid CSR `spmpcfg3', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg3', needs rv32i extension
> +.*Warning: invalid CSR `spmpcfg3', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg4', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg4', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg5', needs rv32i extension
> +.*Warning: invalid CSR `spmpcfg5', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg5', needs rv32i extension
> +.*Warning: invalid CSR `spmpcfg5', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg6', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg6', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg7', needs rv32i extension
> +.*Warning: invalid CSR `spmpcfg7', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg7', needs rv32i extension
> +.*Warning: invalid CSR `spmpcfg7', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg8', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg8', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg9', needs rv32i extension
> +.*Warning: invalid CSR `spmpcfg9', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg9', needs rv32i extension
> +.*Warning: invalid CSR `spmpcfg9', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg10', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg10', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg11', needs rv32i extension
> +.*Warning: invalid CSR `spmpcfg11', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg11', needs rv32i extension
> +.*Warning: invalid CSR `spmpcfg11', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg12', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg12', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg13', needs rv32i extension
> +.*Warning: invalid CSR `spmpcfg13', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg13', needs rv32i extension
> +.*Warning: invalid CSR `spmpcfg13', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg14', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg14', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg15', needs rv32i extension
> +.*Warning: invalid CSR `spmpcfg15', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg15', needs rv32i extension
> +.*Warning: invalid CSR `spmpcfg15', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpswitch0', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpswitch0', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpswitch1', needs rv32i extension
> +.*Warning: invalid CSR `spmpswitch1', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpswitch1', needs rv32i extension
> +.*Warning: invalid CSR `spmpswitch1', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr0', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr0', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr1', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr1', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr2', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr2', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr3', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr3', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr4', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr4', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr5', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr5', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr6', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr6', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr7', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr7', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr8', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr8', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr9', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr9', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr10', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr10', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr11', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr11', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr12', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr12', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr13', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr13', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr14', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr14', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr15', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr15', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr16', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr16', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr17', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr17', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr18', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr18', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr19', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr19', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr20', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr20', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr21', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr21', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr22', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr22', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr23', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr23', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr24', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr24', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr25', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr25', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr26', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr26', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr27', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr27', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr28', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr28', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr29', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr29', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr30', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr30', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr31', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr31', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr32', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr32', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr33', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr33', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr34', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr34', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr35', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr35', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr36', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr36', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr37', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr37', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr38', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr38', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr39', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr39', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr40', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr40', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr41', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr41', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr42', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr42', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr43', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr43', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr44', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr44', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr45', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr45', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr46', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr46', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr47', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr47', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr48', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr48', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr49', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr49', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr50', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr50', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr51', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr51', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr52', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr52', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr53', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr53', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr54', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr54', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr55', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr55', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr56', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr56', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr57', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr57', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr58', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr58', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr59', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr59', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr60', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr60', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr61', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr61', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr62', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr62', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr63', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr63', needs `sspmp' extension
>  .*Warning: invalid CSR `stimecmp', needs `sstc' extension
>  .*Warning: invalid CSR `stimecmp', needs `sstc' extension
>  .*Warning: invalid CSR `stimecmph', needs rv32i extension
> diff --git a/gas/testsuite/gas/riscv/csr-version-1p12.d b/gas/testsuite/gas/riscv/csr-version-1p12.d
> index 612aac280768..c1c31bbbf79b 100644
> --- a/gas/testsuite/gas/riscv/csr-version-1p12.d
> +++ b/gas/testsuite/gas/riscv/csr-version-1p12.d
> @@ -765,6 +765,170 @@ Disassembly of section .text:
>  [ 	]+[0-9a-f]+:[ 	]+73e59073[ 	]+csrw[ 	]+mhpmevent30h,a1
>  [ 	]+[0-9a-f]+:[ 	]+73f02573[ 	]+csrr[ 	]+a0,mhpmevent31h
>  [ 	]+[0-9a-f]+:[ 	]+73f59073[ 	]+csrw[ 	]+mhpmevent31h,a1
> +[ 	]+[0-9a-f]+:[ 	]+5c002573[ 	]+csrr[ 	]+a0,spmpcfg0
> +[ 	]+[0-9a-f]+:[ 	]+5c059073[ 	]+csrw[ 	]+spmpcfg0,a1
> +[ 	]+[0-9a-f]+:[ 	]+5c102573[ 	]+csrr[ 	]+a0,spmpcfg1
> +[ 	]+[0-9a-f]+:[ 	]+5c159073[ 	]+csrw[ 	]+spmpcfg1,a1
> +[ 	]+[0-9a-f]+:[ 	]+5c202573[ 	]+csrr[ 	]+a0,spmpcfg2
> +[ 	]+[0-9a-f]+:[ 	]+5c259073[ 	]+csrw[ 	]+spmpcfg2,a1
> +[ 	]+[0-9a-f]+:[ 	]+5c302573[ 	]+csrr[ 	]+a0,spmpcfg3
> +[ 	]+[0-9a-f]+:[ 	]+5c359073[ 	]+csrw[ 	]+spmpcfg3,a1
> +[ 	]+[0-9a-f]+:[ 	]+5c402573[ 	]+csrr[ 	]+a0,spmpcfg4
> +[ 	]+[0-9a-f]+:[ 	]+5c459073[ 	]+csrw[ 	]+spmpcfg4,a1
> +[ 	]+[0-9a-f]+:[ 	]+5c502573[ 	]+csrr[ 	]+a0,spmpcfg5
> +[ 	]+[0-9a-f]+:[ 	]+5c559073[ 	]+csrw[ 	]+spmpcfg5,a1
> +[ 	]+[0-9a-f]+:[ 	]+5c602573[ 	]+csrr[ 	]+a0,spmpcfg6
> +[ 	]+[0-9a-f]+:[ 	]+5c659073[ 	]+csrw[ 	]+spmpcfg6,a1
> +[ 	]+[0-9a-f]+:[ 	]+5c702573[ 	]+csrr[ 	]+a0,spmpcfg7
> +[ 	]+[0-9a-f]+:[ 	]+5c759073[ 	]+csrw[ 	]+spmpcfg7,a1
> +[ 	]+[0-9a-f]+:[ 	]+5c802573[ 	]+csrr[ 	]+a0,spmpcfg8
> +[ 	]+[0-9a-f]+:[ 	]+5c859073[ 	]+csrw[ 	]+spmpcfg8,a1
> +[ 	]+[0-9a-f]+:[ 	]+5c902573[ 	]+csrr[ 	]+a0,spmpcfg9
> +[ 	]+[0-9a-f]+:[ 	]+5c959073[ 	]+csrw[ 	]+spmpcfg9,a1
> +[ 	]+[0-9a-f]+:[ 	]+5ca02573[ 	]+csrr[ 	]+a0,spmpcfg10
> +[ 	]+[0-9a-f]+:[ 	]+5ca59073[ 	]+csrw[ 	]+spmpcfg10,a1
> +[ 	]+[0-9a-f]+:[ 	]+5cb02573[ 	]+csrr[ 	]+a0,spmpcfg11
> +[ 	]+[0-9a-f]+:[ 	]+5cb59073[ 	]+csrw[ 	]+spmpcfg11,a1
> +[ 	]+[0-9a-f]+:[ 	]+5cc02573[ 	]+csrr[ 	]+a0,spmpcfg12
> +[ 	]+[0-9a-f]+:[ 	]+5cc59073[ 	]+csrw[ 	]+spmpcfg12,a1
> +[ 	]+[0-9a-f]+:[ 	]+5cd02573[ 	]+csrr[ 	]+a0,spmpcfg13
> +[ 	]+[0-9a-f]+:[ 	]+5cd59073[ 	]+csrw[ 	]+spmpcfg13,a1
> +[ 	]+[0-9a-f]+:[ 	]+5ce02573[ 	]+csrr[ 	]+a0,spmpcfg14
> +[ 	]+[0-9a-f]+:[ 	]+5ce59073[ 	]+csrw[ 	]+spmpcfg14,a1
> +[ 	]+[0-9a-f]+:[ 	]+5cf02573[ 	]+csrr[ 	]+a0,spmpcfg15
> +[ 	]+[0-9a-f]+:[ 	]+5cf59073[ 	]+csrw[ 	]+spmpcfg15,a1
> +[ 	]+[0-9a-f]+:[ 	]+5d002573[ 	]+csrr[ 	]+a0,spmpswitch0
> +[ 	]+[0-9a-f]+:[ 	]+5d059073[ 	]+csrw[ 	]+spmpswitch0,a1
> +[ 	]+[0-9a-f]+:[ 	]+5d102573[ 	]+csrr[ 	]+a0,spmpswitch1
> +[ 	]+[0-9a-f]+:[ 	]+5d159073[ 	]+csrw[ 	]+spmpswitch1,a1
> +[ 	]+[0-9a-f]+:[ 	]+9c002573[ 	]+csrr[ 	]+a0,spmpaddr0
> +[ 	]+[0-9a-f]+:[ 	]+9c059073[ 	]+csrw[ 	]+spmpaddr0,a1
> +[ 	]+[0-9a-f]+:[ 	]+9c102573[ 	]+csrr[ 	]+a0,spmpaddr1
> +[ 	]+[0-9a-f]+:[ 	]+9c159073[ 	]+csrw[ 	]+spmpaddr1,a1
> +[ 	]+[0-9a-f]+:[ 	]+9c202573[ 	]+csrr[ 	]+a0,spmpaddr2
> +[ 	]+[0-9a-f]+:[ 	]+9c259073[ 	]+csrw[ 	]+spmpaddr2,a1
> +[ 	]+[0-9a-f]+:[ 	]+9c302573[ 	]+csrr[ 	]+a0,spmpaddr3
> +[ 	]+[0-9a-f]+:[ 	]+9c359073[ 	]+csrw[ 	]+spmpaddr3,a1
> +[ 	]+[0-9a-f]+:[ 	]+9c402573[ 	]+csrr[ 	]+a0,spmpaddr4
> +[ 	]+[0-9a-f]+:[ 	]+9c459073[ 	]+csrw[ 	]+spmpaddr4,a1
> +[ 	]+[0-9a-f]+:[ 	]+9c502573[ 	]+csrr[ 	]+a0,spmpaddr5
> +[ 	]+[0-9a-f]+:[ 	]+9c559073[ 	]+csrw[ 	]+spmpaddr5,a1
> +[ 	]+[0-9a-f]+:[ 	]+9c602573[ 	]+csrr[ 	]+a0,spmpaddr6
> +[ 	]+[0-9a-f]+:[ 	]+9c659073[ 	]+csrw[ 	]+spmpaddr6,a1
> +[ 	]+[0-9a-f]+:[ 	]+9c702573[ 	]+csrr[ 	]+a0,spmpaddr7
> +[ 	]+[0-9a-f]+:[ 	]+9c759073[ 	]+csrw[ 	]+spmpaddr7,a1
> +[ 	]+[0-9a-f]+:[ 	]+9c802573[ 	]+csrr[ 	]+a0,spmpaddr8
> +[ 	]+[0-9a-f]+:[ 	]+9c859073[ 	]+csrw[ 	]+spmpaddr8,a1
> +[ 	]+[0-9a-f]+:[ 	]+9c902573[ 	]+csrr[ 	]+a0,spmpaddr9
> +[ 	]+[0-9a-f]+:[ 	]+9c959073[ 	]+csrw[ 	]+spmpaddr9,a1
> +[ 	]+[0-9a-f]+:[ 	]+9ca02573[ 	]+csrr[ 	]+a0,spmpaddr10
> +[ 	]+[0-9a-f]+:[ 	]+9ca59073[ 	]+csrw[ 	]+spmpaddr10,a1
> +[ 	]+[0-9a-f]+:[ 	]+9cb02573[ 	]+csrr[ 	]+a0,spmpaddr11
> +[ 	]+[0-9a-f]+:[ 	]+9cb59073[ 	]+csrw[ 	]+spmpaddr11,a1
> +[ 	]+[0-9a-f]+:[ 	]+9cc02573[ 	]+csrr[ 	]+a0,spmpaddr12
> +[ 	]+[0-9a-f]+:[ 	]+9cc59073[ 	]+csrw[ 	]+spmpaddr12,a1
> +[ 	]+[0-9a-f]+:[ 	]+9cd02573[ 	]+csrr[ 	]+a0,spmpaddr13
> +[ 	]+[0-9a-f]+:[ 	]+9cd59073[ 	]+csrw[ 	]+spmpaddr13,a1
> +[ 	]+[0-9a-f]+:[ 	]+9ce02573[ 	]+csrr[ 	]+a0,spmpaddr14
> +[ 	]+[0-9a-f]+:[ 	]+9ce59073[ 	]+csrw[ 	]+spmpaddr14,a1
> +[ 	]+[0-9a-f]+:[ 	]+9cf02573[ 	]+csrr[ 	]+a0,spmpaddr15
> +[ 	]+[0-9a-f]+:[ 	]+9cf59073[ 	]+csrw[ 	]+spmpaddr15,a1
> +[ 	]+[0-9a-f]+:[ 	]+9d002573[ 	]+csrr[ 	]+a0,spmpaddr16
> +[ 	]+[0-9a-f]+:[ 	]+9d059073[ 	]+csrw[ 	]+spmpaddr16,a1
> +[ 	]+[0-9a-f]+:[ 	]+9d102573[ 	]+csrr[ 	]+a0,spmpaddr17
> +[ 	]+[0-9a-f]+:[ 	]+9d159073[ 	]+csrw[ 	]+spmpaddr17,a1
> +[ 	]+[0-9a-f]+:[ 	]+9d202573[ 	]+csrr[ 	]+a0,spmpaddr18
> +[ 	]+[0-9a-f]+:[ 	]+9d259073[ 	]+csrw[ 	]+spmpaddr18,a1
> +[ 	]+[0-9a-f]+:[ 	]+9d302573[ 	]+csrr[ 	]+a0,spmpaddr19
> +[ 	]+[0-9a-f]+:[ 	]+9d359073[ 	]+csrw[ 	]+spmpaddr19,a1
> +[ 	]+[0-9a-f]+:[ 	]+9d402573[ 	]+csrr[ 	]+a0,spmpaddr20
> +[ 	]+[0-9a-f]+:[ 	]+9d459073[ 	]+csrw[ 	]+spmpaddr20,a1
> +[ 	]+[0-9a-f]+:[ 	]+9d502573[ 	]+csrr[ 	]+a0,spmpaddr21
> +[ 	]+[0-9a-f]+:[ 	]+9d559073[ 	]+csrw[ 	]+spmpaddr21,a1
> +[ 	]+[0-9a-f]+:[ 	]+9d602573[ 	]+csrr[ 	]+a0,spmpaddr22
> +[ 	]+[0-9a-f]+:[ 	]+9d659073[ 	]+csrw[ 	]+spmpaddr22,a1
> +[ 	]+[0-9a-f]+:[ 	]+9d702573[ 	]+csrr[ 	]+a0,spmpaddr23
> +[ 	]+[0-9a-f]+:[ 	]+9d759073[ 	]+csrw[ 	]+spmpaddr23,a1
> +[ 	]+[0-9a-f]+:[ 	]+9d802573[ 	]+csrr[ 	]+a0,spmpaddr24
> +[ 	]+[0-9a-f]+:[ 	]+9d859073[ 	]+csrw[ 	]+spmpaddr24,a1
> +[ 	]+[0-9a-f]+:[ 	]+9d902573[ 	]+csrr[ 	]+a0,spmpaddr25
> +[ 	]+[0-9a-f]+:[ 	]+9d959073[ 	]+csrw[ 	]+spmpaddr25,a1
> +[ 	]+[0-9a-f]+:[ 	]+9da02573[ 	]+csrr[ 	]+a0,spmpaddr26
> +[ 	]+[0-9a-f]+:[ 	]+9da59073[ 	]+csrw[ 	]+spmpaddr26,a1
> +[ 	]+[0-9a-f]+:[ 	]+9db02573[ 	]+csrr[ 	]+a0,spmpaddr27
> +[ 	]+[0-9a-f]+:[ 	]+9db59073[ 	]+csrw[ 	]+spmpaddr27,a1
> +[ 	]+[0-9a-f]+:[ 	]+9dc02573[ 	]+csrr[ 	]+a0,spmpaddr28
> +[ 	]+[0-9a-f]+:[ 	]+9dc59073[ 	]+csrw[ 	]+spmpaddr28,a1
> +[ 	]+[0-9a-f]+:[ 	]+9dd02573[ 	]+csrr[ 	]+a0,spmpaddr29
> +[ 	]+[0-9a-f]+:[ 	]+9dd59073[ 	]+csrw[ 	]+spmpaddr29,a1
> +[ 	]+[0-9a-f]+:[ 	]+9de02573[ 	]+csrr[ 	]+a0,spmpaddr30
> +[ 	]+[0-9a-f]+:[ 	]+9de59073[ 	]+csrw[ 	]+spmpaddr30,a1
> +[ 	]+[0-9a-f]+:[ 	]+9df02573[ 	]+csrr[ 	]+a0,spmpaddr31
> +[ 	]+[0-9a-f]+:[ 	]+9df59073[ 	]+csrw[ 	]+spmpaddr31,a1
> +[ 	]+[0-9a-f]+:[ 	]+9e002573[ 	]+csrr[ 	]+a0,spmpaddr32
> +[ 	]+[0-9a-f]+:[ 	]+9e059073[ 	]+csrw[ 	]+spmpaddr32,a1
> +[ 	]+[0-9a-f]+:[ 	]+9e102573[ 	]+csrr[ 	]+a0,spmpaddr33
> +[ 	]+[0-9a-f]+:[ 	]+9e159073[ 	]+csrw[ 	]+spmpaddr33,a1
> +[ 	]+[0-9a-f]+:[ 	]+9e202573[ 	]+csrr[ 	]+a0,spmpaddr34
> +[ 	]+[0-9a-f]+:[ 	]+9e259073[ 	]+csrw[ 	]+spmpaddr34,a1
> +[ 	]+[0-9a-f]+:[ 	]+9e302573[ 	]+csrr[ 	]+a0,spmpaddr35
> +[ 	]+[0-9a-f]+:[ 	]+9e359073[ 	]+csrw[ 	]+spmpaddr35,a1
> +[ 	]+[0-9a-f]+:[ 	]+9e402573[ 	]+csrr[ 	]+a0,spmpaddr36
> +[ 	]+[0-9a-f]+:[ 	]+9e459073[ 	]+csrw[ 	]+spmpaddr36,a1
> +[ 	]+[0-9a-f]+:[ 	]+9e502573[ 	]+csrr[ 	]+a0,spmpaddr37
> +[ 	]+[0-9a-f]+:[ 	]+9e559073[ 	]+csrw[ 	]+spmpaddr37,a1
> +[ 	]+[0-9a-f]+:[ 	]+9e602573[ 	]+csrr[ 	]+a0,spmpaddr38
> +[ 	]+[0-9a-f]+:[ 	]+9e659073[ 	]+csrw[ 	]+spmpaddr38,a1
> +[ 	]+[0-9a-f]+:[ 	]+9e702573[ 	]+csrr[ 	]+a0,spmpaddr39
> +[ 	]+[0-9a-f]+:[ 	]+9e759073[ 	]+csrw[ 	]+spmpaddr39,a1
> +[ 	]+[0-9a-f]+:[ 	]+9e802573[ 	]+csrr[ 	]+a0,spmpaddr40
> +[ 	]+[0-9a-f]+:[ 	]+9e859073[ 	]+csrw[ 	]+spmpaddr40,a1
> +[ 	]+[0-9a-f]+:[ 	]+9e902573[ 	]+csrr[ 	]+a0,spmpaddr41
> +[ 	]+[0-9a-f]+:[ 	]+9e959073[ 	]+csrw[ 	]+spmpaddr41,a1
> +[ 	]+[0-9a-f]+:[ 	]+9ea02573[ 	]+csrr[ 	]+a0,spmpaddr42
> +[ 	]+[0-9a-f]+:[ 	]+9ea59073[ 	]+csrw[ 	]+spmpaddr42,a1
> +[ 	]+[0-9a-f]+:[ 	]+9eb02573[ 	]+csrr[ 	]+a0,spmpaddr43
> +[ 	]+[0-9a-f]+:[ 	]+9eb59073[ 	]+csrw[ 	]+spmpaddr43,a1
> +[ 	]+[0-9a-f]+:[ 	]+9ec02573[ 	]+csrr[ 	]+a0,spmpaddr44
> +[ 	]+[0-9a-f]+:[ 	]+9ec59073[ 	]+csrw[ 	]+spmpaddr44,a1
> +[ 	]+[0-9a-f]+:[ 	]+9ed02573[ 	]+csrr[ 	]+a0,spmpaddr45
> +[ 	]+[0-9a-f]+:[ 	]+9ed59073[ 	]+csrw[ 	]+spmpaddr45,a1
> +[ 	]+[0-9a-f]+:[ 	]+9ee02573[ 	]+csrr[ 	]+a0,spmpaddr46
> +[ 	]+[0-9a-f]+:[ 	]+9ee59073[ 	]+csrw[ 	]+spmpaddr46,a1
> +[ 	]+[0-9a-f]+:[ 	]+9ef02573[ 	]+csrr[ 	]+a0,spmpaddr47
> +[ 	]+[0-9a-f]+:[ 	]+9ef59073[ 	]+csrw[ 	]+spmpaddr47,a1
> +[ 	]+[0-9a-f]+:[ 	]+9f002573[ 	]+csrr[ 	]+a0,spmpaddr48
> +[ 	]+[0-9a-f]+:[ 	]+9f059073[ 	]+csrw[ 	]+spmpaddr48,a1
> +[ 	]+[0-9a-f]+:[ 	]+9f102573[ 	]+csrr[ 	]+a0,spmpaddr49
> +[ 	]+[0-9a-f]+:[ 	]+9f159073[ 	]+csrw[ 	]+spmpaddr49,a1
> +[ 	]+[0-9a-f]+:[ 	]+9f202573[ 	]+csrr[ 	]+a0,spmpaddr50
> +[ 	]+[0-9a-f]+:[ 	]+9f259073[ 	]+csrw[ 	]+spmpaddr50,a1
> +[ 	]+[0-9a-f]+:[ 	]+9f302573[ 	]+csrr[ 	]+a0,spmpaddr51
> +[ 	]+[0-9a-f]+:[ 	]+9f359073[ 	]+csrw[ 	]+spmpaddr51,a1
> +[ 	]+[0-9a-f]+:[ 	]+9f402573[ 	]+csrr[ 	]+a0,spmpaddr52
> +[ 	]+[0-9a-f]+:[ 	]+9f459073[ 	]+csrw[ 	]+spmpaddr52,a1
> +[ 	]+[0-9a-f]+:[ 	]+9f502573[ 	]+csrr[ 	]+a0,spmpaddr53
> +[ 	]+[0-9a-f]+:[ 	]+9f559073[ 	]+csrw[ 	]+spmpaddr53,a1
> +[ 	]+[0-9a-f]+:[ 	]+9f602573[ 	]+csrr[ 	]+a0,spmpaddr54
> +[ 	]+[0-9a-f]+:[ 	]+9f659073[ 	]+csrw[ 	]+spmpaddr54,a1
> +[ 	]+[0-9a-f]+:[ 	]+9f702573[ 	]+csrr[ 	]+a0,spmpaddr55
> +[ 	]+[0-9a-f]+:[ 	]+9f759073[ 	]+csrw[ 	]+spmpaddr55,a1
> +[ 	]+[0-9a-f]+:[ 	]+9f802573[ 	]+csrr[ 	]+a0,spmpaddr56
> +[ 	]+[0-9a-f]+:[ 	]+9f859073[ 	]+csrw[ 	]+spmpaddr56,a1
> +[ 	]+[0-9a-f]+:[ 	]+9f902573[ 	]+csrr[ 	]+a0,spmpaddr57
> +[ 	]+[0-9a-f]+:[ 	]+9f959073[ 	]+csrw[ 	]+spmpaddr57,a1
> +[ 	]+[0-9a-f]+:[ 	]+9fa02573[ 	]+csrr[ 	]+a0,spmpaddr58
> +[ 	]+[0-9a-f]+:[ 	]+9fa59073[ 	]+csrw[ 	]+spmpaddr58,a1
> +[ 	]+[0-9a-f]+:[ 	]+9fb02573[ 	]+csrr[ 	]+a0,spmpaddr59
> +[ 	]+[0-9a-f]+:[ 	]+9fb59073[ 	]+csrw[ 	]+spmpaddr59,a1
> +[ 	]+[0-9a-f]+:[ 	]+9fc02573[ 	]+csrr[ 	]+a0,spmpaddr60
> +[ 	]+[0-9a-f]+:[ 	]+9fc59073[ 	]+csrw[ 	]+spmpaddr60,a1
> +[ 	]+[0-9a-f]+:[ 	]+9fd02573[ 	]+csrr[ 	]+a0,spmpaddr61
> +[ 	]+[0-9a-f]+:[ 	]+9fd59073[ 	]+csrw[ 	]+spmpaddr61,a1
> +[ 	]+[0-9a-f]+:[ 	]+9fe02573[ 	]+csrr[ 	]+a0,spmpaddr62
> +[ 	]+[0-9a-f]+:[ 	]+9fe59073[ 	]+csrw[ 	]+spmpaddr62,a1
> +[ 	]+[0-9a-f]+:[ 	]+9ff02573[ 	]+csrr[ 	]+a0,spmpaddr63
> +[ 	]+[0-9a-f]+:[ 	]+9ff59073[ 	]+csrw[ 	]+spmpaddr63,a1
>  [ 	]+[0-9a-f]+:[ 	]+14d02573[ 	]+csrr[ 	]+a0,stimecmp
>  [ 	]+[0-9a-f]+:[ 	]+14d59073[ 	]+csrw[ 	]+stimecmp,a1
>  [ 	]+[0-9a-f]+:[ 	]+15d02573[ 	]+csrr[ 	]+a0,stimecmph
> diff --git a/gas/testsuite/gas/riscv/csr-version-1p12.l b/gas/testsuite/gas/riscv/csr-version-1p12.l
> index 1c0bb4ef2d8f..83933a198eda 100644
> --- a/gas/testsuite/gas/riscv/csr-version-1p12.l
> +++ b/gas/testsuite/gas/riscv/csr-version-1p12.l
> @@ -587,6 +587,188 @@
>  .*Warning: invalid CSR `mhpmevent31h', needs `sscofpmf' extension
>  .*Warning: invalid CSR `mhpmevent31h', needs rv32i extension
>  .*Warning: invalid CSR `mhpmevent31h', needs `sscofpmf' extension
> +.*Warning: invalid CSR `spmpcfg0', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg0', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg1', needs rv32i extension
> +.*Warning: invalid CSR `spmpcfg1', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg1', needs rv32i extension
> +.*Warning: invalid CSR `spmpcfg1', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg2', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg2', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg3', needs rv32i extension
> +.*Warning: invalid CSR `spmpcfg3', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg3', needs rv32i extension
> +.*Warning: invalid CSR `spmpcfg3', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg4', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg4', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg5', needs rv32i extension
> +.*Warning: invalid CSR `spmpcfg5', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg5', needs rv32i extension
> +.*Warning: invalid CSR `spmpcfg5', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg6', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg6', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg7', needs rv32i extension
> +.*Warning: invalid CSR `spmpcfg7', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg7', needs rv32i extension
> +.*Warning: invalid CSR `spmpcfg7', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg8', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg8', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg9', needs rv32i extension
> +.*Warning: invalid CSR `spmpcfg9', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg9', needs rv32i extension
> +.*Warning: invalid CSR `spmpcfg9', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg10', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg10', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg11', needs rv32i extension
> +.*Warning: invalid CSR `spmpcfg11', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg11', needs rv32i extension
> +.*Warning: invalid CSR `spmpcfg11', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg12', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg12', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg13', needs rv32i extension
> +.*Warning: invalid CSR `spmpcfg13', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg13', needs rv32i extension
> +.*Warning: invalid CSR `spmpcfg13', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg14', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg14', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg15', needs rv32i extension
> +.*Warning: invalid CSR `spmpcfg15', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg15', needs rv32i extension
> +.*Warning: invalid CSR `spmpcfg15', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpswitch0', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpswitch0', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpswitch1', needs rv32i extension
> +.*Warning: invalid CSR `spmpswitch1', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpswitch1', needs rv32i extension
> +.*Warning: invalid CSR `spmpswitch1', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr0', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr0', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr1', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr1', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr2', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr2', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr3', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr3', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr4', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr4', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr5', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr5', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr6', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr6', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr7', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr7', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr8', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr8', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr9', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr9', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr10', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr10', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr11', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr11', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr12', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr12', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr13', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr13', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr14', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr14', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr15', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr15', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr16', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr16', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr17', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr17', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr18', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr18', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr19', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr19', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr20', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr20', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr21', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr21', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr22', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr22', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr23', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr23', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr24', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr24', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr25', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr25', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr26', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr26', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr27', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr27', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr28', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr28', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr29', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr29', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr30', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr30', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr31', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr31', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr32', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr32', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr33', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr33', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr34', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr34', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr35', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr35', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr36', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr36', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr37', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr37', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr38', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr38', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr39', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr39', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr40', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr40', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr41', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr41', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr42', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr42', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr43', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr43', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr44', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr44', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr45', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr45', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr46', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr46', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr47', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr47', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr48', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr48', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr49', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr49', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr50', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr50', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr51', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr51', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr52', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr52', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr53', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr53', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr54', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr54', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr55', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr55', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr56', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr56', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr57', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr57', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr58', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr58', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr59', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr59', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr60', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr60', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr61', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr61', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr62', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr62', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr63', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr63', needs `sspmp' extension
>  .*Warning: invalid CSR `stimecmp', needs `sstc' extension
>  .*Warning: invalid CSR `stimecmp', needs `sstc' extension
>  .*Warning: invalid CSR `stimecmph', needs rv32i extension
> diff --git a/gas/testsuite/gas/riscv/csr-version-1p9p1.d b/gas/testsuite/gas/riscv/csr-version-1p9p1.d
> index 0fe849c269c2..b304622e7f9c 100644
> --- a/gas/testsuite/gas/riscv/csr-version-1p9p1.d
> +++ b/gas/testsuite/gas/riscv/csr-version-1p9p1.d
> @@ -765,6 +765,170 @@ Disassembly of section .text:
>  [ 	]+[0-9a-f]+:[ 	]+73e59073[ 	]+csrw[ 	]+mhpmevent30h,a1
>  [ 	]+[0-9a-f]+:[ 	]+73f02573[ 	]+csrr[ 	]+a0,mhpmevent31h
>  [ 	]+[0-9a-f]+:[ 	]+73f59073[ 	]+csrw[ 	]+mhpmevent31h,a1
> +[ 	]+[0-9a-f]+:[ 	]+5c002573[ 	]+csrr[ 	]+a0,spmpcfg0
> +[ 	]+[0-9a-f]+:[ 	]+5c059073[ 	]+csrw[ 	]+spmpcfg0,a1
> +[ 	]+[0-9a-f]+:[ 	]+5c102573[ 	]+csrr[ 	]+a0,spmpcfg1
> +[ 	]+[0-9a-f]+:[ 	]+5c159073[ 	]+csrw[ 	]+spmpcfg1,a1
> +[ 	]+[0-9a-f]+:[ 	]+5c202573[ 	]+csrr[ 	]+a0,spmpcfg2
> +[ 	]+[0-9a-f]+:[ 	]+5c259073[ 	]+csrw[ 	]+spmpcfg2,a1
> +[ 	]+[0-9a-f]+:[ 	]+5c302573[ 	]+csrr[ 	]+a0,spmpcfg3
> +[ 	]+[0-9a-f]+:[ 	]+5c359073[ 	]+csrw[ 	]+spmpcfg3,a1
> +[ 	]+[0-9a-f]+:[ 	]+5c402573[ 	]+csrr[ 	]+a0,spmpcfg4
> +[ 	]+[0-9a-f]+:[ 	]+5c459073[ 	]+csrw[ 	]+spmpcfg4,a1
> +[ 	]+[0-9a-f]+:[ 	]+5c502573[ 	]+csrr[ 	]+a0,spmpcfg5
> +[ 	]+[0-9a-f]+:[ 	]+5c559073[ 	]+csrw[ 	]+spmpcfg5,a1
> +[ 	]+[0-9a-f]+:[ 	]+5c602573[ 	]+csrr[ 	]+a0,spmpcfg6
> +[ 	]+[0-9a-f]+:[ 	]+5c659073[ 	]+csrw[ 	]+spmpcfg6,a1
> +[ 	]+[0-9a-f]+:[ 	]+5c702573[ 	]+csrr[ 	]+a0,spmpcfg7
> +[ 	]+[0-9a-f]+:[ 	]+5c759073[ 	]+csrw[ 	]+spmpcfg7,a1
> +[ 	]+[0-9a-f]+:[ 	]+5c802573[ 	]+csrr[ 	]+a0,spmpcfg8
> +[ 	]+[0-9a-f]+:[ 	]+5c859073[ 	]+csrw[ 	]+spmpcfg8,a1
> +[ 	]+[0-9a-f]+:[ 	]+5c902573[ 	]+csrr[ 	]+a0,spmpcfg9
> +[ 	]+[0-9a-f]+:[ 	]+5c959073[ 	]+csrw[ 	]+spmpcfg9,a1
> +[ 	]+[0-9a-f]+:[ 	]+5ca02573[ 	]+csrr[ 	]+a0,spmpcfg10
> +[ 	]+[0-9a-f]+:[ 	]+5ca59073[ 	]+csrw[ 	]+spmpcfg10,a1
> +[ 	]+[0-9a-f]+:[ 	]+5cb02573[ 	]+csrr[ 	]+a0,spmpcfg11
> +[ 	]+[0-9a-f]+:[ 	]+5cb59073[ 	]+csrw[ 	]+spmpcfg11,a1
> +[ 	]+[0-9a-f]+:[ 	]+5cc02573[ 	]+csrr[ 	]+a0,spmpcfg12
> +[ 	]+[0-9a-f]+:[ 	]+5cc59073[ 	]+csrw[ 	]+spmpcfg12,a1
> +[ 	]+[0-9a-f]+:[ 	]+5cd02573[ 	]+csrr[ 	]+a0,spmpcfg13
> +[ 	]+[0-9a-f]+:[ 	]+5cd59073[ 	]+csrw[ 	]+spmpcfg13,a1
> +[ 	]+[0-9a-f]+:[ 	]+5ce02573[ 	]+csrr[ 	]+a0,spmpcfg14
> +[ 	]+[0-9a-f]+:[ 	]+5ce59073[ 	]+csrw[ 	]+spmpcfg14,a1
> +[ 	]+[0-9a-f]+:[ 	]+5cf02573[ 	]+csrr[ 	]+a0,spmpcfg15
> +[ 	]+[0-9a-f]+:[ 	]+5cf59073[ 	]+csrw[ 	]+spmpcfg15,a1
> +[ 	]+[0-9a-f]+:[ 	]+5d002573[ 	]+csrr[ 	]+a0,spmpswitch0
> +[ 	]+[0-9a-f]+:[ 	]+5d059073[ 	]+csrw[ 	]+spmpswitch0,a1
> +[ 	]+[0-9a-f]+:[ 	]+5d102573[ 	]+csrr[ 	]+a0,spmpswitch1
> +[ 	]+[0-9a-f]+:[ 	]+5d159073[ 	]+csrw[ 	]+spmpswitch1,a1
> +[ 	]+[0-9a-f]+:[ 	]+9c002573[ 	]+csrr[ 	]+a0,spmpaddr0
> +[ 	]+[0-9a-f]+:[ 	]+9c059073[ 	]+csrw[ 	]+spmpaddr0,a1
> +[ 	]+[0-9a-f]+:[ 	]+9c102573[ 	]+csrr[ 	]+a0,spmpaddr1
> +[ 	]+[0-9a-f]+:[ 	]+9c159073[ 	]+csrw[ 	]+spmpaddr1,a1
> +[ 	]+[0-9a-f]+:[ 	]+9c202573[ 	]+csrr[ 	]+a0,spmpaddr2
> +[ 	]+[0-9a-f]+:[ 	]+9c259073[ 	]+csrw[ 	]+spmpaddr2,a1
> +[ 	]+[0-9a-f]+:[ 	]+9c302573[ 	]+csrr[ 	]+a0,spmpaddr3
> +[ 	]+[0-9a-f]+:[ 	]+9c359073[ 	]+csrw[ 	]+spmpaddr3,a1
> +[ 	]+[0-9a-f]+:[ 	]+9c402573[ 	]+csrr[ 	]+a0,spmpaddr4
> +[ 	]+[0-9a-f]+:[ 	]+9c459073[ 	]+csrw[ 	]+spmpaddr4,a1
> +[ 	]+[0-9a-f]+:[ 	]+9c502573[ 	]+csrr[ 	]+a0,spmpaddr5
> +[ 	]+[0-9a-f]+:[ 	]+9c559073[ 	]+csrw[ 	]+spmpaddr5,a1
> +[ 	]+[0-9a-f]+:[ 	]+9c602573[ 	]+csrr[ 	]+a0,spmpaddr6
> +[ 	]+[0-9a-f]+:[ 	]+9c659073[ 	]+csrw[ 	]+spmpaddr6,a1
> +[ 	]+[0-9a-f]+:[ 	]+9c702573[ 	]+csrr[ 	]+a0,spmpaddr7
> +[ 	]+[0-9a-f]+:[ 	]+9c759073[ 	]+csrw[ 	]+spmpaddr7,a1
> +[ 	]+[0-9a-f]+:[ 	]+9c802573[ 	]+csrr[ 	]+a0,spmpaddr8
> +[ 	]+[0-9a-f]+:[ 	]+9c859073[ 	]+csrw[ 	]+spmpaddr8,a1
> +[ 	]+[0-9a-f]+:[ 	]+9c902573[ 	]+csrr[ 	]+a0,spmpaddr9
> +[ 	]+[0-9a-f]+:[ 	]+9c959073[ 	]+csrw[ 	]+spmpaddr9,a1
> +[ 	]+[0-9a-f]+:[ 	]+9ca02573[ 	]+csrr[ 	]+a0,spmpaddr10
> +[ 	]+[0-9a-f]+:[ 	]+9ca59073[ 	]+csrw[ 	]+spmpaddr10,a1
> +[ 	]+[0-9a-f]+:[ 	]+9cb02573[ 	]+csrr[ 	]+a0,spmpaddr11
> +[ 	]+[0-9a-f]+:[ 	]+9cb59073[ 	]+csrw[ 	]+spmpaddr11,a1
> +[ 	]+[0-9a-f]+:[ 	]+9cc02573[ 	]+csrr[ 	]+a0,spmpaddr12
> +[ 	]+[0-9a-f]+:[ 	]+9cc59073[ 	]+csrw[ 	]+spmpaddr12,a1
> +[ 	]+[0-9a-f]+:[ 	]+9cd02573[ 	]+csrr[ 	]+a0,spmpaddr13
> +[ 	]+[0-9a-f]+:[ 	]+9cd59073[ 	]+csrw[ 	]+spmpaddr13,a1
> +[ 	]+[0-9a-f]+:[ 	]+9ce02573[ 	]+csrr[ 	]+a0,spmpaddr14
> +[ 	]+[0-9a-f]+:[ 	]+9ce59073[ 	]+csrw[ 	]+spmpaddr14,a1
> +[ 	]+[0-9a-f]+:[ 	]+9cf02573[ 	]+csrr[ 	]+a0,spmpaddr15
> +[ 	]+[0-9a-f]+:[ 	]+9cf59073[ 	]+csrw[ 	]+spmpaddr15,a1
> +[ 	]+[0-9a-f]+:[ 	]+9d002573[ 	]+csrr[ 	]+a0,spmpaddr16
> +[ 	]+[0-9a-f]+:[ 	]+9d059073[ 	]+csrw[ 	]+spmpaddr16,a1
> +[ 	]+[0-9a-f]+:[ 	]+9d102573[ 	]+csrr[ 	]+a0,spmpaddr17
> +[ 	]+[0-9a-f]+:[ 	]+9d159073[ 	]+csrw[ 	]+spmpaddr17,a1
> +[ 	]+[0-9a-f]+:[ 	]+9d202573[ 	]+csrr[ 	]+a0,spmpaddr18
> +[ 	]+[0-9a-f]+:[ 	]+9d259073[ 	]+csrw[ 	]+spmpaddr18,a1
> +[ 	]+[0-9a-f]+:[ 	]+9d302573[ 	]+csrr[ 	]+a0,spmpaddr19
> +[ 	]+[0-9a-f]+:[ 	]+9d359073[ 	]+csrw[ 	]+spmpaddr19,a1
> +[ 	]+[0-9a-f]+:[ 	]+9d402573[ 	]+csrr[ 	]+a0,spmpaddr20
> +[ 	]+[0-9a-f]+:[ 	]+9d459073[ 	]+csrw[ 	]+spmpaddr20,a1
> +[ 	]+[0-9a-f]+:[ 	]+9d502573[ 	]+csrr[ 	]+a0,spmpaddr21
> +[ 	]+[0-9a-f]+:[ 	]+9d559073[ 	]+csrw[ 	]+spmpaddr21,a1
> +[ 	]+[0-9a-f]+:[ 	]+9d602573[ 	]+csrr[ 	]+a0,spmpaddr22
> +[ 	]+[0-9a-f]+:[ 	]+9d659073[ 	]+csrw[ 	]+spmpaddr22,a1
> +[ 	]+[0-9a-f]+:[ 	]+9d702573[ 	]+csrr[ 	]+a0,spmpaddr23
> +[ 	]+[0-9a-f]+:[ 	]+9d759073[ 	]+csrw[ 	]+spmpaddr23,a1
> +[ 	]+[0-9a-f]+:[ 	]+9d802573[ 	]+csrr[ 	]+a0,spmpaddr24
> +[ 	]+[0-9a-f]+:[ 	]+9d859073[ 	]+csrw[ 	]+spmpaddr24,a1
> +[ 	]+[0-9a-f]+:[ 	]+9d902573[ 	]+csrr[ 	]+a0,spmpaddr25
> +[ 	]+[0-9a-f]+:[ 	]+9d959073[ 	]+csrw[ 	]+spmpaddr25,a1
> +[ 	]+[0-9a-f]+:[ 	]+9da02573[ 	]+csrr[ 	]+a0,spmpaddr26
> +[ 	]+[0-9a-f]+:[ 	]+9da59073[ 	]+csrw[ 	]+spmpaddr26,a1
> +[ 	]+[0-9a-f]+:[ 	]+9db02573[ 	]+csrr[ 	]+a0,spmpaddr27
> +[ 	]+[0-9a-f]+:[ 	]+9db59073[ 	]+csrw[ 	]+spmpaddr27,a1
> +[ 	]+[0-9a-f]+:[ 	]+9dc02573[ 	]+csrr[ 	]+a0,spmpaddr28
> +[ 	]+[0-9a-f]+:[ 	]+9dc59073[ 	]+csrw[ 	]+spmpaddr28,a1
> +[ 	]+[0-9a-f]+:[ 	]+9dd02573[ 	]+csrr[ 	]+a0,spmpaddr29
> +[ 	]+[0-9a-f]+:[ 	]+9dd59073[ 	]+csrw[ 	]+spmpaddr29,a1
> +[ 	]+[0-9a-f]+:[ 	]+9de02573[ 	]+csrr[ 	]+a0,spmpaddr30
> +[ 	]+[0-9a-f]+:[ 	]+9de59073[ 	]+csrw[ 	]+spmpaddr30,a1
> +[ 	]+[0-9a-f]+:[ 	]+9df02573[ 	]+csrr[ 	]+a0,spmpaddr31
> +[ 	]+[0-9a-f]+:[ 	]+9df59073[ 	]+csrw[ 	]+spmpaddr31,a1
> +[ 	]+[0-9a-f]+:[ 	]+9e002573[ 	]+csrr[ 	]+a0,spmpaddr32
> +[ 	]+[0-9a-f]+:[ 	]+9e059073[ 	]+csrw[ 	]+spmpaddr32,a1
> +[ 	]+[0-9a-f]+:[ 	]+9e102573[ 	]+csrr[ 	]+a0,spmpaddr33
> +[ 	]+[0-9a-f]+:[ 	]+9e159073[ 	]+csrw[ 	]+spmpaddr33,a1
> +[ 	]+[0-9a-f]+:[ 	]+9e202573[ 	]+csrr[ 	]+a0,spmpaddr34
> +[ 	]+[0-9a-f]+:[ 	]+9e259073[ 	]+csrw[ 	]+spmpaddr34,a1
> +[ 	]+[0-9a-f]+:[ 	]+9e302573[ 	]+csrr[ 	]+a0,spmpaddr35
> +[ 	]+[0-9a-f]+:[ 	]+9e359073[ 	]+csrw[ 	]+spmpaddr35,a1
> +[ 	]+[0-9a-f]+:[ 	]+9e402573[ 	]+csrr[ 	]+a0,spmpaddr36
> +[ 	]+[0-9a-f]+:[ 	]+9e459073[ 	]+csrw[ 	]+spmpaddr36,a1
> +[ 	]+[0-9a-f]+:[ 	]+9e502573[ 	]+csrr[ 	]+a0,spmpaddr37
> +[ 	]+[0-9a-f]+:[ 	]+9e559073[ 	]+csrw[ 	]+spmpaddr37,a1
> +[ 	]+[0-9a-f]+:[ 	]+9e602573[ 	]+csrr[ 	]+a0,spmpaddr38
> +[ 	]+[0-9a-f]+:[ 	]+9e659073[ 	]+csrw[ 	]+spmpaddr38,a1
> +[ 	]+[0-9a-f]+:[ 	]+9e702573[ 	]+csrr[ 	]+a0,spmpaddr39
> +[ 	]+[0-9a-f]+:[ 	]+9e759073[ 	]+csrw[ 	]+spmpaddr39,a1
> +[ 	]+[0-9a-f]+:[ 	]+9e802573[ 	]+csrr[ 	]+a0,spmpaddr40
> +[ 	]+[0-9a-f]+:[ 	]+9e859073[ 	]+csrw[ 	]+spmpaddr40,a1
> +[ 	]+[0-9a-f]+:[ 	]+9e902573[ 	]+csrr[ 	]+a0,spmpaddr41
> +[ 	]+[0-9a-f]+:[ 	]+9e959073[ 	]+csrw[ 	]+spmpaddr41,a1
> +[ 	]+[0-9a-f]+:[ 	]+9ea02573[ 	]+csrr[ 	]+a0,spmpaddr42
> +[ 	]+[0-9a-f]+:[ 	]+9ea59073[ 	]+csrw[ 	]+spmpaddr42,a1
> +[ 	]+[0-9a-f]+:[ 	]+9eb02573[ 	]+csrr[ 	]+a0,spmpaddr43
> +[ 	]+[0-9a-f]+:[ 	]+9eb59073[ 	]+csrw[ 	]+spmpaddr43,a1
> +[ 	]+[0-9a-f]+:[ 	]+9ec02573[ 	]+csrr[ 	]+a0,spmpaddr44
> +[ 	]+[0-9a-f]+:[ 	]+9ec59073[ 	]+csrw[ 	]+spmpaddr44,a1
> +[ 	]+[0-9a-f]+:[ 	]+9ed02573[ 	]+csrr[ 	]+a0,spmpaddr45
> +[ 	]+[0-9a-f]+:[ 	]+9ed59073[ 	]+csrw[ 	]+spmpaddr45,a1
> +[ 	]+[0-9a-f]+:[ 	]+9ee02573[ 	]+csrr[ 	]+a0,spmpaddr46
> +[ 	]+[0-9a-f]+:[ 	]+9ee59073[ 	]+csrw[ 	]+spmpaddr46,a1
> +[ 	]+[0-9a-f]+:[ 	]+9ef02573[ 	]+csrr[ 	]+a0,spmpaddr47
> +[ 	]+[0-9a-f]+:[ 	]+9ef59073[ 	]+csrw[ 	]+spmpaddr47,a1
> +[ 	]+[0-9a-f]+:[ 	]+9f002573[ 	]+csrr[ 	]+a0,spmpaddr48
> +[ 	]+[0-9a-f]+:[ 	]+9f059073[ 	]+csrw[ 	]+spmpaddr48,a1
> +[ 	]+[0-9a-f]+:[ 	]+9f102573[ 	]+csrr[ 	]+a0,spmpaddr49
> +[ 	]+[0-9a-f]+:[ 	]+9f159073[ 	]+csrw[ 	]+spmpaddr49,a1
> +[ 	]+[0-9a-f]+:[ 	]+9f202573[ 	]+csrr[ 	]+a0,spmpaddr50
> +[ 	]+[0-9a-f]+:[ 	]+9f259073[ 	]+csrw[ 	]+spmpaddr50,a1
> +[ 	]+[0-9a-f]+:[ 	]+9f302573[ 	]+csrr[ 	]+a0,spmpaddr51
> +[ 	]+[0-9a-f]+:[ 	]+9f359073[ 	]+csrw[ 	]+spmpaddr51,a1
> +[ 	]+[0-9a-f]+:[ 	]+9f402573[ 	]+csrr[ 	]+a0,spmpaddr52
> +[ 	]+[0-9a-f]+:[ 	]+9f459073[ 	]+csrw[ 	]+spmpaddr52,a1
> +[ 	]+[0-9a-f]+:[ 	]+9f502573[ 	]+csrr[ 	]+a0,spmpaddr53
> +[ 	]+[0-9a-f]+:[ 	]+9f559073[ 	]+csrw[ 	]+spmpaddr53,a1
> +[ 	]+[0-9a-f]+:[ 	]+9f602573[ 	]+csrr[ 	]+a0,spmpaddr54
> +[ 	]+[0-9a-f]+:[ 	]+9f659073[ 	]+csrw[ 	]+spmpaddr54,a1
> +[ 	]+[0-9a-f]+:[ 	]+9f702573[ 	]+csrr[ 	]+a0,spmpaddr55
> +[ 	]+[0-9a-f]+:[ 	]+9f759073[ 	]+csrw[ 	]+spmpaddr55,a1
> +[ 	]+[0-9a-f]+:[ 	]+9f802573[ 	]+csrr[ 	]+a0,spmpaddr56
> +[ 	]+[0-9a-f]+:[ 	]+9f859073[ 	]+csrw[ 	]+spmpaddr56,a1
> +[ 	]+[0-9a-f]+:[ 	]+9f902573[ 	]+csrr[ 	]+a0,spmpaddr57
> +[ 	]+[0-9a-f]+:[ 	]+9f959073[ 	]+csrw[ 	]+spmpaddr57,a1
> +[ 	]+[0-9a-f]+:[ 	]+9fa02573[ 	]+csrr[ 	]+a0,spmpaddr58
> +[ 	]+[0-9a-f]+:[ 	]+9fa59073[ 	]+csrw[ 	]+spmpaddr58,a1
> +[ 	]+[0-9a-f]+:[ 	]+9fb02573[ 	]+csrr[ 	]+a0,spmpaddr59
> +[ 	]+[0-9a-f]+:[ 	]+9fb59073[ 	]+csrw[ 	]+spmpaddr59,a1
> +[ 	]+[0-9a-f]+:[ 	]+9fc02573[ 	]+csrr[ 	]+a0,spmpaddr60
> +[ 	]+[0-9a-f]+:[ 	]+9fc59073[ 	]+csrw[ 	]+spmpaddr60,a1
> +[ 	]+[0-9a-f]+:[ 	]+9fd02573[ 	]+csrr[ 	]+a0,spmpaddr61
> +[ 	]+[0-9a-f]+:[ 	]+9fd59073[ 	]+csrw[ 	]+spmpaddr61,a1
> +[ 	]+[0-9a-f]+:[ 	]+9fe02573[ 	]+csrr[ 	]+a0,spmpaddr62
> +[ 	]+[0-9a-f]+:[ 	]+9fe59073[ 	]+csrw[ 	]+spmpaddr62,a1
> +[ 	]+[0-9a-f]+:[ 	]+9ff02573[ 	]+csrr[ 	]+a0,spmpaddr63
> +[ 	]+[0-9a-f]+:[ 	]+9ff59073[ 	]+csrw[ 	]+spmpaddr63,a1
>  [ 	]+[0-9a-f]+:[ 	]+14d02573[ 	]+csrr[ 	]+a0,stimecmp
>  [ 	]+[0-9a-f]+:[ 	]+14d59073[ 	]+csrw[ 	]+stimecmp,a1
>  [ 	]+[0-9a-f]+:[ 	]+15d02573[ 	]+csrr[ 	]+a0,stimecmph
> diff --git a/gas/testsuite/gas/riscv/csr-version-1p9p1.l b/gas/testsuite/gas/riscv/csr-version-1p9p1.l
> index c65d0b48e414..bceb315f576d 100644
> --- a/gas/testsuite/gas/riscv/csr-version-1p9p1.l
> +++ b/gas/testsuite/gas/riscv/csr-version-1p9p1.l
> @@ -777,6 +777,188 @@
>  .*Warning: invalid CSR `mhpmevent31h', needs `sscofpmf' extension
>  .*Warning: invalid CSR `mhpmevent31h', needs rv32i extension
>  .*Warning: invalid CSR `mhpmevent31h', needs `sscofpmf' extension
> +.*Warning: invalid CSR `spmpcfg0', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg0', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg1', needs rv32i extension
> +.*Warning: invalid CSR `spmpcfg1', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg1', needs rv32i extension
> +.*Warning: invalid CSR `spmpcfg1', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg2', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg2', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg3', needs rv32i extension
> +.*Warning: invalid CSR `spmpcfg3', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg3', needs rv32i extension
> +.*Warning: invalid CSR `spmpcfg3', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg4', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg4', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg5', needs rv32i extension
> +.*Warning: invalid CSR `spmpcfg5', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg5', needs rv32i extension
> +.*Warning: invalid CSR `spmpcfg5', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg6', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg6', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg7', needs rv32i extension
> +.*Warning: invalid CSR `spmpcfg7', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg7', needs rv32i extension
> +.*Warning: invalid CSR `spmpcfg7', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg8', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg8', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg9', needs rv32i extension
> +.*Warning: invalid CSR `spmpcfg9', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg9', needs rv32i extension
> +.*Warning: invalid CSR `spmpcfg9', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg10', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg10', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg11', needs rv32i extension
> +.*Warning: invalid CSR `spmpcfg11', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg11', needs rv32i extension
> +.*Warning: invalid CSR `spmpcfg11', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg12', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg12', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg13', needs rv32i extension
> +.*Warning: invalid CSR `spmpcfg13', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg13', needs rv32i extension
> +.*Warning: invalid CSR `spmpcfg13', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg14', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg14', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg15', needs rv32i extension
> +.*Warning: invalid CSR `spmpcfg15', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpcfg15', needs rv32i extension
> +.*Warning: invalid CSR `spmpcfg15', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpswitch0', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpswitch0', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpswitch1', needs rv32i extension
> +.*Warning: invalid CSR `spmpswitch1', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpswitch1', needs rv32i extension
> +.*Warning: invalid CSR `spmpswitch1', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr0', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr0', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr1', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr1', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr2', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr2', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr3', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr3', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr4', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr4', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr5', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr5', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr6', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr6', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr7', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr7', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr8', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr8', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr9', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr9', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr10', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr10', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr11', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr11', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr12', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr12', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr13', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr13', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr14', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr14', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr15', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr15', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr16', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr16', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr17', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr17', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr18', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr18', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr19', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr19', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr20', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr20', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr21', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr21', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr22', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr22', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr23', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr23', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr24', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr24', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr25', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr25', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr26', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr26', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr27', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr27', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr28', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr28', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr29', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr29', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr30', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr30', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr31', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr31', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr32', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr32', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr33', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr33', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr34', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr34', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr35', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr35', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr36', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr36', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr37', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr37', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr38', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr38', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr39', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr39', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr40', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr40', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr41', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr41', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr42', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr42', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr43', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr43', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr44', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr44', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr45', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr45', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr46', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr46', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr47', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr47', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr48', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr48', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr49', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr49', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr50', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr50', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr51', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr51', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr52', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr52', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr53', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr53', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr54', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr54', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr55', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr55', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr56', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr56', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr57', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr57', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr58', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr58', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr59', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr59', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr60', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr60', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr61', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr61', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr62', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr62', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr63', needs `sspmp' extension
> +.*Warning: invalid CSR `spmpaddr63', needs `sspmp' extension
>  .*Warning: invalid CSR `stimecmp', needs `sstc' extension
>  .*Warning: invalid CSR `stimecmp', needs `sstc' extension
>  .*Warning: invalid CSR `stimecmph', needs rv32i extension
> diff --git a/gas/testsuite/gas/riscv/csr.s b/gas/testsuite/gas/riscv/csr.s
> index c7406ce34c2e..ec1b91950228 100644
> --- a/gas/testsuite/gas/riscv/csr.s
> +++ b/gas/testsuite/gas/riscv/csr.s
> @@ -427,6 +427,90 @@
>  	csr mhpmevent30h
>  	csr mhpmevent31h
>
> +	# Sspmp extension
> +	csr spmpcfg0
> +	csr spmpcfg1
> +	csr spmpcfg2
> +	csr spmpcfg3
> +	csr spmpcfg4
> +	csr spmpcfg5
> +	csr spmpcfg6
> +	csr spmpcfg7
> +	csr spmpcfg8
> +	csr spmpcfg9
> +	csr spmpcfg10
> +	csr spmpcfg11
> +	csr spmpcfg12
> +	csr spmpcfg13
> +	csr spmpcfg14
> +	csr spmpcfg15
> +	csr spmpswitch0
> +	csr spmpswitch1
> +	csr spmpaddr0
> +	csr spmpaddr1
> +	csr spmpaddr2
> +	csr spmpaddr3
> +	csr spmpaddr4
> +	csr spmpaddr5
> +	csr spmpaddr6
> +	csr spmpaddr7
> +	csr spmpaddr8
> +	csr spmpaddr9
> +	csr spmpaddr10
> +	csr spmpaddr11
> +	csr spmpaddr12
> +	csr spmpaddr13
> +	csr spmpaddr14
> +	csr spmpaddr15
> +	csr spmpaddr16
> +	csr spmpaddr17
> +	csr spmpaddr18
> +	csr spmpaddr19
> +	csr spmpaddr20
> +	csr spmpaddr21
> +	csr spmpaddr22
> +	csr spmpaddr23
> +	csr spmpaddr24
> +	csr spmpaddr25
> +	csr spmpaddr26
> +	csr spmpaddr27
> +	csr spmpaddr28
> +	csr spmpaddr29
> +	csr spmpaddr30
> +	csr spmpaddr31
> +	csr spmpaddr32
> +	csr spmpaddr33
> +	csr spmpaddr34
> +	csr spmpaddr35
> +	csr spmpaddr36
> +	csr spmpaddr37
> +	csr spmpaddr38
> +	csr spmpaddr39
> +	csr spmpaddr40
> +	csr spmpaddr41
> +	csr spmpaddr42
> +	csr spmpaddr43
> +	csr spmpaddr44
> +	csr spmpaddr45
> +	csr spmpaddr46
> +	csr spmpaddr47
> +	csr spmpaddr48
> +	csr spmpaddr49
> +	csr spmpaddr50
> +	csr spmpaddr51
> +	csr spmpaddr52
> +	csr spmpaddr53
> +	csr spmpaddr54
> +	csr spmpaddr55
> +	csr spmpaddr56
> +	csr spmpaddr57
> +	csr spmpaddr58
> +	csr spmpaddr59
> +	csr spmpaddr60
> +	csr spmpaddr61
> +	csr spmpaddr62
> +	csr spmpaddr63
> +
>  	# Sstc extension
>  	csr stimecmp
>  	csr stimecmph
> diff --git a/include/opcode/riscv-opc.h b/include/opcode/riscv-opc.h
> index 06e3df0f5a63..fc839454f7d3 100644
> --- a/include/opcode/riscv-opc.h
> +++ b/include/opcode/riscv-opc.h
> @@ -2747,6 +2747,89 @@
>  #define CSR_MHPMEVENT29H 0x73d
>  #define CSR_MHPMEVENT30H 0x73e
>  #define CSR_MHPMEVENT31H 0x73f
> +/* Sspmp extension CSR addresses.  */
> +#define CSR_SPMPCFG0 0x5c0      /* TENTATIVELY use custom CSR address.  */
> +#define CSR_SPMPCFG1 0x5c1      /* TENTATIVELY use custom CSR address.  */
> +#define CSR_SPMPCFG2 0x5c2      /* TENTATIVELY use custom CSR address.  */
> +#define CSR_SPMPCFG3 0x5c3      /* TENTATIVELY use custom CSR address.  */
> +#define CSR_SPMPCFG4 0x5c4      /* TENTATIVELY use custom CSR address.  */
> +#define CSR_SPMPCFG5 0x5c5      /* TENTATIVELY use custom CSR address.  */
> +#define CSR_SPMPCFG6 0x5c6      /* TENTATIVELY use custom CSR address.  */
> +#define CSR_SPMPCFG7 0x5c7      /* TENTATIVELY use custom CSR address.  */
> +#define CSR_SPMPCFG8 0x5c8      /* TENTATIVELY use custom CSR address.  */
> +#define CSR_SPMPCFG9 0x5c9      /* TENTATIVELY use custom CSR address.  */
> +#define CSR_SPMPCFG10 0x5ca     /* TENTATIVELY use custom CSR address.  */
> +#define CSR_SPMPCFG11 0x5cb     /* TENTATIVELY use custom CSR address.  */
> +#define CSR_SPMPCFG12 0x5cc     /* TENTATIVELY use custom CSR address.  */
> +#define CSR_SPMPCFG13 0x5cd     /* TENTATIVELY use custom CSR address.  */
> +#define CSR_SPMPCFG14 0x5ce     /* TENTATIVELY use custom CSR address.  */
> +#define CSR_SPMPCFG15 0x5cf     /* TENTATIVELY use custom CSR address.  */
> +#define CSR_SPMPSWITCH0 0x5d0   /* TENTATIVELY use custom CSR address.  */
> +#define CSR_SPMPSWITCH1 0x5d1   /* TENTATIVELY use custom CSR address.  */
> +#define CSR_SPMPADDR0 0x9c0     /* TENTATIVELY use custom CSR address.  */
> +#define CSR_SPMPADDR1 0x9c1     /* TENTATIVELY use custom CSR address.  */
> +#define CSR_SPMPADDR2 0x9c2     /* TENTATIVELY use custom CSR address.  */
> +#define CSR_SPMPADDR3 0x9c3     /* TENTATIVELY use custom CSR address.  */
> +#define CSR_SPMPADDR4 0x9c4     /* TENTATIVELY use custom CSR address.  */
> +#define CSR_SPMPADDR5 0x9c5     /* TENTATIVELY use custom CSR address.  */
> +#define CSR_SPMPADDR6 0x9c6     /* TENTATIVELY use custom CSR address.  */
> +#define CSR_SPMPADDR7 0x9c7     /* TENTATIVELY use custom CSR address.  */
> +#define CSR_SPMPADDR8 0x9c8     /* TENTATIVELY use custom CSR address.  */
> +#define CSR_SPMPADDR9 0x9c9     /* TENTATIVELY use custom CSR address.  */
> +#define CSR_SPMPADDR10 0x9ca    /* TENTATIVELY use custom CSR address.  */
> +#define CSR_SPMPADDR11 0x9cb    /* TENTATIVELY use custom CSR address.  */
> +#define CSR_SPMPADDR12 0x9cc    /* TENTATIVELY use custom CSR address.  */
> +#define CSR_SPMPADDR13 0x9cd    /* TENTATIVELY use custom CSR address.  */
> +#define CSR_SPMPADDR14 0x9ce    /* TENTATIVELY use custom CSR address.  */
> +#define CSR_SPMPADDR15 0x9cf    /* TENTATIVELY use custom CSR address.  */
> +#define CSR_SPMPADDR16 0x9d0    /* TENTATIVELY use custom CSR address.  */
> +#define CSR_SPMPADDR17 0x9d1    /* TENTATIVELY use custom CSR address.  */
> +#define CSR_SPMPADDR18 0x9d2    /* TENTATIVELY use custom CSR address.  */
> +#define CSR_SPMPADDR19 0x9d3    /* TENTATIVELY use custom CSR address.  */
> +#define CSR_SPMPADDR20 0x9d4    /* TENTATIVELY use custom CSR address.  */
> +#define CSR_SPMPADDR21 0x9d5    /* TENTATIVELY use custom CSR address.  */
> +#define CSR_SPMPADDR22 0x9d6    /* TENTATIVELY use custom CSR address.  */
> +#define CSR_SPMPADDR23 0x9d7    /* TENTATIVELY use custom CSR address.  */
> +#define CSR_SPMPADDR24 0x9d8    /* TENTATIVELY use custom CSR address.  */
> +#define CSR_SPMPADDR25 0x9d9    /* TENTATIVELY use custom CSR address.  */
> +#define CSR_SPMPADDR26 0x9da    /* TENTATIVELY use custom CSR address.  */
> +#define CSR_SPMPADDR27 0x9db    /* TENTATIVELY use custom CSR address.  */
> +#define CSR_SPMPADDR28 0x9dc    /* TENTATIVELY use custom CSR address.  */
> +#define CSR_SPMPADDR29 0x9dd    /* TENTATIVELY use custom CSR address.  */
> +#define CSR_SPMPADDR30 0x9de    /* TENTATIVELY use custom CSR address.  */
> +#define CSR_SPMPADDR31 0x9df    /* TENTATIVELY use custom CSR address.  */
> +#define CSR_SPMPADDR32 0x9e0    /* TENTATIVELY use custom CSR address.  */
> +#define CSR_SPMPADDR33 0x9e1    /* TENTATIVELY use custom CSR address.  */
> +#define CSR_SPMPADDR34 0x9e2    /* TENTATIVELY use custom CSR address.  */
> +#define CSR_SPMPADDR35 0x9e3    /* TENTATIVELY use custom CSR address.  */
> +#define CSR_SPMPADDR36 0x9e4    /* TENTATIVELY use custom CSR address.  */
> +#define CSR_SPMPADDR37 0x9e5    /* TENTATIVELY use custom CSR address.  */
> +#define CSR_SPMPADDR38 0x9e6    /* TENTATIVELY use custom CSR address.  */
> +#define CSR_SPMPADDR39 0x9e7    /* TENTATIVELY use custom CSR address.  */
> +#define CSR_SPMPADDR40 0x9e8    /* TENTATIVELY use custom CSR address.  */
> +#define CSR_SPMPADDR41 0x9e9    /* TENTATIVELY use custom CSR address.  */
> +#define CSR_SPMPADDR42 0x9ea    /* TENTATIVELY use custom CSR address.  */
> +#define CSR_SPMPADDR43 0x9eb    /* TENTATIVELY use custom CSR address.  */
> +#define CSR_SPMPADDR44 0x9ec    /* TENTATIVELY use custom CSR address.  */
> +#define CSR_SPMPADDR45 0x9ed    /* TENTATIVELY use custom CSR address.  */
> +#define CSR_SPMPADDR46 0x9ee    /* TENTATIVELY use custom CSR address.  */
> +#define CSR_SPMPADDR47 0x9ef    /* TENTATIVELY use custom CSR address.  */
> +#define CSR_SPMPADDR48 0x9f0    /* TENTATIVELY use custom CSR address.  */
> +#define CSR_SPMPADDR49 0x9f1    /* TENTATIVELY use custom CSR address.  */
> +#define CSR_SPMPADDR50 0x9f2    /* TENTATIVELY use custom CSR address.  */
> +#define CSR_SPMPADDR51 0x9f3    /* TENTATIVELY use custom CSR address.  */
> +#define CSR_SPMPADDR52 0x9f4    /* TENTATIVELY use custom CSR address.  */
> +#define CSR_SPMPADDR53 0x9f5    /* TENTATIVELY use custom CSR address.  */
> +#define CSR_SPMPADDR54 0x9f6    /* TENTATIVELY use custom CSR address.  */
> +#define CSR_SPMPADDR55 0x9f7    /* TENTATIVELY use custom CSR address.  */
> +#define CSR_SPMPADDR56 0x9f8    /* TENTATIVELY use custom CSR address.  */
> +#define CSR_SPMPADDR57 0x9f9    /* TENTATIVELY use custom CSR address.  */
> +#define CSR_SPMPADDR58 0x9fa    /* TENTATIVELY use custom CSR address.  */
> +#define CSR_SPMPADDR59 0x9fb    /* TENTATIVELY use custom CSR address.  */
> +#define CSR_SPMPADDR60 0x9fc    /* TENTATIVELY use custom CSR address.  */
> +#define CSR_SPMPADDR61 0x9fd    /* TENTATIVELY use custom CSR address.  */
> +#define CSR_SPMPADDR62 0x9fe    /* TENTATIVELY use custom CSR address.  */
> +#define CSR_SPMPADDR63 0x9ff    /* TENTATIVELY use custom CSR address.  */
>  /* Sstc extension */
>  #define CSR_STIMECMP 0x14d
>  #define CSR_STIMECMPH 0x15d
> @@ -3624,6 +3707,89 @@ DECLARE_CSR(mhpmevent28h, CSR_MHPMEVENT28H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLA
>  DECLARE_CSR(mhpmevent29h, CSR_MHPMEVENT29H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>  DECLARE_CSR(mhpmevent30h, CSR_MHPMEVENT30H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>  DECLARE_CSR(mhpmevent31h, CSR_MHPMEVENT31H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +/* Sspmp extension CSRs.  */
> +DECLARE_CSR(spmpcfg0, CSR_SPMPCFG0, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(spmpcfg1, CSR_SPMPCFG1, CSR_CLASS_SSPMP_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(spmpcfg2, CSR_SPMPCFG2, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(spmpcfg3, CSR_SPMPCFG3, CSR_CLASS_SSPMP_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(spmpcfg4, CSR_SPMPCFG4, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(spmpcfg5, CSR_SPMPCFG5, CSR_CLASS_SSPMP_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(spmpcfg6, CSR_SPMPCFG6, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(spmpcfg7, CSR_SPMPCFG7, CSR_CLASS_SSPMP_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(spmpcfg8, CSR_SPMPCFG8, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(spmpcfg9, CSR_SPMPCFG9, CSR_CLASS_SSPMP_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(spmpcfg10, CSR_SPMPCFG10, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(spmpcfg11, CSR_SPMPCFG11, CSR_CLASS_SSPMP_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(spmpcfg12, CSR_SPMPCFG12, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(spmpcfg13, CSR_SPMPCFG13, CSR_CLASS_SSPMP_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(spmpcfg14, CSR_SPMPCFG14, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(spmpcfg15, CSR_SPMPCFG15, CSR_CLASS_SSPMP_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(spmpswitch0, CSR_SPMPSWITCH0, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(spmpswitch1, CSR_SPMPSWITCH1, CSR_CLASS_SSPMP_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(spmpaddr0, CSR_SPMPADDR0, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(spmpaddr1, CSR_SPMPADDR1, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(spmpaddr2, CSR_SPMPADDR2, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(spmpaddr3, CSR_SPMPADDR3, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(spmpaddr4, CSR_SPMPADDR4, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(spmpaddr5, CSR_SPMPADDR5, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(spmpaddr6, CSR_SPMPADDR6, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(spmpaddr7, CSR_SPMPADDR7, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(spmpaddr8, CSR_SPMPADDR8, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(spmpaddr9, CSR_SPMPADDR9, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(spmpaddr10, CSR_SPMPADDR10, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(spmpaddr11, CSR_SPMPADDR11, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(spmpaddr12, CSR_SPMPADDR12, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(spmpaddr13, CSR_SPMPADDR13, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(spmpaddr14, CSR_SPMPADDR14, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(spmpaddr15, CSR_SPMPADDR15, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(spmpaddr16, CSR_SPMPADDR16, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(spmpaddr17, CSR_SPMPADDR17, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(spmpaddr18, CSR_SPMPADDR18, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(spmpaddr19, CSR_SPMPADDR19, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(spmpaddr20, CSR_SPMPADDR20, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(spmpaddr21, CSR_SPMPADDR21, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(spmpaddr22, CSR_SPMPADDR22, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(spmpaddr23, CSR_SPMPADDR23, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(spmpaddr24, CSR_SPMPADDR24, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(spmpaddr25, CSR_SPMPADDR25, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(spmpaddr26, CSR_SPMPADDR26, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(spmpaddr27, CSR_SPMPADDR27, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(spmpaddr28, CSR_SPMPADDR28, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(spmpaddr29, CSR_SPMPADDR29, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(spmpaddr30, CSR_SPMPADDR30, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(spmpaddr31, CSR_SPMPADDR31, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(spmpaddr32, CSR_SPMPADDR32, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(spmpaddr33, CSR_SPMPADDR33, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(spmpaddr34, CSR_SPMPADDR34, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(spmpaddr35, CSR_SPMPADDR35, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(spmpaddr36, CSR_SPMPADDR36, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(spmpaddr37, CSR_SPMPADDR37, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(spmpaddr38, CSR_SPMPADDR38, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(spmpaddr39, CSR_SPMPADDR39, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(spmpaddr40, CSR_SPMPADDR40, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(spmpaddr41, CSR_SPMPADDR41, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(spmpaddr42, CSR_SPMPADDR42, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(spmpaddr43, CSR_SPMPADDR43, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(spmpaddr44, CSR_SPMPADDR44, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(spmpaddr45, CSR_SPMPADDR45, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(spmpaddr46, CSR_SPMPADDR46, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(spmpaddr47, CSR_SPMPADDR47, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(spmpaddr48, CSR_SPMPADDR48, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(spmpaddr49, CSR_SPMPADDR49, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(spmpaddr50, CSR_SPMPADDR50, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(spmpaddr51, CSR_SPMPADDR51, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(spmpaddr52, CSR_SPMPADDR52, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(spmpaddr53, CSR_SPMPADDR53, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(spmpaddr54, CSR_SPMPADDR54, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(spmpaddr55, CSR_SPMPADDR55, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(spmpaddr56, CSR_SPMPADDR56, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(spmpaddr57, CSR_SPMPADDR57, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(spmpaddr58, CSR_SPMPADDR58, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(spmpaddr59, CSR_SPMPADDR59, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(spmpaddr60, CSR_SPMPADDR60, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(spmpaddr61, CSR_SPMPADDR61, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(spmpaddr62, CSR_SPMPADDR62, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(spmpaddr63, CSR_SPMPADDR63, CSR_CLASS_SSPMP, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>  /* Sstc extension */
>  DECLARE_CSR(stimecmp, CSR_STIMECMP, CSR_CLASS_SSTC, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>  DECLARE_CSR(stimecmph, CSR_STIMECMPH, CSR_CLASS_SSTC_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [REVIEW ONLY 2/2] TEST: Add instantiation script on CSR allocation
  2022-11-29  1:20 ` [REVIEW ONLY 2/2] TEST: Add instantiation script on CSR allocation Tsukasa OI
@ 2022-11-29  2:22   ` Palmer Dabbelt
  2022-11-29  2:32     ` Tsukasa OI
  0 siblings, 1 reply; 7+ messages in thread
From: Palmer Dabbelt @ 2022-11-29  2:22 UTC (permalink / raw)
  To: binutils; +Cc: research_trasio, binutils

On Mon, 28 Nov 2022 17:20:58 PST (-0800), binutils@sourceware.org wrote:
> From: Tsukasa OI <research_trasio@irq.a4lg.com>
>
> ---
>  instantiate-sspmp.sh | 130 +++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 130 insertions(+)
>  create mode 100755 instantiate-sspmp.sh

It's not clear to me what you're trying to do here.

>
> diff --git a/instantiate-sspmp.sh b/instantiate-sspmp.sh
> new file mode 100755
> index 000000000000..23b6a2f554e6
> --- /dev/null
> +++ b/instantiate-sspmp.sh
> @@ -0,0 +1,130 @@
> +#! /bin/bash
> +# SPDX-License-Identifier: CC0-1.0
> +# Author: Tsukasa OI <research_trasio@irq.a4lg.com>
> +# Year: 2022
> +
> +check_csr_addr ()
> +{
> +	ADDR="$1"
> +	case "$ADDR" in
> +	0x* | 0X*)
> +		ADDR="${ADDR#??}"
> +		;;
> +	esac
> +	case "$ADDR" in
> +	[0-9a-fA-F])
> +		ADDR=00$ADDR
> +		;;
> +	[0-9a-fA-F][0-9a-fA-F])
> +		ADDR=0$ADDR
> +		;;
> +	[0-9a-fA-F][0-9a-fA-F][0-9a-fA-F])
> +		;;
> +	*)
> +		echo "ERROR: \`$1' is not a valid CSR address for \`$2'." 1>&2
> +		exit 1
> +		;;
> +	esac
> +	ADDR=$(echo $ADDR | tr A-F a-f)
> +	printf %s $ADDR
> +	return 0
> +}
> +
> +canonicalize_hex ()
> +{
> +	ADDR=$1
> +	while :
> +	do
> +		case $ADDR in
> +		0)
> +			break
> +			;;
> +		0?*)
> +			ADDR=${ADDR#0}
> +			;;
> +		*)
> +			break
> +			;;
> +		esac
> +	done
> +	printf 0x%s $ADDR
> +}
> +
> +dwarf_regnum ()
> +{
> +	echo -n $(($1 + 4096))
> +}
> +
> +dwarf_offset ()
> +{
> +	echo -n $(($1 * 4))
> +}
> +
> +test_path ()
> +{
> +	if test '!' -f "$1"
> +	then
> +		echo "ERROR: file \`$1' is not found." 1>&2
> +		exit 1
> +	fi
> +}
> +
> +if test $# -ne 4
> +then
> +	ERRMSG="usage: $0 ADDR_SPMPCFG0 ADDR_SPMPADDR0 ADDR_SPMPSWITCH0 ADDR_SPMPSWITCH1"
> +	echo "$ERRMSG" 1>&2
> +	exit 1
> +fi
> +
> +PRIV_VERSIONS="1p9p1 1p10 1p11 1p12"
> +
> +test_path include/opcode/riscv-opc.h
> +for V in $PRIV_VERSIONS
> +do
> +	test_path gas/testsuite/gas/riscv/csr-version-$V.d
> +done
> +test_path gas/testsuite/gas/riscv/csr-dw-regnums.s
> +test_path gas/testsuite/gas/riscv/csr-dw-regnums.d
> +
> +do_csr_instantiation ()
> +{
> +	CSR="$1"
> +	CSR_UPPER=$(echo $CSR | tr a-z A-Z)
> +	ADDR=$(check_csr_addr "$2" $CSR)
> +	HEXC=$(canonicalize_hex $ADDR)
> +	DWREG=$(dwarf_regnum $HEXC)
> +	DWOFF=$(dwarf_offset $HEXC)
> +	ORIG_ADDR=$(grep "a0,${CSR}\$" gas/testsuite/gas/riscv/csr-version-1p12.d | head -n 1 | sed 's/.*+\([0-9a-f]\{3\}\)02573.*/\1/')
> +	sed -i "s/^#define CSR_${CSR_UPPER} .*/#define CSR_${CSR_UPPER} $HEXC/" include/opcode/riscv-opc.h
> +	for V in $PRIV_VERSIONS
> +	do
> +		sed -i "s/+${ORIG_ADDR}\\(02573\\|59073\\)/+${ADDR}\\1/" gas/testsuite/gas/riscv/csr-version-$V.d
> +	done
> +	sed -i "s/\\.cfi_offset ${CSR}, .*/.cfi_offset ${CSR}, ${DWOFF}/" gas/testsuite/gas/riscv/csr-dw-regnums.s
> +	sed -i "s/DW_CFA_offset_extended_sf: r[0-9]\\+ \\\\(${CSR}\\\\) at cfa\\\\+[0-9]\\+/DW_CFA_offset_extended_sf: r${DWREG} \\\\(${CSR}\\\\) at cfa\\\\+${DWOFF}/" gas/testsuite/gas/riscv/csr-dw-regnums.d
> +}
> +
> +ADDR=$(check_csr_addr "$1" spmpcfg0)
> +NADDR=$((0x$ADDR))
> +for N in $(seq 0 15)
> +do
> +	ADDR_N=$(printf %03x $(($NADDR + $N)))
> +	do_csr_instantiation spmpcfg$N $ADDR_N
> +done
> +
> +ADDR=$(check_csr_addr "$2" spmpaddr0)
> +NADDR=$((0x$ADDR))
> +for N in $(seq 0 63)
> +do
> +	ADDR_N=$(printf %03x $(($NADDR + $N)))
> +	do_csr_instantiation spmpaddr$N $ADDR_N
> +done
> +
> +do_csr_instantiation spmpswitch0 "$3"
> +do_csr_instantiation spmpswitch1 "$4"
> +
> +if test -f "$0"
> +then
> +	rm -f "$0"
> +fi
> +exit 0

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [REVIEW ONLY 2/2] TEST: Add instantiation script on CSR allocation
  2022-11-29  2:22   ` Palmer Dabbelt
@ 2022-11-29  2:32     ` Tsukasa OI
  2022-11-29  2:39       ` Palmer Dabbelt
  0 siblings, 1 reply; 7+ messages in thread
From: Tsukasa OI @ 2022-11-29  2:32 UTC (permalink / raw)
  To: Palmer Dabbelt, binutils

On 2022/11/29 11:22, Palmer Dabbelt wrote:
> On Mon, 28 Nov 2022 17:20:58 PST (-0800), binutils@sourceware.org wrote:
>> From: Tsukasa OI <research_trasio@irq.a4lg.com>
>>
>> ---
>>  instantiate-sspmp.sh | 130 +++++++++++++++++++++++++++++++++++++++++++
>>  1 file changed, 130 insertions(+)
>>  create mode 100755 instantiate-sspmp.sh
> 
> It's not clear to me what you're trying to do here.

It will not be a part of GNU Binutils.

Because 'Sspmp' CSRs don't have CSR numbers assigned, I assigned numbers
in the "custom" CSR range.  Once we determined the real number, we can
replace all related files in GNU Binutils just by running this script.

e.g.
./instantiate-sspmp.sh 0x1a0 0x1b0 0x1f0 0x1f1
if real CSR numbers are assigned as follows:
-   (hypothetical) spmpcfg0    == 0x1a0
-   (hypothetical) spmpaddr0   == 0x1b0
-   (hypothetical) spmpswitch0 == 0x1f0
-   (hypothetical) spmpswitch1 == 0x1f1

If someone tests this extension, it's possible that they assign their
CSR numbers.  I attached this script for this reason.  It also applies
to 'Zisslpcfi' and (not yet submitted) 'Zjpm' extension proposals.

Thanks,
Tsukasa

> 
>>
>> diff --git a/instantiate-sspmp.sh b/instantiate-sspmp.sh
>> new file mode 100755
>> index 000000000000..23b6a2f554e6
>> --- /dev/null
>> +++ b/instantiate-sspmp.sh
>> @@ -0,0 +1,130 @@
>> +#! /bin/bash
>> +# SPDX-License-Identifier: CC0-1.0
>> +# Author: Tsukasa OI <research_trasio@irq.a4lg.com>
>> +# Year: 2022
>> +
>> +check_csr_addr ()
>> +{
>> +    ADDR="$1"
>> +    case "$ADDR" in
>> +    0x* | 0X*)
>> +        ADDR="${ADDR#??}"
>> +        ;;
>> +    esac
>> +    case "$ADDR" in
>> +    [0-9a-fA-F])
>> +        ADDR=00$ADDR
>> +        ;;
>> +    [0-9a-fA-F][0-9a-fA-F])
>> +        ADDR=0$ADDR
>> +        ;;
>> +    [0-9a-fA-F][0-9a-fA-F][0-9a-fA-F])
>> +        ;;
>> +    *)
>> +        echo "ERROR: \`$1' is not a valid CSR address for \`$2'." 1>&2
>> +        exit 1
>> +        ;;
>> +    esac
>> +    ADDR=$(echo $ADDR | tr A-F a-f)
>> +    printf %s $ADDR
>> +    return 0
>> +}
>> +
>> +canonicalize_hex ()
>> +{
>> +    ADDR=$1
>> +    while :
>> +    do
>> +        case $ADDR in
>> +        0)
>> +            break
>> +            ;;
>> +        0?*)
>> +            ADDR=${ADDR#0}
>> +            ;;
>> +        *)
>> +            break
>> +            ;;
>> +        esac
>> +    done
>> +    printf 0x%s $ADDR
>> +}
>> +
>> +dwarf_regnum ()
>> +{
>> +    echo -n $(($1 + 4096))
>> +}
>> +
>> +dwarf_offset ()
>> +{
>> +    echo -n $(($1 * 4))
>> +}
>> +
>> +test_path ()
>> +{
>> +    if test '!' -f "$1"
>> +    then
>> +        echo "ERROR: file \`$1' is not found." 1>&2
>> +        exit 1
>> +    fi
>> +}
>> +
>> +if test $# -ne 4
>> +then
>> +    ERRMSG="usage: $0 ADDR_SPMPCFG0 ADDR_SPMPADDR0 ADDR_SPMPSWITCH0
>> ADDR_SPMPSWITCH1"
>> +    echo "$ERRMSG" 1>&2
>> +    exit 1
>> +fi
>> +
>> +PRIV_VERSIONS="1p9p1 1p10 1p11 1p12"
>> +
>> +test_path include/opcode/riscv-opc.h
>> +for V in $PRIV_VERSIONS
>> +do
>> +    test_path gas/testsuite/gas/riscv/csr-version-$V.d
>> +done
>> +test_path gas/testsuite/gas/riscv/csr-dw-regnums.s
>> +test_path gas/testsuite/gas/riscv/csr-dw-regnums.d
>> +
>> +do_csr_instantiation ()
>> +{
>> +    CSR="$1"
>> +    CSR_UPPER=$(echo $CSR | tr a-z A-Z)
>> +    ADDR=$(check_csr_addr "$2" $CSR)
>> +    HEXC=$(canonicalize_hex $ADDR)
>> +    DWREG=$(dwarf_regnum $HEXC)
>> +    DWOFF=$(dwarf_offset $HEXC)
>> +    ORIG_ADDR=$(grep "a0,${CSR}\$"
>> gas/testsuite/gas/riscv/csr-version-1p12.d | head -n 1 | sed
>> 's/.*+\([0-9a-f]\{3\}\)02573.*/\1/')
>> +    sed -i "s/^#define CSR_${CSR_UPPER} .*/#define CSR_${CSR_UPPER}
>> $HEXC/" include/opcode/riscv-opc.h
>> +    for V in $PRIV_VERSIONS
>> +    do
>> +        sed -i "s/+${ORIG_ADDR}\\(02573\\|59073\\)/+${ADDR}\\1/"
>> gas/testsuite/gas/riscv/csr-version-$V.d
>> +    done
>> +    sed -i "s/\\.cfi_offset ${CSR}, .*/.cfi_offset ${CSR}, ${DWOFF}/"
>> gas/testsuite/gas/riscv/csr-dw-regnums.s
>> +    sed -i "s/DW_CFA_offset_extended_sf: r[0-9]\\+ \\\\(${CSR}\\\\)
>> at cfa\\\\+[0-9]\\+/DW_CFA_offset_extended_sf: r${DWREG}
>> \\\\(${CSR}\\\\) at cfa\\\\+${DWOFF}/"
>> gas/testsuite/gas/riscv/csr-dw-regnums.d
>> +}
>> +
>> +ADDR=$(check_csr_addr "$1" spmpcfg0)
>> +NADDR=$((0x$ADDR))
>> +for N in $(seq 0 15)
>> +do
>> +    ADDR_N=$(printf %03x $(($NADDR + $N)))
>> +    do_csr_instantiation spmpcfg$N $ADDR_N
>> +done
>> +
>> +ADDR=$(check_csr_addr "$2" spmpaddr0)
>> +NADDR=$((0x$ADDR))
>> +for N in $(seq 0 63)
>> +do
>> +    ADDR_N=$(printf %03x $(($NADDR + $N)))
>> +    do_csr_instantiation spmpaddr$N $ADDR_N
>> +done
>> +
>> +do_csr_instantiation spmpswitch0 "$3"
>> +do_csr_instantiation spmpswitch1 "$4"
>> +
>> +if test -f "$0"
>> +then
>> +    rm -f "$0"
>> +fi
>> +exit 0
> 

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [REVIEW ONLY 2/2] TEST: Add instantiation script on CSR allocation
  2022-11-29  2:32     ` Tsukasa OI
@ 2022-11-29  2:39       ` Palmer Dabbelt
  0 siblings, 0 replies; 7+ messages in thread
From: Palmer Dabbelt @ 2022-11-29  2:39 UTC (permalink / raw)
  To: research_trasio; +Cc: binutils

On Mon, 28 Nov 2022 18:32:05 PST (-0800), research_trasio@irq.a4lg.com wrote:
> On 2022/11/29 11:22, Palmer Dabbelt wrote:
>> On Mon, 28 Nov 2022 17:20:58 PST (-0800), binutils@sourceware.org wrote:
>>> From: Tsukasa OI <research_trasio@irq.a4lg.com>
>>>
>>> ---
>>>  instantiate-sspmp.sh | 130 +++++++++++++++++++++++++++++++++++++++++++
>>>  1 file changed, 130 insertions(+)
>>>  create mode 100755 instantiate-sspmp.sh
>>
>> It's not clear to me what you're trying to do here.
>
> It will not be a part of GNU Binutils.
>
> Because 'Sspmp' CSRs don't have CSR numbers assigned, I assigned numbers
> in the "custom" CSR range.  Once we determined the real number, we can
> replace all related files in GNU Binutils just by running this script.
>
> e.g.
> ./instantiate-sspmp.sh 0x1a0 0x1b0 0x1f0 0x1f1
> if real CSR numbers are assigned as follows:
> -   (hypothetical) spmpcfg0    == 0x1a0
> -   (hypothetical) spmpaddr0   == 0x1b0
> -   (hypothetical) spmpswitch0 == 0x1f0
> -   (hypothetical) spmpswitch1 == 0x1f1
>
> If someone tests this extension, it's possible that they assign their
> CSR numbers.  I attached this script for this reason.  It also applies
> to 'Zisslpcfi' and (not yet submitted) 'Zjpm' extension proposals.

OK, that makes sense.  Maybe just include in the commit message that 
it's for example only?

>
> Thanks,
> Tsukasa
>
>>
>>>
>>> diff --git a/instantiate-sspmp.sh b/instantiate-sspmp.sh
>>> new file mode 100755
>>> index 000000000000..23b6a2f554e6
>>> --- /dev/null
>>> +++ b/instantiate-sspmp.sh
>>> @@ -0,0 +1,130 @@
>>> +#! /bin/bash
>>> +# SPDX-License-Identifier: CC0-1.0
>>> +# Author: Tsukasa OI <research_trasio@irq.a4lg.com>
>>> +# Year: 2022
>>> +
>>> +check_csr_addr ()
>>> +{
>>> +    ADDR="$1"
>>> +    case "$ADDR" in
>>> +    0x* | 0X*)
>>> +        ADDR="${ADDR#??}"
>>> +        ;;
>>> +    esac
>>> +    case "$ADDR" in
>>> +    [0-9a-fA-F])
>>> +        ADDR=00$ADDR
>>> +        ;;
>>> +    [0-9a-fA-F][0-9a-fA-F])
>>> +        ADDR=0$ADDR
>>> +        ;;
>>> +    [0-9a-fA-F][0-9a-fA-F][0-9a-fA-F])
>>> +        ;;
>>> +    *)
>>> +        echo "ERROR: \`$1' is not a valid CSR address for \`$2'." 1>&2
>>> +        exit 1
>>> +        ;;
>>> +    esac
>>> +    ADDR=$(echo $ADDR | tr A-F a-f)
>>> +    printf %s $ADDR
>>> +    return 0
>>> +}
>>> +
>>> +canonicalize_hex ()
>>> +{
>>> +    ADDR=$1
>>> +    while :
>>> +    do
>>> +        case $ADDR in
>>> +        0)
>>> +            break
>>> +            ;;
>>> +        0?*)
>>> +            ADDR=${ADDR#0}
>>> +            ;;
>>> +        *)
>>> +            break
>>> +            ;;
>>> +        esac
>>> +    done
>>> +    printf 0x%s $ADDR
>>> +}
>>> +
>>> +dwarf_regnum ()
>>> +{
>>> +    echo -n $(($1 + 4096))
>>> +}
>>> +
>>> +dwarf_offset ()
>>> +{
>>> +    echo -n $(($1 * 4))
>>> +}
>>> +
>>> +test_path ()
>>> +{
>>> +    if test '!' -f "$1"
>>> +    then
>>> +        echo "ERROR: file \`$1' is not found." 1>&2
>>> +        exit 1
>>> +    fi
>>> +}
>>> +
>>> +if test $# -ne 4
>>> +then
>>> +    ERRMSG="usage: $0 ADDR_SPMPCFG0 ADDR_SPMPADDR0 ADDR_SPMPSWITCH0
>>> ADDR_SPMPSWITCH1"
>>> +    echo "$ERRMSG" 1>&2
>>> +    exit 1
>>> +fi
>>> +
>>> +PRIV_VERSIONS="1p9p1 1p10 1p11 1p12"
>>> +
>>> +test_path include/opcode/riscv-opc.h
>>> +for V in $PRIV_VERSIONS
>>> +do
>>> +    test_path gas/testsuite/gas/riscv/csr-version-$V.d
>>> +done
>>> +test_path gas/testsuite/gas/riscv/csr-dw-regnums.s
>>> +test_path gas/testsuite/gas/riscv/csr-dw-regnums.d
>>> +
>>> +do_csr_instantiation ()
>>> +{
>>> +    CSR="$1"
>>> +    CSR_UPPER=$(echo $CSR | tr a-z A-Z)
>>> +    ADDR=$(check_csr_addr "$2" $CSR)
>>> +    HEXC=$(canonicalize_hex $ADDR)
>>> +    DWREG=$(dwarf_regnum $HEXC)
>>> +    DWOFF=$(dwarf_offset $HEXC)
>>> +    ORIG_ADDR=$(grep "a0,${CSR}\$"
>>> gas/testsuite/gas/riscv/csr-version-1p12.d | head -n 1 | sed
>>> 's/.*+\([0-9a-f]\{3\}\)02573.*/\1/')
>>> +    sed -i "s/^#define CSR_${CSR_UPPER} .*/#define CSR_${CSR_UPPER}
>>> $HEXC/" include/opcode/riscv-opc.h
>>> +    for V in $PRIV_VERSIONS
>>> +    do
>>> +        sed -i "s/+${ORIG_ADDR}\\(02573\\|59073\\)/+${ADDR}\\1/"
>>> gas/testsuite/gas/riscv/csr-version-$V.d
>>> +    done
>>> +    sed -i "s/\\.cfi_offset ${CSR}, .*/.cfi_offset ${CSR}, ${DWOFF}/"
>>> gas/testsuite/gas/riscv/csr-dw-regnums.s
>>> +    sed -i "s/DW_CFA_offset_extended_sf: r[0-9]\\+ \\\\(${CSR}\\\\)
>>> at cfa\\\\+[0-9]\\+/DW_CFA_offset_extended_sf: r${DWREG}
>>> \\\\(${CSR}\\\\) at cfa\\\\+${DWOFF}/"
>>> gas/testsuite/gas/riscv/csr-dw-regnums.d
>>> +}
>>> +
>>> +ADDR=$(check_csr_addr "$1" spmpcfg0)
>>> +NADDR=$((0x$ADDR))
>>> +for N in $(seq 0 15)
>>> +do
>>> +    ADDR_N=$(printf %03x $(($NADDR + $N)))
>>> +    do_csr_instantiation spmpcfg$N $ADDR_N
>>> +done
>>> +
>>> +ADDR=$(check_csr_addr "$2" spmpaddr0)
>>> +NADDR=$((0x$ADDR))
>>> +for N in $(seq 0 63)
>>> +do
>>> +    ADDR_N=$(printf %03x $(($NADDR + $N)))
>>> +    do_csr_instantiation spmpaddr$N $ADDR_N
>>> +done
>>> +
>>> +do_csr_instantiation spmpswitch0 "$3"
>>> +do_csr_instantiation spmpswitch1 "$4"
>>> +
>>> +if test -f "$0"
>>> +then
>>> +    rm -f "$0"
>>> +fi
>>> +exit 0
>>

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2022-11-29  2:39 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-11-29  1:20 [REVIEW ONLY 0/2] UNRATIFIED RISC-V: Add 'Sspmp' extension and its TENTATIVE CSRs Tsukasa OI
2022-11-29  1:20 ` [REVIEW ONLY 1/2] " Tsukasa OI
2022-11-29  2:22   ` Palmer Dabbelt
2022-11-29  1:20 ` [REVIEW ONLY 2/2] TEST: Add instantiation script on CSR allocation Tsukasa OI
2022-11-29  2:22   ` Palmer Dabbelt
2022-11-29  2:32     ` Tsukasa OI
2022-11-29  2:39       ` Palmer Dabbelt

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).