public inbox for binutils@sourceware.org
 help / color / mirror / Atom feed
* [PATCH 0/6] RISC-V: Add Privileged Arch 1.12 and More CSRs
@ 2022-01-11 10:59 Tsukasa OI
  2022-01-11 10:59 ` [PATCH 1/6] RISC-V: Reorganize testcases for CFI directives Tsukasa OI
                   ` (6 more replies)
  0 siblings, 7 replies; 32+ messages in thread
From: Tsukasa OI @ 2022-01-11 10:59 UTC (permalink / raw)
  To: Tsukasa OI; +Cc: binutils

This patchset adds new CSRs with corresponding extensions:

-   Privileged Architecture, version 1.12
-   Smstateen (State Enable Extension)
-   Sscofpmf (Count Overflow and Mode-Based Filtering Extension)
-   Sstc ("stimecmp / vstimecmp" Extension)

It excludes new "mscontext" and moved "scontext" registers because it's
a part of unratified Debug Specification, version 1.0.

This patchset also reorganizes csr-dw-regnums.[sd] to test all CSRs as
tested on csr.s with the same order.


[Privileged Architecture versions on CSRs]

-   Privileged Architecture, version 1.12
    1.12
-   Smstateen
    1.12 (hypervisor), 1.9.1 (others)
    It seems base portions of Smstateen extension is independent from
    privileged architecture and set to oldest supported version
    (except hypervisor-related CSRs that require version 1.12).
-   Sscofpmf / Sstc
    1.12 (hypervisor), 1.11 (others)
    Because those specifications are written as deltas from the Privileged
    Architecture, version 1.11 and 1.12, base version is set to 1.11
    (tentatively). It could be a bit older than that but can be discussed.




Tsukasa OI (6):
  RISC-V: Reorganize testcases for CFI directives
  RISC-V: Add Privileged Architecture 1.12 CSRs
  RISC-V: Add Privileged Arch 1.12 CSR testcases
  RISC-V: Add 'Smstateen' extension and its CSRs
  RISC-V: Add 'Sscofpmf' extension with its CSRs
  RISC-V: Add 'Sstc' extension and its CSRs

 bfd/elfxx-riscv.c                           |   3 +
 gas/config/tc-riscv.c                       |  24 ++
 gas/testsuite/gas/riscv/csr-dw-regnums.d    | 171 +++++++++-
 gas/testsuite/gas/riscv/csr-dw-regnums.s    | 177 +++++++++-
 gas/testsuite/gas/riscv/csr-version-1p10.d  | 246 ++++++++++++++
 gas/testsuite/gas/riscv/csr-version-1p10.l  | 350 ++++++++++++++++++++
 gas/testsuite/gas/riscv/csr-version-1p11.d  | 246 ++++++++++++++
 gas/testsuite/gas/riscv/csr-version-1p11.l  | 286 ++++++++++++++++
 gas/testsuite/gas/riscv/csr-version-1p12.d  | 246 ++++++++++++++
 gas/testsuite/gas/riscv/csr-version-1p12.l  | 128 +++++++
 gas/testsuite/gas/riscv/csr-version-1p9p1.d | 246 ++++++++++++++
 gas/testsuite/gas/riscv/csr-version-1p9p1.l | 350 ++++++++++++++++++++
 gas/testsuite/gas/riscv/csr.s               | 129 ++++++++
 include/opcode/riscv-opc.h                  | 252 ++++++++++++++
 14 files changed, 2841 insertions(+), 13 deletions(-)


base-commit: 9ed5be5650ba7c315cd7cfacccc9208de2f555df
-- 
2.32.0


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

* [PATCH 1/6] RISC-V: Reorganize testcases for CFI directives
  2022-01-11 10:59 [PATCH 0/6] RISC-V: Add Privileged Arch 1.12 and More CSRs Tsukasa OI
@ 2022-01-11 10:59 ` Tsukasa OI
  2022-02-23  6:58   ` Nelson Chu
  2022-01-11 10:59 ` [PATCH 2/6] RISC-V: Add Privileged Architecture 1.12 CSRs Tsukasa OI
                   ` (5 subsequent siblings)
  6 siblings, 1 reply; 32+ messages in thread
From: Tsukasa OI @ 2022-01-11 10:59 UTC (permalink / raw)
  To: Tsukasa OI; +Cc: binutils

This commit reorganizes and adds some CSRs to csr-dw-regnums.[sd] to
make it test the same CSRs as csr.s.

gas/ChangeLog:

	* testsuite/gas/riscv/csr-dw-regnums.s: Reorganize and add
	defined CSRs tested in csr.s.
	* testsuite/gas/riscv/csr-dw-regnums.d: Likewise.
---
 gas/testsuite/gas/riscv/csr-dw-regnums.d | 48 ++++++++++++++++++----
 gas/testsuite/gas/riscv/csr-dw-regnums.s | 51 +++++++++++++++++++++---
 2 files changed, 86 insertions(+), 13 deletions(-)

diff --git a/gas/testsuite/gas/riscv/csr-dw-regnums.d b/gas/testsuite/gas/riscv/csr-dw-regnums.d
index ea0a445c39c..2aa5ff4bcee 100644
--- a/gas/testsuite/gas/riscv/csr-dw-regnums.d
+++ b/gas/testsuite/gas/riscv/csr-dw-regnums.d
@@ -1,4 +1,4 @@
-#as: -march=rv32if -mpriv-spec=1.11
+#as: -march=rv32if -mpriv-spec=1.12
 #objdump: --dwarf=frames
 
 
@@ -229,6 +229,37 @@ Contents of the .* section:
   DW_CFA_offset_extended_sf: r4925 \(mhpmevent29\) at cfa\+3316
   DW_CFA_offset_extended_sf: r4926 \(mhpmevent30\) at cfa\+3320
   DW_CFA_offset_extended_sf: r4927 \(mhpmevent31\) at cfa\+3324
+  DW_CFA_offset_extended_sf: r5632 \(hstatus\) at cfa\+6144
+  DW_CFA_offset_extended_sf: r5634 \(hedeleg\) at cfa\+6152
+  DW_CFA_offset_extended_sf: r5635 \(hideleg\) at cfa\+6156
+  DW_CFA_offset_extended_sf: r5636 \(hie\) at cfa\+6160
+  DW_CFA_offset_extended_sf: r5638 \(hcounteren\) at cfa\+6168
+  DW_CFA_offset_extended_sf: r5639 \(hgeie\) at cfa\+6172
+  DW_CFA_offset_extended_sf: r5699 \(htval\) at cfa\+6412
+  DW_CFA_offset_extended_sf: r5700 \(hip\) at cfa\+6416
+  DW_CFA_offset_extended_sf: r5701 \(hvip\) at cfa\+6420
+  DW_CFA_offset_extended_sf: r5706 \(htinst\) at cfa\+6440
+  DW_CFA_offset_extended_sf: r7698 \(hgeip\) at cfa\+14408
+  DW_CFA_offset_extended_sf: r5642 \(henvcfg\) at cfa\+6184
+  DW_CFA_offset_extended_sf: r5658 \(henvcfgh\) at cfa\+6248
+  DW_CFA_offset_extended_sf: r5760 \(hgatp\) at cfa\+6656
+  DW_CFA_offset_extended_sf: r5800 \(hcontext\) at cfa\+6816
+  DW_CFA_offset_extended_sf: r5637 \(htimedelta\) at cfa\+6164
+  DW_CFA_offset_extended_sf: r5653 \(htimedeltah\) at cfa\+6228
+  DW_CFA_offset_extended_sf: r4608 \(vsstatus\) at cfa\+2048
+  DW_CFA_offset_extended_sf: r4612 \(vsie\) at cfa\+2064
+  DW_CFA_offset_extended_sf: r4613 \(vstvec\) at cfa\+2068
+  DW_CFA_offset_extended_sf: r4672 \(vsscratch\) at cfa\+2304
+  DW_CFA_offset_extended_sf: r4673 \(vsepc\) at cfa\+2308
+  DW_CFA_offset_extended_sf: r4674 \(vscause\) at cfa\+2312
+  DW_CFA_offset_extended_sf: r4675 \(vstval\) at cfa\+2316
+  DW_CFA_offset_extended_sf: r4676 \(vsip\) at cfa\+2320
+  DW_CFA_offset_extended_sf: r4736 \(vsatp\) at cfa\+2560
+  DW_CFA_offset_extended_sf: r4163 \(utval\) at cfa\+268
+  DW_CFA_offset_extended_sf: r4419 \(stval\) at cfa\+1292
+  DW_CFA_offset_extended_sf: r4480 \(satp\) at cfa\+1536
+  DW_CFA_offset_extended_sf: r4931 \(mtval\) at cfa\+3340
+  DW_CFA_offset_extended_sf: r4896 \(mcountinhibit\) at cfa\+3200
   DW_CFA_offset_extended_sf: r4992 \(mbase\) at cfa\+3584
   DW_CFA_offset_extended_sf: r4993 \(mbound\) at cfa\+3588
   DW_CFA_offset_extended_sf: r4994 \(mibase\) at cfa\+3592
@@ -244,6 +275,7 @@ Contents of the .* section:
   DW_CFA_offset_extended_sf: r6065 \(dpc\) at cfa\+7876
   DW_CFA_offset_extended_sf: r6066 \(dscratch0\) at cfa\+7880
   DW_CFA_offset_extended_sf: r6067 \(dscratch1\) at cfa\+7884
+  DW_CFA_offset_extended_sf: r6066 \(dscratch0\) at cfa\+7880
   DW_CFA_offset_extended_sf: r6048 \(tselect\) at cfa\+7808
   DW_CFA_offset_extended_sf: r6049 \(tdata1\) at cfa\+7812
   DW_CFA_offset_extended_sf: r6050 \(tdata2\) at cfa\+7816
@@ -252,16 +284,18 @@ Contents of the .* section:
   DW_CFA_offset_extended_sf: r6053 \(tcontrol\) at cfa\+7828
   DW_CFA_offset_extended_sf: r6056 \(mcontext\) at cfa\+7840
   DW_CFA_offset_extended_sf: r6058 \(scontext\) at cfa\+7848
-  DW_CFA_offset_extended_sf: r4163 \(utval\) at cfa\+268
-  DW_CFA_offset_extended_sf: r4419 \(stval\) at cfa\+1292
-  DW_CFA_offset_extended_sf: r4480 \(satp\) at cfa\+1536
-  DW_CFA_offset_extended_sf: r4931 \(mtval\) at cfa\+3340
-  DW_CFA_offset_extended_sf: r4896 \(mcountinhibit\) at cfa\+3200
-  DW_CFA_offset_extended_sf: r6066 \(dscratch0\) at cfa\+7880
   DW_CFA_offset_extended_sf: r6049 \(tdata1\) at cfa\+7812
   DW_CFA_offset_extended_sf: r6049 \(tdata1\) at cfa\+7812
   DW_CFA_offset_extended_sf: r6049 \(tdata1\) at cfa\+7812
   DW_CFA_offset_extended_sf: r6049 \(tdata1\) at cfa\+7812
   DW_CFA_offset_extended_sf: r6051 \(tdata3\) at cfa\+7820
   DW_CFA_offset_extended_sf: r6051 \(tdata3\) at cfa\+7820
+  DW_CFA_offset_extended_sf: r4117 \(seed\) at cfa\+84
+  DW_CFA_offset_extended_sf: r4104 \(vstart\) at cfa\+32
+  DW_CFA_offset_extended_sf: r4105 \(vxsat\) at cfa\+36
+  DW_CFA_offset_extended_sf: r4106 \(vxrm\) at cfa\+40
+  DW_CFA_offset_extended_sf: r4111 \(vcsr\) at cfa\+60
+  DW_CFA_offset_extended_sf: r7200 \(vl\) at cfa\+12416
+  DW_CFA_offset_extended_sf: r7201 \(vtype\) at cfa\+12420
+  DW_CFA_offset_extended_sf: r7202 \(vlenb\) at cfa\+12424
 #...
diff --git a/gas/testsuite/gas/riscv/csr-dw-regnums.s b/gas/testsuite/gas/riscv/csr-dw-regnums.s
index 549475d650e..2431a23f37c 100644
--- a/gas/testsuite/gas/riscv/csr-dw-regnums.s
+++ b/gas/testsuite/gas/riscv/csr-dw-regnums.s
@@ -219,6 +219,39 @@ _start:
 	.cfi_offset mhpmevent29, 3316
 	.cfi_offset mhpmevent30, 3320
 	.cfi_offset mhpmevent31, 3324
+	# Hypervisor extension (Privileged Architecture, version 1.12)
+	.cfi_offset hstatus, 6144
+	.cfi_offset hedeleg, 6152
+	.cfi_offset hideleg, 6156
+	.cfi_offset hie, 6160
+	.cfi_offset hcounteren, 6168
+	.cfi_offset hgeie, 6172
+	.cfi_offset htval, 6412
+	.cfi_offset hip, 6416
+	.cfi_offset hvip, 6420
+	.cfi_offset htinst, 6440
+	.cfi_offset hgeip, 14408
+	.cfi_offset henvcfg, 6184
+	.cfi_offset henvcfgh, 6248
+	.cfi_offset hgatp, 6656
+	.cfi_offset hcontext, 6816
+	.cfi_offset htimedelta, 6164
+	.cfi_offset htimedeltah, 6228
+	.cfi_offset vsstatus, 2048
+	.cfi_offset vsie, 2064
+	.cfi_offset vstvec, 2068
+	.cfi_offset vsscratch, 2304
+	.cfi_offset vsepc, 2308
+	.cfi_offset vscause, 2312
+	.cfi_offset vstval, 2316
+	.cfi_offset vsip, 2320
+	.cfi_offset vsatp, 2560
+	# dropped aliases
+	.cfi_offset ubadaddr, 268
+	.cfi_offset sbadaddr, 1292
+	.cfi_offset sptbr, 1536
+	.cfi_offset mbadaddr, 3340
+	.cfi_offset mucounteren, 3200
 	# dropped
 	.cfi_offset mbase, 3584
 	.cfi_offset mbound, 3588
@@ -236,6 +269,9 @@ _start:
 	.cfi_offset dpc, 7876
 	.cfi_offset dscratch0, 7880
 	.cfi_offset dscratch1, 7884
+	# unprivileged alias
+	.cfi_offset dscratch, 7880
+	# unprivileged
 	.cfi_offset tselect, 7808
 	.cfi_offset tdata1, 7812
 	.cfi_offset tdata2, 7816
@@ -245,17 +281,20 @@ _start:
 	.cfi_offset mcontext, 7840
 	.cfi_offset scontext, 7848
 	# aliases
-	.cfi_offset ubadaddr, 268
-	.cfi_offset sbadaddr, 1292
-	.cfi_offset sptbr, 1536
-	.cfi_offset mbadaddr, 3340
-	.cfi_offset mucounteren, 3200
-	.cfi_offset dscratch, 7880
 	.cfi_offset mcontrol, 7812
 	.cfi_offset icount, 7812
 	.cfi_offset itrigger, 7812
 	.cfi_offset etrigger, 7812
 	.cfi_offset textra32, 7820
 	.cfi_offset textra64, 7820
+	# unprivileged
+	.cfi_offset seed, 84
+	.cfi_offset vstart, 32
+	.cfi_offset vxsat, 36
+	.cfi_offset vxrm, 40
+	.cfi_offset vcsr, 60
+	.cfi_offset vl, 12416
+	.cfi_offset vtype, 12420
+	.cfi_offset vlenb, 12424
 	nop
 	.cfi_endproc
-- 
2.32.0


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

* [PATCH 2/6] RISC-V: Add Privileged Architecture 1.12 CSRs
  2022-01-11 10:59 [PATCH 0/6] RISC-V: Add Privileged Arch 1.12 and More CSRs Tsukasa OI
  2022-01-11 10:59 ` [PATCH 1/6] RISC-V: Reorganize testcases for CFI directives Tsukasa OI
@ 2022-01-11 10:59 ` Tsukasa OI
  2022-02-23  6:58   ` Nelson Chu
  2022-01-11 10:59 ` [PATCH 3/6] RISC-V: Add Privileged Arch 1.12 CSR testcases Tsukasa OI
                   ` (4 subsequent siblings)
  6 siblings, 1 reply; 32+ messages in thread
From: Tsukasa OI @ 2022-01-11 10:59 UTC (permalink / raw)
  To: Tsukasa OI; +Cc: binutils

This commit adds most of CSRs as listed in the Privileged Architecture,
version 1.12 (except scontext and mscontext).

include/ChangeLog:

	* opcode/riscv-opc.h (CSR_SENVCFG, CSR_MCONFIGPTR, CSR_MENVCFG,
	CSR_MSTATUSH, CSR_MENVCFGH, CSR_MTINST, CSR_MTVAL2, CSR_MSECCFG,
	CSR_MSECCFGH, CSR_PMPCFG4, CSR_PMPCFG5, CSR_PMPCFG6,
	CSR_PMPCFG7, CSR_PMPCFG8, CSR_PMPCFG9, CSR_PMPCFG10,
	CSR_PMPCFG11, CSR_PMPCFG12, CSR_PMPCFG13, CSR_PMPCFG14,
	CSR_PMPCFG15, CSR_PMPADDR16, CSR_PMPADDR17, CSR_PMPADDR18,
	CSR_PMPADDR19, CSR_PMPADDR20, CSR_PMPADDR21, CSR_PMPADDR22,
	CSR_PMPADDR23, CSR_PMPADDR24, CSR_PMPADDR25, CSR_PMPADDR26,
	CSR_PMPADDR27, CSR_PMPADDR28, CSR_PMPADDR29, CSR_PMPADDR30,
	CSR_PMPADDR31, CSR_PMPADDR32, CSR_PMPADDR33, CSR_PMPADDR34,
	CSR_PMPADDR35, CSR_PMPADDR36, CSR_PMPADDR37, CSR_PMPADDR38,
	CSR_PMPADDR39, CSR_PMPADDR40, CSR_PMPADDR41, CSR_PMPADDR42,
	CSR_PMPADDR43, CSR_PMPADDR44, CSR_PMPADDR45, CSR_PMPADDR46,
	CSR_PMPADDR47, CSR_PMPADDR48, CSR_PMPADDR49, CSR_PMPADDR50,
	CSR_PMPADDR51, CSR_PMPADDR52, CSR_PMPADDR53, CSR_PMPADDR54,
	CSR_PMPADDR55, CSR_PMPADDR56, CSR_PMPADDR57, CSR_PMPADDR58,
	CSR_PMPADDR59, CSR_PMPADDR60, CSR_PMPADDR61, CSR_PMPADDR62,
	CSR_PMPADDR63): New CSR macros.
---
 include/opcode/riscv-opc.h | 138 +++++++++++++++++++++++++++++++++++++
 1 file changed, 138 insertions(+)

diff --git a/include/opcode/riscv-opc.h b/include/opcode/riscv-opc.h
index 0b8cc6c7ddb..734d7862b2d 100644
--- a/include/opcode/riscv-opc.h
+++ b/include/opcode/riscv-opc.h
@@ -2108,6 +2108,7 @@
 #define CSR_SIE 0x104
 #define CSR_STVEC 0x105
 #define CSR_SCOUNTEREN 0x106
+#define CSR_SENVCFG 0x10a
 #define CSR_SSCRATCH 0x140
 #define CSR_SEPC 0x141
 #define CSR_SCAUSE 0x142
@@ -2118,6 +2119,7 @@
 #define CSR_MARCHID 0xf12
 #define CSR_MIMPID 0xf13
 #define CSR_MHARTID 0xf14
+#define CSR_MCONFIGPTR 0xf15
 #define CSR_MSTATUS 0x300
 #define CSR_MISA 0x301
 #define CSR_MEDELEG 0x302
@@ -2125,15 +2127,34 @@
 #define CSR_MIE 0x304
 #define CSR_MTVEC 0x305
 #define CSR_MCOUNTEREN 0x306
+#define CSR_MENVCFG 0x30a
+#define CSR_MSTATUSH 0x310
+#define CSR_MENVCFGH 0x31a
 #define CSR_MSCRATCH 0x340
 #define CSR_MEPC 0x341
 #define CSR_MCAUSE 0x342
 #define CSR_MTVAL 0x343
 #define CSR_MIP 0x344
+#define CSR_MTINST 0x34a
+#define CSR_MTVAL2 0x34b
+#define CSR_MSECCFG 0x747
+#define CSR_MSECCFGH 0x757
 #define CSR_PMPCFG0 0x3a0
 #define CSR_PMPCFG1 0x3a1
 #define CSR_PMPCFG2 0x3a2
 #define CSR_PMPCFG3 0x3a3
+#define CSR_PMPCFG4 0x3a4
+#define CSR_PMPCFG5 0x3a5
+#define CSR_PMPCFG6 0x3a6
+#define CSR_PMPCFG7 0x3a7
+#define CSR_PMPCFG8 0x3a8
+#define CSR_PMPCFG9 0x3a9
+#define CSR_PMPCFG10 0x3aa
+#define CSR_PMPCFG11 0x3ab
+#define CSR_PMPCFG12 0x3ac
+#define CSR_PMPCFG13 0x3ad
+#define CSR_PMPCFG14 0x3ae
+#define CSR_PMPCFG15 0x3af
 #define CSR_PMPADDR0 0x3b0
 #define CSR_PMPADDR1 0x3b1
 #define CSR_PMPADDR2 0x3b2
@@ -2150,6 +2171,54 @@
 #define CSR_PMPADDR13 0x3bd
 #define CSR_PMPADDR14 0x3be
 #define CSR_PMPADDR15 0x3bf
+#define CSR_PMPADDR16 0x3c0
+#define CSR_PMPADDR17 0x3c1
+#define CSR_PMPADDR18 0x3c2
+#define CSR_PMPADDR19 0x3c3
+#define CSR_PMPADDR20 0x3c4
+#define CSR_PMPADDR21 0x3c5
+#define CSR_PMPADDR22 0x3c6
+#define CSR_PMPADDR23 0x3c7
+#define CSR_PMPADDR24 0x3c8
+#define CSR_PMPADDR25 0x3c9
+#define CSR_PMPADDR26 0x3ca
+#define CSR_PMPADDR27 0x3cb
+#define CSR_PMPADDR28 0x3cc
+#define CSR_PMPADDR29 0x3cd
+#define CSR_PMPADDR30 0x3ce
+#define CSR_PMPADDR31 0x3cf
+#define CSR_PMPADDR32 0x3d0
+#define CSR_PMPADDR33 0x3d1
+#define CSR_PMPADDR34 0x3d2
+#define CSR_PMPADDR35 0x3d3
+#define CSR_PMPADDR36 0x3d4
+#define CSR_PMPADDR37 0x3d5
+#define CSR_PMPADDR38 0x3d6
+#define CSR_PMPADDR39 0x3d7
+#define CSR_PMPADDR40 0x3d8
+#define CSR_PMPADDR41 0x3d9
+#define CSR_PMPADDR42 0x3da
+#define CSR_PMPADDR43 0x3db
+#define CSR_PMPADDR44 0x3dc
+#define CSR_PMPADDR45 0x3dd
+#define CSR_PMPADDR46 0x3de
+#define CSR_PMPADDR47 0x3df
+#define CSR_PMPADDR48 0x3e0
+#define CSR_PMPADDR49 0x3e1
+#define CSR_PMPADDR50 0x3e2
+#define CSR_PMPADDR51 0x3e3
+#define CSR_PMPADDR52 0x3e4
+#define CSR_PMPADDR53 0x3e5
+#define CSR_PMPADDR54 0x3e6
+#define CSR_PMPADDR55 0x3e7
+#define CSR_PMPADDR56 0x3e8
+#define CSR_PMPADDR57 0x3e9
+#define CSR_PMPADDR58 0x3ea
+#define CSR_PMPADDR59 0x3eb
+#define CSR_PMPADDR60 0x3ec
+#define CSR_PMPADDR61 0x3ed
+#define CSR_PMPADDR62 0x3ee
+#define CSR_PMPADDR63 0x3ef
 #define CSR_MCYCLE 0xb00
 #define CSR_MINSTRET 0xb02
 #define CSR_MHPMCOUNTER3 0xb03
@@ -2709,6 +2778,7 @@ DECLARE_CSR(sideleg, CSR_SIDELEG, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_
 DECLARE_CSR(sie, CSR_SIE, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
 DECLARE_CSR(stvec, CSR_STVEC, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
 DECLARE_CSR(scounteren, CSR_SCOUNTEREN, CSR_CLASS_I, PRIV_SPEC_CLASS_1P10, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(senvcfg, CSR_SENVCFG, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
 DECLARE_CSR(sscratch, CSR_SSCRATCH, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
 DECLARE_CSR(sepc, CSR_SEPC, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
 DECLARE_CSR(scause, CSR_SCAUSE, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
@@ -2719,6 +2789,7 @@ DECLARE_CSR(mvendorid, CSR_MVENDORID, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_S
 DECLARE_CSR(marchid, CSR_MARCHID, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
 DECLARE_CSR(mimpid, CSR_MIMPID, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
 DECLARE_CSR(mhartid, CSR_MHARTID, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mconfigptr, CSR_MCONFIGPTR, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
 DECLARE_CSR(mstatus, CSR_MSTATUS, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
 DECLARE_CSR(misa, CSR_MISA, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
 DECLARE_CSR(medeleg, CSR_MEDELEG, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
@@ -2726,15 +2797,34 @@ DECLARE_CSR(mideleg, CSR_MIDELEG, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_
 DECLARE_CSR(mie, CSR_MIE, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
 DECLARE_CSR(mtvec, CSR_MTVEC, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
 DECLARE_CSR(mcounteren, CSR_MCOUNTEREN, CSR_CLASS_I, PRIV_SPEC_CLASS_1P10, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(menvcfg, CSR_MENVCFG, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mstatush, CSR_MSTATUSH, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(menvcfgh, CSR_MENVCFGH, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
 DECLARE_CSR(mscratch, CSR_MSCRATCH, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
 DECLARE_CSR(mepc, CSR_MEPC, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
 DECLARE_CSR(mcause, CSR_MCAUSE, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
 DECLARE_CSR(mtval, CSR_MTVAL, CSR_CLASS_I, PRIV_SPEC_CLASS_1P10, PRIV_SPEC_CLASS_DRAFT)
 DECLARE_CSR(mip, CSR_MIP, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mtinst, CSR_MTINST, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mtval2, CSR_MTVAL2, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mseccfg, CSR_MSECCFG, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mseccfgh, CSR_MSECCFGH, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
 DECLARE_CSR(pmpcfg0, CSR_PMPCFG0, CSR_CLASS_I, PRIV_SPEC_CLASS_1P10, PRIV_SPEC_CLASS_DRAFT)
 DECLARE_CSR(pmpcfg1, CSR_PMPCFG1, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P10, PRIV_SPEC_CLASS_DRAFT)
 DECLARE_CSR(pmpcfg2, CSR_PMPCFG2, CSR_CLASS_I, PRIV_SPEC_CLASS_1P10, PRIV_SPEC_CLASS_DRAFT)
 DECLARE_CSR(pmpcfg3, CSR_PMPCFG3, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P10, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(pmpcfg4, CSR_PMPCFG4, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(pmpcfg5, CSR_PMPCFG5, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(pmpcfg6, CSR_PMPCFG6, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(pmpcfg7, CSR_PMPCFG7, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(pmpcfg8, CSR_PMPCFG8, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(pmpcfg9, CSR_PMPCFG9, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(pmpcfg10, CSR_PMPCFG10, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(pmpcfg11, CSR_PMPCFG11, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(pmpcfg12, CSR_PMPCFG12, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(pmpcfg13, CSR_PMPCFG13, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(pmpcfg14, CSR_PMPCFG14, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(pmpcfg15, CSR_PMPCFG15, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
 DECLARE_CSR(pmpaddr0, CSR_PMPADDR0, CSR_CLASS_I, PRIV_SPEC_CLASS_1P10, PRIV_SPEC_CLASS_DRAFT)
 DECLARE_CSR(pmpaddr1, CSR_PMPADDR1, CSR_CLASS_I, PRIV_SPEC_CLASS_1P10, PRIV_SPEC_CLASS_DRAFT)
 DECLARE_CSR(pmpaddr2, CSR_PMPADDR2, CSR_CLASS_I, PRIV_SPEC_CLASS_1P10, PRIV_SPEC_CLASS_DRAFT)
@@ -2751,6 +2841,54 @@ DECLARE_CSR(pmpaddr12, CSR_PMPADDR12, CSR_CLASS_I, PRIV_SPEC_CLASS_1P10, PRIV_SP
 DECLARE_CSR(pmpaddr13, CSR_PMPADDR13, CSR_CLASS_I, PRIV_SPEC_CLASS_1P10, PRIV_SPEC_CLASS_DRAFT)
 DECLARE_CSR(pmpaddr14, CSR_PMPADDR14, CSR_CLASS_I, PRIV_SPEC_CLASS_1P10, PRIV_SPEC_CLASS_DRAFT)
 DECLARE_CSR(pmpaddr15, CSR_PMPADDR15, CSR_CLASS_I, PRIV_SPEC_CLASS_1P10, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(pmpaddr16, CSR_PMPADDR16, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(pmpaddr17, CSR_PMPADDR17, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(pmpaddr18, CSR_PMPADDR18, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(pmpaddr19, CSR_PMPADDR19, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(pmpaddr20, CSR_PMPADDR20, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(pmpaddr21, CSR_PMPADDR21, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(pmpaddr22, CSR_PMPADDR22, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(pmpaddr23, CSR_PMPADDR23, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(pmpaddr24, CSR_PMPADDR24, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(pmpaddr25, CSR_PMPADDR25, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(pmpaddr26, CSR_PMPADDR26, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(pmpaddr27, CSR_PMPADDR27, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(pmpaddr28, CSR_PMPADDR28, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(pmpaddr29, CSR_PMPADDR29, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(pmpaddr30, CSR_PMPADDR30, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(pmpaddr31, CSR_PMPADDR31, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(pmpaddr32, CSR_PMPADDR32, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(pmpaddr33, CSR_PMPADDR33, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(pmpaddr34, CSR_PMPADDR34, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(pmpaddr35, CSR_PMPADDR35, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(pmpaddr36, CSR_PMPADDR36, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(pmpaddr37, CSR_PMPADDR37, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(pmpaddr38, CSR_PMPADDR38, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(pmpaddr39, CSR_PMPADDR39, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(pmpaddr40, CSR_PMPADDR40, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(pmpaddr41, CSR_PMPADDR41, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(pmpaddr42, CSR_PMPADDR42, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(pmpaddr43, CSR_PMPADDR43, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(pmpaddr44, CSR_PMPADDR44, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(pmpaddr45, CSR_PMPADDR45, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(pmpaddr46, CSR_PMPADDR46, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(pmpaddr47, CSR_PMPADDR47, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(pmpaddr48, CSR_PMPADDR48, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(pmpaddr49, CSR_PMPADDR49, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(pmpaddr50, CSR_PMPADDR50, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(pmpaddr51, CSR_PMPADDR51, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(pmpaddr52, CSR_PMPADDR52, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(pmpaddr53, CSR_PMPADDR53, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(pmpaddr54, CSR_PMPADDR54, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(pmpaddr55, CSR_PMPADDR55, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(pmpaddr56, CSR_PMPADDR56, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(pmpaddr57, CSR_PMPADDR57, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(pmpaddr58, CSR_PMPADDR58, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(pmpaddr59, CSR_PMPADDR59, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(pmpaddr60, CSR_PMPADDR60, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(pmpaddr61, CSR_PMPADDR61, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(pmpaddr62, CSR_PMPADDR62, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(pmpaddr63, CSR_PMPADDR63, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
 DECLARE_CSR(mcycle, CSR_MCYCLE, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
 DECLARE_CSR(minstret, CSR_MINSTRET, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
 DECLARE_CSR(mhpmcounter3, CSR_MHPMCOUNTER3, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
-- 
2.32.0


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

* [PATCH 3/6] RISC-V: Add Privileged Arch 1.12 CSR testcases
  2022-01-11 10:59 [PATCH 0/6] RISC-V: Add Privileged Arch 1.12 and More CSRs Tsukasa OI
  2022-01-11 10:59 ` [PATCH 1/6] RISC-V: Reorganize testcases for CFI directives Tsukasa OI
  2022-01-11 10:59 ` [PATCH 2/6] RISC-V: Add Privileged Architecture 1.12 CSRs Tsukasa OI
@ 2022-01-11 10:59 ` Tsukasa OI
  2022-02-23  6:58   ` Nelson Chu
  2022-01-11 10:59 ` [PATCH 4/6] RISC-V: Add 'Smstateen' extension and its CSRs Tsukasa OI
                   ` (3 subsequent siblings)
  6 siblings, 1 reply; 32+ messages in thread
From: Tsukasa OI @ 2022-01-11 10:59 UTC (permalink / raw)
  To: Tsukasa OI; +Cc: binutils

This commit adds testcases for most CSRs added on the Privileged
Architecture, version 1.12 (except moved "scontext" and
new "mscontext").

gas/ChangeLog:

	* testsuite/gas/riscv/csr-dw-regnums.s: Add new CSRs.
	* testsuite/gas/riscv/csr-dw-regnums.d: 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.
---
 gas/testsuite/gas/riscv/csr-dw-regnums.d    |  69 +++++++++
 gas/testsuite/gas/riscv/csr-dw-regnums.s    |  69 +++++++++
 gas/testsuite/gas/riscv/csr-version-1p10.d  | 138 +++++++++++++++++
 gas/testsuite/gas/riscv/csr-version-1p10.l  | 157 ++++++++++++++++++++
 gas/testsuite/gas/riscv/csr-version-1p11.d  | 138 +++++++++++++++++
 gas/testsuite/gas/riscv/csr-version-1p11.l  | 157 ++++++++++++++++++++
 gas/testsuite/gas/riscv/csr-version-1p12.d  | 138 +++++++++++++++++
 gas/testsuite/gas/riscv/csr-version-1p12.l  |  19 +++
 gas/testsuite/gas/riscv/csr-version-1p9p1.d | 138 +++++++++++++++++
 gas/testsuite/gas/riscv/csr-version-1p9p1.l | 157 ++++++++++++++++++++
 gas/testsuite/gas/riscv/csr.s               |  69 +++++++++
 11 files changed, 1249 insertions(+)

diff --git a/gas/testsuite/gas/riscv/csr-dw-regnums.d b/gas/testsuite/gas/riscv/csr-dw-regnums.d
index 2aa5ff4bcee..e4bb865ed3f 100644
--- a/gas/testsuite/gas/riscv/csr-dw-regnums.d
+++ b/gas/testsuite/gas/riscv/csr-dw-regnums.d
@@ -95,6 +95,7 @@ Contents of the .* section:
   DW_CFA_offset_extended_sf: r4356 \(sie\) at cfa\+1040
   DW_CFA_offset_extended_sf: r4357 \(stvec\) at cfa\+1044
   DW_CFA_offset_extended_sf: r4358 \(scounteren\) at cfa\+1048
+  DW_CFA_offset_extended_sf: r4362 \(senvcfg\) at cfa\+1064
   DW_CFA_offset_extended_sf: r4416 \(sscratch\) at cfa\+1280
   DW_CFA_offset_extended_sf: r4417 \(sepc\) at cfa\+1284
   DW_CFA_offset_extended_sf: r4418 \(scause\) at cfa\+1288
@@ -105,6 +106,7 @@ Contents of the .* section:
   DW_CFA_offset_extended_sf: r7954 \(marchid\) at cfa\+15432
   DW_CFA_offset_extended_sf: r7955 \(mimpid\) at cfa\+15436
   DW_CFA_offset_extended_sf: r7956 \(mhartid\) at cfa\+15440
+  DW_CFA_offset_extended_sf: r7957 \(mconfigptr\) at cfa\+15444
   DW_CFA_offset_extended_sf: r4864 \(mstatus\) at cfa\+3072
   DW_CFA_offset_extended_sf: r4865 \(misa\) at cfa\+3076
   DW_CFA_offset_extended_sf: r4866 \(medeleg\) at cfa\+3080
@@ -112,15 +114,34 @@ Contents of the .* section:
   DW_CFA_offset_extended_sf: r4868 \(mie\) at cfa\+3088
   DW_CFA_offset_extended_sf: r4869 \(mtvec\) at cfa\+3092
   DW_CFA_offset_extended_sf: r4870 \(mcounteren\) at cfa\+3096
+  DW_CFA_offset_extended_sf: r4874 \(menvcfg\) at cfa\+3112
+  DW_CFA_offset_extended_sf: r4880 \(mstatush\) at cfa\+3136
+  DW_CFA_offset_extended_sf: r4890 \(menvcfgh\) at cfa\+3176
+  DW_CFA_offset_extended_sf: r5959 \(mseccfg\) at cfa\+7452
+  DW_CFA_offset_extended_sf: r5975 \(mseccfgh\) at cfa\+7516
   DW_CFA_offset_extended_sf: r4928 \(mscratch\) at cfa\+3328
   DW_CFA_offset_extended_sf: r4929 \(mepc\) at cfa\+3332
   DW_CFA_offset_extended_sf: r4930 \(mcause\) at cfa\+3336
   DW_CFA_offset_extended_sf: r4931 \(mtval\) at cfa\+3340
   DW_CFA_offset_extended_sf: r4932 \(mip\) at cfa\+3344
+  DW_CFA_offset_extended_sf: r4938 \(mtinst\) at cfa\+3368
+  DW_CFA_offset_extended_sf: r4939 \(mtval2\) at cfa\+3372
   DW_CFA_offset_extended_sf: r5024 \(pmpcfg0\) at cfa\+3712
   DW_CFA_offset_extended_sf: r5025 \(pmpcfg1\) at cfa\+3716
   DW_CFA_offset_extended_sf: r5026 \(pmpcfg2\) at cfa\+3720
   DW_CFA_offset_extended_sf: r5027 \(pmpcfg3\) at cfa\+3724
+  DW_CFA_offset_extended_sf: r5028 \(pmpcfg4\) at cfa\+3728
+  DW_CFA_offset_extended_sf: r5029 \(pmpcfg5\) at cfa\+3732
+  DW_CFA_offset_extended_sf: r5030 \(pmpcfg6\) at cfa\+3736
+  DW_CFA_offset_extended_sf: r5031 \(pmpcfg7\) at cfa\+3740
+  DW_CFA_offset_extended_sf: r5032 \(pmpcfg8\) at cfa\+3744
+  DW_CFA_offset_extended_sf: r5033 \(pmpcfg9\) at cfa\+3748
+  DW_CFA_offset_extended_sf: r5034 \(pmpcfg10\) at cfa\+3752
+  DW_CFA_offset_extended_sf: r5035 \(pmpcfg11\) at cfa\+3756
+  DW_CFA_offset_extended_sf: r5036 \(pmpcfg12\) at cfa\+3760
+  DW_CFA_offset_extended_sf: r5037 \(pmpcfg13\) at cfa\+3764
+  DW_CFA_offset_extended_sf: r5038 \(pmpcfg14\) at cfa\+3768
+  DW_CFA_offset_extended_sf: r5039 \(pmpcfg15\) at cfa\+3772
   DW_CFA_offset_extended_sf: r5040 \(pmpaddr0\) at cfa\+3776
   DW_CFA_offset_extended_sf: r5041 \(pmpaddr1\) at cfa\+3780
   DW_CFA_offset_extended_sf: r5042 \(pmpaddr2\) at cfa\+3784
@@ -137,6 +158,54 @@ Contents of the .* section:
   DW_CFA_offset_extended_sf: r5053 \(pmpaddr13\) at cfa\+3828
   DW_CFA_offset_extended_sf: r5054 \(pmpaddr14\) at cfa\+3832
   DW_CFA_offset_extended_sf: r5055 \(pmpaddr15\) at cfa\+3836
+  DW_CFA_offset_extended_sf: r5056 \(pmpaddr16\) at cfa\+3840
+  DW_CFA_offset_extended_sf: r5057 \(pmpaddr17\) at cfa\+3844
+  DW_CFA_offset_extended_sf: r5058 \(pmpaddr18\) at cfa\+3848
+  DW_CFA_offset_extended_sf: r5059 \(pmpaddr19\) at cfa\+3852
+  DW_CFA_offset_extended_sf: r5060 \(pmpaddr20\) at cfa\+3856
+  DW_CFA_offset_extended_sf: r5061 \(pmpaddr21\) at cfa\+3860
+  DW_CFA_offset_extended_sf: r5062 \(pmpaddr22\) at cfa\+3864
+  DW_CFA_offset_extended_sf: r5063 \(pmpaddr23\) at cfa\+3868
+  DW_CFA_offset_extended_sf: r5064 \(pmpaddr24\) at cfa\+3872
+  DW_CFA_offset_extended_sf: r5065 \(pmpaddr25\) at cfa\+3876
+  DW_CFA_offset_extended_sf: r5066 \(pmpaddr26\) at cfa\+3880
+  DW_CFA_offset_extended_sf: r5067 \(pmpaddr27\) at cfa\+3884
+  DW_CFA_offset_extended_sf: r5068 \(pmpaddr28\) at cfa\+3888
+  DW_CFA_offset_extended_sf: r5069 \(pmpaddr29\) at cfa\+3892
+  DW_CFA_offset_extended_sf: r5070 \(pmpaddr30\) at cfa\+3896
+  DW_CFA_offset_extended_sf: r5071 \(pmpaddr31\) at cfa\+3900
+  DW_CFA_offset_extended_sf: r5072 \(pmpaddr32\) at cfa\+3904
+  DW_CFA_offset_extended_sf: r5073 \(pmpaddr33\) at cfa\+3908
+  DW_CFA_offset_extended_sf: r5074 \(pmpaddr34\) at cfa\+3912
+  DW_CFA_offset_extended_sf: r5075 \(pmpaddr35\) at cfa\+3916
+  DW_CFA_offset_extended_sf: r5076 \(pmpaddr36\) at cfa\+3920
+  DW_CFA_offset_extended_sf: r5077 \(pmpaddr37\) at cfa\+3924
+  DW_CFA_offset_extended_sf: r5078 \(pmpaddr38\) at cfa\+3928
+  DW_CFA_offset_extended_sf: r5079 \(pmpaddr39\) at cfa\+3932
+  DW_CFA_offset_extended_sf: r5080 \(pmpaddr40\) at cfa\+3936
+  DW_CFA_offset_extended_sf: r5081 \(pmpaddr41\) at cfa\+3940
+  DW_CFA_offset_extended_sf: r5082 \(pmpaddr42\) at cfa\+3944
+  DW_CFA_offset_extended_sf: r5083 \(pmpaddr43\) at cfa\+3948
+  DW_CFA_offset_extended_sf: r5084 \(pmpaddr44\) at cfa\+3952
+  DW_CFA_offset_extended_sf: r5085 \(pmpaddr45\) at cfa\+3956
+  DW_CFA_offset_extended_sf: r5086 \(pmpaddr46\) at cfa\+3960
+  DW_CFA_offset_extended_sf: r5087 \(pmpaddr47\) at cfa\+3964
+  DW_CFA_offset_extended_sf: r5088 \(pmpaddr48\) at cfa\+3968
+  DW_CFA_offset_extended_sf: r5089 \(pmpaddr49\) at cfa\+3972
+  DW_CFA_offset_extended_sf: r5090 \(pmpaddr50\) at cfa\+3976
+  DW_CFA_offset_extended_sf: r5091 \(pmpaddr51\) at cfa\+3980
+  DW_CFA_offset_extended_sf: r5092 \(pmpaddr52\) at cfa\+3984
+  DW_CFA_offset_extended_sf: r5093 \(pmpaddr53\) at cfa\+3988
+  DW_CFA_offset_extended_sf: r5094 \(pmpaddr54\) at cfa\+3992
+  DW_CFA_offset_extended_sf: r5095 \(pmpaddr55\) at cfa\+3996
+  DW_CFA_offset_extended_sf: r5096 \(pmpaddr56\) at cfa\+4000
+  DW_CFA_offset_extended_sf: r5097 \(pmpaddr57\) at cfa\+4004
+  DW_CFA_offset_extended_sf: r5098 \(pmpaddr58\) at cfa\+4008
+  DW_CFA_offset_extended_sf: r5099 \(pmpaddr59\) at cfa\+4012
+  DW_CFA_offset_extended_sf: r5100 \(pmpaddr60\) at cfa\+4016
+  DW_CFA_offset_extended_sf: r5101 \(pmpaddr61\) at cfa\+4020
+  DW_CFA_offset_extended_sf: r5102 \(pmpaddr62\) at cfa\+4024
+  DW_CFA_offset_extended_sf: r5103 \(pmpaddr63\) at cfa\+4028
   DW_CFA_offset_extended_sf: r6912 \(mcycle\) at cfa\+11264
   DW_CFA_offset_extended_sf: r6914 \(minstret\) at cfa\+11272
   DW_CFA_offset_extended_sf: r6915 \(mhpmcounter3\) at cfa\+11276
diff --git a/gas/testsuite/gas/riscv/csr-dw-regnums.s b/gas/testsuite/gas/riscv/csr-dw-regnums.s
index 2431a23f37c..34635d9c04f 100644
--- a/gas/testsuite/gas/riscv/csr-dw-regnums.s
+++ b/gas/testsuite/gas/riscv/csr-dw-regnums.s
@@ -85,6 +85,7 @@ _start:
 	.cfi_offset sie, 1040
 	.cfi_offset stvec, 1044
 	.cfi_offset scounteren, 1048
+	.cfi_offset senvcfg, 1064
 	.cfi_offset sscratch, 1280
 	.cfi_offset sepc, 1284
 	.cfi_offset scause, 1288
@@ -95,6 +96,7 @@ _start:
 	.cfi_offset marchid, 15432
 	.cfi_offset mimpid, 15436
 	.cfi_offset mhartid, 15440
+	.cfi_offset mconfigptr, 15444
 	.cfi_offset mstatus, 3072
 	.cfi_offset misa, 3076
 	.cfi_offset medeleg, 3080
@@ -102,15 +104,34 @@ _start:
 	.cfi_offset mie, 3088
 	.cfi_offset mtvec, 3092
 	.cfi_offset mcounteren, 3096
+	.cfi_offset menvcfg, 3112
+	.cfi_offset mstatush, 3136
+	.cfi_offset menvcfgh, 3176
+	.cfi_offset mseccfg, 7452
+	.cfi_offset mseccfgh, 7516
 	.cfi_offset mscratch, 3328
 	.cfi_offset mepc, 3332
 	.cfi_offset mcause, 3336
 	.cfi_offset mtval, 3340
 	.cfi_offset mip, 3344
+	.cfi_offset mtinst, 3368
+	.cfi_offset mtval2, 3372
 	.cfi_offset pmpcfg0, 3712
 	.cfi_offset pmpcfg1, 3716
 	.cfi_offset pmpcfg2, 3720
 	.cfi_offset pmpcfg3, 3724
+	.cfi_offset pmpcfg4, 3728
+	.cfi_offset pmpcfg5, 3732
+	.cfi_offset pmpcfg6, 3736
+	.cfi_offset pmpcfg7, 3740
+	.cfi_offset pmpcfg8, 3744
+	.cfi_offset pmpcfg9, 3748
+	.cfi_offset pmpcfg10, 3752
+	.cfi_offset pmpcfg11, 3756
+	.cfi_offset pmpcfg12, 3760
+	.cfi_offset pmpcfg13, 3764
+	.cfi_offset pmpcfg14, 3768
+	.cfi_offset pmpcfg15, 3772
 	.cfi_offset pmpaddr0, 3776
 	.cfi_offset pmpaddr1, 3780
 	.cfi_offset pmpaddr2, 3784
@@ -127,6 +148,54 @@ _start:
 	.cfi_offset pmpaddr13, 3828
 	.cfi_offset pmpaddr14, 3832
 	.cfi_offset pmpaddr15, 3836
+	.cfi_offset pmpaddr16, 3840
+	.cfi_offset pmpaddr17, 3844
+	.cfi_offset pmpaddr18, 3848
+	.cfi_offset pmpaddr19, 3852
+	.cfi_offset pmpaddr20, 3856
+	.cfi_offset pmpaddr21, 3860
+	.cfi_offset pmpaddr22, 3864
+	.cfi_offset pmpaddr23, 3868
+	.cfi_offset pmpaddr24, 3872
+	.cfi_offset pmpaddr25, 3876
+	.cfi_offset pmpaddr26, 3880
+	.cfi_offset pmpaddr27, 3884
+	.cfi_offset pmpaddr28, 3888
+	.cfi_offset pmpaddr29, 3892
+	.cfi_offset pmpaddr30, 3896
+	.cfi_offset pmpaddr31, 3900
+	.cfi_offset pmpaddr32, 3904
+	.cfi_offset pmpaddr33, 3908
+	.cfi_offset pmpaddr34, 3912
+	.cfi_offset pmpaddr35, 3916
+	.cfi_offset pmpaddr36, 3920
+	.cfi_offset pmpaddr37, 3924
+	.cfi_offset pmpaddr38, 3928
+	.cfi_offset pmpaddr39, 3932
+	.cfi_offset pmpaddr40, 3936
+	.cfi_offset pmpaddr41, 3940
+	.cfi_offset pmpaddr42, 3944
+	.cfi_offset pmpaddr43, 3948
+	.cfi_offset pmpaddr44, 3952
+	.cfi_offset pmpaddr45, 3956
+	.cfi_offset pmpaddr46, 3960
+	.cfi_offset pmpaddr47, 3964
+	.cfi_offset pmpaddr48, 3968
+	.cfi_offset pmpaddr49, 3972
+	.cfi_offset pmpaddr50, 3976
+	.cfi_offset pmpaddr51, 3980
+	.cfi_offset pmpaddr52, 3984
+	.cfi_offset pmpaddr53, 3988
+	.cfi_offset pmpaddr54, 3992
+	.cfi_offset pmpaddr55, 3996
+	.cfi_offset pmpaddr56, 4000
+	.cfi_offset pmpaddr57, 4004
+	.cfi_offset pmpaddr58, 4008
+	.cfi_offset pmpaddr59, 4012
+	.cfi_offset pmpaddr60, 4016
+	.cfi_offset pmpaddr61, 4020
+	.cfi_offset pmpaddr62, 4024
+	.cfi_offset pmpaddr63, 4028
 	.cfi_offset mcycle, 11264
 	.cfi_offset minstret, 11272
 	.cfi_offset mhpmcounter3, 11276
diff --git a/gas/testsuite/gas/riscv/csr-version-1p10.d b/gas/testsuite/gas/riscv/csr-version-1p10.d
index 88da7240a78..ef4cb65f195 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p10.d
+++ b/gas/testsuite/gas/riscv/csr-version-1p10.d
@@ -165,6 +165,8 @@ Disassembly of section .text:
 [ 	]+[0-9a-f]+:[ 	]+10559073[ 	]+csrw[ 	]+stvec,a1
 [ 	]+[0-9a-f]+:[ 	]+10602573[ 	]+csrr[ 	]+a0,scounteren
 [ 	]+[0-9a-f]+:[ 	]+10659073[ 	]+csrw[ 	]+scounteren,a1
+[ 	]+[0-9a-f]+:[ 	]+10a02573[ 	]+csrr[ 	]+a0,0x10a
+[ 	]+[0-9a-f]+:[ 	]+10a59073[ 	]+csrw[ 	]+0x10a,a1
 [ 	]+[0-9a-f]+:[ 	]+14002573[ 	]+csrr[ 	]+a0,sscratch
 [ 	]+[0-9a-f]+:[ 	]+14059073[ 	]+csrw[ 	]+sscratch,a1
 [ 	]+[0-9a-f]+:[ 	]+14102573[ 	]+csrr[ 	]+a0,sepc
@@ -185,6 +187,8 @@ Disassembly of section .text:
 [ 	]+[0-9a-f]+:[ 	]+f1359073[ 	]+csrw[ 	]+mimpid,a1
 [ 	]+[0-9a-f]+:[ 	]+f1402573[ 	]+csrr[ 	]+a0,mhartid
 [ 	]+[0-9a-f]+:[ 	]+f1459073[ 	]+csrw[ 	]+mhartid,a1
+[ 	]+[0-9a-f]+:[ 	]+f1502573[ 	]+csrr[ 	]+a0,0xf15
+[ 	]+[0-9a-f]+:[ 	]+f1559073[ 	]+csrw[ 	]+0xf15,a1
 [ 	]+[0-9a-f]+:[ 	]+30002573[ 	]+csrr[ 	]+a0,mstatus
 [ 	]+[0-9a-f]+:[ 	]+30059073[ 	]+csrw[ 	]+mstatus,a1
 [ 	]+[0-9a-f]+:[ 	]+30102573[ 	]+csrr[ 	]+a0,misa
@@ -199,6 +203,16 @@ Disassembly of section .text:
 [ 	]+[0-9a-f]+:[ 	]+30559073[ 	]+csrw[ 	]+mtvec,a1
 [ 	]+[0-9a-f]+:[ 	]+30602573[ 	]+csrr[ 	]+a0,mcounteren
 [ 	]+[0-9a-f]+:[ 	]+30659073[ 	]+csrw[ 	]+mcounteren,a1
+[ 	]+[0-9a-f]+:[ 	]+30a02573[ 	]+csrr[ 	]+a0,0x30a
+[ 	]+[0-9a-f]+:[ 	]+30a59073[ 	]+csrw[ 	]+0x30a,a1
+[ 	]+[0-9a-f]+:[ 	]+31002573[ 	]+csrr[ 	]+a0,0x310
+[ 	]+[0-9a-f]+:[ 	]+31059073[ 	]+csrw[ 	]+0x310,a1
+[ 	]+[0-9a-f]+:[ 	]+31a02573[ 	]+csrr[ 	]+a0,0x31a
+[ 	]+[0-9a-f]+:[ 	]+31a59073[ 	]+csrw[ 	]+0x31a,a1
+[ 	]+[0-9a-f]+:[ 	]+74702573[ 	]+csrr[ 	]+a0,0x747
+[ 	]+[0-9a-f]+:[ 	]+74759073[ 	]+csrw[ 	]+0x747,a1
+[ 	]+[0-9a-f]+:[ 	]+75702573[ 	]+csrr[ 	]+a0,0x757
+[ 	]+[0-9a-f]+:[ 	]+75759073[ 	]+csrw[ 	]+0x757,a1
 [ 	]+[0-9a-f]+:[ 	]+34002573[ 	]+csrr[ 	]+a0,mscratch
 [ 	]+[0-9a-f]+:[ 	]+34059073[ 	]+csrw[ 	]+mscratch,a1
 [ 	]+[0-9a-f]+:[ 	]+34102573[ 	]+csrr[ 	]+a0,mepc
@@ -209,6 +223,10 @@ Disassembly of section .text:
 [ 	]+[0-9a-f]+:[ 	]+34359073[ 	]+csrw[ 	]+mtval,a1
 [ 	]+[0-9a-f]+:[ 	]+34402573[ 	]+csrr[ 	]+a0,mip
 [ 	]+[0-9a-f]+:[ 	]+34459073[ 	]+csrw[ 	]+mip,a1
+[ 	]+[0-9a-f]+:[ 	]+34a02573[ 	]+csrr[ 	]+a0,0x34a
+[ 	]+[0-9a-f]+:[ 	]+34a59073[ 	]+csrw[ 	]+0x34a,a1
+[ 	]+[0-9a-f]+:[ 	]+34b02573[ 	]+csrr[ 	]+a0,0x34b
+[ 	]+[0-9a-f]+:[ 	]+34b59073[ 	]+csrw[ 	]+0x34b,a1
 [ 	]+[0-9a-f]+:[ 	]+3a002573[ 	]+csrr[ 	]+a0,pmpcfg0
 [ 	]+[0-9a-f]+:[ 	]+3a059073[ 	]+csrw[ 	]+pmpcfg0,a1
 [ 	]+[0-9a-f]+:[ 	]+3a102573[ 	]+csrr[ 	]+a0,pmpcfg1
@@ -217,6 +235,30 @@ Disassembly of section .text:
 [ 	]+[0-9a-f]+:[ 	]+3a259073[ 	]+csrw[ 	]+pmpcfg2,a1
 [ 	]+[0-9a-f]+:[ 	]+3a302573[ 	]+csrr[ 	]+a0,pmpcfg3
 [ 	]+[0-9a-f]+:[ 	]+3a359073[ 	]+csrw[ 	]+pmpcfg3,a1
+[ 	]+[0-9a-f]+:[ 	]+3a402573[ 	]+csrr[ 	]+a0,0x3a4
+[ 	]+[0-9a-f]+:[ 	]+3a459073[ 	]+csrw[ 	]+0x3a4,a1
+[ 	]+[0-9a-f]+:[ 	]+3a502573[ 	]+csrr[ 	]+a0,0x3a5
+[ 	]+[0-9a-f]+:[ 	]+3a559073[ 	]+csrw[ 	]+0x3a5,a1
+[ 	]+[0-9a-f]+:[ 	]+3a602573[ 	]+csrr[ 	]+a0,0x3a6
+[ 	]+[0-9a-f]+:[ 	]+3a659073[ 	]+csrw[ 	]+0x3a6,a1
+[ 	]+[0-9a-f]+:[ 	]+3a702573[ 	]+csrr[ 	]+a0,0x3a7
+[ 	]+[0-9a-f]+:[ 	]+3a759073[ 	]+csrw[ 	]+0x3a7,a1
+[ 	]+[0-9a-f]+:[ 	]+3a802573[ 	]+csrr[ 	]+a0,0x3a8
+[ 	]+[0-9a-f]+:[ 	]+3a859073[ 	]+csrw[ 	]+0x3a8,a1
+[ 	]+[0-9a-f]+:[ 	]+3a902573[ 	]+csrr[ 	]+a0,0x3a9
+[ 	]+[0-9a-f]+:[ 	]+3a959073[ 	]+csrw[ 	]+0x3a9,a1
+[ 	]+[0-9a-f]+:[ 	]+3aa02573[ 	]+csrr[ 	]+a0,0x3aa
+[ 	]+[0-9a-f]+:[ 	]+3aa59073[ 	]+csrw[ 	]+0x3aa,a1
+[ 	]+[0-9a-f]+:[ 	]+3ab02573[ 	]+csrr[ 	]+a0,0x3ab
+[ 	]+[0-9a-f]+:[ 	]+3ab59073[ 	]+csrw[ 	]+0x3ab,a1
+[ 	]+[0-9a-f]+:[ 	]+3ac02573[ 	]+csrr[ 	]+a0,0x3ac
+[ 	]+[0-9a-f]+:[ 	]+3ac59073[ 	]+csrw[ 	]+0x3ac,a1
+[ 	]+[0-9a-f]+:[ 	]+3ad02573[ 	]+csrr[ 	]+a0,0x3ad
+[ 	]+[0-9a-f]+:[ 	]+3ad59073[ 	]+csrw[ 	]+0x3ad,a1
+[ 	]+[0-9a-f]+:[ 	]+3ae02573[ 	]+csrr[ 	]+a0,0x3ae
+[ 	]+[0-9a-f]+:[ 	]+3ae59073[ 	]+csrw[ 	]+0x3ae,a1
+[ 	]+[0-9a-f]+:[ 	]+3af02573[ 	]+csrr[ 	]+a0,0x3af
+[ 	]+[0-9a-f]+:[ 	]+3af59073[ 	]+csrw[ 	]+0x3af,a1
 [ 	]+[0-9a-f]+:[ 	]+3b002573[ 	]+csrr[ 	]+a0,pmpaddr0
 [ 	]+[0-9a-f]+:[ 	]+3b059073[ 	]+csrw[ 	]+pmpaddr0,a1
 [ 	]+[0-9a-f]+:[ 	]+3b102573[ 	]+csrr[ 	]+a0,pmpaddr1
@@ -249,6 +291,102 @@ Disassembly of section .text:
 [ 	]+[0-9a-f]+:[ 	]+3be59073[ 	]+csrw[ 	]+pmpaddr14,a1
 [ 	]+[0-9a-f]+:[ 	]+3bf02573[ 	]+csrr[ 	]+a0,pmpaddr15
 [ 	]+[0-9a-f]+:[ 	]+3bf59073[ 	]+csrw[ 	]+pmpaddr15,a1
+[ 	]+[0-9a-f]+:[ 	]+3c002573[ 	]+csrr[ 	]+a0,0x3c0
+[ 	]+[0-9a-f]+:[ 	]+3c059073[ 	]+csrw[ 	]+0x3c0,a1
+[ 	]+[0-9a-f]+:[ 	]+3c102573[ 	]+csrr[ 	]+a0,0x3c1
+[ 	]+[0-9a-f]+:[ 	]+3c159073[ 	]+csrw[ 	]+0x3c1,a1
+[ 	]+[0-9a-f]+:[ 	]+3c202573[ 	]+csrr[ 	]+a0,0x3c2
+[ 	]+[0-9a-f]+:[ 	]+3c259073[ 	]+csrw[ 	]+0x3c2,a1
+[ 	]+[0-9a-f]+:[ 	]+3c302573[ 	]+csrr[ 	]+a0,0x3c3
+[ 	]+[0-9a-f]+:[ 	]+3c359073[ 	]+csrw[ 	]+0x3c3,a1
+[ 	]+[0-9a-f]+:[ 	]+3c402573[ 	]+csrr[ 	]+a0,0x3c4
+[ 	]+[0-9a-f]+:[ 	]+3c459073[ 	]+csrw[ 	]+0x3c4,a1
+[ 	]+[0-9a-f]+:[ 	]+3c502573[ 	]+csrr[ 	]+a0,0x3c5
+[ 	]+[0-9a-f]+:[ 	]+3c559073[ 	]+csrw[ 	]+0x3c5,a1
+[ 	]+[0-9a-f]+:[ 	]+3c602573[ 	]+csrr[ 	]+a0,0x3c6
+[ 	]+[0-9a-f]+:[ 	]+3c659073[ 	]+csrw[ 	]+0x3c6,a1
+[ 	]+[0-9a-f]+:[ 	]+3c702573[ 	]+csrr[ 	]+a0,0x3c7
+[ 	]+[0-9a-f]+:[ 	]+3c759073[ 	]+csrw[ 	]+0x3c7,a1
+[ 	]+[0-9a-f]+:[ 	]+3c802573[ 	]+csrr[ 	]+a0,0x3c8
+[ 	]+[0-9a-f]+:[ 	]+3c859073[ 	]+csrw[ 	]+0x3c8,a1
+[ 	]+[0-9a-f]+:[ 	]+3c902573[ 	]+csrr[ 	]+a0,0x3c9
+[ 	]+[0-9a-f]+:[ 	]+3c959073[ 	]+csrw[ 	]+0x3c9,a1
+[ 	]+[0-9a-f]+:[ 	]+3ca02573[ 	]+csrr[ 	]+a0,0x3ca
+[ 	]+[0-9a-f]+:[ 	]+3ca59073[ 	]+csrw[ 	]+0x3ca,a1
+[ 	]+[0-9a-f]+:[ 	]+3cb02573[ 	]+csrr[ 	]+a0,0x3cb
+[ 	]+[0-9a-f]+:[ 	]+3cb59073[ 	]+csrw[ 	]+0x3cb,a1
+[ 	]+[0-9a-f]+:[ 	]+3cc02573[ 	]+csrr[ 	]+a0,0x3cc
+[ 	]+[0-9a-f]+:[ 	]+3cc59073[ 	]+csrw[ 	]+0x3cc,a1
+[ 	]+[0-9a-f]+:[ 	]+3cd02573[ 	]+csrr[ 	]+a0,0x3cd
+[ 	]+[0-9a-f]+:[ 	]+3cd59073[ 	]+csrw[ 	]+0x3cd,a1
+[ 	]+[0-9a-f]+:[ 	]+3ce02573[ 	]+csrr[ 	]+a0,0x3ce
+[ 	]+[0-9a-f]+:[ 	]+3ce59073[ 	]+csrw[ 	]+0x3ce,a1
+[ 	]+[0-9a-f]+:[ 	]+3cf02573[ 	]+csrr[ 	]+a0,0x3cf
+[ 	]+[0-9a-f]+:[ 	]+3cf59073[ 	]+csrw[ 	]+0x3cf,a1
+[ 	]+[0-9a-f]+:[ 	]+3d002573[ 	]+csrr[ 	]+a0,0x3d0
+[ 	]+[0-9a-f]+:[ 	]+3d059073[ 	]+csrw[ 	]+0x3d0,a1
+[ 	]+[0-9a-f]+:[ 	]+3d102573[ 	]+csrr[ 	]+a0,0x3d1
+[ 	]+[0-9a-f]+:[ 	]+3d159073[ 	]+csrw[ 	]+0x3d1,a1
+[ 	]+[0-9a-f]+:[ 	]+3d202573[ 	]+csrr[ 	]+a0,0x3d2
+[ 	]+[0-9a-f]+:[ 	]+3d259073[ 	]+csrw[ 	]+0x3d2,a1
+[ 	]+[0-9a-f]+:[ 	]+3d302573[ 	]+csrr[ 	]+a0,0x3d3
+[ 	]+[0-9a-f]+:[ 	]+3d359073[ 	]+csrw[ 	]+0x3d3,a1
+[ 	]+[0-9a-f]+:[ 	]+3d402573[ 	]+csrr[ 	]+a0,0x3d4
+[ 	]+[0-9a-f]+:[ 	]+3d459073[ 	]+csrw[ 	]+0x3d4,a1
+[ 	]+[0-9a-f]+:[ 	]+3d502573[ 	]+csrr[ 	]+a0,0x3d5
+[ 	]+[0-9a-f]+:[ 	]+3d559073[ 	]+csrw[ 	]+0x3d5,a1
+[ 	]+[0-9a-f]+:[ 	]+3d602573[ 	]+csrr[ 	]+a0,0x3d6
+[ 	]+[0-9a-f]+:[ 	]+3d659073[ 	]+csrw[ 	]+0x3d6,a1
+[ 	]+[0-9a-f]+:[ 	]+3d702573[ 	]+csrr[ 	]+a0,0x3d7
+[ 	]+[0-9a-f]+:[ 	]+3d759073[ 	]+csrw[ 	]+0x3d7,a1
+[ 	]+[0-9a-f]+:[ 	]+3d802573[ 	]+csrr[ 	]+a0,0x3d8
+[ 	]+[0-9a-f]+:[ 	]+3d859073[ 	]+csrw[ 	]+0x3d8,a1
+[ 	]+[0-9a-f]+:[ 	]+3d902573[ 	]+csrr[ 	]+a0,0x3d9
+[ 	]+[0-9a-f]+:[ 	]+3d959073[ 	]+csrw[ 	]+0x3d9,a1
+[ 	]+[0-9a-f]+:[ 	]+3da02573[ 	]+csrr[ 	]+a0,0x3da
+[ 	]+[0-9a-f]+:[ 	]+3da59073[ 	]+csrw[ 	]+0x3da,a1
+[ 	]+[0-9a-f]+:[ 	]+3db02573[ 	]+csrr[ 	]+a0,0x3db
+[ 	]+[0-9a-f]+:[ 	]+3db59073[ 	]+csrw[ 	]+0x3db,a1
+[ 	]+[0-9a-f]+:[ 	]+3dc02573[ 	]+csrr[ 	]+a0,0x3dc
+[ 	]+[0-9a-f]+:[ 	]+3dc59073[ 	]+csrw[ 	]+0x3dc,a1
+[ 	]+[0-9a-f]+:[ 	]+3dd02573[ 	]+csrr[ 	]+a0,0x3dd
+[ 	]+[0-9a-f]+:[ 	]+3dd59073[ 	]+csrw[ 	]+0x3dd,a1
+[ 	]+[0-9a-f]+:[ 	]+3de02573[ 	]+csrr[ 	]+a0,0x3de
+[ 	]+[0-9a-f]+:[ 	]+3de59073[ 	]+csrw[ 	]+0x3de,a1
+[ 	]+[0-9a-f]+:[ 	]+3df02573[ 	]+csrr[ 	]+a0,0x3df
+[ 	]+[0-9a-f]+:[ 	]+3df59073[ 	]+csrw[ 	]+0x3df,a1
+[ 	]+[0-9a-f]+:[ 	]+3e002573[ 	]+csrr[ 	]+a0,0x3e0
+[ 	]+[0-9a-f]+:[ 	]+3e059073[ 	]+csrw[ 	]+0x3e0,a1
+[ 	]+[0-9a-f]+:[ 	]+3e102573[ 	]+csrr[ 	]+a0,0x3e1
+[ 	]+[0-9a-f]+:[ 	]+3e159073[ 	]+csrw[ 	]+0x3e1,a1
+[ 	]+[0-9a-f]+:[ 	]+3e202573[ 	]+csrr[ 	]+a0,0x3e2
+[ 	]+[0-9a-f]+:[ 	]+3e259073[ 	]+csrw[ 	]+0x3e2,a1
+[ 	]+[0-9a-f]+:[ 	]+3e302573[ 	]+csrr[ 	]+a0,0x3e3
+[ 	]+[0-9a-f]+:[ 	]+3e359073[ 	]+csrw[ 	]+0x3e3,a1
+[ 	]+[0-9a-f]+:[ 	]+3e402573[ 	]+csrr[ 	]+a0,0x3e4
+[ 	]+[0-9a-f]+:[ 	]+3e459073[ 	]+csrw[ 	]+0x3e4,a1
+[ 	]+[0-9a-f]+:[ 	]+3e502573[ 	]+csrr[ 	]+a0,0x3e5
+[ 	]+[0-9a-f]+:[ 	]+3e559073[ 	]+csrw[ 	]+0x3e5,a1
+[ 	]+[0-9a-f]+:[ 	]+3e602573[ 	]+csrr[ 	]+a0,0x3e6
+[ 	]+[0-9a-f]+:[ 	]+3e659073[ 	]+csrw[ 	]+0x3e6,a1
+[ 	]+[0-9a-f]+:[ 	]+3e702573[ 	]+csrr[ 	]+a0,0x3e7
+[ 	]+[0-9a-f]+:[ 	]+3e759073[ 	]+csrw[ 	]+0x3e7,a1
+[ 	]+[0-9a-f]+:[ 	]+3e802573[ 	]+csrr[ 	]+a0,0x3e8
+[ 	]+[0-9a-f]+:[ 	]+3e859073[ 	]+csrw[ 	]+0x3e8,a1
+[ 	]+[0-9a-f]+:[ 	]+3e902573[ 	]+csrr[ 	]+a0,0x3e9
+[ 	]+[0-9a-f]+:[ 	]+3e959073[ 	]+csrw[ 	]+0x3e9,a1
+[ 	]+[0-9a-f]+:[ 	]+3ea02573[ 	]+csrr[ 	]+a0,0x3ea
+[ 	]+[0-9a-f]+:[ 	]+3ea59073[ 	]+csrw[ 	]+0x3ea,a1
+[ 	]+[0-9a-f]+:[ 	]+3eb02573[ 	]+csrr[ 	]+a0,0x3eb
+[ 	]+[0-9a-f]+:[ 	]+3eb59073[ 	]+csrw[ 	]+0x3eb,a1
+[ 	]+[0-9a-f]+:[ 	]+3ec02573[ 	]+csrr[ 	]+a0,0x3ec
+[ 	]+[0-9a-f]+:[ 	]+3ec59073[ 	]+csrw[ 	]+0x3ec,a1
+[ 	]+[0-9a-f]+:[ 	]+3ed02573[ 	]+csrr[ 	]+a0,0x3ed
+[ 	]+[0-9a-f]+:[ 	]+3ed59073[ 	]+csrw[ 	]+0x3ed,a1
+[ 	]+[0-9a-f]+:[ 	]+3ee02573[ 	]+csrr[ 	]+a0,0x3ee
+[ 	]+[0-9a-f]+:[ 	]+3ee59073[ 	]+csrw[ 	]+0x3ee,a1
+[ 	]+[0-9a-f]+:[ 	]+3ef02573[ 	]+csrr[ 	]+a0,0x3ef
+[ 	]+[0-9a-f]+:[ 	]+3ef59073[ 	]+csrw[ 	]+0x3ef,a1
 [ 	]+[0-9a-f]+:[ 	]+b0002573[ 	]+csrr[ 	]+a0,mcycle
 [ 	]+[0-9a-f]+:[ 	]+b0059073[ 	]+csrw[ 	]+mcycle,a1
 [ 	]+[0-9a-f]+:[ 	]+b0202573[ 	]+csrr[ 	]+a0,minstret
diff --git a/gas/testsuite/gas/riscv/csr-version-1p10.l b/gas/testsuite/gas/riscv/csr-version-1p10.l
index ed6773e637c..c0cb2d5d279 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p10.l
+++ b/gas/testsuite/gas/riscv/csr-version-1p10.l
@@ -127,14 +127,171 @@
 .*Warning: invalid CSR `hpmcounter31h' for the current ISA
 .*Warning: invalid CSR `hpmcounter31h' for the current ISA
 .*Warning: read-only CSR is written `csrw hpmcounter31h,a1'
+.*Warning: invalid CSR `senvcfg' for the privileged spec `1.10'
+.*Warning: invalid CSR `senvcfg' for the privileged spec `1.10'
 .*Warning: read-only CSR is written `csrw mvendorid,a1'
 .*Warning: read-only CSR is written `csrw marchid,a1'
 .*Warning: read-only CSR is written `csrw mimpid,a1'
 .*Warning: read-only CSR is written `csrw mhartid,a1'
+.*Warning: invalid CSR `mconfigptr' for the privileged spec `1.10'
+.*Warning: invalid CSR `mconfigptr' for the privileged spec `1.10'
+.*Warning: read-only CSR is written `csrw mconfigptr,a1'
+.*Warning: invalid CSR `menvcfg' for the privileged spec `1.10'
+.*Warning: invalid CSR `menvcfg' for the privileged spec `1.10'
+.*Warning: invalid CSR `mstatush' for the current ISA
+.*Warning: invalid CSR `mstatush' for the privileged spec `1.10'
+.*Warning: invalid CSR `mstatush' for the current ISA
+.*Warning: invalid CSR `mstatush' for the privileged spec `1.10'
+.*Warning: invalid CSR `menvcfgh' for the current ISA
+.*Warning: invalid CSR `menvcfgh' for the privileged spec `1.10'
+.*Warning: invalid CSR `menvcfgh' for the current ISA
+.*Warning: invalid CSR `menvcfgh' for the privileged spec `1.10'
+.*Warning: invalid CSR `mseccfg' for the privileged spec `1.10'
+.*Warning: invalid CSR `mseccfg' for the privileged spec `1.10'
+.*Warning: invalid CSR `mseccfgh' for the current ISA
+.*Warning: invalid CSR `mseccfgh' for the privileged spec `1.10'
+.*Warning: invalid CSR `mseccfgh' for the current ISA
+.*Warning: invalid CSR `mseccfgh' for the privileged spec `1.10'
+.*Warning: invalid CSR `mtinst' for the privileged spec `1.10'
+.*Warning: invalid CSR `mtinst' for the privileged spec `1.10'
+.*Warning: invalid CSR `mtval2' for the privileged spec `1.10'
+.*Warning: invalid CSR `mtval2' for the privileged spec `1.10'
 .*Warning: invalid CSR `pmpcfg1' for the current ISA
 .*Warning: invalid CSR `pmpcfg1' for the current ISA
 .*Warning: invalid CSR `pmpcfg3' for the current ISA
 .*Warning: invalid CSR `pmpcfg3' for the current ISA
+.*Warning: invalid CSR `pmpcfg4' for the privileged spec `1.10'
+.*Warning: invalid CSR `pmpcfg4' for the privileged spec `1.10'
+.*Warning: invalid CSR `pmpcfg5' for the current ISA
+.*Warning: invalid CSR `pmpcfg5' for the privileged spec `1.10'
+.*Warning: invalid CSR `pmpcfg5' for the current ISA
+.*Warning: invalid CSR `pmpcfg5' for the privileged spec `1.10'
+.*Warning: invalid CSR `pmpcfg6' for the privileged spec `1.10'
+.*Warning: invalid CSR `pmpcfg6' for the privileged spec `1.10'
+.*Warning: invalid CSR `pmpcfg7' for the current ISA
+.*Warning: invalid CSR `pmpcfg7' for the privileged spec `1.10'
+.*Warning: invalid CSR `pmpcfg7' for the current ISA
+.*Warning: invalid CSR `pmpcfg7' for the privileged spec `1.10'
+.*Warning: invalid CSR `pmpcfg8' for the privileged spec `1.10'
+.*Warning: invalid CSR `pmpcfg8' for the privileged spec `1.10'
+.*Warning: invalid CSR `pmpcfg9' for the current ISA
+.*Warning: invalid CSR `pmpcfg9' for the privileged spec `1.10'
+.*Warning: invalid CSR `pmpcfg9' for the current ISA
+.*Warning: invalid CSR `pmpcfg9' for the privileged spec `1.10'
+.*Warning: invalid CSR `pmpcfg10' for the privileged spec `1.10'
+.*Warning: invalid CSR `pmpcfg10' for the privileged spec `1.10'
+.*Warning: invalid CSR `pmpcfg11' for the current ISA
+.*Warning: invalid CSR `pmpcfg11' for the privileged spec `1.10'
+.*Warning: invalid CSR `pmpcfg11' for the current ISA
+.*Warning: invalid CSR `pmpcfg11' for the privileged spec `1.10'
+.*Warning: invalid CSR `pmpcfg12' for the privileged spec `1.10'
+.*Warning: invalid CSR `pmpcfg12' for the privileged spec `1.10'
+.*Warning: invalid CSR `pmpcfg13' for the current ISA
+.*Warning: invalid CSR `pmpcfg13' for the privileged spec `1.10'
+.*Warning: invalid CSR `pmpcfg13' for the current ISA
+.*Warning: invalid CSR `pmpcfg13' for the privileged spec `1.10'
+.*Warning: invalid CSR `pmpcfg14' for the privileged spec `1.10'
+.*Warning: invalid CSR `pmpcfg14' for the privileged spec `1.10'
+.*Warning: invalid CSR `pmpcfg15' for the current ISA
+.*Warning: invalid CSR `pmpcfg15' for the privileged spec `1.10'
+.*Warning: invalid CSR `pmpcfg15' for the current ISA
+.*Warning: invalid CSR `pmpcfg15' for the privileged spec `1.10'
+.*Warning: invalid CSR `pmpaddr16' for the privileged spec `1.10'
+.*Warning: invalid CSR `pmpaddr16' for the privileged spec `1.10'
+.*Warning: invalid CSR `pmpaddr17' for the privileged spec `1.10'
+.*Warning: invalid CSR `pmpaddr17' for the privileged spec `1.10'
+.*Warning: invalid CSR `pmpaddr18' for the privileged spec `1.10'
+.*Warning: invalid CSR `pmpaddr18' for the privileged spec `1.10'
+.*Warning: invalid CSR `pmpaddr19' for the privileged spec `1.10'
+.*Warning: invalid CSR `pmpaddr19' for the privileged spec `1.10'
+.*Warning: invalid CSR `pmpaddr20' for the privileged spec `1.10'
+.*Warning: invalid CSR `pmpaddr20' for the privileged spec `1.10'
+.*Warning: invalid CSR `pmpaddr21' for the privileged spec `1.10'
+.*Warning: invalid CSR `pmpaddr21' for the privileged spec `1.10'
+.*Warning: invalid CSR `pmpaddr22' for the privileged spec `1.10'
+.*Warning: invalid CSR `pmpaddr22' for the privileged spec `1.10'
+.*Warning: invalid CSR `pmpaddr23' for the privileged spec `1.10'
+.*Warning: invalid CSR `pmpaddr23' for the privileged spec `1.10'
+.*Warning: invalid CSR `pmpaddr24' for the privileged spec `1.10'
+.*Warning: invalid CSR `pmpaddr24' for the privileged spec `1.10'
+.*Warning: invalid CSR `pmpaddr25' for the privileged spec `1.10'
+.*Warning: invalid CSR `pmpaddr25' for the privileged spec `1.10'
+.*Warning: invalid CSR `pmpaddr26' for the privileged spec `1.10'
+.*Warning: invalid CSR `pmpaddr26' for the privileged spec `1.10'
+.*Warning: invalid CSR `pmpaddr27' for the privileged spec `1.10'
+.*Warning: invalid CSR `pmpaddr27' for the privileged spec `1.10'
+.*Warning: invalid CSR `pmpaddr28' for the privileged spec `1.10'
+.*Warning: invalid CSR `pmpaddr28' for the privileged spec `1.10'
+.*Warning: invalid CSR `pmpaddr29' for the privileged spec `1.10'
+.*Warning: invalid CSR `pmpaddr29' for the privileged spec `1.10'
+.*Warning: invalid CSR `pmpaddr30' for the privileged spec `1.10'
+.*Warning: invalid CSR `pmpaddr30' for the privileged spec `1.10'
+.*Warning: invalid CSR `pmpaddr31' for the privileged spec `1.10'
+.*Warning: invalid CSR `pmpaddr31' for the privileged spec `1.10'
+.*Warning: invalid CSR `pmpaddr32' for the privileged spec `1.10'
+.*Warning: invalid CSR `pmpaddr32' for the privileged spec `1.10'
+.*Warning: invalid CSR `pmpaddr33' for the privileged spec `1.10'
+.*Warning: invalid CSR `pmpaddr33' for the privileged spec `1.10'
+.*Warning: invalid CSR `pmpaddr34' for the privileged spec `1.10'
+.*Warning: invalid CSR `pmpaddr34' for the privileged spec `1.10'
+.*Warning: invalid CSR `pmpaddr35' for the privileged spec `1.10'
+.*Warning: invalid CSR `pmpaddr35' for the privileged spec `1.10'
+.*Warning: invalid CSR `pmpaddr36' for the privileged spec `1.10'
+.*Warning: invalid CSR `pmpaddr36' for the privileged spec `1.10'
+.*Warning: invalid CSR `pmpaddr37' for the privileged spec `1.10'
+.*Warning: invalid CSR `pmpaddr37' for the privileged spec `1.10'
+.*Warning: invalid CSR `pmpaddr38' for the privileged spec `1.10'
+.*Warning: invalid CSR `pmpaddr38' for the privileged spec `1.10'
+.*Warning: invalid CSR `pmpaddr39' for the privileged spec `1.10'
+.*Warning: invalid CSR `pmpaddr39' for the privileged spec `1.10'
+.*Warning: invalid CSR `pmpaddr40' for the privileged spec `1.10'
+.*Warning: invalid CSR `pmpaddr40' for the privileged spec `1.10'
+.*Warning: invalid CSR `pmpaddr41' for the privileged spec `1.10'
+.*Warning: invalid CSR `pmpaddr41' for the privileged spec `1.10'
+.*Warning: invalid CSR `pmpaddr42' for the privileged spec `1.10'
+.*Warning: invalid CSR `pmpaddr42' for the privileged spec `1.10'
+.*Warning: invalid CSR `pmpaddr43' for the privileged spec `1.10'
+.*Warning: invalid CSR `pmpaddr43' for the privileged spec `1.10'
+.*Warning: invalid CSR `pmpaddr44' for the privileged spec `1.10'
+.*Warning: invalid CSR `pmpaddr44' for the privileged spec `1.10'
+.*Warning: invalid CSR `pmpaddr45' for the privileged spec `1.10'
+.*Warning: invalid CSR `pmpaddr45' for the privileged spec `1.10'
+.*Warning: invalid CSR `pmpaddr46' for the privileged spec `1.10'
+.*Warning: invalid CSR `pmpaddr46' for the privileged spec `1.10'
+.*Warning: invalid CSR `pmpaddr47' for the privileged spec `1.10'
+.*Warning: invalid CSR `pmpaddr47' for the privileged spec `1.10'
+.*Warning: invalid CSR `pmpaddr48' for the privileged spec `1.10'
+.*Warning: invalid CSR `pmpaddr48' for the privileged spec `1.10'
+.*Warning: invalid CSR `pmpaddr49' for the privileged spec `1.10'
+.*Warning: invalid CSR `pmpaddr49' for the privileged spec `1.10'
+.*Warning: invalid CSR `pmpaddr50' for the privileged spec `1.10'
+.*Warning: invalid CSR `pmpaddr50' for the privileged spec `1.10'
+.*Warning: invalid CSR `pmpaddr51' for the privileged spec `1.10'
+.*Warning: invalid CSR `pmpaddr51' for the privileged spec `1.10'
+.*Warning: invalid CSR `pmpaddr52' for the privileged spec `1.10'
+.*Warning: invalid CSR `pmpaddr52' for the privileged spec `1.10'
+.*Warning: invalid CSR `pmpaddr53' for the privileged spec `1.10'
+.*Warning: invalid CSR `pmpaddr53' for the privileged spec `1.10'
+.*Warning: invalid CSR `pmpaddr54' for the privileged spec `1.10'
+.*Warning: invalid CSR `pmpaddr54' for the privileged spec `1.10'
+.*Warning: invalid CSR `pmpaddr55' for the privileged spec `1.10'
+.*Warning: invalid CSR `pmpaddr55' for the privileged spec `1.10'
+.*Warning: invalid CSR `pmpaddr56' for the privileged spec `1.10'
+.*Warning: invalid CSR `pmpaddr56' for the privileged spec `1.10'
+.*Warning: invalid CSR `pmpaddr57' for the privileged spec `1.10'
+.*Warning: invalid CSR `pmpaddr57' for the privileged spec `1.10'
+.*Warning: invalid CSR `pmpaddr58' for the privileged spec `1.10'
+.*Warning: invalid CSR `pmpaddr58' for the privileged spec `1.10'
+.*Warning: invalid CSR `pmpaddr59' for the privileged spec `1.10'
+.*Warning: invalid CSR `pmpaddr59' for the privileged spec `1.10'
+.*Warning: invalid CSR `pmpaddr60' for the privileged spec `1.10'
+.*Warning: invalid CSR `pmpaddr60' for the privileged spec `1.10'
+.*Warning: invalid CSR `pmpaddr61' for the privileged spec `1.10'
+.*Warning: invalid CSR `pmpaddr61' for the privileged spec `1.10'
+.*Warning: invalid CSR `pmpaddr62' for the privileged spec `1.10'
+.*Warning: invalid CSR `pmpaddr62' for the privileged spec `1.10'
+.*Warning: invalid CSR `pmpaddr63' for the privileged spec `1.10'
+.*Warning: invalid CSR `pmpaddr63' for the privileged spec `1.10'
 .*Warning: invalid CSR `mcycleh' for the current ISA
 .*Warning: invalid CSR `mcycleh' for the current ISA
 .*Warning: invalid CSR `minstreth' for the current ISA
diff --git a/gas/testsuite/gas/riscv/csr-version-1p11.d b/gas/testsuite/gas/riscv/csr-version-1p11.d
index b40c1d5d6b9..a8586d96408 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p11.d
+++ b/gas/testsuite/gas/riscv/csr-version-1p11.d
@@ -165,6 +165,8 @@ Disassembly of section .text:
 [ 	]+[0-9a-f]+:[ 	]+10559073[ 	]+csrw[ 	]+stvec,a1
 [ 	]+[0-9a-f]+:[ 	]+10602573[ 	]+csrr[ 	]+a0,scounteren
 [ 	]+[0-9a-f]+:[ 	]+10659073[ 	]+csrw[ 	]+scounteren,a1
+[ 	]+[0-9a-f]+:[ 	]+10a02573[ 	]+csrr[ 	]+a0,0x10a
+[ 	]+[0-9a-f]+:[ 	]+10a59073[ 	]+csrw[ 	]+0x10a,a1
 [ 	]+[0-9a-f]+:[ 	]+14002573[ 	]+csrr[ 	]+a0,sscratch
 [ 	]+[0-9a-f]+:[ 	]+14059073[ 	]+csrw[ 	]+sscratch,a1
 [ 	]+[0-9a-f]+:[ 	]+14102573[ 	]+csrr[ 	]+a0,sepc
@@ -185,6 +187,8 @@ Disassembly of section .text:
 [ 	]+[0-9a-f]+:[ 	]+f1359073[ 	]+csrw[ 	]+mimpid,a1
 [ 	]+[0-9a-f]+:[ 	]+f1402573[ 	]+csrr[ 	]+a0,mhartid
 [ 	]+[0-9a-f]+:[ 	]+f1459073[ 	]+csrw[ 	]+mhartid,a1
+[ 	]+[0-9a-f]+:[ 	]+f1502573[ 	]+csrr[ 	]+a0,0xf15
+[ 	]+[0-9a-f]+:[ 	]+f1559073[ 	]+csrw[ 	]+0xf15,a1
 [ 	]+[0-9a-f]+:[ 	]+30002573[ 	]+csrr[ 	]+a0,mstatus
 [ 	]+[0-9a-f]+:[ 	]+30059073[ 	]+csrw[ 	]+mstatus,a1
 [ 	]+[0-9a-f]+:[ 	]+30102573[ 	]+csrr[ 	]+a0,misa
@@ -199,6 +203,16 @@ Disassembly of section .text:
 [ 	]+[0-9a-f]+:[ 	]+30559073[ 	]+csrw[ 	]+mtvec,a1
 [ 	]+[0-9a-f]+:[ 	]+30602573[ 	]+csrr[ 	]+a0,mcounteren
 [ 	]+[0-9a-f]+:[ 	]+30659073[ 	]+csrw[ 	]+mcounteren,a1
+[ 	]+[0-9a-f]+:[ 	]+30a02573[ 	]+csrr[ 	]+a0,0x30a
+[ 	]+[0-9a-f]+:[ 	]+30a59073[ 	]+csrw[ 	]+0x30a,a1
+[ 	]+[0-9a-f]+:[ 	]+31002573[ 	]+csrr[ 	]+a0,0x310
+[ 	]+[0-9a-f]+:[ 	]+31059073[ 	]+csrw[ 	]+0x310,a1
+[ 	]+[0-9a-f]+:[ 	]+31a02573[ 	]+csrr[ 	]+a0,0x31a
+[ 	]+[0-9a-f]+:[ 	]+31a59073[ 	]+csrw[ 	]+0x31a,a1
+[ 	]+[0-9a-f]+:[ 	]+74702573[ 	]+csrr[ 	]+a0,0x747
+[ 	]+[0-9a-f]+:[ 	]+74759073[ 	]+csrw[ 	]+0x747,a1
+[ 	]+[0-9a-f]+:[ 	]+75702573[ 	]+csrr[ 	]+a0,0x757
+[ 	]+[0-9a-f]+:[ 	]+75759073[ 	]+csrw[ 	]+0x757,a1
 [ 	]+[0-9a-f]+:[ 	]+34002573[ 	]+csrr[ 	]+a0,mscratch
 [ 	]+[0-9a-f]+:[ 	]+34059073[ 	]+csrw[ 	]+mscratch,a1
 [ 	]+[0-9a-f]+:[ 	]+34102573[ 	]+csrr[ 	]+a0,mepc
@@ -209,6 +223,10 @@ Disassembly of section .text:
 [ 	]+[0-9a-f]+:[ 	]+34359073[ 	]+csrw[ 	]+mtval,a1
 [ 	]+[0-9a-f]+:[ 	]+34402573[ 	]+csrr[ 	]+a0,mip
 [ 	]+[0-9a-f]+:[ 	]+34459073[ 	]+csrw[ 	]+mip,a1
+[ 	]+[0-9a-f]+:[ 	]+34a02573[ 	]+csrr[ 	]+a0,0x34a
+[ 	]+[0-9a-f]+:[ 	]+34a59073[ 	]+csrw[ 	]+0x34a,a1
+[ 	]+[0-9a-f]+:[ 	]+34b02573[ 	]+csrr[ 	]+a0,0x34b
+[ 	]+[0-9a-f]+:[ 	]+34b59073[ 	]+csrw[ 	]+0x34b,a1
 [ 	]+[0-9a-f]+:[ 	]+3a002573[ 	]+csrr[ 	]+a0,pmpcfg0
 [ 	]+[0-9a-f]+:[ 	]+3a059073[ 	]+csrw[ 	]+pmpcfg0,a1
 [ 	]+[0-9a-f]+:[ 	]+3a102573[ 	]+csrr[ 	]+a0,pmpcfg1
@@ -217,6 +235,30 @@ Disassembly of section .text:
 [ 	]+[0-9a-f]+:[ 	]+3a259073[ 	]+csrw[ 	]+pmpcfg2,a1
 [ 	]+[0-9a-f]+:[ 	]+3a302573[ 	]+csrr[ 	]+a0,pmpcfg3
 [ 	]+[0-9a-f]+:[ 	]+3a359073[ 	]+csrw[ 	]+pmpcfg3,a1
+[ 	]+[0-9a-f]+:[ 	]+3a402573[ 	]+csrr[ 	]+a0,0x3a4
+[ 	]+[0-9a-f]+:[ 	]+3a459073[ 	]+csrw[ 	]+0x3a4,a1
+[ 	]+[0-9a-f]+:[ 	]+3a502573[ 	]+csrr[ 	]+a0,0x3a5
+[ 	]+[0-9a-f]+:[ 	]+3a559073[ 	]+csrw[ 	]+0x3a5,a1
+[ 	]+[0-9a-f]+:[ 	]+3a602573[ 	]+csrr[ 	]+a0,0x3a6
+[ 	]+[0-9a-f]+:[ 	]+3a659073[ 	]+csrw[ 	]+0x3a6,a1
+[ 	]+[0-9a-f]+:[ 	]+3a702573[ 	]+csrr[ 	]+a0,0x3a7
+[ 	]+[0-9a-f]+:[ 	]+3a759073[ 	]+csrw[ 	]+0x3a7,a1
+[ 	]+[0-9a-f]+:[ 	]+3a802573[ 	]+csrr[ 	]+a0,0x3a8
+[ 	]+[0-9a-f]+:[ 	]+3a859073[ 	]+csrw[ 	]+0x3a8,a1
+[ 	]+[0-9a-f]+:[ 	]+3a902573[ 	]+csrr[ 	]+a0,0x3a9
+[ 	]+[0-9a-f]+:[ 	]+3a959073[ 	]+csrw[ 	]+0x3a9,a1
+[ 	]+[0-9a-f]+:[ 	]+3aa02573[ 	]+csrr[ 	]+a0,0x3aa
+[ 	]+[0-9a-f]+:[ 	]+3aa59073[ 	]+csrw[ 	]+0x3aa,a1
+[ 	]+[0-9a-f]+:[ 	]+3ab02573[ 	]+csrr[ 	]+a0,0x3ab
+[ 	]+[0-9a-f]+:[ 	]+3ab59073[ 	]+csrw[ 	]+0x3ab,a1
+[ 	]+[0-9a-f]+:[ 	]+3ac02573[ 	]+csrr[ 	]+a0,0x3ac
+[ 	]+[0-9a-f]+:[ 	]+3ac59073[ 	]+csrw[ 	]+0x3ac,a1
+[ 	]+[0-9a-f]+:[ 	]+3ad02573[ 	]+csrr[ 	]+a0,0x3ad
+[ 	]+[0-9a-f]+:[ 	]+3ad59073[ 	]+csrw[ 	]+0x3ad,a1
+[ 	]+[0-9a-f]+:[ 	]+3ae02573[ 	]+csrr[ 	]+a0,0x3ae
+[ 	]+[0-9a-f]+:[ 	]+3ae59073[ 	]+csrw[ 	]+0x3ae,a1
+[ 	]+[0-9a-f]+:[ 	]+3af02573[ 	]+csrr[ 	]+a0,0x3af
+[ 	]+[0-9a-f]+:[ 	]+3af59073[ 	]+csrw[ 	]+0x3af,a1
 [ 	]+[0-9a-f]+:[ 	]+3b002573[ 	]+csrr[ 	]+a0,pmpaddr0
 [ 	]+[0-9a-f]+:[ 	]+3b059073[ 	]+csrw[ 	]+pmpaddr0,a1
 [ 	]+[0-9a-f]+:[ 	]+3b102573[ 	]+csrr[ 	]+a0,pmpaddr1
@@ -249,6 +291,102 @@ Disassembly of section .text:
 [ 	]+[0-9a-f]+:[ 	]+3be59073[ 	]+csrw[ 	]+pmpaddr14,a1
 [ 	]+[0-9a-f]+:[ 	]+3bf02573[ 	]+csrr[ 	]+a0,pmpaddr15
 [ 	]+[0-9a-f]+:[ 	]+3bf59073[ 	]+csrw[ 	]+pmpaddr15,a1
+[ 	]+[0-9a-f]+:[ 	]+3c002573[ 	]+csrr[ 	]+a0,0x3c0
+[ 	]+[0-9a-f]+:[ 	]+3c059073[ 	]+csrw[ 	]+0x3c0,a1
+[ 	]+[0-9a-f]+:[ 	]+3c102573[ 	]+csrr[ 	]+a0,0x3c1
+[ 	]+[0-9a-f]+:[ 	]+3c159073[ 	]+csrw[ 	]+0x3c1,a1
+[ 	]+[0-9a-f]+:[ 	]+3c202573[ 	]+csrr[ 	]+a0,0x3c2
+[ 	]+[0-9a-f]+:[ 	]+3c259073[ 	]+csrw[ 	]+0x3c2,a1
+[ 	]+[0-9a-f]+:[ 	]+3c302573[ 	]+csrr[ 	]+a0,0x3c3
+[ 	]+[0-9a-f]+:[ 	]+3c359073[ 	]+csrw[ 	]+0x3c3,a1
+[ 	]+[0-9a-f]+:[ 	]+3c402573[ 	]+csrr[ 	]+a0,0x3c4
+[ 	]+[0-9a-f]+:[ 	]+3c459073[ 	]+csrw[ 	]+0x3c4,a1
+[ 	]+[0-9a-f]+:[ 	]+3c502573[ 	]+csrr[ 	]+a0,0x3c5
+[ 	]+[0-9a-f]+:[ 	]+3c559073[ 	]+csrw[ 	]+0x3c5,a1
+[ 	]+[0-9a-f]+:[ 	]+3c602573[ 	]+csrr[ 	]+a0,0x3c6
+[ 	]+[0-9a-f]+:[ 	]+3c659073[ 	]+csrw[ 	]+0x3c6,a1
+[ 	]+[0-9a-f]+:[ 	]+3c702573[ 	]+csrr[ 	]+a0,0x3c7
+[ 	]+[0-9a-f]+:[ 	]+3c759073[ 	]+csrw[ 	]+0x3c7,a1
+[ 	]+[0-9a-f]+:[ 	]+3c802573[ 	]+csrr[ 	]+a0,0x3c8
+[ 	]+[0-9a-f]+:[ 	]+3c859073[ 	]+csrw[ 	]+0x3c8,a1
+[ 	]+[0-9a-f]+:[ 	]+3c902573[ 	]+csrr[ 	]+a0,0x3c9
+[ 	]+[0-9a-f]+:[ 	]+3c959073[ 	]+csrw[ 	]+0x3c9,a1
+[ 	]+[0-9a-f]+:[ 	]+3ca02573[ 	]+csrr[ 	]+a0,0x3ca
+[ 	]+[0-9a-f]+:[ 	]+3ca59073[ 	]+csrw[ 	]+0x3ca,a1
+[ 	]+[0-9a-f]+:[ 	]+3cb02573[ 	]+csrr[ 	]+a0,0x3cb
+[ 	]+[0-9a-f]+:[ 	]+3cb59073[ 	]+csrw[ 	]+0x3cb,a1
+[ 	]+[0-9a-f]+:[ 	]+3cc02573[ 	]+csrr[ 	]+a0,0x3cc
+[ 	]+[0-9a-f]+:[ 	]+3cc59073[ 	]+csrw[ 	]+0x3cc,a1
+[ 	]+[0-9a-f]+:[ 	]+3cd02573[ 	]+csrr[ 	]+a0,0x3cd
+[ 	]+[0-9a-f]+:[ 	]+3cd59073[ 	]+csrw[ 	]+0x3cd,a1
+[ 	]+[0-9a-f]+:[ 	]+3ce02573[ 	]+csrr[ 	]+a0,0x3ce
+[ 	]+[0-9a-f]+:[ 	]+3ce59073[ 	]+csrw[ 	]+0x3ce,a1
+[ 	]+[0-9a-f]+:[ 	]+3cf02573[ 	]+csrr[ 	]+a0,0x3cf
+[ 	]+[0-9a-f]+:[ 	]+3cf59073[ 	]+csrw[ 	]+0x3cf,a1
+[ 	]+[0-9a-f]+:[ 	]+3d002573[ 	]+csrr[ 	]+a0,0x3d0
+[ 	]+[0-9a-f]+:[ 	]+3d059073[ 	]+csrw[ 	]+0x3d0,a1
+[ 	]+[0-9a-f]+:[ 	]+3d102573[ 	]+csrr[ 	]+a0,0x3d1
+[ 	]+[0-9a-f]+:[ 	]+3d159073[ 	]+csrw[ 	]+0x3d1,a1
+[ 	]+[0-9a-f]+:[ 	]+3d202573[ 	]+csrr[ 	]+a0,0x3d2
+[ 	]+[0-9a-f]+:[ 	]+3d259073[ 	]+csrw[ 	]+0x3d2,a1
+[ 	]+[0-9a-f]+:[ 	]+3d302573[ 	]+csrr[ 	]+a0,0x3d3
+[ 	]+[0-9a-f]+:[ 	]+3d359073[ 	]+csrw[ 	]+0x3d3,a1
+[ 	]+[0-9a-f]+:[ 	]+3d402573[ 	]+csrr[ 	]+a0,0x3d4
+[ 	]+[0-9a-f]+:[ 	]+3d459073[ 	]+csrw[ 	]+0x3d4,a1
+[ 	]+[0-9a-f]+:[ 	]+3d502573[ 	]+csrr[ 	]+a0,0x3d5
+[ 	]+[0-9a-f]+:[ 	]+3d559073[ 	]+csrw[ 	]+0x3d5,a1
+[ 	]+[0-9a-f]+:[ 	]+3d602573[ 	]+csrr[ 	]+a0,0x3d6
+[ 	]+[0-9a-f]+:[ 	]+3d659073[ 	]+csrw[ 	]+0x3d6,a1
+[ 	]+[0-9a-f]+:[ 	]+3d702573[ 	]+csrr[ 	]+a0,0x3d7
+[ 	]+[0-9a-f]+:[ 	]+3d759073[ 	]+csrw[ 	]+0x3d7,a1
+[ 	]+[0-9a-f]+:[ 	]+3d802573[ 	]+csrr[ 	]+a0,0x3d8
+[ 	]+[0-9a-f]+:[ 	]+3d859073[ 	]+csrw[ 	]+0x3d8,a1
+[ 	]+[0-9a-f]+:[ 	]+3d902573[ 	]+csrr[ 	]+a0,0x3d9
+[ 	]+[0-9a-f]+:[ 	]+3d959073[ 	]+csrw[ 	]+0x3d9,a1
+[ 	]+[0-9a-f]+:[ 	]+3da02573[ 	]+csrr[ 	]+a0,0x3da
+[ 	]+[0-9a-f]+:[ 	]+3da59073[ 	]+csrw[ 	]+0x3da,a1
+[ 	]+[0-9a-f]+:[ 	]+3db02573[ 	]+csrr[ 	]+a0,0x3db
+[ 	]+[0-9a-f]+:[ 	]+3db59073[ 	]+csrw[ 	]+0x3db,a1
+[ 	]+[0-9a-f]+:[ 	]+3dc02573[ 	]+csrr[ 	]+a0,0x3dc
+[ 	]+[0-9a-f]+:[ 	]+3dc59073[ 	]+csrw[ 	]+0x3dc,a1
+[ 	]+[0-9a-f]+:[ 	]+3dd02573[ 	]+csrr[ 	]+a0,0x3dd
+[ 	]+[0-9a-f]+:[ 	]+3dd59073[ 	]+csrw[ 	]+0x3dd,a1
+[ 	]+[0-9a-f]+:[ 	]+3de02573[ 	]+csrr[ 	]+a0,0x3de
+[ 	]+[0-9a-f]+:[ 	]+3de59073[ 	]+csrw[ 	]+0x3de,a1
+[ 	]+[0-9a-f]+:[ 	]+3df02573[ 	]+csrr[ 	]+a0,0x3df
+[ 	]+[0-9a-f]+:[ 	]+3df59073[ 	]+csrw[ 	]+0x3df,a1
+[ 	]+[0-9a-f]+:[ 	]+3e002573[ 	]+csrr[ 	]+a0,0x3e0
+[ 	]+[0-9a-f]+:[ 	]+3e059073[ 	]+csrw[ 	]+0x3e0,a1
+[ 	]+[0-9a-f]+:[ 	]+3e102573[ 	]+csrr[ 	]+a0,0x3e1
+[ 	]+[0-9a-f]+:[ 	]+3e159073[ 	]+csrw[ 	]+0x3e1,a1
+[ 	]+[0-9a-f]+:[ 	]+3e202573[ 	]+csrr[ 	]+a0,0x3e2
+[ 	]+[0-9a-f]+:[ 	]+3e259073[ 	]+csrw[ 	]+0x3e2,a1
+[ 	]+[0-9a-f]+:[ 	]+3e302573[ 	]+csrr[ 	]+a0,0x3e3
+[ 	]+[0-9a-f]+:[ 	]+3e359073[ 	]+csrw[ 	]+0x3e3,a1
+[ 	]+[0-9a-f]+:[ 	]+3e402573[ 	]+csrr[ 	]+a0,0x3e4
+[ 	]+[0-9a-f]+:[ 	]+3e459073[ 	]+csrw[ 	]+0x3e4,a1
+[ 	]+[0-9a-f]+:[ 	]+3e502573[ 	]+csrr[ 	]+a0,0x3e5
+[ 	]+[0-9a-f]+:[ 	]+3e559073[ 	]+csrw[ 	]+0x3e5,a1
+[ 	]+[0-9a-f]+:[ 	]+3e602573[ 	]+csrr[ 	]+a0,0x3e6
+[ 	]+[0-9a-f]+:[ 	]+3e659073[ 	]+csrw[ 	]+0x3e6,a1
+[ 	]+[0-9a-f]+:[ 	]+3e702573[ 	]+csrr[ 	]+a0,0x3e7
+[ 	]+[0-9a-f]+:[ 	]+3e759073[ 	]+csrw[ 	]+0x3e7,a1
+[ 	]+[0-9a-f]+:[ 	]+3e802573[ 	]+csrr[ 	]+a0,0x3e8
+[ 	]+[0-9a-f]+:[ 	]+3e859073[ 	]+csrw[ 	]+0x3e8,a1
+[ 	]+[0-9a-f]+:[ 	]+3e902573[ 	]+csrr[ 	]+a0,0x3e9
+[ 	]+[0-9a-f]+:[ 	]+3e959073[ 	]+csrw[ 	]+0x3e9,a1
+[ 	]+[0-9a-f]+:[ 	]+3ea02573[ 	]+csrr[ 	]+a0,0x3ea
+[ 	]+[0-9a-f]+:[ 	]+3ea59073[ 	]+csrw[ 	]+0x3ea,a1
+[ 	]+[0-9a-f]+:[ 	]+3eb02573[ 	]+csrr[ 	]+a0,0x3eb
+[ 	]+[0-9a-f]+:[ 	]+3eb59073[ 	]+csrw[ 	]+0x3eb,a1
+[ 	]+[0-9a-f]+:[ 	]+3ec02573[ 	]+csrr[ 	]+a0,0x3ec
+[ 	]+[0-9a-f]+:[ 	]+3ec59073[ 	]+csrw[ 	]+0x3ec,a1
+[ 	]+[0-9a-f]+:[ 	]+3ed02573[ 	]+csrr[ 	]+a0,0x3ed
+[ 	]+[0-9a-f]+:[ 	]+3ed59073[ 	]+csrw[ 	]+0x3ed,a1
+[ 	]+[0-9a-f]+:[ 	]+3ee02573[ 	]+csrr[ 	]+a0,0x3ee
+[ 	]+[0-9a-f]+:[ 	]+3ee59073[ 	]+csrw[ 	]+0x3ee,a1
+[ 	]+[0-9a-f]+:[ 	]+3ef02573[ 	]+csrr[ 	]+a0,0x3ef
+[ 	]+[0-9a-f]+:[ 	]+3ef59073[ 	]+csrw[ 	]+0x3ef,a1
 [ 	]+[0-9a-f]+:[ 	]+b0002573[ 	]+csrr[ 	]+a0,mcycle
 [ 	]+[0-9a-f]+:[ 	]+b0059073[ 	]+csrw[ 	]+mcycle,a1
 [ 	]+[0-9a-f]+:[ 	]+b0202573[ 	]+csrr[ 	]+a0,minstret
diff --git a/gas/testsuite/gas/riscv/csr-version-1p11.l b/gas/testsuite/gas/riscv/csr-version-1p11.l
index 44d9611fe49..36ca02a2b1f 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p11.l
+++ b/gas/testsuite/gas/riscv/csr-version-1p11.l
@@ -127,14 +127,171 @@
 .*Warning: invalid CSR `hpmcounter31h' for the current ISA
 .*Warning: invalid CSR `hpmcounter31h' for the current ISA
 .*Warning: read-only CSR is written `csrw hpmcounter31h,a1'
+.*Warning: invalid CSR `senvcfg' for the privileged spec `1.11'
+.*Warning: invalid CSR `senvcfg' for the privileged spec `1.11'
 .*Warning: read-only CSR is written `csrw mvendorid,a1'
 .*Warning: read-only CSR is written `csrw marchid,a1'
 .*Warning: read-only CSR is written `csrw mimpid,a1'
 .*Warning: read-only CSR is written `csrw mhartid,a1'
+.*Warning: invalid CSR `mconfigptr' for the privileged spec `1.11'
+.*Warning: invalid CSR `mconfigptr' for the privileged spec `1.11'
+.*Warning: read-only CSR is written `csrw mconfigptr,a1'
+.*Warning: invalid CSR `menvcfg' for the privileged spec `1.11'
+.*Warning: invalid CSR `menvcfg' for the privileged spec `1.11'
+.*Warning: invalid CSR `mstatush' for the current ISA
+.*Warning: invalid CSR `mstatush' for the privileged spec `1.11'
+.*Warning: invalid CSR `mstatush' for the current ISA
+.*Warning: invalid CSR `mstatush' for the privileged spec `1.11'
+.*Warning: invalid CSR `menvcfgh' for the current ISA
+.*Warning: invalid CSR `menvcfgh' for the privileged spec `1.11'
+.*Warning: invalid CSR `menvcfgh' for the current ISA
+.*Warning: invalid CSR `menvcfgh' for the privileged spec `1.11'
+.*Warning: invalid CSR `mseccfg' for the privileged spec `1.11'
+.*Warning: invalid CSR `mseccfg' for the privileged spec `1.11'
+.*Warning: invalid CSR `mseccfgh' for the current ISA
+.*Warning: invalid CSR `mseccfgh' for the privileged spec `1.11'
+.*Warning: invalid CSR `mseccfgh' for the current ISA
+.*Warning: invalid CSR `mseccfgh' for the privileged spec `1.11'
+.*Warning: invalid CSR `mtinst' for the privileged spec `1.11'
+.*Warning: invalid CSR `mtinst' for the privileged spec `1.11'
+.*Warning: invalid CSR `mtval2' for the privileged spec `1.11'
+.*Warning: invalid CSR `mtval2' for the privileged spec `1.11'
 .*Warning: invalid CSR `pmpcfg1' for the current ISA
 .*Warning: invalid CSR `pmpcfg1' for the current ISA
 .*Warning: invalid CSR `pmpcfg3' for the current ISA
 .*Warning: invalid CSR `pmpcfg3' for the current ISA
+.*Warning: invalid CSR `pmpcfg4' for the privileged spec `1.11'
+.*Warning: invalid CSR `pmpcfg4' for the privileged spec `1.11'
+.*Warning: invalid CSR `pmpcfg5' for the current ISA
+.*Warning: invalid CSR `pmpcfg5' for the privileged spec `1.11'
+.*Warning: invalid CSR `pmpcfg5' for the current ISA
+.*Warning: invalid CSR `pmpcfg5' for the privileged spec `1.11'
+.*Warning: invalid CSR `pmpcfg6' for the privileged spec `1.11'
+.*Warning: invalid CSR `pmpcfg6' for the privileged spec `1.11'
+.*Warning: invalid CSR `pmpcfg7' for the current ISA
+.*Warning: invalid CSR `pmpcfg7' for the privileged spec `1.11'
+.*Warning: invalid CSR `pmpcfg7' for the current ISA
+.*Warning: invalid CSR `pmpcfg7' for the privileged spec `1.11'
+.*Warning: invalid CSR `pmpcfg8' for the privileged spec `1.11'
+.*Warning: invalid CSR `pmpcfg8' for the privileged spec `1.11'
+.*Warning: invalid CSR `pmpcfg9' for the current ISA
+.*Warning: invalid CSR `pmpcfg9' for the privileged spec `1.11'
+.*Warning: invalid CSR `pmpcfg9' for the current ISA
+.*Warning: invalid CSR `pmpcfg9' for the privileged spec `1.11'
+.*Warning: invalid CSR `pmpcfg10' for the privileged spec `1.11'
+.*Warning: invalid CSR `pmpcfg10' for the privileged spec `1.11'
+.*Warning: invalid CSR `pmpcfg11' for the current ISA
+.*Warning: invalid CSR `pmpcfg11' for the privileged spec `1.11'
+.*Warning: invalid CSR `pmpcfg11' for the current ISA
+.*Warning: invalid CSR `pmpcfg11' for the privileged spec `1.11'
+.*Warning: invalid CSR `pmpcfg12' for the privileged spec `1.11'
+.*Warning: invalid CSR `pmpcfg12' for the privileged spec `1.11'
+.*Warning: invalid CSR `pmpcfg13' for the current ISA
+.*Warning: invalid CSR `pmpcfg13' for the privileged spec `1.11'
+.*Warning: invalid CSR `pmpcfg13' for the current ISA
+.*Warning: invalid CSR `pmpcfg13' for the privileged spec `1.11'
+.*Warning: invalid CSR `pmpcfg14' for the privileged spec `1.11'
+.*Warning: invalid CSR `pmpcfg14' for the privileged spec `1.11'
+.*Warning: invalid CSR `pmpcfg15' for the current ISA
+.*Warning: invalid CSR `pmpcfg15' for the privileged spec `1.11'
+.*Warning: invalid CSR `pmpcfg15' for the current ISA
+.*Warning: invalid CSR `pmpcfg15' for the privileged spec `1.11'
+.*Warning: invalid CSR `pmpaddr16' for the privileged spec `1.11'
+.*Warning: invalid CSR `pmpaddr16' for the privileged spec `1.11'
+.*Warning: invalid CSR `pmpaddr17' for the privileged spec `1.11'
+.*Warning: invalid CSR `pmpaddr17' for the privileged spec `1.11'
+.*Warning: invalid CSR `pmpaddr18' for the privileged spec `1.11'
+.*Warning: invalid CSR `pmpaddr18' for the privileged spec `1.11'
+.*Warning: invalid CSR `pmpaddr19' for the privileged spec `1.11'
+.*Warning: invalid CSR `pmpaddr19' for the privileged spec `1.11'
+.*Warning: invalid CSR `pmpaddr20' for the privileged spec `1.11'
+.*Warning: invalid CSR `pmpaddr20' for the privileged spec `1.11'
+.*Warning: invalid CSR `pmpaddr21' for the privileged spec `1.11'
+.*Warning: invalid CSR `pmpaddr21' for the privileged spec `1.11'
+.*Warning: invalid CSR `pmpaddr22' for the privileged spec `1.11'
+.*Warning: invalid CSR `pmpaddr22' for the privileged spec `1.11'
+.*Warning: invalid CSR `pmpaddr23' for the privileged spec `1.11'
+.*Warning: invalid CSR `pmpaddr23' for the privileged spec `1.11'
+.*Warning: invalid CSR `pmpaddr24' for the privileged spec `1.11'
+.*Warning: invalid CSR `pmpaddr24' for the privileged spec `1.11'
+.*Warning: invalid CSR `pmpaddr25' for the privileged spec `1.11'
+.*Warning: invalid CSR `pmpaddr25' for the privileged spec `1.11'
+.*Warning: invalid CSR `pmpaddr26' for the privileged spec `1.11'
+.*Warning: invalid CSR `pmpaddr26' for the privileged spec `1.11'
+.*Warning: invalid CSR `pmpaddr27' for the privileged spec `1.11'
+.*Warning: invalid CSR `pmpaddr27' for the privileged spec `1.11'
+.*Warning: invalid CSR `pmpaddr28' for the privileged spec `1.11'
+.*Warning: invalid CSR `pmpaddr28' for the privileged spec `1.11'
+.*Warning: invalid CSR `pmpaddr29' for the privileged spec `1.11'
+.*Warning: invalid CSR `pmpaddr29' for the privileged spec `1.11'
+.*Warning: invalid CSR `pmpaddr30' for the privileged spec `1.11'
+.*Warning: invalid CSR `pmpaddr30' for the privileged spec `1.11'
+.*Warning: invalid CSR `pmpaddr31' for the privileged spec `1.11'
+.*Warning: invalid CSR `pmpaddr31' for the privileged spec `1.11'
+.*Warning: invalid CSR `pmpaddr32' for the privileged spec `1.11'
+.*Warning: invalid CSR `pmpaddr32' for the privileged spec `1.11'
+.*Warning: invalid CSR `pmpaddr33' for the privileged spec `1.11'
+.*Warning: invalid CSR `pmpaddr33' for the privileged spec `1.11'
+.*Warning: invalid CSR `pmpaddr34' for the privileged spec `1.11'
+.*Warning: invalid CSR `pmpaddr34' for the privileged spec `1.11'
+.*Warning: invalid CSR `pmpaddr35' for the privileged spec `1.11'
+.*Warning: invalid CSR `pmpaddr35' for the privileged spec `1.11'
+.*Warning: invalid CSR `pmpaddr36' for the privileged spec `1.11'
+.*Warning: invalid CSR `pmpaddr36' for the privileged spec `1.11'
+.*Warning: invalid CSR `pmpaddr37' for the privileged spec `1.11'
+.*Warning: invalid CSR `pmpaddr37' for the privileged spec `1.11'
+.*Warning: invalid CSR `pmpaddr38' for the privileged spec `1.11'
+.*Warning: invalid CSR `pmpaddr38' for the privileged spec `1.11'
+.*Warning: invalid CSR `pmpaddr39' for the privileged spec `1.11'
+.*Warning: invalid CSR `pmpaddr39' for the privileged spec `1.11'
+.*Warning: invalid CSR `pmpaddr40' for the privileged spec `1.11'
+.*Warning: invalid CSR `pmpaddr40' for the privileged spec `1.11'
+.*Warning: invalid CSR `pmpaddr41' for the privileged spec `1.11'
+.*Warning: invalid CSR `pmpaddr41' for the privileged spec `1.11'
+.*Warning: invalid CSR `pmpaddr42' for the privileged spec `1.11'
+.*Warning: invalid CSR `pmpaddr42' for the privileged spec `1.11'
+.*Warning: invalid CSR `pmpaddr43' for the privileged spec `1.11'
+.*Warning: invalid CSR `pmpaddr43' for the privileged spec `1.11'
+.*Warning: invalid CSR `pmpaddr44' for the privileged spec `1.11'
+.*Warning: invalid CSR `pmpaddr44' for the privileged spec `1.11'
+.*Warning: invalid CSR `pmpaddr45' for the privileged spec `1.11'
+.*Warning: invalid CSR `pmpaddr45' for the privileged spec `1.11'
+.*Warning: invalid CSR `pmpaddr46' for the privileged spec `1.11'
+.*Warning: invalid CSR `pmpaddr46' for the privileged spec `1.11'
+.*Warning: invalid CSR `pmpaddr47' for the privileged spec `1.11'
+.*Warning: invalid CSR `pmpaddr47' for the privileged spec `1.11'
+.*Warning: invalid CSR `pmpaddr48' for the privileged spec `1.11'
+.*Warning: invalid CSR `pmpaddr48' for the privileged spec `1.11'
+.*Warning: invalid CSR `pmpaddr49' for the privileged spec `1.11'
+.*Warning: invalid CSR `pmpaddr49' for the privileged spec `1.11'
+.*Warning: invalid CSR `pmpaddr50' for the privileged spec `1.11'
+.*Warning: invalid CSR `pmpaddr50' for the privileged spec `1.11'
+.*Warning: invalid CSR `pmpaddr51' for the privileged spec `1.11'
+.*Warning: invalid CSR `pmpaddr51' for the privileged spec `1.11'
+.*Warning: invalid CSR `pmpaddr52' for the privileged spec `1.11'
+.*Warning: invalid CSR `pmpaddr52' for the privileged spec `1.11'
+.*Warning: invalid CSR `pmpaddr53' for the privileged spec `1.11'
+.*Warning: invalid CSR `pmpaddr53' for the privileged spec `1.11'
+.*Warning: invalid CSR `pmpaddr54' for the privileged spec `1.11'
+.*Warning: invalid CSR `pmpaddr54' for the privileged spec `1.11'
+.*Warning: invalid CSR `pmpaddr55' for the privileged spec `1.11'
+.*Warning: invalid CSR `pmpaddr55' for the privileged spec `1.11'
+.*Warning: invalid CSR `pmpaddr56' for the privileged spec `1.11'
+.*Warning: invalid CSR `pmpaddr56' for the privileged spec `1.11'
+.*Warning: invalid CSR `pmpaddr57' for the privileged spec `1.11'
+.*Warning: invalid CSR `pmpaddr57' for the privileged spec `1.11'
+.*Warning: invalid CSR `pmpaddr58' for the privileged spec `1.11'
+.*Warning: invalid CSR `pmpaddr58' for the privileged spec `1.11'
+.*Warning: invalid CSR `pmpaddr59' for the privileged spec `1.11'
+.*Warning: invalid CSR `pmpaddr59' for the privileged spec `1.11'
+.*Warning: invalid CSR `pmpaddr60' for the privileged spec `1.11'
+.*Warning: invalid CSR `pmpaddr60' for the privileged spec `1.11'
+.*Warning: invalid CSR `pmpaddr61' for the privileged spec `1.11'
+.*Warning: invalid CSR `pmpaddr61' for the privileged spec `1.11'
+.*Warning: invalid CSR `pmpaddr62' for the privileged spec `1.11'
+.*Warning: invalid CSR `pmpaddr62' for the privileged spec `1.11'
+.*Warning: invalid CSR `pmpaddr63' for the privileged spec `1.11'
+.*Warning: invalid CSR `pmpaddr63' for the privileged spec `1.11'
 .*Warning: invalid CSR `mcycleh' for the current ISA
 .*Warning: invalid CSR `mcycleh' for the current ISA
 .*Warning: invalid CSR `minstreth' for the current ISA
diff --git a/gas/testsuite/gas/riscv/csr-version-1p12.d b/gas/testsuite/gas/riscv/csr-version-1p12.d
index fbc30ee2fcc..8281910b89f 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p12.d
+++ b/gas/testsuite/gas/riscv/csr-version-1p12.d
@@ -165,6 +165,8 @@ Disassembly of section .text:
 [ 	]+[0-9a-f]+:[ 	]+10559073[ 	]+csrw[ 	]+stvec,a1
 [ 	]+[0-9a-f]+:[ 	]+10602573[ 	]+csrr[ 	]+a0,scounteren
 [ 	]+[0-9a-f]+:[ 	]+10659073[ 	]+csrw[ 	]+scounteren,a1
+[ 	]+[0-9a-f]+:[ 	]+10a02573[ 	]+csrr[ 	]+a0,senvcfg
+[ 	]+[0-9a-f]+:[ 	]+10a59073[ 	]+csrw[ 	]+senvcfg,a1
 [ 	]+[0-9a-f]+:[ 	]+14002573[ 	]+csrr[ 	]+a0,sscratch
 [ 	]+[0-9a-f]+:[ 	]+14059073[ 	]+csrw[ 	]+sscratch,a1
 [ 	]+[0-9a-f]+:[ 	]+14102573[ 	]+csrr[ 	]+a0,sepc
@@ -185,6 +187,8 @@ Disassembly of section .text:
 [ 	]+[0-9a-f]+:[ 	]+f1359073[ 	]+csrw[ 	]+mimpid,a1
 [ 	]+[0-9a-f]+:[ 	]+f1402573[ 	]+csrr[ 	]+a0,mhartid
 [ 	]+[0-9a-f]+:[ 	]+f1459073[ 	]+csrw[ 	]+mhartid,a1
+[ 	]+[0-9a-f]+:[ 	]+f1502573[ 	]+csrr[ 	]+a0,mconfigptr
+[ 	]+[0-9a-f]+:[ 	]+f1559073[ 	]+csrw[ 	]+mconfigptr,a1
 [ 	]+[0-9a-f]+:[ 	]+30002573[ 	]+csrr[ 	]+a0,mstatus
 [ 	]+[0-9a-f]+:[ 	]+30059073[ 	]+csrw[ 	]+mstatus,a1
 [ 	]+[0-9a-f]+:[ 	]+30102573[ 	]+csrr[ 	]+a0,misa
@@ -199,6 +203,16 @@ Disassembly of section .text:
 [ 	]+[0-9a-f]+:[ 	]+30559073[ 	]+csrw[ 	]+mtvec,a1
 [ 	]+[0-9a-f]+:[ 	]+30602573[ 	]+csrr[ 	]+a0,mcounteren
 [ 	]+[0-9a-f]+:[ 	]+30659073[ 	]+csrw[ 	]+mcounteren,a1
+[ 	]+[0-9a-f]+:[ 	]+30a02573[ 	]+csrr[ 	]+a0,menvcfg
+[ 	]+[0-9a-f]+:[ 	]+30a59073[ 	]+csrw[ 	]+menvcfg,a1
+[ 	]+[0-9a-f]+:[ 	]+31002573[ 	]+csrr[ 	]+a0,mstatush
+[ 	]+[0-9a-f]+:[ 	]+31059073[ 	]+csrw[ 	]+mstatush,a1
+[ 	]+[0-9a-f]+:[ 	]+31a02573[ 	]+csrr[ 	]+a0,menvcfgh
+[ 	]+[0-9a-f]+:[ 	]+31a59073[ 	]+csrw[ 	]+menvcfgh,a1
+[ 	]+[0-9a-f]+:[ 	]+74702573[ 	]+csrr[ 	]+a0,mseccfg
+[ 	]+[0-9a-f]+:[ 	]+74759073[ 	]+csrw[ 	]+mseccfg,a1
+[ 	]+[0-9a-f]+:[ 	]+75702573[ 	]+csrr[ 	]+a0,mseccfgh
+[ 	]+[0-9a-f]+:[ 	]+75759073[ 	]+csrw[ 	]+mseccfgh,a1
 [ 	]+[0-9a-f]+:[ 	]+34002573[ 	]+csrr[ 	]+a0,mscratch
 [ 	]+[0-9a-f]+:[ 	]+34059073[ 	]+csrw[ 	]+mscratch,a1
 [ 	]+[0-9a-f]+:[ 	]+34102573[ 	]+csrr[ 	]+a0,mepc
@@ -209,6 +223,10 @@ Disassembly of section .text:
 [ 	]+[0-9a-f]+:[ 	]+34359073[ 	]+csrw[ 	]+mtval,a1
 [ 	]+[0-9a-f]+:[ 	]+34402573[ 	]+csrr[ 	]+a0,mip
 [ 	]+[0-9a-f]+:[ 	]+34459073[ 	]+csrw[ 	]+mip,a1
+[ 	]+[0-9a-f]+:[ 	]+34a02573[ 	]+csrr[ 	]+a0,mtinst
+[ 	]+[0-9a-f]+:[ 	]+34a59073[ 	]+csrw[ 	]+mtinst,a1
+[ 	]+[0-9a-f]+:[ 	]+34b02573[ 	]+csrr[ 	]+a0,mtval2
+[ 	]+[0-9a-f]+:[ 	]+34b59073[ 	]+csrw[ 	]+mtval2,a1
 [ 	]+[0-9a-f]+:[ 	]+3a002573[ 	]+csrr[ 	]+a0,pmpcfg0
 [ 	]+[0-9a-f]+:[ 	]+3a059073[ 	]+csrw[ 	]+pmpcfg0,a1
 [ 	]+[0-9a-f]+:[ 	]+3a102573[ 	]+csrr[ 	]+a0,pmpcfg1
@@ -217,6 +235,30 @@ Disassembly of section .text:
 [ 	]+[0-9a-f]+:[ 	]+3a259073[ 	]+csrw[ 	]+pmpcfg2,a1
 [ 	]+[0-9a-f]+:[ 	]+3a302573[ 	]+csrr[ 	]+a0,pmpcfg3
 [ 	]+[0-9a-f]+:[ 	]+3a359073[ 	]+csrw[ 	]+pmpcfg3,a1
+[ 	]+[0-9a-f]+:[ 	]+3a402573[ 	]+csrr[ 	]+a0,pmpcfg4
+[ 	]+[0-9a-f]+:[ 	]+3a459073[ 	]+csrw[ 	]+pmpcfg4,a1
+[ 	]+[0-9a-f]+:[ 	]+3a502573[ 	]+csrr[ 	]+a0,pmpcfg5
+[ 	]+[0-9a-f]+:[ 	]+3a559073[ 	]+csrw[ 	]+pmpcfg5,a1
+[ 	]+[0-9a-f]+:[ 	]+3a602573[ 	]+csrr[ 	]+a0,pmpcfg6
+[ 	]+[0-9a-f]+:[ 	]+3a659073[ 	]+csrw[ 	]+pmpcfg6,a1
+[ 	]+[0-9a-f]+:[ 	]+3a702573[ 	]+csrr[ 	]+a0,pmpcfg7
+[ 	]+[0-9a-f]+:[ 	]+3a759073[ 	]+csrw[ 	]+pmpcfg7,a1
+[ 	]+[0-9a-f]+:[ 	]+3a802573[ 	]+csrr[ 	]+a0,pmpcfg8
+[ 	]+[0-9a-f]+:[ 	]+3a859073[ 	]+csrw[ 	]+pmpcfg8,a1
+[ 	]+[0-9a-f]+:[ 	]+3a902573[ 	]+csrr[ 	]+a0,pmpcfg9
+[ 	]+[0-9a-f]+:[ 	]+3a959073[ 	]+csrw[ 	]+pmpcfg9,a1
+[ 	]+[0-9a-f]+:[ 	]+3aa02573[ 	]+csrr[ 	]+a0,pmpcfg10
+[ 	]+[0-9a-f]+:[ 	]+3aa59073[ 	]+csrw[ 	]+pmpcfg10,a1
+[ 	]+[0-9a-f]+:[ 	]+3ab02573[ 	]+csrr[ 	]+a0,pmpcfg11
+[ 	]+[0-9a-f]+:[ 	]+3ab59073[ 	]+csrw[ 	]+pmpcfg11,a1
+[ 	]+[0-9a-f]+:[ 	]+3ac02573[ 	]+csrr[ 	]+a0,pmpcfg12
+[ 	]+[0-9a-f]+:[ 	]+3ac59073[ 	]+csrw[ 	]+pmpcfg12,a1
+[ 	]+[0-9a-f]+:[ 	]+3ad02573[ 	]+csrr[ 	]+a0,pmpcfg13
+[ 	]+[0-9a-f]+:[ 	]+3ad59073[ 	]+csrw[ 	]+pmpcfg13,a1
+[ 	]+[0-9a-f]+:[ 	]+3ae02573[ 	]+csrr[ 	]+a0,pmpcfg14
+[ 	]+[0-9a-f]+:[ 	]+3ae59073[ 	]+csrw[ 	]+pmpcfg14,a1
+[ 	]+[0-9a-f]+:[ 	]+3af02573[ 	]+csrr[ 	]+a0,pmpcfg15
+[ 	]+[0-9a-f]+:[ 	]+3af59073[ 	]+csrw[ 	]+pmpcfg15,a1
 [ 	]+[0-9a-f]+:[ 	]+3b002573[ 	]+csrr[ 	]+a0,pmpaddr0
 [ 	]+[0-9a-f]+:[ 	]+3b059073[ 	]+csrw[ 	]+pmpaddr0,a1
 [ 	]+[0-9a-f]+:[ 	]+3b102573[ 	]+csrr[ 	]+a0,pmpaddr1
@@ -249,6 +291,102 @@ Disassembly of section .text:
 [ 	]+[0-9a-f]+:[ 	]+3be59073[ 	]+csrw[ 	]+pmpaddr14,a1
 [ 	]+[0-9a-f]+:[ 	]+3bf02573[ 	]+csrr[ 	]+a0,pmpaddr15
 [ 	]+[0-9a-f]+:[ 	]+3bf59073[ 	]+csrw[ 	]+pmpaddr15,a1
+[ 	]+[0-9a-f]+:[ 	]+3c002573[ 	]+csrr[ 	]+a0,pmpaddr16
+[ 	]+[0-9a-f]+:[ 	]+3c059073[ 	]+csrw[ 	]+pmpaddr16,a1
+[ 	]+[0-9a-f]+:[ 	]+3c102573[ 	]+csrr[ 	]+a0,pmpaddr17
+[ 	]+[0-9a-f]+:[ 	]+3c159073[ 	]+csrw[ 	]+pmpaddr17,a1
+[ 	]+[0-9a-f]+:[ 	]+3c202573[ 	]+csrr[ 	]+a0,pmpaddr18
+[ 	]+[0-9a-f]+:[ 	]+3c259073[ 	]+csrw[ 	]+pmpaddr18,a1
+[ 	]+[0-9a-f]+:[ 	]+3c302573[ 	]+csrr[ 	]+a0,pmpaddr19
+[ 	]+[0-9a-f]+:[ 	]+3c359073[ 	]+csrw[ 	]+pmpaddr19,a1
+[ 	]+[0-9a-f]+:[ 	]+3c402573[ 	]+csrr[ 	]+a0,pmpaddr20
+[ 	]+[0-9a-f]+:[ 	]+3c459073[ 	]+csrw[ 	]+pmpaddr20,a1
+[ 	]+[0-9a-f]+:[ 	]+3c502573[ 	]+csrr[ 	]+a0,pmpaddr21
+[ 	]+[0-9a-f]+:[ 	]+3c559073[ 	]+csrw[ 	]+pmpaddr21,a1
+[ 	]+[0-9a-f]+:[ 	]+3c602573[ 	]+csrr[ 	]+a0,pmpaddr22
+[ 	]+[0-9a-f]+:[ 	]+3c659073[ 	]+csrw[ 	]+pmpaddr22,a1
+[ 	]+[0-9a-f]+:[ 	]+3c702573[ 	]+csrr[ 	]+a0,pmpaddr23
+[ 	]+[0-9a-f]+:[ 	]+3c759073[ 	]+csrw[ 	]+pmpaddr23,a1
+[ 	]+[0-9a-f]+:[ 	]+3c802573[ 	]+csrr[ 	]+a0,pmpaddr24
+[ 	]+[0-9a-f]+:[ 	]+3c859073[ 	]+csrw[ 	]+pmpaddr24,a1
+[ 	]+[0-9a-f]+:[ 	]+3c902573[ 	]+csrr[ 	]+a0,pmpaddr25
+[ 	]+[0-9a-f]+:[ 	]+3c959073[ 	]+csrw[ 	]+pmpaddr25,a1
+[ 	]+[0-9a-f]+:[ 	]+3ca02573[ 	]+csrr[ 	]+a0,pmpaddr26
+[ 	]+[0-9a-f]+:[ 	]+3ca59073[ 	]+csrw[ 	]+pmpaddr26,a1
+[ 	]+[0-9a-f]+:[ 	]+3cb02573[ 	]+csrr[ 	]+a0,pmpaddr27
+[ 	]+[0-9a-f]+:[ 	]+3cb59073[ 	]+csrw[ 	]+pmpaddr27,a1
+[ 	]+[0-9a-f]+:[ 	]+3cc02573[ 	]+csrr[ 	]+a0,pmpaddr28
+[ 	]+[0-9a-f]+:[ 	]+3cc59073[ 	]+csrw[ 	]+pmpaddr28,a1
+[ 	]+[0-9a-f]+:[ 	]+3cd02573[ 	]+csrr[ 	]+a0,pmpaddr29
+[ 	]+[0-9a-f]+:[ 	]+3cd59073[ 	]+csrw[ 	]+pmpaddr29,a1
+[ 	]+[0-9a-f]+:[ 	]+3ce02573[ 	]+csrr[ 	]+a0,pmpaddr30
+[ 	]+[0-9a-f]+:[ 	]+3ce59073[ 	]+csrw[ 	]+pmpaddr30,a1
+[ 	]+[0-9a-f]+:[ 	]+3cf02573[ 	]+csrr[ 	]+a0,pmpaddr31
+[ 	]+[0-9a-f]+:[ 	]+3cf59073[ 	]+csrw[ 	]+pmpaddr31,a1
+[ 	]+[0-9a-f]+:[ 	]+3d002573[ 	]+csrr[ 	]+a0,pmpaddr32
+[ 	]+[0-9a-f]+:[ 	]+3d059073[ 	]+csrw[ 	]+pmpaddr32,a1
+[ 	]+[0-9a-f]+:[ 	]+3d102573[ 	]+csrr[ 	]+a0,pmpaddr33
+[ 	]+[0-9a-f]+:[ 	]+3d159073[ 	]+csrw[ 	]+pmpaddr33,a1
+[ 	]+[0-9a-f]+:[ 	]+3d202573[ 	]+csrr[ 	]+a0,pmpaddr34
+[ 	]+[0-9a-f]+:[ 	]+3d259073[ 	]+csrw[ 	]+pmpaddr34,a1
+[ 	]+[0-9a-f]+:[ 	]+3d302573[ 	]+csrr[ 	]+a0,pmpaddr35
+[ 	]+[0-9a-f]+:[ 	]+3d359073[ 	]+csrw[ 	]+pmpaddr35,a1
+[ 	]+[0-9a-f]+:[ 	]+3d402573[ 	]+csrr[ 	]+a0,pmpaddr36
+[ 	]+[0-9a-f]+:[ 	]+3d459073[ 	]+csrw[ 	]+pmpaddr36,a1
+[ 	]+[0-9a-f]+:[ 	]+3d502573[ 	]+csrr[ 	]+a0,pmpaddr37
+[ 	]+[0-9a-f]+:[ 	]+3d559073[ 	]+csrw[ 	]+pmpaddr37,a1
+[ 	]+[0-9a-f]+:[ 	]+3d602573[ 	]+csrr[ 	]+a0,pmpaddr38
+[ 	]+[0-9a-f]+:[ 	]+3d659073[ 	]+csrw[ 	]+pmpaddr38,a1
+[ 	]+[0-9a-f]+:[ 	]+3d702573[ 	]+csrr[ 	]+a0,pmpaddr39
+[ 	]+[0-9a-f]+:[ 	]+3d759073[ 	]+csrw[ 	]+pmpaddr39,a1
+[ 	]+[0-9a-f]+:[ 	]+3d802573[ 	]+csrr[ 	]+a0,pmpaddr40
+[ 	]+[0-9a-f]+:[ 	]+3d859073[ 	]+csrw[ 	]+pmpaddr40,a1
+[ 	]+[0-9a-f]+:[ 	]+3d902573[ 	]+csrr[ 	]+a0,pmpaddr41
+[ 	]+[0-9a-f]+:[ 	]+3d959073[ 	]+csrw[ 	]+pmpaddr41,a1
+[ 	]+[0-9a-f]+:[ 	]+3da02573[ 	]+csrr[ 	]+a0,pmpaddr42
+[ 	]+[0-9a-f]+:[ 	]+3da59073[ 	]+csrw[ 	]+pmpaddr42,a1
+[ 	]+[0-9a-f]+:[ 	]+3db02573[ 	]+csrr[ 	]+a0,pmpaddr43
+[ 	]+[0-9a-f]+:[ 	]+3db59073[ 	]+csrw[ 	]+pmpaddr43,a1
+[ 	]+[0-9a-f]+:[ 	]+3dc02573[ 	]+csrr[ 	]+a0,pmpaddr44
+[ 	]+[0-9a-f]+:[ 	]+3dc59073[ 	]+csrw[ 	]+pmpaddr44,a1
+[ 	]+[0-9a-f]+:[ 	]+3dd02573[ 	]+csrr[ 	]+a0,pmpaddr45
+[ 	]+[0-9a-f]+:[ 	]+3dd59073[ 	]+csrw[ 	]+pmpaddr45,a1
+[ 	]+[0-9a-f]+:[ 	]+3de02573[ 	]+csrr[ 	]+a0,pmpaddr46
+[ 	]+[0-9a-f]+:[ 	]+3de59073[ 	]+csrw[ 	]+pmpaddr46,a1
+[ 	]+[0-9a-f]+:[ 	]+3df02573[ 	]+csrr[ 	]+a0,pmpaddr47
+[ 	]+[0-9a-f]+:[ 	]+3df59073[ 	]+csrw[ 	]+pmpaddr47,a1
+[ 	]+[0-9a-f]+:[ 	]+3e002573[ 	]+csrr[ 	]+a0,pmpaddr48
+[ 	]+[0-9a-f]+:[ 	]+3e059073[ 	]+csrw[ 	]+pmpaddr48,a1
+[ 	]+[0-9a-f]+:[ 	]+3e102573[ 	]+csrr[ 	]+a0,pmpaddr49
+[ 	]+[0-9a-f]+:[ 	]+3e159073[ 	]+csrw[ 	]+pmpaddr49,a1
+[ 	]+[0-9a-f]+:[ 	]+3e202573[ 	]+csrr[ 	]+a0,pmpaddr50
+[ 	]+[0-9a-f]+:[ 	]+3e259073[ 	]+csrw[ 	]+pmpaddr50,a1
+[ 	]+[0-9a-f]+:[ 	]+3e302573[ 	]+csrr[ 	]+a0,pmpaddr51
+[ 	]+[0-9a-f]+:[ 	]+3e359073[ 	]+csrw[ 	]+pmpaddr51,a1
+[ 	]+[0-9a-f]+:[ 	]+3e402573[ 	]+csrr[ 	]+a0,pmpaddr52
+[ 	]+[0-9a-f]+:[ 	]+3e459073[ 	]+csrw[ 	]+pmpaddr52,a1
+[ 	]+[0-9a-f]+:[ 	]+3e502573[ 	]+csrr[ 	]+a0,pmpaddr53
+[ 	]+[0-9a-f]+:[ 	]+3e559073[ 	]+csrw[ 	]+pmpaddr53,a1
+[ 	]+[0-9a-f]+:[ 	]+3e602573[ 	]+csrr[ 	]+a0,pmpaddr54
+[ 	]+[0-9a-f]+:[ 	]+3e659073[ 	]+csrw[ 	]+pmpaddr54,a1
+[ 	]+[0-9a-f]+:[ 	]+3e702573[ 	]+csrr[ 	]+a0,pmpaddr55
+[ 	]+[0-9a-f]+:[ 	]+3e759073[ 	]+csrw[ 	]+pmpaddr55,a1
+[ 	]+[0-9a-f]+:[ 	]+3e802573[ 	]+csrr[ 	]+a0,pmpaddr56
+[ 	]+[0-9a-f]+:[ 	]+3e859073[ 	]+csrw[ 	]+pmpaddr56,a1
+[ 	]+[0-9a-f]+:[ 	]+3e902573[ 	]+csrr[ 	]+a0,pmpaddr57
+[ 	]+[0-9a-f]+:[ 	]+3e959073[ 	]+csrw[ 	]+pmpaddr57,a1
+[ 	]+[0-9a-f]+:[ 	]+3ea02573[ 	]+csrr[ 	]+a0,pmpaddr58
+[ 	]+[0-9a-f]+:[ 	]+3ea59073[ 	]+csrw[ 	]+pmpaddr58,a1
+[ 	]+[0-9a-f]+:[ 	]+3eb02573[ 	]+csrr[ 	]+a0,pmpaddr59
+[ 	]+[0-9a-f]+:[ 	]+3eb59073[ 	]+csrw[ 	]+pmpaddr59,a1
+[ 	]+[0-9a-f]+:[ 	]+3ec02573[ 	]+csrr[ 	]+a0,pmpaddr60
+[ 	]+[0-9a-f]+:[ 	]+3ec59073[ 	]+csrw[ 	]+pmpaddr60,a1
+[ 	]+[0-9a-f]+:[ 	]+3ed02573[ 	]+csrr[ 	]+a0,pmpaddr61
+[ 	]+[0-9a-f]+:[ 	]+3ed59073[ 	]+csrw[ 	]+pmpaddr61,a1
+[ 	]+[0-9a-f]+:[ 	]+3ee02573[ 	]+csrr[ 	]+a0,pmpaddr62
+[ 	]+[0-9a-f]+:[ 	]+3ee59073[ 	]+csrw[ 	]+pmpaddr62,a1
+[ 	]+[0-9a-f]+:[ 	]+3ef02573[ 	]+csrr[ 	]+a0,pmpaddr63
+[ 	]+[0-9a-f]+:[ 	]+3ef59073[ 	]+csrw[ 	]+pmpaddr63,a1
 [ 	]+[0-9a-f]+:[ 	]+b0002573[ 	]+csrr[ 	]+a0,mcycle
 [ 	]+[0-9a-f]+:[ 	]+b0059073[ 	]+csrw[ 	]+mcycle,a1
 [ 	]+[0-9a-f]+:[ 	]+b0202573[ 	]+csrr[ 	]+a0,minstret
diff --git a/gas/testsuite/gas/riscv/csr-version-1p12.l b/gas/testsuite/gas/riscv/csr-version-1p12.l
index 237cb8a1699..387c6e2d419 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p12.l
+++ b/gas/testsuite/gas/riscv/csr-version-1p12.l
@@ -131,10 +131,29 @@
 .*Warning: read-only CSR is written `csrw marchid,a1'
 .*Warning: read-only CSR is written `csrw mimpid,a1'
 .*Warning: read-only CSR is written `csrw mhartid,a1'
+.*Warning: read-only CSR is written `csrw mconfigptr,a1'
+.*Warning: invalid CSR `mstatush' for the current ISA
+.*Warning: invalid CSR `mstatush' for the current ISA
+.*Warning: invalid CSR `menvcfgh' for the current ISA
+.*Warning: invalid CSR `menvcfgh' for the current ISA
+.*Warning: invalid CSR `mseccfgh' for the current ISA
+.*Warning: invalid CSR `mseccfgh' for the current ISA
 .*Warning: invalid CSR `pmpcfg1' for the current ISA
 .*Warning: invalid CSR `pmpcfg1' for the current ISA
 .*Warning: invalid CSR `pmpcfg3' for the current ISA
 .*Warning: invalid CSR `pmpcfg3' for the current ISA
+.*Warning: invalid CSR `pmpcfg5' for the current ISA
+.*Warning: invalid CSR `pmpcfg5' for the current ISA
+.*Warning: invalid CSR `pmpcfg7' for the current ISA
+.*Warning: invalid CSR `pmpcfg7' for the current ISA
+.*Warning: invalid CSR `pmpcfg9' for the current ISA
+.*Warning: invalid CSR `pmpcfg9' for the current ISA
+.*Warning: invalid CSR `pmpcfg11' for the current ISA
+.*Warning: invalid CSR `pmpcfg11' for the current ISA
+.*Warning: invalid CSR `pmpcfg13' for the current ISA
+.*Warning: invalid CSR `pmpcfg13' for the current ISA
+.*Warning: invalid CSR `pmpcfg15' for the current ISA
+.*Warning: invalid CSR `pmpcfg15' for the current ISA
 .*Warning: invalid CSR `mcycleh' for the current ISA
 .*Warning: invalid CSR `mcycleh' for the current ISA
 .*Warning: invalid CSR `minstreth' for the current ISA
diff --git a/gas/testsuite/gas/riscv/csr-version-1p9p1.d b/gas/testsuite/gas/riscv/csr-version-1p9p1.d
index a96e8c9dbec..f5af018e1e1 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p9p1.d
+++ b/gas/testsuite/gas/riscv/csr-version-1p9p1.d
@@ -165,6 +165,8 @@ Disassembly of section .text:
 [ 	]+[0-9a-f]+:[ 	]+10559073[ 	]+csrw[ 	]+stvec,a1
 [ 	]+[0-9a-f]+:[ 	]+10602573[ 	]+csrr[ 	]+a0,0x106
 [ 	]+[0-9a-f]+:[ 	]+10659073[ 	]+csrw[ 	]+0x106,a1
+[ 	]+[0-9a-f]+:[ 	]+10a02573[ 	]+csrr[ 	]+a0,0x10a
+[ 	]+[0-9a-f]+:[ 	]+10a59073[ 	]+csrw[ 	]+0x10a,a1
 [ 	]+[0-9a-f]+:[ 	]+14002573[ 	]+csrr[ 	]+a0,sscratch
 [ 	]+[0-9a-f]+:[ 	]+14059073[ 	]+csrw[ 	]+sscratch,a1
 [ 	]+[0-9a-f]+:[ 	]+14102573[ 	]+csrr[ 	]+a0,sepc
@@ -185,6 +187,8 @@ Disassembly of section .text:
 [ 	]+[0-9a-f]+:[ 	]+f1359073[ 	]+csrw[ 	]+mimpid,a1
 [ 	]+[0-9a-f]+:[ 	]+f1402573[ 	]+csrr[ 	]+a0,mhartid
 [ 	]+[0-9a-f]+:[ 	]+f1459073[ 	]+csrw[ 	]+mhartid,a1
+[ 	]+[0-9a-f]+:[ 	]+f1502573[ 	]+csrr[ 	]+a0,0xf15
+[ 	]+[0-9a-f]+:[ 	]+f1559073[ 	]+csrw[ 	]+0xf15,a1
 [ 	]+[0-9a-f]+:[ 	]+30002573[ 	]+csrr[ 	]+a0,mstatus
 [ 	]+[0-9a-f]+:[ 	]+30059073[ 	]+csrw[ 	]+mstatus,a1
 [ 	]+[0-9a-f]+:[ 	]+30102573[ 	]+csrr[ 	]+a0,misa
@@ -199,6 +203,16 @@ Disassembly of section .text:
 [ 	]+[0-9a-f]+:[ 	]+30559073[ 	]+csrw[ 	]+mtvec,a1
 [ 	]+[0-9a-f]+:[ 	]+30602573[ 	]+csrr[ 	]+a0,0x306
 [ 	]+[0-9a-f]+:[ 	]+30659073[ 	]+csrw[ 	]+0x306,a1
+[ 	]+[0-9a-f]+:[ 	]+30a02573[ 	]+csrr[ 	]+a0,0x30a
+[ 	]+[0-9a-f]+:[ 	]+30a59073[ 	]+csrw[ 	]+0x30a,a1
+[ 	]+[0-9a-f]+:[ 	]+31002573[ 	]+csrr[ 	]+a0,0x310
+[ 	]+[0-9a-f]+:[ 	]+31059073[ 	]+csrw[ 	]+0x310,a1
+[ 	]+[0-9a-f]+:[ 	]+31a02573[ 	]+csrr[ 	]+a0,0x31a
+[ 	]+[0-9a-f]+:[ 	]+31a59073[ 	]+csrw[ 	]+0x31a,a1
+[ 	]+[0-9a-f]+:[ 	]+74702573[ 	]+csrr[ 	]+a0,0x747
+[ 	]+[0-9a-f]+:[ 	]+74759073[ 	]+csrw[ 	]+0x747,a1
+[ 	]+[0-9a-f]+:[ 	]+75702573[ 	]+csrr[ 	]+a0,0x757
+[ 	]+[0-9a-f]+:[ 	]+75759073[ 	]+csrw[ 	]+0x757,a1
 [ 	]+[0-9a-f]+:[ 	]+34002573[ 	]+csrr[ 	]+a0,mscratch
 [ 	]+[0-9a-f]+:[ 	]+34059073[ 	]+csrw[ 	]+mscratch,a1
 [ 	]+[0-9a-f]+:[ 	]+34102573[ 	]+csrr[ 	]+a0,mepc
@@ -209,6 +223,10 @@ Disassembly of section .text:
 [ 	]+[0-9a-f]+:[ 	]+34359073[ 	]+csrw[ 	]+mbadaddr,a1
 [ 	]+[0-9a-f]+:[ 	]+34402573[ 	]+csrr[ 	]+a0,mip
 [ 	]+[0-9a-f]+:[ 	]+34459073[ 	]+csrw[ 	]+mip,a1
+[ 	]+[0-9a-f]+:[ 	]+34a02573[ 	]+csrr[ 	]+a0,0x34a
+[ 	]+[0-9a-f]+:[ 	]+34a59073[ 	]+csrw[ 	]+0x34a,a1
+[ 	]+[0-9a-f]+:[ 	]+34b02573[ 	]+csrr[ 	]+a0,0x34b
+[ 	]+[0-9a-f]+:[ 	]+34b59073[ 	]+csrw[ 	]+0x34b,a1
 [ 	]+[0-9a-f]+:[ 	]+3a002573[ 	]+csrr[ 	]+a0,0x3a0
 [ 	]+[0-9a-f]+:[ 	]+3a059073[ 	]+csrw[ 	]+0x3a0,a1
 [ 	]+[0-9a-f]+:[ 	]+3a102573[ 	]+csrr[ 	]+a0,0x3a1
@@ -217,6 +235,30 @@ Disassembly of section .text:
 [ 	]+[0-9a-f]+:[ 	]+3a259073[ 	]+csrw[ 	]+0x3a2,a1
 [ 	]+[0-9a-f]+:[ 	]+3a302573[ 	]+csrr[ 	]+a0,0x3a3
 [ 	]+[0-9a-f]+:[ 	]+3a359073[ 	]+csrw[ 	]+0x3a3,a1
+[ 	]+[0-9a-f]+:[ 	]+3a402573[ 	]+csrr[ 	]+a0,0x3a4
+[ 	]+[0-9a-f]+:[ 	]+3a459073[ 	]+csrw[ 	]+0x3a4,a1
+[ 	]+[0-9a-f]+:[ 	]+3a502573[ 	]+csrr[ 	]+a0,0x3a5
+[ 	]+[0-9a-f]+:[ 	]+3a559073[ 	]+csrw[ 	]+0x3a5,a1
+[ 	]+[0-9a-f]+:[ 	]+3a602573[ 	]+csrr[ 	]+a0,0x3a6
+[ 	]+[0-9a-f]+:[ 	]+3a659073[ 	]+csrw[ 	]+0x3a6,a1
+[ 	]+[0-9a-f]+:[ 	]+3a702573[ 	]+csrr[ 	]+a0,0x3a7
+[ 	]+[0-9a-f]+:[ 	]+3a759073[ 	]+csrw[ 	]+0x3a7,a1
+[ 	]+[0-9a-f]+:[ 	]+3a802573[ 	]+csrr[ 	]+a0,0x3a8
+[ 	]+[0-9a-f]+:[ 	]+3a859073[ 	]+csrw[ 	]+0x3a8,a1
+[ 	]+[0-9a-f]+:[ 	]+3a902573[ 	]+csrr[ 	]+a0,0x3a9
+[ 	]+[0-9a-f]+:[ 	]+3a959073[ 	]+csrw[ 	]+0x3a9,a1
+[ 	]+[0-9a-f]+:[ 	]+3aa02573[ 	]+csrr[ 	]+a0,0x3aa
+[ 	]+[0-9a-f]+:[ 	]+3aa59073[ 	]+csrw[ 	]+0x3aa,a1
+[ 	]+[0-9a-f]+:[ 	]+3ab02573[ 	]+csrr[ 	]+a0,0x3ab
+[ 	]+[0-9a-f]+:[ 	]+3ab59073[ 	]+csrw[ 	]+0x3ab,a1
+[ 	]+[0-9a-f]+:[ 	]+3ac02573[ 	]+csrr[ 	]+a0,0x3ac
+[ 	]+[0-9a-f]+:[ 	]+3ac59073[ 	]+csrw[ 	]+0x3ac,a1
+[ 	]+[0-9a-f]+:[ 	]+3ad02573[ 	]+csrr[ 	]+a0,0x3ad
+[ 	]+[0-9a-f]+:[ 	]+3ad59073[ 	]+csrw[ 	]+0x3ad,a1
+[ 	]+[0-9a-f]+:[ 	]+3ae02573[ 	]+csrr[ 	]+a0,0x3ae
+[ 	]+[0-9a-f]+:[ 	]+3ae59073[ 	]+csrw[ 	]+0x3ae,a1
+[ 	]+[0-9a-f]+:[ 	]+3af02573[ 	]+csrr[ 	]+a0,0x3af
+[ 	]+[0-9a-f]+:[ 	]+3af59073[ 	]+csrw[ 	]+0x3af,a1
 [ 	]+[0-9a-f]+:[ 	]+3b002573[ 	]+csrr[ 	]+a0,0x3b0
 [ 	]+[0-9a-f]+:[ 	]+3b059073[ 	]+csrw[ 	]+0x3b0,a1
 [ 	]+[0-9a-f]+:[ 	]+3b102573[ 	]+csrr[ 	]+a0,0x3b1
@@ -249,6 +291,102 @@ Disassembly of section .text:
 [ 	]+[0-9a-f]+:[ 	]+3be59073[ 	]+csrw[ 	]+0x3be,a1
 [ 	]+[0-9a-f]+:[ 	]+3bf02573[ 	]+csrr[ 	]+a0,0x3bf
 [ 	]+[0-9a-f]+:[ 	]+3bf59073[ 	]+csrw[ 	]+0x3bf,a1
+[ 	]+[0-9a-f]+:[ 	]+3c002573[ 	]+csrr[ 	]+a0,0x3c0
+[ 	]+[0-9a-f]+:[ 	]+3c059073[ 	]+csrw[ 	]+0x3c0,a1
+[ 	]+[0-9a-f]+:[ 	]+3c102573[ 	]+csrr[ 	]+a0,0x3c1
+[ 	]+[0-9a-f]+:[ 	]+3c159073[ 	]+csrw[ 	]+0x3c1,a1
+[ 	]+[0-9a-f]+:[ 	]+3c202573[ 	]+csrr[ 	]+a0,0x3c2
+[ 	]+[0-9a-f]+:[ 	]+3c259073[ 	]+csrw[ 	]+0x3c2,a1
+[ 	]+[0-9a-f]+:[ 	]+3c302573[ 	]+csrr[ 	]+a0,0x3c3
+[ 	]+[0-9a-f]+:[ 	]+3c359073[ 	]+csrw[ 	]+0x3c3,a1
+[ 	]+[0-9a-f]+:[ 	]+3c402573[ 	]+csrr[ 	]+a0,0x3c4
+[ 	]+[0-9a-f]+:[ 	]+3c459073[ 	]+csrw[ 	]+0x3c4,a1
+[ 	]+[0-9a-f]+:[ 	]+3c502573[ 	]+csrr[ 	]+a0,0x3c5
+[ 	]+[0-9a-f]+:[ 	]+3c559073[ 	]+csrw[ 	]+0x3c5,a1
+[ 	]+[0-9a-f]+:[ 	]+3c602573[ 	]+csrr[ 	]+a0,0x3c6
+[ 	]+[0-9a-f]+:[ 	]+3c659073[ 	]+csrw[ 	]+0x3c6,a1
+[ 	]+[0-9a-f]+:[ 	]+3c702573[ 	]+csrr[ 	]+a0,0x3c7
+[ 	]+[0-9a-f]+:[ 	]+3c759073[ 	]+csrw[ 	]+0x3c7,a1
+[ 	]+[0-9a-f]+:[ 	]+3c802573[ 	]+csrr[ 	]+a0,0x3c8
+[ 	]+[0-9a-f]+:[ 	]+3c859073[ 	]+csrw[ 	]+0x3c8,a1
+[ 	]+[0-9a-f]+:[ 	]+3c902573[ 	]+csrr[ 	]+a0,0x3c9
+[ 	]+[0-9a-f]+:[ 	]+3c959073[ 	]+csrw[ 	]+0x3c9,a1
+[ 	]+[0-9a-f]+:[ 	]+3ca02573[ 	]+csrr[ 	]+a0,0x3ca
+[ 	]+[0-9a-f]+:[ 	]+3ca59073[ 	]+csrw[ 	]+0x3ca,a1
+[ 	]+[0-9a-f]+:[ 	]+3cb02573[ 	]+csrr[ 	]+a0,0x3cb
+[ 	]+[0-9a-f]+:[ 	]+3cb59073[ 	]+csrw[ 	]+0x3cb,a1
+[ 	]+[0-9a-f]+:[ 	]+3cc02573[ 	]+csrr[ 	]+a0,0x3cc
+[ 	]+[0-9a-f]+:[ 	]+3cc59073[ 	]+csrw[ 	]+0x3cc,a1
+[ 	]+[0-9a-f]+:[ 	]+3cd02573[ 	]+csrr[ 	]+a0,0x3cd
+[ 	]+[0-9a-f]+:[ 	]+3cd59073[ 	]+csrw[ 	]+0x3cd,a1
+[ 	]+[0-9a-f]+:[ 	]+3ce02573[ 	]+csrr[ 	]+a0,0x3ce
+[ 	]+[0-9a-f]+:[ 	]+3ce59073[ 	]+csrw[ 	]+0x3ce,a1
+[ 	]+[0-9a-f]+:[ 	]+3cf02573[ 	]+csrr[ 	]+a0,0x3cf
+[ 	]+[0-9a-f]+:[ 	]+3cf59073[ 	]+csrw[ 	]+0x3cf,a1
+[ 	]+[0-9a-f]+:[ 	]+3d002573[ 	]+csrr[ 	]+a0,0x3d0
+[ 	]+[0-9a-f]+:[ 	]+3d059073[ 	]+csrw[ 	]+0x3d0,a1
+[ 	]+[0-9a-f]+:[ 	]+3d102573[ 	]+csrr[ 	]+a0,0x3d1
+[ 	]+[0-9a-f]+:[ 	]+3d159073[ 	]+csrw[ 	]+0x3d1,a1
+[ 	]+[0-9a-f]+:[ 	]+3d202573[ 	]+csrr[ 	]+a0,0x3d2
+[ 	]+[0-9a-f]+:[ 	]+3d259073[ 	]+csrw[ 	]+0x3d2,a1
+[ 	]+[0-9a-f]+:[ 	]+3d302573[ 	]+csrr[ 	]+a0,0x3d3
+[ 	]+[0-9a-f]+:[ 	]+3d359073[ 	]+csrw[ 	]+0x3d3,a1
+[ 	]+[0-9a-f]+:[ 	]+3d402573[ 	]+csrr[ 	]+a0,0x3d4
+[ 	]+[0-9a-f]+:[ 	]+3d459073[ 	]+csrw[ 	]+0x3d4,a1
+[ 	]+[0-9a-f]+:[ 	]+3d502573[ 	]+csrr[ 	]+a0,0x3d5
+[ 	]+[0-9a-f]+:[ 	]+3d559073[ 	]+csrw[ 	]+0x3d5,a1
+[ 	]+[0-9a-f]+:[ 	]+3d602573[ 	]+csrr[ 	]+a0,0x3d6
+[ 	]+[0-9a-f]+:[ 	]+3d659073[ 	]+csrw[ 	]+0x3d6,a1
+[ 	]+[0-9a-f]+:[ 	]+3d702573[ 	]+csrr[ 	]+a0,0x3d7
+[ 	]+[0-9a-f]+:[ 	]+3d759073[ 	]+csrw[ 	]+0x3d7,a1
+[ 	]+[0-9a-f]+:[ 	]+3d802573[ 	]+csrr[ 	]+a0,0x3d8
+[ 	]+[0-9a-f]+:[ 	]+3d859073[ 	]+csrw[ 	]+0x3d8,a1
+[ 	]+[0-9a-f]+:[ 	]+3d902573[ 	]+csrr[ 	]+a0,0x3d9
+[ 	]+[0-9a-f]+:[ 	]+3d959073[ 	]+csrw[ 	]+0x3d9,a1
+[ 	]+[0-9a-f]+:[ 	]+3da02573[ 	]+csrr[ 	]+a0,0x3da
+[ 	]+[0-9a-f]+:[ 	]+3da59073[ 	]+csrw[ 	]+0x3da,a1
+[ 	]+[0-9a-f]+:[ 	]+3db02573[ 	]+csrr[ 	]+a0,0x3db
+[ 	]+[0-9a-f]+:[ 	]+3db59073[ 	]+csrw[ 	]+0x3db,a1
+[ 	]+[0-9a-f]+:[ 	]+3dc02573[ 	]+csrr[ 	]+a0,0x3dc
+[ 	]+[0-9a-f]+:[ 	]+3dc59073[ 	]+csrw[ 	]+0x3dc,a1
+[ 	]+[0-9a-f]+:[ 	]+3dd02573[ 	]+csrr[ 	]+a0,0x3dd
+[ 	]+[0-9a-f]+:[ 	]+3dd59073[ 	]+csrw[ 	]+0x3dd,a1
+[ 	]+[0-9a-f]+:[ 	]+3de02573[ 	]+csrr[ 	]+a0,0x3de
+[ 	]+[0-9a-f]+:[ 	]+3de59073[ 	]+csrw[ 	]+0x3de,a1
+[ 	]+[0-9a-f]+:[ 	]+3df02573[ 	]+csrr[ 	]+a0,0x3df
+[ 	]+[0-9a-f]+:[ 	]+3df59073[ 	]+csrw[ 	]+0x3df,a1
+[ 	]+[0-9a-f]+:[ 	]+3e002573[ 	]+csrr[ 	]+a0,0x3e0
+[ 	]+[0-9a-f]+:[ 	]+3e059073[ 	]+csrw[ 	]+0x3e0,a1
+[ 	]+[0-9a-f]+:[ 	]+3e102573[ 	]+csrr[ 	]+a0,0x3e1
+[ 	]+[0-9a-f]+:[ 	]+3e159073[ 	]+csrw[ 	]+0x3e1,a1
+[ 	]+[0-9a-f]+:[ 	]+3e202573[ 	]+csrr[ 	]+a0,0x3e2
+[ 	]+[0-9a-f]+:[ 	]+3e259073[ 	]+csrw[ 	]+0x3e2,a1
+[ 	]+[0-9a-f]+:[ 	]+3e302573[ 	]+csrr[ 	]+a0,0x3e3
+[ 	]+[0-9a-f]+:[ 	]+3e359073[ 	]+csrw[ 	]+0x3e3,a1
+[ 	]+[0-9a-f]+:[ 	]+3e402573[ 	]+csrr[ 	]+a0,0x3e4
+[ 	]+[0-9a-f]+:[ 	]+3e459073[ 	]+csrw[ 	]+0x3e4,a1
+[ 	]+[0-9a-f]+:[ 	]+3e502573[ 	]+csrr[ 	]+a0,0x3e5
+[ 	]+[0-9a-f]+:[ 	]+3e559073[ 	]+csrw[ 	]+0x3e5,a1
+[ 	]+[0-9a-f]+:[ 	]+3e602573[ 	]+csrr[ 	]+a0,0x3e6
+[ 	]+[0-9a-f]+:[ 	]+3e659073[ 	]+csrw[ 	]+0x3e6,a1
+[ 	]+[0-9a-f]+:[ 	]+3e702573[ 	]+csrr[ 	]+a0,0x3e7
+[ 	]+[0-9a-f]+:[ 	]+3e759073[ 	]+csrw[ 	]+0x3e7,a1
+[ 	]+[0-9a-f]+:[ 	]+3e802573[ 	]+csrr[ 	]+a0,0x3e8
+[ 	]+[0-9a-f]+:[ 	]+3e859073[ 	]+csrw[ 	]+0x3e8,a1
+[ 	]+[0-9a-f]+:[ 	]+3e902573[ 	]+csrr[ 	]+a0,0x3e9
+[ 	]+[0-9a-f]+:[ 	]+3e959073[ 	]+csrw[ 	]+0x3e9,a1
+[ 	]+[0-9a-f]+:[ 	]+3ea02573[ 	]+csrr[ 	]+a0,0x3ea
+[ 	]+[0-9a-f]+:[ 	]+3ea59073[ 	]+csrw[ 	]+0x3ea,a1
+[ 	]+[0-9a-f]+:[ 	]+3eb02573[ 	]+csrr[ 	]+a0,0x3eb
+[ 	]+[0-9a-f]+:[ 	]+3eb59073[ 	]+csrw[ 	]+0x3eb,a1
+[ 	]+[0-9a-f]+:[ 	]+3ec02573[ 	]+csrr[ 	]+a0,0x3ec
+[ 	]+[0-9a-f]+:[ 	]+3ec59073[ 	]+csrw[ 	]+0x3ec,a1
+[ 	]+[0-9a-f]+:[ 	]+3ed02573[ 	]+csrr[ 	]+a0,0x3ed
+[ 	]+[0-9a-f]+:[ 	]+3ed59073[ 	]+csrw[ 	]+0x3ed,a1
+[ 	]+[0-9a-f]+:[ 	]+3ee02573[ 	]+csrr[ 	]+a0,0x3ee
+[ 	]+[0-9a-f]+:[ 	]+3ee59073[ 	]+csrw[ 	]+0x3ee,a1
+[ 	]+[0-9a-f]+:[ 	]+3ef02573[ 	]+csrr[ 	]+a0,0x3ef
+[ 	]+[0-9a-f]+:[ 	]+3ef59073[ 	]+csrw[ 	]+0x3ef,a1
 [ 	]+[0-9a-f]+:[ 	]+b0002573[ 	]+csrr[ 	]+a0,mcycle
 [ 	]+[0-9a-f]+:[ 	]+b0059073[ 	]+csrw[ 	]+mcycle,a1
 [ 	]+[0-9a-f]+:[ 	]+b0202573[ 	]+csrr[ 	]+a0,minstret
diff --git a/gas/testsuite/gas/riscv/csr-version-1p9p1.l b/gas/testsuite/gas/riscv/csr-version-1p9p1.l
index 00d46f509de..ca50442bc7a 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p9p1.l
+++ b/gas/testsuite/gas/riscv/csr-version-1p9p1.l
@@ -131,6 +131,8 @@
 .*Warning: read-only CSR is written `csrw hpmcounter31h,a1'
 .*Warning: invalid CSR `scounteren' for the privileged spec `1.9.1'
 .*Warning: invalid CSR `scounteren' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `senvcfg' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `senvcfg' for the privileged spec `1.9.1'
 .*Warning: invalid CSR `stval' for the privileged spec `1.9.1'
 .*Warning: invalid CSR `stval' for the privileged spec `1.9.1'
 .*Warning: invalid CSR `satp' for the privileged spec `1.9.1'
@@ -139,10 +141,33 @@
 .*Warning: read-only CSR is written `csrw marchid,a1'
 .*Warning: read-only CSR is written `csrw mimpid,a1'
 .*Warning: read-only CSR is written `csrw mhartid,a1'
+.*Warning: invalid CSR `mconfigptr' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mconfigptr' for the privileged spec `1.9.1'
+.*Warning: read-only CSR is written `csrw mconfigptr,a1'
 .*Warning: invalid CSR `mcounteren' for the privileged spec `1.9.1'
 .*Warning: invalid CSR `mcounteren' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `menvcfg' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `menvcfg' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mstatush' for the current ISA
+.*Warning: invalid CSR `mstatush' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mstatush' for the current ISA
+.*Warning: invalid CSR `mstatush' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `menvcfgh' for the current ISA
+.*Warning: invalid CSR `menvcfgh' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `menvcfgh' for the current ISA
+.*Warning: invalid CSR `menvcfgh' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mseccfg' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mseccfg' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mseccfgh' for the current ISA
+.*Warning: invalid CSR `mseccfgh' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mseccfgh' for the current ISA
+.*Warning: invalid CSR `mseccfgh' for the privileged spec `1.9.1'
 .*Warning: invalid CSR `mtval' for the privileged spec `1.9.1'
 .*Warning: invalid CSR `mtval' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mtinst' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mtinst' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mtval2' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mtval2' for the privileged spec `1.9.1'
 .*Warning: invalid CSR `pmpcfg0' for the privileged spec `1.9.1'
 .*Warning: invalid CSR `pmpcfg0' for the privileged spec `1.9.1'
 .*Warning: invalid CSR `pmpcfg1' for the current ISA
@@ -155,6 +180,42 @@
 .*Warning: invalid CSR `pmpcfg3' for the privileged spec `1.9.1'
 .*Warning: invalid CSR `pmpcfg3' for the current ISA
 .*Warning: invalid CSR `pmpcfg3' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpcfg4' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpcfg4' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpcfg5' for the current ISA
+.*Warning: invalid CSR `pmpcfg5' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpcfg5' for the current ISA
+.*Warning: invalid CSR `pmpcfg5' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpcfg6' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpcfg6' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpcfg7' for the current ISA
+.*Warning: invalid CSR `pmpcfg7' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpcfg7' for the current ISA
+.*Warning: invalid CSR `pmpcfg7' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpcfg8' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpcfg8' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpcfg9' for the current ISA
+.*Warning: invalid CSR `pmpcfg9' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpcfg9' for the current ISA
+.*Warning: invalid CSR `pmpcfg9' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpcfg10' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpcfg10' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpcfg11' for the current ISA
+.*Warning: invalid CSR `pmpcfg11' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpcfg11' for the current ISA
+.*Warning: invalid CSR `pmpcfg11' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpcfg12' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpcfg12' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpcfg13' for the current ISA
+.*Warning: invalid CSR `pmpcfg13' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpcfg13' for the current ISA
+.*Warning: invalid CSR `pmpcfg13' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpcfg14' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpcfg14' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpcfg15' for the current ISA
+.*Warning: invalid CSR `pmpcfg15' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpcfg15' for the current ISA
+.*Warning: invalid CSR `pmpcfg15' for the privileged spec `1.9.1'
 .*Warning: invalid CSR `pmpaddr0' for the privileged spec `1.9.1'
 .*Warning: invalid CSR `pmpaddr0' for the privileged spec `1.9.1'
 .*Warning: invalid CSR `pmpaddr1' for the privileged spec `1.9.1'
@@ -187,6 +248,102 @@
 .*Warning: invalid CSR `pmpaddr14' for the privileged spec `1.9.1'
 .*Warning: invalid CSR `pmpaddr15' for the privileged spec `1.9.1'
 .*Warning: invalid CSR `pmpaddr15' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpaddr16' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpaddr16' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpaddr17' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpaddr17' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpaddr18' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpaddr18' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpaddr19' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpaddr19' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpaddr20' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpaddr20' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpaddr21' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpaddr21' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpaddr22' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpaddr22' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpaddr23' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpaddr23' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpaddr24' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpaddr24' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpaddr25' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpaddr25' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpaddr26' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpaddr26' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpaddr27' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpaddr27' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpaddr28' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpaddr28' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpaddr29' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpaddr29' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpaddr30' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpaddr30' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpaddr31' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpaddr31' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpaddr32' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpaddr32' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpaddr33' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpaddr33' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpaddr34' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpaddr34' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpaddr35' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpaddr35' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpaddr36' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpaddr36' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpaddr37' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpaddr37' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpaddr38' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpaddr38' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpaddr39' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpaddr39' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpaddr40' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpaddr40' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpaddr41' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpaddr41' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpaddr42' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpaddr42' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpaddr43' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpaddr43' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpaddr44' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpaddr44' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpaddr45' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpaddr45' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpaddr46' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpaddr46' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpaddr47' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpaddr47' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpaddr48' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpaddr48' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpaddr49' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpaddr49' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpaddr50' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpaddr50' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpaddr51' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpaddr51' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpaddr52' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpaddr52' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpaddr53' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpaddr53' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpaddr54' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpaddr54' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpaddr55' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpaddr55' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpaddr56' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpaddr56' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpaddr57' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpaddr57' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpaddr58' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpaddr58' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpaddr59' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpaddr59' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpaddr60' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpaddr60' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpaddr61' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpaddr61' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpaddr62' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpaddr62' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpaddr63' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `pmpaddr63' for the privileged spec `1.9.1'
 .*Warning: invalid CSR `mcycleh' for the current ISA
 .*Warning: invalid CSR `mcycleh' for the current ISA
 .*Warning: invalid CSR `minstreth' for the current ISA
diff --git a/gas/testsuite/gas/riscv/csr.s b/gas/testsuite/gas/riscv/csr.s
index 568328d70d9..cbb0e23991b 100644
--- a/gas/testsuite/gas/riscv/csr.s
+++ b/gas/testsuite/gas/riscv/csr.s
@@ -90,6 +90,7 @@
 	csr sie
 	csr stvec
 	csr scounteren		# Added in 1.10
+	csr senvcfg		# Added in 1.12
 
 	# Supervisor Trap Handling
 	csr sscratch
@@ -106,6 +107,7 @@
 	csr marchid
 	csr mimpid
 	csr mhartid
+	csr mconfigptr		# Added in 1.12
 
 	# Machine Trap Setup
 	csr mstatus
@@ -115,6 +117,11 @@
 	csr mie
 	csr mtvec
 	csr mcounteren		# Added in 1.10
+	csr menvcfg		# Added in 1.12
+	csr mstatush		# Added in 1.12
+	csr menvcfgh		# Added in 1.12
+	csr mseccfg		# Added in 1.12
+	csr mseccfgh		# Added in 1.12
 
 	# Machine Trap Handling
 	csr mscratch
@@ -122,12 +129,26 @@
 	csr mcause
 	csr mtval		# Added in 1.10
 	csr mip
+	csr mtinst		# Added in 1.12
+	csr mtval2		# Added in 1.12
 
 	# Machine Memory Protection
 	csr pmpcfg0		# Added in 1.10
 	csr pmpcfg1		# Added in 1.10
 	csr pmpcfg2		# Added in 1.10
 	csr pmpcfg3		# Added in 1.10
+	csr pmpcfg4		# Added in 1.12
+	csr pmpcfg5		# Added in 1.12
+	csr pmpcfg6		# Added in 1.12
+	csr pmpcfg7		# Added in 1.12
+	csr pmpcfg8		# Added in 1.12
+	csr pmpcfg9		# Added in 1.12
+	csr pmpcfg10		# Added in 1.12
+	csr pmpcfg11		# Added in 1.12
+	csr pmpcfg12		# Added in 1.12
+	csr pmpcfg13		# Added in 1.12
+	csr pmpcfg14		# Added in 1.12
+	csr pmpcfg15		# Added in 1.12
 	csr pmpaddr0		# Added in 1.10
 	csr pmpaddr1		# Added in 1.10
 	csr pmpaddr2		# Added in 1.10
@@ -144,6 +165,54 @@
 	csr pmpaddr13		# Added in 1.10
 	csr pmpaddr14		# Added in 1.10
 	csr pmpaddr15		# Added in 1.10
+	csr pmpaddr16		# Added in 1.12
+	csr pmpaddr17		# Added in 1.12
+	csr pmpaddr18		# Added in 1.12
+	csr pmpaddr19		# Added in 1.12
+	csr pmpaddr20		# Added in 1.12
+	csr pmpaddr21		# Added in 1.12
+	csr pmpaddr22		# Added in 1.12
+	csr pmpaddr23		# Added in 1.12
+	csr pmpaddr24		# Added in 1.12
+	csr pmpaddr25		# Added in 1.12
+	csr pmpaddr26		# Added in 1.12
+	csr pmpaddr27		# Added in 1.12
+	csr pmpaddr28		# Added in 1.12
+	csr pmpaddr29		# Added in 1.12
+	csr pmpaddr30		# Added in 1.12
+	csr pmpaddr31		# Added in 1.12
+	csr pmpaddr32		# Added in 1.12
+	csr pmpaddr33		# Added in 1.12
+	csr pmpaddr34		# Added in 1.12
+	csr pmpaddr35		# Added in 1.12
+	csr pmpaddr36		# Added in 1.12
+	csr pmpaddr37		# Added in 1.12
+	csr pmpaddr38		# Added in 1.12
+	csr pmpaddr39		# Added in 1.12
+	csr pmpaddr40		# Added in 1.12
+	csr pmpaddr41		# Added in 1.12
+	csr pmpaddr42		# Added in 1.12
+	csr pmpaddr43		# Added in 1.12
+	csr pmpaddr44		# Added in 1.12
+	csr pmpaddr45		# Added in 1.12
+	csr pmpaddr46		# Added in 1.12
+	csr pmpaddr47		# Added in 1.12
+	csr pmpaddr48		# Added in 1.12
+	csr pmpaddr49		# Added in 1.12
+	csr pmpaddr50		# Added in 1.12
+	csr pmpaddr51		# Added in 1.12
+	csr pmpaddr52		# Added in 1.12
+	csr pmpaddr53		# Added in 1.12
+	csr pmpaddr54		# Added in 1.12
+	csr pmpaddr55		# Added in 1.12
+	csr pmpaddr56		# Added in 1.12
+	csr pmpaddr57		# Added in 1.12
+	csr pmpaddr58		# Added in 1.12
+	csr pmpaddr59		# Added in 1.12
+	csr pmpaddr60		# Added in 1.12
+	csr pmpaddr61		# Added in 1.12
+	csr pmpaddr62		# Added in 1.12
+	csr pmpaddr63		# Added in 1.12
 
 	# Machine Counter/Timer
 	csr mcycle
-- 
2.32.0


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

* [PATCH 4/6] RISC-V: Add 'Smstateen' extension and its CSRs
  2022-01-11 10:59 [PATCH 0/6] RISC-V: Add Privileged Arch 1.12 and More CSRs Tsukasa OI
                   ` (2 preceding siblings ...)
  2022-01-11 10:59 ` [PATCH 3/6] RISC-V: Add Privileged Arch 1.12 CSR testcases Tsukasa OI
@ 2022-01-11 10:59 ` Tsukasa OI
  2022-01-11 10:59 ` [PATCH 5/6] RISC-V: Add 'Sscofpmf' extension with " Tsukasa OI
                   ` (2 subsequent siblings)
  6 siblings, 0 replies; 32+ messages in thread
From: Tsukasa OI @ 2022-01-11 10:59 UTC (permalink / raw)
  To: Tsukasa OI; +Cc: binutils

This commit adds State Enable Extension (Smstateen) and its CSRs.

bfd/ChangeLog:

	* elfxx-riscv.c (riscv_supported_std_s_ext): Add 'Smstateen'
	extension to valid 'S' extension list.

gas/ChangeLog:

	* config/tc-riscv.c (enum riscv_csr_class): Add CSR classes for
	'Smstateen' extension. (riscv_csr_address): Add handling for
	new CSR classes.
	* testsuite/gas/riscv/csr-dw-regnums.s: Add new CSRs.
	* testsuite/gas/riscv/csr-dw-regnums.d: 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_MSTATEEN0, CSR_MSTATEEN1,
	CSR_MSTATEEN2, CSR_MSTATEEN3, CSR_SSTATEEN0, CSR_SSTATEEN1,
	CSR_SSTATEEN2, CSR_SSTATEEN3, CSR_HSTATEEN0, CSR_HSTATEEN1,
	CSR_HSTATEEN2, CSR_HSTATEEN3, CSR_MSTATEEN0H, CSR_MSTATEEN1H,
	CSR_MSTATEEN2H, CSR_MSTATEEN3H, CSR_HSTATEEN0H, CSR_HSTATEEN1H,
	CSR_HSTATEEN2H, CSR_HSTATEEN3H): New CSR macros.
---
 bfd/elfxx-riscv.c                           |  1 +
 gas/config/tc-riscv.c                       |  8 +++
 gas/testsuite/gas/riscv/csr-dw-regnums.d    | 20 ++++++++
 gas/testsuite/gas/riscv/csr-dw-regnums.s    | 21 ++++++++
 gas/testsuite/gas/riscv/csr-version-1p10.d  | 40 +++++++++++++++
 gas/testsuite/gas/riscv/csr-version-1p10.l  | 56 +++++++++++++++++++++
 gas/testsuite/gas/riscv/csr-version-1p11.d  | 40 +++++++++++++++
 gas/testsuite/gas/riscv/csr-version-1p11.l  | 56 +++++++++++++++++++++
 gas/testsuite/gas/riscv/csr-version-1p12.d  | 40 +++++++++++++++
 gas/testsuite/gas/riscv/csr-version-1p12.l  | 40 +++++++++++++++
 gas/testsuite/gas/riscv/csr-version-1p9p1.d | 40 +++++++++++++++
 gas/testsuite/gas/riscv/csr-version-1p9p1.l | 56 +++++++++++++++++++++
 gas/testsuite/gas/riscv/csr.s               | 22 ++++++++
 include/opcode/riscv-opc.h                  | 42 ++++++++++++++++
 14 files changed, 482 insertions(+)

diff --git a/bfd/elfxx-riscv.c b/bfd/elfxx-riscv.c
index 9f52bb545ac..99cce0f113b 100644
--- a/bfd/elfxx-riscv.c
+++ b/bfd/elfxx-riscv.c
@@ -1227,6 +1227,7 @@ static struct riscv_supported_ext riscv_supported_std_z_ext[] =
 
 static struct riscv_supported_ext riscv_supported_std_s_ext[] =
 {
+  {"smstateen",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
   {"svinval",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
   {NULL, 0, 0, 0, 0}
 };
diff --git a/gas/config/tc-riscv.c b/gas/config/tc-riscv.c
index 390aaf1710b..832823ad083 100644
--- a/gas/config/tc-riscv.c
+++ b/gas/config/tc-riscv.c
@@ -65,6 +65,8 @@ enum riscv_csr_class
   CSR_CLASS_F,		/* f-ext only */
   CSR_CLASS_ZKR,	/* zkr only */
   CSR_CLASS_V,		/* rvv only */
+  CSR_CLASS_SMSTATEEN,		/* Smstateen only */
+  CSR_CLASS_SMSTATEEN_32,	/* Smstateen RV32 only */
   CSR_CLASS_DEBUG	/* debug CSR */
 };
 
@@ -905,6 +907,12 @@ riscv_csr_address (const char *csr_name,
       result = riscv_subset_supports (&riscv_rps_as, "v");
       need_check_version = false;
       break;
+    case CSR_CLASS_SMSTATEEN:
+      result = riscv_subset_supports (&riscv_rps_as, "smstateen");
+      break;
+    case CSR_CLASS_SMSTATEEN_32:
+      result = (xlen == 32 && riscv_subset_supports (&riscv_rps_as, "smstateen"));
+      break;
     case CSR_CLASS_DEBUG:
       need_check_version = false;
       break;
diff --git a/gas/testsuite/gas/riscv/csr-dw-regnums.d b/gas/testsuite/gas/riscv/csr-dw-regnums.d
index e4bb865ed3f..e4181a9274d 100644
--- a/gas/testsuite/gas/riscv/csr-dw-regnums.d
+++ b/gas/testsuite/gas/riscv/csr-dw-regnums.d
@@ -324,6 +324,26 @@ Contents of the .* section:
   DW_CFA_offset_extended_sf: r4675 \(vstval\) at cfa\+2316
   DW_CFA_offset_extended_sf: r4676 \(vsip\) at cfa\+2320
   DW_CFA_offset_extended_sf: r4736 \(vsatp\) at cfa\+2560
+  DW_CFA_offset_extended_sf: r4876 \(mstateen0\) at cfa\+3120
+  DW_CFA_offset_extended_sf: r4877 \(mstateen1\) at cfa\+3124
+  DW_CFA_offset_extended_sf: r4878 \(mstateen2\) at cfa\+3128
+  DW_CFA_offset_extended_sf: r4879 \(mstateen3\) at cfa\+3132
+  DW_CFA_offset_extended_sf: r4364 \(sstateen0\) at cfa\+1072
+  DW_CFA_offset_extended_sf: r4365 \(sstateen1\) at cfa\+1076
+  DW_CFA_offset_extended_sf: r4366 \(sstateen2\) at cfa\+1080
+  DW_CFA_offset_extended_sf: r4367 \(sstateen3\) at cfa\+1084
+  DW_CFA_offset_extended_sf: r5644 \(hstateen0\) at cfa\+6192
+  DW_CFA_offset_extended_sf: r5645 \(hstateen1\) at cfa\+6196
+  DW_CFA_offset_extended_sf: r5646 \(hstateen2\) at cfa\+6200
+  DW_CFA_offset_extended_sf: r5647 \(hstateen3\) at cfa\+6204
+  DW_CFA_offset_extended_sf: r4892 \(mstateen0h\) at cfa\+3184
+  DW_CFA_offset_extended_sf: r4893 \(mstateen1h\) at cfa\+3188
+  DW_CFA_offset_extended_sf: r4894 \(mstateen2h\) at cfa\+3192
+  DW_CFA_offset_extended_sf: r4895 \(mstateen3h\) at cfa\+3196
+  DW_CFA_offset_extended_sf: r5660 \(hstateen0h\) at cfa\+6256
+  DW_CFA_offset_extended_sf: r5661 \(hstateen1h\) at cfa\+6260
+  DW_CFA_offset_extended_sf: r5662 \(hstateen2h\) at cfa\+6264
+  DW_CFA_offset_extended_sf: r5663 \(hstateen3h\) at cfa\+6268
   DW_CFA_offset_extended_sf: r4163 \(utval\) at cfa\+268
   DW_CFA_offset_extended_sf: r4419 \(stval\) at cfa\+1292
   DW_CFA_offset_extended_sf: r4480 \(satp\) at cfa\+1536
diff --git a/gas/testsuite/gas/riscv/csr-dw-regnums.s b/gas/testsuite/gas/riscv/csr-dw-regnums.s
index 34635d9c04f..936c6f8bf18 100644
--- a/gas/testsuite/gas/riscv/csr-dw-regnums.s
+++ b/gas/testsuite/gas/riscv/csr-dw-regnums.s
@@ -315,6 +315,27 @@ _start:
 	.cfi_offset vstval, 2316
 	.cfi_offset vsip, 2320
 	.cfi_offset vsatp, 2560
+	# Smstateen extension
+	.cfi_offset mstateen0, 3120
+	.cfi_offset mstateen1, 3124
+	.cfi_offset mstateen2, 3128
+	.cfi_offset mstateen3, 3132
+	.cfi_offset sstateen0, 1072
+	.cfi_offset sstateen1, 1076
+	.cfi_offset sstateen2, 1080
+	.cfi_offset sstateen3, 1084
+	.cfi_offset hstateen0, 6192
+	.cfi_offset hstateen1, 6196
+	.cfi_offset hstateen2, 6200
+	.cfi_offset hstateen3, 6204
+	.cfi_offset mstateen0h, 3184
+	.cfi_offset mstateen1h, 3188
+	.cfi_offset mstateen2h, 3192
+	.cfi_offset mstateen3h, 3196
+	.cfi_offset hstateen0h, 6256
+	.cfi_offset hstateen1h, 6260
+	.cfi_offset hstateen2h, 6264
+	.cfi_offset hstateen3h, 6268
 	# dropped aliases
 	.cfi_offset ubadaddr, 268
 	.cfi_offset sbadaddr, 1292
diff --git a/gas/testsuite/gas/riscv/csr-version-1p10.d b/gas/testsuite/gas/riscv/csr-version-1p10.d
index ef4cb65f195..884904ed632 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p10.d
+++ b/gas/testsuite/gas/riscv/csr-version-1p10.d
@@ -623,6 +623,46 @@ Disassembly of section .text:
 [ 	]+[0-9a-f]+:[ 	]+24459073[ 	]+csrw[ 	]+0x244,a1
 [ 	]+[0-9a-f]+:[ 	]+28002573[ 	]+csrr[ 	]+a0,0x280
 [ 	]+[0-9a-f]+:[ 	]+28059073[ 	]+csrw[ 	]+0x280,a1
+[ 	]+[0-9a-f]+:[ 	]+30c02573[ 	]+csrr[ 	]+a0,mstateen0
+[ 	]+[0-9a-f]+:[ 	]+30c59073[ 	]+csrw[ 	]+mstateen0,a1
+[ 	]+[0-9a-f]+:[ 	]+30d02573[ 	]+csrr[ 	]+a0,mstateen1
+[ 	]+[0-9a-f]+:[ 	]+30d59073[ 	]+csrw[ 	]+mstateen1,a1
+[ 	]+[0-9a-f]+:[ 	]+30e02573[ 	]+csrr[ 	]+a0,mstateen2
+[ 	]+[0-9a-f]+:[ 	]+30e59073[ 	]+csrw[ 	]+mstateen2,a1
+[ 	]+[0-9a-f]+:[ 	]+30f02573[ 	]+csrr[ 	]+a0,mstateen3
+[ 	]+[0-9a-f]+:[ 	]+30f59073[ 	]+csrw[ 	]+mstateen3,a1
+[ 	]+[0-9a-f]+:[ 	]+10c02573[ 	]+csrr[ 	]+a0,sstateen0
+[ 	]+[0-9a-f]+:[ 	]+10c59073[ 	]+csrw[ 	]+sstateen0,a1
+[ 	]+[0-9a-f]+:[ 	]+10d02573[ 	]+csrr[ 	]+a0,sstateen1
+[ 	]+[0-9a-f]+:[ 	]+10d59073[ 	]+csrw[ 	]+sstateen1,a1
+[ 	]+[0-9a-f]+:[ 	]+10e02573[ 	]+csrr[ 	]+a0,sstateen2
+[ 	]+[0-9a-f]+:[ 	]+10e59073[ 	]+csrw[ 	]+sstateen2,a1
+[ 	]+[0-9a-f]+:[ 	]+10f02573[ 	]+csrr[ 	]+a0,sstateen3
+[ 	]+[0-9a-f]+:[ 	]+10f59073[ 	]+csrw[ 	]+sstateen3,a1
+[ 	]+[0-9a-f]+:[ 	]+60c02573[ 	]+csrr[ 	]+a0,0x60c
+[ 	]+[0-9a-f]+:[ 	]+60c59073[ 	]+csrw[ 	]+0x60c,a1
+[ 	]+[0-9a-f]+:[ 	]+60d02573[ 	]+csrr[ 	]+a0,0x60d
+[ 	]+[0-9a-f]+:[ 	]+60d59073[ 	]+csrw[ 	]+0x60d,a1
+[ 	]+[0-9a-f]+:[ 	]+60e02573[ 	]+csrr[ 	]+a0,0x60e
+[ 	]+[0-9a-f]+:[ 	]+60e59073[ 	]+csrw[ 	]+0x60e,a1
+[ 	]+[0-9a-f]+:[ 	]+60f02573[ 	]+csrr[ 	]+a0,0x60f
+[ 	]+[0-9a-f]+:[ 	]+60f59073[ 	]+csrw[ 	]+0x60f,a1
+[ 	]+[0-9a-f]+:[ 	]+31c02573[ 	]+csrr[ 	]+a0,mstateen0h
+[ 	]+[0-9a-f]+:[ 	]+31c59073[ 	]+csrw[ 	]+mstateen0h,a1
+[ 	]+[0-9a-f]+:[ 	]+31d02573[ 	]+csrr[ 	]+a0,mstateen1h
+[ 	]+[0-9a-f]+:[ 	]+31d59073[ 	]+csrw[ 	]+mstateen1h,a1
+[ 	]+[0-9a-f]+:[ 	]+31e02573[ 	]+csrr[ 	]+a0,mstateen2h
+[ 	]+[0-9a-f]+:[ 	]+31e59073[ 	]+csrw[ 	]+mstateen2h,a1
+[ 	]+[0-9a-f]+:[ 	]+31f02573[ 	]+csrr[ 	]+a0,mstateen3h
+[ 	]+[0-9a-f]+:[ 	]+31f59073[ 	]+csrw[ 	]+mstateen3h,a1
+[ 	]+[0-9a-f]+:[ 	]+61c02573[ 	]+csrr[ 	]+a0,0x61c
+[ 	]+[0-9a-f]+:[ 	]+61c59073[ 	]+csrw[ 	]+0x61c,a1
+[ 	]+[0-9a-f]+:[ 	]+61d02573[ 	]+csrr[ 	]+a0,0x61d
+[ 	]+[0-9a-f]+:[ 	]+61d59073[ 	]+csrw[ 	]+0x61d,a1
+[ 	]+[0-9a-f]+:[ 	]+61e02573[ 	]+csrr[ 	]+a0,0x61e
+[ 	]+[0-9a-f]+:[ 	]+61e59073[ 	]+csrw[ 	]+0x61e,a1
+[ 	]+[0-9a-f]+:[ 	]+61f02573[ 	]+csrr[ 	]+a0,0x61f
+[ 	]+[0-9a-f]+:[ 	]+61f59073[ 	]+csrw[ 	]+0x61f,a1
 [ 	]+[0-9a-f]+:[ 	]+04302573[ 	]+csrr[ 	]+a0,utval
 [ 	]+[0-9a-f]+:[ 	]+04359073[ 	]+csrw[ 	]+utval,a1
 [ 	]+[0-9a-f]+:[ 	]+14302573[ 	]+csrr[ 	]+a0,stval
diff --git a/gas/testsuite/gas/riscv/csr-version-1p10.l b/gas/testsuite/gas/riscv/csr-version-1p10.l
index c0cb2d5d279..e67ec153578 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p10.l
+++ b/gas/testsuite/gas/riscv/csr-version-1p10.l
@@ -413,6 +413,62 @@
 .*Warning: invalid CSR `vsip' for the privileged spec `1.10'
 .*Warning: invalid CSR `vsatp' for the privileged spec `1.10'
 .*Warning: invalid CSR `vsatp' for the privileged spec `1.10'
+.*Warning: invalid CSR `mstateen0' for the current ISA
+.*Warning: invalid CSR `mstateen0' for the current ISA
+.*Warning: invalid CSR `mstateen1' for the current ISA
+.*Warning: invalid CSR `mstateen1' for the current ISA
+.*Warning: invalid CSR `mstateen2' for the current ISA
+.*Warning: invalid CSR `mstateen2' for the current ISA
+.*Warning: invalid CSR `mstateen3' for the current ISA
+.*Warning: invalid CSR `mstateen3' for the current ISA
+.*Warning: invalid CSR `sstateen0' for the current ISA
+.*Warning: invalid CSR `sstateen0' for the current ISA
+.*Warning: invalid CSR `sstateen1' for the current ISA
+.*Warning: invalid CSR `sstateen1' for the current ISA
+.*Warning: invalid CSR `sstateen2' for the current ISA
+.*Warning: invalid CSR `sstateen2' for the current ISA
+.*Warning: invalid CSR `sstateen3' for the current ISA
+.*Warning: invalid CSR `sstateen3' for the current ISA
+.*Warning: invalid CSR `hstateen0' for the current ISA
+.*Warning: invalid CSR `hstateen0' for the privileged spec `1.10'
+.*Warning: invalid CSR `hstateen0' for the current ISA
+.*Warning: invalid CSR `hstateen0' for the privileged spec `1.10'
+.*Warning: invalid CSR `hstateen1' for the current ISA
+.*Warning: invalid CSR `hstateen1' for the privileged spec `1.10'
+.*Warning: invalid CSR `hstateen1' for the current ISA
+.*Warning: invalid CSR `hstateen1' for the privileged spec `1.10'
+.*Warning: invalid CSR `hstateen2' for the current ISA
+.*Warning: invalid CSR `hstateen2' for the privileged spec `1.10'
+.*Warning: invalid CSR `hstateen2' for the current ISA
+.*Warning: invalid CSR `hstateen2' for the privileged spec `1.10'
+.*Warning: invalid CSR `hstateen3' for the current ISA
+.*Warning: invalid CSR `hstateen3' for the privileged spec `1.10'
+.*Warning: invalid CSR `hstateen3' for the current ISA
+.*Warning: invalid CSR `hstateen3' for the privileged spec `1.10'
+.*Warning: invalid CSR `mstateen0h' for the current ISA
+.*Warning: invalid CSR `mstateen0h' for the current ISA
+.*Warning: invalid CSR `mstateen1h' for the current ISA
+.*Warning: invalid CSR `mstateen1h' for the current ISA
+.*Warning: invalid CSR `mstateen2h' for the current ISA
+.*Warning: invalid CSR `mstateen2h' for the current ISA
+.*Warning: invalid CSR `mstateen3h' for the current ISA
+.*Warning: invalid CSR `mstateen3h' for the current ISA
+.*Warning: invalid CSR `hstateen0h' for the current ISA
+.*Warning: invalid CSR `hstateen0h' for the privileged spec `1.10'
+.*Warning: invalid CSR `hstateen0h' for the current ISA
+.*Warning: invalid CSR `hstateen0h' for the privileged spec `1.10'
+.*Warning: invalid CSR `hstateen1h' for the current ISA
+.*Warning: invalid CSR `hstateen1h' for the privileged spec `1.10'
+.*Warning: invalid CSR `hstateen1h' for the current ISA
+.*Warning: invalid CSR `hstateen1h' for the privileged spec `1.10'
+.*Warning: invalid CSR `hstateen2h' for the current ISA
+.*Warning: invalid CSR `hstateen2h' for the privileged spec `1.10'
+.*Warning: invalid CSR `hstateen2h' for the current ISA
+.*Warning: invalid CSR `hstateen2h' for the privileged spec `1.10'
+.*Warning: invalid CSR `hstateen3h' for the current ISA
+.*Warning: invalid CSR `hstateen3h' for the privileged spec `1.10'
+.*Warning: invalid CSR `hstateen3h' for the current ISA
+.*Warning: invalid CSR `hstateen3h' for the privileged spec `1.10'
 .*Warning: invalid CSR `ubadaddr' for the privileged spec `1.10'
 .*Warning: invalid CSR `ubadaddr' for the privileged spec `1.10'
 .*Warning: invalid CSR `sbadaddr' for the privileged spec `1.10'
diff --git a/gas/testsuite/gas/riscv/csr-version-1p11.d b/gas/testsuite/gas/riscv/csr-version-1p11.d
index a8586d96408..c48e7cba2e8 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p11.d
+++ b/gas/testsuite/gas/riscv/csr-version-1p11.d
@@ -623,6 +623,46 @@ Disassembly of section .text:
 [ 	]+[0-9a-f]+:[ 	]+24459073[ 	]+csrw[ 	]+0x244,a1
 [ 	]+[0-9a-f]+:[ 	]+28002573[ 	]+csrr[ 	]+a0,0x280
 [ 	]+[0-9a-f]+:[ 	]+28059073[ 	]+csrw[ 	]+0x280,a1
+[ 	]+[0-9a-f]+:[ 	]+30c02573[ 	]+csrr[ 	]+a0,mstateen0
+[ 	]+[0-9a-f]+:[ 	]+30c59073[ 	]+csrw[ 	]+mstateen0,a1
+[ 	]+[0-9a-f]+:[ 	]+30d02573[ 	]+csrr[ 	]+a0,mstateen1
+[ 	]+[0-9a-f]+:[ 	]+30d59073[ 	]+csrw[ 	]+mstateen1,a1
+[ 	]+[0-9a-f]+:[ 	]+30e02573[ 	]+csrr[ 	]+a0,mstateen2
+[ 	]+[0-9a-f]+:[ 	]+30e59073[ 	]+csrw[ 	]+mstateen2,a1
+[ 	]+[0-9a-f]+:[ 	]+30f02573[ 	]+csrr[ 	]+a0,mstateen3
+[ 	]+[0-9a-f]+:[ 	]+30f59073[ 	]+csrw[ 	]+mstateen3,a1
+[ 	]+[0-9a-f]+:[ 	]+10c02573[ 	]+csrr[ 	]+a0,sstateen0
+[ 	]+[0-9a-f]+:[ 	]+10c59073[ 	]+csrw[ 	]+sstateen0,a1
+[ 	]+[0-9a-f]+:[ 	]+10d02573[ 	]+csrr[ 	]+a0,sstateen1
+[ 	]+[0-9a-f]+:[ 	]+10d59073[ 	]+csrw[ 	]+sstateen1,a1
+[ 	]+[0-9a-f]+:[ 	]+10e02573[ 	]+csrr[ 	]+a0,sstateen2
+[ 	]+[0-9a-f]+:[ 	]+10e59073[ 	]+csrw[ 	]+sstateen2,a1
+[ 	]+[0-9a-f]+:[ 	]+10f02573[ 	]+csrr[ 	]+a0,sstateen3
+[ 	]+[0-9a-f]+:[ 	]+10f59073[ 	]+csrw[ 	]+sstateen3,a1
+[ 	]+[0-9a-f]+:[ 	]+60c02573[ 	]+csrr[ 	]+a0,0x60c
+[ 	]+[0-9a-f]+:[ 	]+60c59073[ 	]+csrw[ 	]+0x60c,a1
+[ 	]+[0-9a-f]+:[ 	]+60d02573[ 	]+csrr[ 	]+a0,0x60d
+[ 	]+[0-9a-f]+:[ 	]+60d59073[ 	]+csrw[ 	]+0x60d,a1
+[ 	]+[0-9a-f]+:[ 	]+60e02573[ 	]+csrr[ 	]+a0,0x60e
+[ 	]+[0-9a-f]+:[ 	]+60e59073[ 	]+csrw[ 	]+0x60e,a1
+[ 	]+[0-9a-f]+:[ 	]+60f02573[ 	]+csrr[ 	]+a0,0x60f
+[ 	]+[0-9a-f]+:[ 	]+60f59073[ 	]+csrw[ 	]+0x60f,a1
+[ 	]+[0-9a-f]+:[ 	]+31c02573[ 	]+csrr[ 	]+a0,mstateen0h
+[ 	]+[0-9a-f]+:[ 	]+31c59073[ 	]+csrw[ 	]+mstateen0h,a1
+[ 	]+[0-9a-f]+:[ 	]+31d02573[ 	]+csrr[ 	]+a0,mstateen1h
+[ 	]+[0-9a-f]+:[ 	]+31d59073[ 	]+csrw[ 	]+mstateen1h,a1
+[ 	]+[0-9a-f]+:[ 	]+31e02573[ 	]+csrr[ 	]+a0,mstateen2h
+[ 	]+[0-9a-f]+:[ 	]+31e59073[ 	]+csrw[ 	]+mstateen2h,a1
+[ 	]+[0-9a-f]+:[ 	]+31f02573[ 	]+csrr[ 	]+a0,mstateen3h
+[ 	]+[0-9a-f]+:[ 	]+31f59073[ 	]+csrw[ 	]+mstateen3h,a1
+[ 	]+[0-9a-f]+:[ 	]+61c02573[ 	]+csrr[ 	]+a0,0x61c
+[ 	]+[0-9a-f]+:[ 	]+61c59073[ 	]+csrw[ 	]+0x61c,a1
+[ 	]+[0-9a-f]+:[ 	]+61d02573[ 	]+csrr[ 	]+a0,0x61d
+[ 	]+[0-9a-f]+:[ 	]+61d59073[ 	]+csrw[ 	]+0x61d,a1
+[ 	]+[0-9a-f]+:[ 	]+61e02573[ 	]+csrr[ 	]+a0,0x61e
+[ 	]+[0-9a-f]+:[ 	]+61e59073[ 	]+csrw[ 	]+0x61e,a1
+[ 	]+[0-9a-f]+:[ 	]+61f02573[ 	]+csrr[ 	]+a0,0x61f
+[ 	]+[0-9a-f]+:[ 	]+61f59073[ 	]+csrw[ 	]+0x61f,a1
 [ 	]+[0-9a-f]+:[ 	]+04302573[ 	]+csrr[ 	]+a0,utval
 [ 	]+[0-9a-f]+:[ 	]+04359073[ 	]+csrw[ 	]+utval,a1
 [ 	]+[0-9a-f]+:[ 	]+14302573[ 	]+csrr[ 	]+a0,stval
diff --git a/gas/testsuite/gas/riscv/csr-version-1p11.l b/gas/testsuite/gas/riscv/csr-version-1p11.l
index 36ca02a2b1f..80abdfe575a 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p11.l
+++ b/gas/testsuite/gas/riscv/csr-version-1p11.l
@@ -411,6 +411,62 @@
 .*Warning: invalid CSR `vsip' for the privileged spec `1.11'
 .*Warning: invalid CSR `vsatp' for the privileged spec `1.11'
 .*Warning: invalid CSR `vsatp' for the privileged spec `1.11'
+.*Warning: invalid CSR `mstateen0' for the current ISA
+.*Warning: invalid CSR `mstateen0' for the current ISA
+.*Warning: invalid CSR `mstateen1' for the current ISA
+.*Warning: invalid CSR `mstateen1' for the current ISA
+.*Warning: invalid CSR `mstateen2' for the current ISA
+.*Warning: invalid CSR `mstateen2' for the current ISA
+.*Warning: invalid CSR `mstateen3' for the current ISA
+.*Warning: invalid CSR `mstateen3' for the current ISA
+.*Warning: invalid CSR `sstateen0' for the current ISA
+.*Warning: invalid CSR `sstateen0' for the current ISA
+.*Warning: invalid CSR `sstateen1' for the current ISA
+.*Warning: invalid CSR `sstateen1' for the current ISA
+.*Warning: invalid CSR `sstateen2' for the current ISA
+.*Warning: invalid CSR `sstateen2' for the current ISA
+.*Warning: invalid CSR `sstateen3' for the current ISA
+.*Warning: invalid CSR `sstateen3' for the current ISA
+.*Warning: invalid CSR `hstateen0' for the current ISA
+.*Warning: invalid CSR `hstateen0' for the privileged spec `1.11'
+.*Warning: invalid CSR `hstateen0' for the current ISA
+.*Warning: invalid CSR `hstateen0' for the privileged spec `1.11'
+.*Warning: invalid CSR `hstateen1' for the current ISA
+.*Warning: invalid CSR `hstateen1' for the privileged spec `1.11'
+.*Warning: invalid CSR `hstateen1' for the current ISA
+.*Warning: invalid CSR `hstateen1' for the privileged spec `1.11'
+.*Warning: invalid CSR `hstateen2' for the current ISA
+.*Warning: invalid CSR `hstateen2' for the privileged spec `1.11'
+.*Warning: invalid CSR `hstateen2' for the current ISA
+.*Warning: invalid CSR `hstateen2' for the privileged spec `1.11'
+.*Warning: invalid CSR `hstateen3' for the current ISA
+.*Warning: invalid CSR `hstateen3' for the privileged spec `1.11'
+.*Warning: invalid CSR `hstateen3' for the current ISA
+.*Warning: invalid CSR `hstateen3' for the privileged spec `1.11'
+.*Warning: invalid CSR `mstateen0h' for the current ISA
+.*Warning: invalid CSR `mstateen0h' for the current ISA
+.*Warning: invalid CSR `mstateen1h' for the current ISA
+.*Warning: invalid CSR `mstateen1h' for the current ISA
+.*Warning: invalid CSR `mstateen2h' for the current ISA
+.*Warning: invalid CSR `mstateen2h' for the current ISA
+.*Warning: invalid CSR `mstateen3h' for the current ISA
+.*Warning: invalid CSR `mstateen3h' for the current ISA
+.*Warning: invalid CSR `hstateen0h' for the current ISA
+.*Warning: invalid CSR `hstateen0h' for the privileged spec `1.11'
+.*Warning: invalid CSR `hstateen0h' for the current ISA
+.*Warning: invalid CSR `hstateen0h' for the privileged spec `1.11'
+.*Warning: invalid CSR `hstateen1h' for the current ISA
+.*Warning: invalid CSR `hstateen1h' for the privileged spec `1.11'
+.*Warning: invalid CSR `hstateen1h' for the current ISA
+.*Warning: invalid CSR `hstateen1h' for the privileged spec `1.11'
+.*Warning: invalid CSR `hstateen2h' for the current ISA
+.*Warning: invalid CSR `hstateen2h' for the privileged spec `1.11'
+.*Warning: invalid CSR `hstateen2h' for the current ISA
+.*Warning: invalid CSR `hstateen2h' for the privileged spec `1.11'
+.*Warning: invalid CSR `hstateen3h' for the current ISA
+.*Warning: invalid CSR `hstateen3h' for the privileged spec `1.11'
+.*Warning: invalid CSR `hstateen3h' for the current ISA
+.*Warning: invalid CSR `hstateen3h' for the privileged spec `1.11'
 .*Warning: invalid CSR `ubadaddr' for the privileged spec `1.11'
 .*Warning: invalid CSR `ubadaddr' for the privileged spec `1.11'
 .*Warning: invalid CSR `sbadaddr' for the privileged spec `1.11'
diff --git a/gas/testsuite/gas/riscv/csr-version-1p12.d b/gas/testsuite/gas/riscv/csr-version-1p12.d
index 8281910b89f..08da50283fb 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p12.d
+++ b/gas/testsuite/gas/riscv/csr-version-1p12.d
@@ -623,6 +623,46 @@ Disassembly of section .text:
 [ 	]+[0-9a-f]+:[ 	]+24459073[ 	]+csrw[ 	]+vsip,a1
 [ 	]+[0-9a-f]+:[ 	]+28002573[ 	]+csrr[ 	]+a0,vsatp
 [ 	]+[0-9a-f]+:[ 	]+28059073[ 	]+csrw[ 	]+vsatp,a1
+[ 	]+[0-9a-f]+:[ 	]+30c02573[ 	]+csrr[ 	]+a0,mstateen0
+[ 	]+[0-9a-f]+:[ 	]+30c59073[ 	]+csrw[ 	]+mstateen0,a1
+[ 	]+[0-9a-f]+:[ 	]+30d02573[ 	]+csrr[ 	]+a0,mstateen1
+[ 	]+[0-9a-f]+:[ 	]+30d59073[ 	]+csrw[ 	]+mstateen1,a1
+[ 	]+[0-9a-f]+:[ 	]+30e02573[ 	]+csrr[ 	]+a0,mstateen2
+[ 	]+[0-9a-f]+:[ 	]+30e59073[ 	]+csrw[ 	]+mstateen2,a1
+[ 	]+[0-9a-f]+:[ 	]+30f02573[ 	]+csrr[ 	]+a0,mstateen3
+[ 	]+[0-9a-f]+:[ 	]+30f59073[ 	]+csrw[ 	]+mstateen3,a1
+[ 	]+[0-9a-f]+:[ 	]+10c02573[ 	]+csrr[ 	]+a0,sstateen0
+[ 	]+[0-9a-f]+:[ 	]+10c59073[ 	]+csrw[ 	]+sstateen0,a1
+[ 	]+[0-9a-f]+:[ 	]+10d02573[ 	]+csrr[ 	]+a0,sstateen1
+[ 	]+[0-9a-f]+:[ 	]+10d59073[ 	]+csrw[ 	]+sstateen1,a1
+[ 	]+[0-9a-f]+:[ 	]+10e02573[ 	]+csrr[ 	]+a0,sstateen2
+[ 	]+[0-9a-f]+:[ 	]+10e59073[ 	]+csrw[ 	]+sstateen2,a1
+[ 	]+[0-9a-f]+:[ 	]+10f02573[ 	]+csrr[ 	]+a0,sstateen3
+[ 	]+[0-9a-f]+:[ 	]+10f59073[ 	]+csrw[ 	]+sstateen3,a1
+[ 	]+[0-9a-f]+:[ 	]+60c02573[ 	]+csrr[ 	]+a0,hstateen0
+[ 	]+[0-9a-f]+:[ 	]+60c59073[ 	]+csrw[ 	]+hstateen0,a1
+[ 	]+[0-9a-f]+:[ 	]+60d02573[ 	]+csrr[ 	]+a0,hstateen1
+[ 	]+[0-9a-f]+:[ 	]+60d59073[ 	]+csrw[ 	]+hstateen1,a1
+[ 	]+[0-9a-f]+:[ 	]+60e02573[ 	]+csrr[ 	]+a0,hstateen2
+[ 	]+[0-9a-f]+:[ 	]+60e59073[ 	]+csrw[ 	]+hstateen2,a1
+[ 	]+[0-9a-f]+:[ 	]+60f02573[ 	]+csrr[ 	]+a0,hstateen3
+[ 	]+[0-9a-f]+:[ 	]+60f59073[ 	]+csrw[ 	]+hstateen3,a1
+[ 	]+[0-9a-f]+:[ 	]+31c02573[ 	]+csrr[ 	]+a0,mstateen0h
+[ 	]+[0-9a-f]+:[ 	]+31c59073[ 	]+csrw[ 	]+mstateen0h,a1
+[ 	]+[0-9a-f]+:[ 	]+31d02573[ 	]+csrr[ 	]+a0,mstateen1h
+[ 	]+[0-9a-f]+:[ 	]+31d59073[ 	]+csrw[ 	]+mstateen1h,a1
+[ 	]+[0-9a-f]+:[ 	]+31e02573[ 	]+csrr[ 	]+a0,mstateen2h
+[ 	]+[0-9a-f]+:[ 	]+31e59073[ 	]+csrw[ 	]+mstateen2h,a1
+[ 	]+[0-9a-f]+:[ 	]+31f02573[ 	]+csrr[ 	]+a0,mstateen3h
+[ 	]+[0-9a-f]+:[ 	]+31f59073[ 	]+csrw[ 	]+mstateen3h,a1
+[ 	]+[0-9a-f]+:[ 	]+61c02573[ 	]+csrr[ 	]+a0,hstateen0h
+[ 	]+[0-9a-f]+:[ 	]+61c59073[ 	]+csrw[ 	]+hstateen0h,a1
+[ 	]+[0-9a-f]+:[ 	]+61d02573[ 	]+csrr[ 	]+a0,hstateen1h
+[ 	]+[0-9a-f]+:[ 	]+61d59073[ 	]+csrw[ 	]+hstateen1h,a1
+[ 	]+[0-9a-f]+:[ 	]+61e02573[ 	]+csrr[ 	]+a0,hstateen2h
+[ 	]+[0-9a-f]+:[ 	]+61e59073[ 	]+csrw[ 	]+hstateen2h,a1
+[ 	]+[0-9a-f]+:[ 	]+61f02573[ 	]+csrr[ 	]+a0,hstateen3h
+[ 	]+[0-9a-f]+:[ 	]+61f59073[ 	]+csrw[ 	]+hstateen3h,a1
 [ 	]+[0-9a-f]+:[ 	]+04302573[ 	]+csrr[ 	]+a0,utval
 [ 	]+[0-9a-f]+:[ 	]+04359073[ 	]+csrw[ 	]+utval,a1
 [ 	]+[0-9a-f]+:[ 	]+14302573[ 	]+csrr[ 	]+a0,stval
diff --git a/gas/testsuite/gas/riscv/csr-version-1p12.l b/gas/testsuite/gas/riscv/csr-version-1p12.l
index 387c6e2d419..6f45008b62f 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p12.l
+++ b/gas/testsuite/gas/riscv/csr-version-1p12.l
@@ -221,6 +221,46 @@
 .*Warning: invalid CSR `henvcfgh' for the current ISA
 .*Warning: invalid CSR `htimedeltah' for the current ISA
 .*Warning: invalid CSR `htimedeltah' for the current ISA
+.*Warning: invalid CSR `mstateen0' for the current ISA
+.*Warning: invalid CSR `mstateen0' for the current ISA
+.*Warning: invalid CSR `mstateen1' for the current ISA
+.*Warning: invalid CSR `mstateen1' for the current ISA
+.*Warning: invalid CSR `mstateen2' for the current ISA
+.*Warning: invalid CSR `mstateen2' for the current ISA
+.*Warning: invalid CSR `mstateen3' for the current ISA
+.*Warning: invalid CSR `mstateen3' for the current ISA
+.*Warning: invalid CSR `sstateen0' for the current ISA
+.*Warning: invalid CSR `sstateen0' for the current ISA
+.*Warning: invalid CSR `sstateen1' for the current ISA
+.*Warning: invalid CSR `sstateen1' for the current ISA
+.*Warning: invalid CSR `sstateen2' for the current ISA
+.*Warning: invalid CSR `sstateen2' for the current ISA
+.*Warning: invalid CSR `sstateen3' for the current ISA
+.*Warning: invalid CSR `sstateen3' for the current ISA
+.*Warning: invalid CSR `hstateen0' for the current ISA
+.*Warning: invalid CSR `hstateen0' for the current ISA
+.*Warning: invalid CSR `hstateen1' for the current ISA
+.*Warning: invalid CSR `hstateen1' for the current ISA
+.*Warning: invalid CSR `hstateen2' for the current ISA
+.*Warning: invalid CSR `hstateen2' for the current ISA
+.*Warning: invalid CSR `hstateen3' for the current ISA
+.*Warning: invalid CSR `hstateen3' for the current ISA
+.*Warning: invalid CSR `mstateen0h' for the current ISA
+.*Warning: invalid CSR `mstateen0h' for the current ISA
+.*Warning: invalid CSR `mstateen1h' for the current ISA
+.*Warning: invalid CSR `mstateen1h' for the current ISA
+.*Warning: invalid CSR `mstateen2h' for the current ISA
+.*Warning: invalid CSR `mstateen2h' for the current ISA
+.*Warning: invalid CSR `mstateen3h' for the current ISA
+.*Warning: invalid CSR `mstateen3h' for the current ISA
+.*Warning: invalid CSR `hstateen0h' for the current ISA
+.*Warning: invalid CSR `hstateen0h' for the current ISA
+.*Warning: invalid CSR `hstateen1h' for the current ISA
+.*Warning: invalid CSR `hstateen1h' for the current ISA
+.*Warning: invalid CSR `hstateen2h' for the current ISA
+.*Warning: invalid CSR `hstateen2h' for the current ISA
+.*Warning: invalid CSR `hstateen3h' for the current ISA
+.*Warning: invalid CSR `hstateen3h' for the current ISA
 .*Warning: invalid CSR `ubadaddr' for the privileged spec `1.12'
 .*Warning: invalid CSR `ubadaddr' for the privileged spec `1.12'
 .*Warning: invalid CSR `sbadaddr' for the privileged spec `1.12'
diff --git a/gas/testsuite/gas/riscv/csr-version-1p9p1.d b/gas/testsuite/gas/riscv/csr-version-1p9p1.d
index f5af018e1e1..d41bc634284 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p9p1.d
+++ b/gas/testsuite/gas/riscv/csr-version-1p9p1.d
@@ -623,6 +623,46 @@ Disassembly of section .text:
 [ 	]+[0-9a-f]+:[ 	]+24459073[ 	]+csrw[ 	]+0x244,a1
 [ 	]+[0-9a-f]+:[ 	]+28002573[ 	]+csrr[ 	]+a0,0x280
 [ 	]+[0-9a-f]+:[ 	]+28059073[ 	]+csrw[ 	]+0x280,a1
+[ 	]+[0-9a-f]+:[ 	]+30c02573[ 	]+csrr[ 	]+a0,mstateen0
+[ 	]+[0-9a-f]+:[ 	]+30c59073[ 	]+csrw[ 	]+mstateen0,a1
+[ 	]+[0-9a-f]+:[ 	]+30d02573[ 	]+csrr[ 	]+a0,mstateen1
+[ 	]+[0-9a-f]+:[ 	]+30d59073[ 	]+csrw[ 	]+mstateen1,a1
+[ 	]+[0-9a-f]+:[ 	]+30e02573[ 	]+csrr[ 	]+a0,mstateen2
+[ 	]+[0-9a-f]+:[ 	]+30e59073[ 	]+csrw[ 	]+mstateen2,a1
+[ 	]+[0-9a-f]+:[ 	]+30f02573[ 	]+csrr[ 	]+a0,mstateen3
+[ 	]+[0-9a-f]+:[ 	]+30f59073[ 	]+csrw[ 	]+mstateen3,a1
+[ 	]+[0-9a-f]+:[ 	]+10c02573[ 	]+csrr[ 	]+a0,sstateen0
+[ 	]+[0-9a-f]+:[ 	]+10c59073[ 	]+csrw[ 	]+sstateen0,a1
+[ 	]+[0-9a-f]+:[ 	]+10d02573[ 	]+csrr[ 	]+a0,sstateen1
+[ 	]+[0-9a-f]+:[ 	]+10d59073[ 	]+csrw[ 	]+sstateen1,a1
+[ 	]+[0-9a-f]+:[ 	]+10e02573[ 	]+csrr[ 	]+a0,sstateen2
+[ 	]+[0-9a-f]+:[ 	]+10e59073[ 	]+csrw[ 	]+sstateen2,a1
+[ 	]+[0-9a-f]+:[ 	]+10f02573[ 	]+csrr[ 	]+a0,sstateen3
+[ 	]+[0-9a-f]+:[ 	]+10f59073[ 	]+csrw[ 	]+sstateen3,a1
+[ 	]+[0-9a-f]+:[ 	]+60c02573[ 	]+csrr[ 	]+a0,0x60c
+[ 	]+[0-9a-f]+:[ 	]+60c59073[ 	]+csrw[ 	]+0x60c,a1
+[ 	]+[0-9a-f]+:[ 	]+60d02573[ 	]+csrr[ 	]+a0,0x60d
+[ 	]+[0-9a-f]+:[ 	]+60d59073[ 	]+csrw[ 	]+0x60d,a1
+[ 	]+[0-9a-f]+:[ 	]+60e02573[ 	]+csrr[ 	]+a0,0x60e
+[ 	]+[0-9a-f]+:[ 	]+60e59073[ 	]+csrw[ 	]+0x60e,a1
+[ 	]+[0-9a-f]+:[ 	]+60f02573[ 	]+csrr[ 	]+a0,0x60f
+[ 	]+[0-9a-f]+:[ 	]+60f59073[ 	]+csrw[ 	]+0x60f,a1
+[ 	]+[0-9a-f]+:[ 	]+31c02573[ 	]+csrr[ 	]+a0,mstateen0h
+[ 	]+[0-9a-f]+:[ 	]+31c59073[ 	]+csrw[ 	]+mstateen0h,a1
+[ 	]+[0-9a-f]+:[ 	]+31d02573[ 	]+csrr[ 	]+a0,mstateen1h
+[ 	]+[0-9a-f]+:[ 	]+31d59073[ 	]+csrw[ 	]+mstateen1h,a1
+[ 	]+[0-9a-f]+:[ 	]+31e02573[ 	]+csrr[ 	]+a0,mstateen2h
+[ 	]+[0-9a-f]+:[ 	]+31e59073[ 	]+csrw[ 	]+mstateen2h,a1
+[ 	]+[0-9a-f]+:[ 	]+31f02573[ 	]+csrr[ 	]+a0,mstateen3h
+[ 	]+[0-9a-f]+:[ 	]+31f59073[ 	]+csrw[ 	]+mstateen3h,a1
+[ 	]+[0-9a-f]+:[ 	]+61c02573[ 	]+csrr[ 	]+a0,0x61c
+[ 	]+[0-9a-f]+:[ 	]+61c59073[ 	]+csrw[ 	]+0x61c,a1
+[ 	]+[0-9a-f]+:[ 	]+61d02573[ 	]+csrr[ 	]+a0,0x61d
+[ 	]+[0-9a-f]+:[ 	]+61d59073[ 	]+csrw[ 	]+0x61d,a1
+[ 	]+[0-9a-f]+:[ 	]+61e02573[ 	]+csrr[ 	]+a0,0x61e
+[ 	]+[0-9a-f]+:[ 	]+61e59073[ 	]+csrw[ 	]+0x61e,a1
+[ 	]+[0-9a-f]+:[ 	]+61f02573[ 	]+csrr[ 	]+a0,0x61f
+[ 	]+[0-9a-f]+:[ 	]+61f59073[ 	]+csrw[ 	]+0x61f,a1
 [ 	]+[0-9a-f]+:[ 	]+04302573[ 	]+csrr[ 	]+a0,ubadaddr
 [ 	]+[0-9a-f]+:[ 	]+04359073[ 	]+csrw[ 	]+ubadaddr,a1
 [ 	]+[0-9a-f]+:[ 	]+14302573[ 	]+csrr[ 	]+a0,sbadaddr
diff --git a/gas/testsuite/gas/riscv/csr-version-1p9p1.l b/gas/testsuite/gas/riscv/csr-version-1p9p1.l
index ca50442bc7a..6e9c35495eb 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p9p1.l
+++ b/gas/testsuite/gas/riscv/csr-version-1p9p1.l
@@ -465,6 +465,62 @@
 .*Warning: invalid CSR `vsip' for the privileged spec `1.9.1'
 .*Warning: invalid CSR `vsatp' for the privileged spec `1.9.1'
 .*Warning: invalid CSR `vsatp' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mstateen0' for the current ISA
+.*Warning: invalid CSR `mstateen0' for the current ISA
+.*Warning: invalid CSR `mstateen1' for the current ISA
+.*Warning: invalid CSR `mstateen1' for the current ISA
+.*Warning: invalid CSR `mstateen2' for the current ISA
+.*Warning: invalid CSR `mstateen2' for the current ISA
+.*Warning: invalid CSR `mstateen3' for the current ISA
+.*Warning: invalid CSR `mstateen3' for the current ISA
+.*Warning: invalid CSR `sstateen0' for the current ISA
+.*Warning: invalid CSR `sstateen0' for the current ISA
+.*Warning: invalid CSR `sstateen1' for the current ISA
+.*Warning: invalid CSR `sstateen1' for the current ISA
+.*Warning: invalid CSR `sstateen2' for the current ISA
+.*Warning: invalid CSR `sstateen2' for the current ISA
+.*Warning: invalid CSR `sstateen3' for the current ISA
+.*Warning: invalid CSR `sstateen3' for the current ISA
+.*Warning: invalid CSR `hstateen0' for the current ISA
+.*Warning: invalid CSR `hstateen0' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `hstateen0' for the current ISA
+.*Warning: invalid CSR `hstateen0' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `hstateen1' for the current ISA
+.*Warning: invalid CSR `hstateen1' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `hstateen1' for the current ISA
+.*Warning: invalid CSR `hstateen1' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `hstateen2' for the current ISA
+.*Warning: invalid CSR `hstateen2' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `hstateen2' for the current ISA
+.*Warning: invalid CSR `hstateen2' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `hstateen3' for the current ISA
+.*Warning: invalid CSR `hstateen3' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `hstateen3' for the current ISA
+.*Warning: invalid CSR `hstateen3' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mstateen0h' for the current ISA
+.*Warning: invalid CSR `mstateen0h' for the current ISA
+.*Warning: invalid CSR `mstateen1h' for the current ISA
+.*Warning: invalid CSR `mstateen1h' for the current ISA
+.*Warning: invalid CSR `mstateen2h' for the current ISA
+.*Warning: invalid CSR `mstateen2h' for the current ISA
+.*Warning: invalid CSR `mstateen3h' for the current ISA
+.*Warning: invalid CSR `mstateen3h' for the current ISA
+.*Warning: invalid CSR `hstateen0h' for the current ISA
+.*Warning: invalid CSR `hstateen0h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `hstateen0h' for the current ISA
+.*Warning: invalid CSR `hstateen0h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `hstateen1h' for the current ISA
+.*Warning: invalid CSR `hstateen1h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `hstateen1h' for the current ISA
+.*Warning: invalid CSR `hstateen1h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `hstateen2h' for the current ISA
+.*Warning: invalid CSR `hstateen2h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `hstateen2h' for the current ISA
+.*Warning: invalid CSR `hstateen2h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `hstateen3h' for the current ISA
+.*Warning: invalid CSR `hstateen3h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `hstateen3h' for the current ISA
+.*Warning: invalid CSR `hstateen3h' for the privileged spec `1.9.1'
 .*Warning: invalid CSR `fflags' for the current ISA
 .*Warning: invalid CSR `fflags' for the current ISA
 .*Warning: invalid CSR `frm' for the current ISA
diff --git a/gas/testsuite/gas/riscv/csr.s b/gas/testsuite/gas/riscv/csr.s
index cbb0e23991b..a65dbe534b2 100644
--- a/gas/testsuite/gas/riscv/csr.s
+++ b/gas/testsuite/gas/riscv/csr.s
@@ -350,6 +350,28 @@
 	csr vsip
 	csr vsatp
 
+	# Smstateen extension
+	csr mstateen0
+	csr mstateen1
+	csr mstateen2
+	csr mstateen3
+	csr sstateen0
+	csr sstateen1
+	csr sstateen2
+	csr sstateen3
+	csr hstateen0
+	csr hstateen1
+	csr hstateen2
+	csr hstateen3
+	csr mstateen0h
+	csr mstateen1h
+	csr mstateen2h
+	csr mstateen3h
+	csr hstateen0h
+	csr hstateen1h
+	csr hstateen2h
+	csr hstateen3h
+
 	# Supported in previous priv spec, but dropped now
 
 	csr ubadaddr		# 0x043 in 1.9.1, but the value is utval since 1.10
diff --git a/include/opcode/riscv-opc.h b/include/opcode/riscv-opc.h
index 734d7862b2d..e218f6641cc 100644
--- a/include/opcode/riscv-opc.h
+++ b/include/opcode/riscv-opc.h
@@ -2346,6 +2346,27 @@
 #define CSR_MDBOUND 0x385
 #define CSR_MSCOUNTEREN 0x321
 #define CSR_MHCOUNTEREN 0x322
+/* Smstateen extension */
+#define CSR_MSTATEEN0 0x30c
+#define CSR_MSTATEEN1 0x30d
+#define CSR_MSTATEEN2 0x30e
+#define CSR_MSTATEEN3 0x30f
+#define CSR_SSTATEEN0 0x10c
+#define CSR_SSTATEEN1 0x10d
+#define CSR_SSTATEEN2 0x10e
+#define CSR_SSTATEEN3 0x10f
+#define CSR_HSTATEEN0 0x60c
+#define CSR_HSTATEEN1 0x60d
+#define CSR_HSTATEEN2 0x60e
+#define CSR_HSTATEEN3 0x60f
+#define CSR_MSTATEEN0H 0x31c
+#define CSR_MSTATEEN1H 0x31d
+#define CSR_MSTATEEN2H 0x31e
+#define CSR_MSTATEEN3H 0x31f
+#define CSR_HSTATEEN0H 0x61c
+#define CSR_HSTATEEN1H 0x61d
+#define CSR_HSTATEEN2H 0x61e
+#define CSR_HSTATEEN3H 0x61f
 /* Unprivileged CSR addresses.  */
 #define CSR_FFLAGS 0x1
 #define CSR_FRM 0x2
@@ -3008,6 +3029,27 @@ DECLARE_CSR(vscause, CSR_VSCAUSE, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_C
 DECLARE_CSR(vstval, CSR_VSTVAL, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
 DECLARE_CSR(vsip, CSR_VSIP, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
 DECLARE_CSR(vsatp, CSR_VSATP, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
+/* Smstateen extension */
+DECLARE_CSR(mstateen0, CSR_MSTATEEN0, CSR_CLASS_SMSTATEEN, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mstateen1, CSR_MSTATEEN1, CSR_CLASS_SMSTATEEN, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mstateen2, CSR_MSTATEEN2, CSR_CLASS_SMSTATEEN, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mstateen3, CSR_MSTATEEN3, CSR_CLASS_SMSTATEEN, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(sstateen0, CSR_SSTATEEN0, CSR_CLASS_SMSTATEEN, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(sstateen1, CSR_SSTATEEN1, CSR_CLASS_SMSTATEEN, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(sstateen2, CSR_SSTATEEN2, CSR_CLASS_SMSTATEEN, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(sstateen3, CSR_SSTATEEN3, CSR_CLASS_SMSTATEEN, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(hstateen0, CSR_HSTATEEN0, CSR_CLASS_SMSTATEEN, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(hstateen1, CSR_HSTATEEN1, CSR_CLASS_SMSTATEEN, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(hstateen2, CSR_HSTATEEN2, CSR_CLASS_SMSTATEEN, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(hstateen3, CSR_HSTATEEN3, CSR_CLASS_SMSTATEEN, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mstateen0h, CSR_MSTATEEN0H, CSR_CLASS_SMSTATEEN_32, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mstateen1h, CSR_MSTATEEN1H, CSR_CLASS_SMSTATEEN_32, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mstateen2h, CSR_MSTATEEN2H, CSR_CLASS_SMSTATEEN_32, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mstateen3h, CSR_MSTATEEN3H, CSR_CLASS_SMSTATEEN_32, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(hstateen0h, CSR_HSTATEEN0H, CSR_CLASS_SMSTATEEN_32, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(hstateen1h, CSR_HSTATEEN1H, CSR_CLASS_SMSTATEEN_32, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(hstateen2h, CSR_HSTATEEN2H, CSR_CLASS_SMSTATEEN_32, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(hstateen3h, CSR_HSTATEEN3H, CSR_CLASS_SMSTATEEN_32, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
 /* Dropped CSRs.  */
 DECLARE_CSR(mbase, CSR_MBASE, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_1P10)
 DECLARE_CSR(mbound, CSR_MBOUND, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_1P10)
-- 
2.32.0


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

* [PATCH 5/6] RISC-V: Add 'Sscofpmf' extension with its CSRs
  2022-01-11 10:59 [PATCH 0/6] RISC-V: Add Privileged Arch 1.12 and More CSRs Tsukasa OI
                   ` (3 preceding siblings ...)
  2022-01-11 10:59 ` [PATCH 4/6] RISC-V: Add 'Smstateen' extension and its CSRs Tsukasa OI
@ 2022-01-11 10:59 ` Tsukasa OI
  2022-01-11 10:59 ` [PATCH 6/6] RISC-V: Add 'Sstc' extension and " Tsukasa OI
  2022-02-24 12:10 ` [PATCH 0/3] RISC-V: Add CSRs for several supervisor extensions Tsukasa OI
  6 siblings, 0 replies; 32+ messages in thread
From: Tsukasa OI @ 2022-01-11 10:59 UTC (permalink / raw)
  To: Tsukasa OI; +Cc: binutils

This commit adds Count Overflow and Mode-Based Filtering Extension
(Sscofpmf) and its CSRs.

bfd/ChangeLog:

	* elfxx-riscv.c (riscv_supported_std_s_ext): Add 'Sscofpmf'
	extension to valid 'S' extension list.

gas/ChangeLog:

	* config/tc-riscv.c (enum riscv_csr_class): Add CSR classes for
	'Sscofpmf' extension. (riscv_csr_address): Add handling for new
	CSR classes.
	* testsuite/gas/riscv/csr-dw-regnums.s: Add new CSRs.
	* testsuite/gas/riscv/csr-dw-regnums.d: 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_SCOUNTOVF, CSR_MHPMEVENT3H,
	CSR_MHPMEVENT4H, CSR_MHPMEVENT5H, CSR_MHPMEVENT6H,
	CSR_MHPMEVENT7H, CSR_MHPMEVENT8H, CSR_MHPMEVENT9H,
	CSR_MHPMEVENT10H, CSR_MHPMEVENT11H, CSR_MHPMEVENT12H,
	CSR_MHPMEVENT13H, CSR_MHPMEVENT14H, CSR_MHPMEVENT15H,
	CSR_MHPMEVENT16H, CSR_MHPMEVENT17H, CSR_MHPMEVENT18H,
	CSR_MHPMEVENT19H, CSR_MHPMEVENT20H, CSR_MHPMEVENT21H,
	CSR_MHPMEVENT22H, CSR_MHPMEVENT23H, CSR_MHPMEVENT24H,
	CSR_MHPMEVENT25H, CSR_MHPMEVENT26H, CSR_MHPMEVENT27H,
	CSR_MHPMEVENT28H, CSR_MHPMEVENT29H, CSR_MHPMEVENT30H,
	CSR_MHPMEVENT31H): New CSR macros.
---
 bfd/elfxx-riscv.c                           |   1 +
 gas/config/tc-riscv.c                       |   8 ++
 gas/testsuite/gas/riscv/csr-dw-regnums.d    |  30 +++++
 gas/testsuite/gas/riscv/csr-dw-regnums.s    |  31 +++++
 gas/testsuite/gas/riscv/csr-version-1p10.d  |  60 ++++++++++
 gas/testsuite/gas/riscv/csr-version-1p10.l  | 121 ++++++++++++++++++++
 gas/testsuite/gas/riscv/csr-version-1p11.d  |  60 ++++++++++
 gas/testsuite/gas/riscv/csr-version-1p11.l  |  61 ++++++++++
 gas/testsuite/gas/riscv/csr-version-1p12.d  |  60 ++++++++++
 gas/testsuite/gas/riscv/csr-version-1p12.l  |  61 ++++++++++
 gas/testsuite/gas/riscv/csr-version-1p9p1.d |  60 ++++++++++
 gas/testsuite/gas/riscv/csr-version-1p9p1.l | 121 ++++++++++++++++++++
 gas/testsuite/gas/riscv/csr.s               |  32 ++++++
 include/opcode/riscv-opc.h                  |  62 ++++++++++
 14 files changed, 768 insertions(+)

diff --git a/bfd/elfxx-riscv.c b/bfd/elfxx-riscv.c
index 99cce0f113b..f8061869047 100644
--- a/bfd/elfxx-riscv.c
+++ b/bfd/elfxx-riscv.c
@@ -1228,6 +1228,7 @@ static struct riscv_supported_ext riscv_supported_std_z_ext[] =
 static struct riscv_supported_ext riscv_supported_std_s_ext[] =
 {
   {"smstateen",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
+  {"sscofpmf",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
   {"svinval",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
   {NULL, 0, 0, 0, 0}
 };
diff --git a/gas/config/tc-riscv.c b/gas/config/tc-riscv.c
index 832823ad083..03389605869 100644
--- a/gas/config/tc-riscv.c
+++ b/gas/config/tc-riscv.c
@@ -67,6 +67,8 @@ enum riscv_csr_class
   CSR_CLASS_V,		/* rvv only */
   CSR_CLASS_SMSTATEEN,		/* Smstateen only */
   CSR_CLASS_SMSTATEEN_32,	/* Smstateen RV32 only */
+  CSR_CLASS_SSCOFPMF,		/* Sscofpmf only */
+  CSR_CLASS_SSCOFPMF_32,	/* Sscofpmf RV32 only */
   CSR_CLASS_DEBUG	/* debug CSR */
 };
 
@@ -913,6 +915,12 @@ riscv_csr_address (const char *csr_name,
     case CSR_CLASS_SMSTATEEN_32:
       result = (xlen == 32 && riscv_subset_supports (&riscv_rps_as, "smstateen"));
       break;
+    case CSR_CLASS_SSCOFPMF:
+      result = riscv_subset_supports (&riscv_rps_as, "sscofpmf");
+      break;
+    case CSR_CLASS_SSCOFPMF_32:
+      result = (xlen == 32 && riscv_subset_supports (&riscv_rps_as, "sscofpmf"));
+      break;
     case CSR_CLASS_DEBUG:
       need_check_version = false;
       break;
diff --git a/gas/testsuite/gas/riscv/csr-dw-regnums.d b/gas/testsuite/gas/riscv/csr-dw-regnums.d
index e4181a9274d..355272e5327 100644
--- a/gas/testsuite/gas/riscv/csr-dw-regnums.d
+++ b/gas/testsuite/gas/riscv/csr-dw-regnums.d
@@ -344,6 +344,36 @@ Contents of the .* section:
   DW_CFA_offset_extended_sf: r5661 \(hstateen1h\) at cfa\+6260
   DW_CFA_offset_extended_sf: r5662 \(hstateen2h\) at cfa\+6264
   DW_CFA_offset_extended_sf: r5663 \(hstateen3h\) at cfa\+6268
+  DW_CFA_offset_extended_sf: r7584 \(scountovf\) at cfa\+13952
+  DW_CFA_offset_extended_sf: r5923 \(mhpmevent3h\) at cfa\+7308
+  DW_CFA_offset_extended_sf: r5924 \(mhpmevent4h\) at cfa\+7312
+  DW_CFA_offset_extended_sf: r5925 \(mhpmevent5h\) at cfa\+7316
+  DW_CFA_offset_extended_sf: r5926 \(mhpmevent6h\) at cfa\+7320
+  DW_CFA_offset_extended_sf: r5927 \(mhpmevent7h\) at cfa\+7324
+  DW_CFA_offset_extended_sf: r5928 \(mhpmevent8h\) at cfa\+7328
+  DW_CFA_offset_extended_sf: r5929 \(mhpmevent9h\) at cfa\+7332
+  DW_CFA_offset_extended_sf: r5930 \(mhpmevent10h\) at cfa\+7336
+  DW_CFA_offset_extended_sf: r5931 \(mhpmevent11h\) at cfa\+7340
+  DW_CFA_offset_extended_sf: r5932 \(mhpmevent12h\) at cfa\+7344
+  DW_CFA_offset_extended_sf: r5933 \(mhpmevent13h\) at cfa\+7348
+  DW_CFA_offset_extended_sf: r5934 \(mhpmevent14h\) at cfa\+7352
+  DW_CFA_offset_extended_sf: r5935 \(mhpmevent15h\) at cfa\+7356
+  DW_CFA_offset_extended_sf: r5936 \(mhpmevent16h\) at cfa\+7360
+  DW_CFA_offset_extended_sf: r5937 \(mhpmevent17h\) at cfa\+7364
+  DW_CFA_offset_extended_sf: r5938 \(mhpmevent18h\) at cfa\+7368
+  DW_CFA_offset_extended_sf: r5939 \(mhpmevent19h\) at cfa\+7372
+  DW_CFA_offset_extended_sf: r5940 \(mhpmevent20h\) at cfa\+7376
+  DW_CFA_offset_extended_sf: r5941 \(mhpmevent21h\) at cfa\+7380
+  DW_CFA_offset_extended_sf: r5942 \(mhpmevent22h\) at cfa\+7384
+  DW_CFA_offset_extended_sf: r5943 \(mhpmevent23h\) at cfa\+7388
+  DW_CFA_offset_extended_sf: r5944 \(mhpmevent24h\) at cfa\+7392
+  DW_CFA_offset_extended_sf: r5945 \(mhpmevent25h\) at cfa\+7396
+  DW_CFA_offset_extended_sf: r5946 \(mhpmevent26h\) at cfa\+7400
+  DW_CFA_offset_extended_sf: r5947 \(mhpmevent27h\) at cfa\+7404
+  DW_CFA_offset_extended_sf: r5948 \(mhpmevent28h\) at cfa\+7408
+  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: r4163 \(utval\) at cfa\+268
   DW_CFA_offset_extended_sf: r4419 \(stval\) at cfa\+1292
   DW_CFA_offset_extended_sf: r4480 \(satp\) at cfa\+1536
diff --git a/gas/testsuite/gas/riscv/csr-dw-regnums.s b/gas/testsuite/gas/riscv/csr-dw-regnums.s
index 936c6f8bf18..3f7a520c6f2 100644
--- a/gas/testsuite/gas/riscv/csr-dw-regnums.s
+++ b/gas/testsuite/gas/riscv/csr-dw-regnums.s
@@ -336,6 +336,37 @@ _start:
 	.cfi_offset hstateen1h, 6260
 	.cfi_offset hstateen2h, 6264
 	.cfi_offset hstateen3h, 6268
+	# Sscofpmf extension
+	.cfi_offset scountovf, 13952
+	.cfi_offset mhpmevent3h, 7308
+	.cfi_offset mhpmevent4h, 7312
+	.cfi_offset mhpmevent5h, 7316
+	.cfi_offset mhpmevent6h, 7320
+	.cfi_offset mhpmevent7h, 7324
+	.cfi_offset mhpmevent8h, 7328
+	.cfi_offset mhpmevent9h, 7332
+	.cfi_offset mhpmevent10h, 7336
+	.cfi_offset mhpmevent11h, 7340
+	.cfi_offset mhpmevent12h, 7344
+	.cfi_offset mhpmevent13h, 7348
+	.cfi_offset mhpmevent14h, 7352
+	.cfi_offset mhpmevent15h, 7356
+	.cfi_offset mhpmevent16h, 7360
+	.cfi_offset mhpmevent17h, 7364
+	.cfi_offset mhpmevent18h, 7368
+	.cfi_offset mhpmevent19h, 7372
+	.cfi_offset mhpmevent20h, 7376
+	.cfi_offset mhpmevent21h, 7380
+	.cfi_offset mhpmevent22h, 7384
+	.cfi_offset mhpmevent23h, 7388
+	.cfi_offset mhpmevent24h, 7392
+	.cfi_offset mhpmevent25h, 7396
+	.cfi_offset mhpmevent26h, 7400
+	.cfi_offset mhpmevent27h, 7404
+	.cfi_offset mhpmevent28h, 7408
+	.cfi_offset mhpmevent29h, 7412
+	.cfi_offset mhpmevent30h, 7416
+	.cfi_offset mhpmevent31h, 7420
 	# dropped aliases
 	.cfi_offset ubadaddr, 268
 	.cfi_offset sbadaddr, 1292
diff --git a/gas/testsuite/gas/riscv/csr-version-1p10.d b/gas/testsuite/gas/riscv/csr-version-1p10.d
index 884904ed632..84cd8c651ce 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p10.d
+++ b/gas/testsuite/gas/riscv/csr-version-1p10.d
@@ -663,6 +663,66 @@ Disassembly of section .text:
 [ 	]+[0-9a-f]+:[ 	]+61e59073[ 	]+csrw[ 	]+0x61e,a1
 [ 	]+[0-9a-f]+:[ 	]+61f02573[ 	]+csrr[ 	]+a0,0x61f
 [ 	]+[0-9a-f]+:[ 	]+61f59073[ 	]+csrw[ 	]+0x61f,a1
+[ 	]+[0-9a-f]+:[ 	]+da002573[ 	]+csrr[ 	]+a0,0xda0
+[ 	]+[0-9a-f]+:[ 	]+da059073[ 	]+csrw[ 	]+0xda0,a1
+[ 	]+[0-9a-f]+:[ 	]+72302573[ 	]+csrr[ 	]+a0,0x723
+[ 	]+[0-9a-f]+:[ 	]+72359073[ 	]+csrw[ 	]+0x723,a1
+[ 	]+[0-9a-f]+:[ 	]+72402573[ 	]+csrr[ 	]+a0,0x724
+[ 	]+[0-9a-f]+:[ 	]+72459073[ 	]+csrw[ 	]+0x724,a1
+[ 	]+[0-9a-f]+:[ 	]+72502573[ 	]+csrr[ 	]+a0,0x725
+[ 	]+[0-9a-f]+:[ 	]+72559073[ 	]+csrw[ 	]+0x725,a1
+[ 	]+[0-9a-f]+:[ 	]+72602573[ 	]+csrr[ 	]+a0,0x726
+[ 	]+[0-9a-f]+:[ 	]+72659073[ 	]+csrw[ 	]+0x726,a1
+[ 	]+[0-9a-f]+:[ 	]+72702573[ 	]+csrr[ 	]+a0,0x727
+[ 	]+[0-9a-f]+:[ 	]+72759073[ 	]+csrw[ 	]+0x727,a1
+[ 	]+[0-9a-f]+:[ 	]+72802573[ 	]+csrr[ 	]+a0,0x728
+[ 	]+[0-9a-f]+:[ 	]+72859073[ 	]+csrw[ 	]+0x728,a1
+[ 	]+[0-9a-f]+:[ 	]+72902573[ 	]+csrr[ 	]+a0,0x729
+[ 	]+[0-9a-f]+:[ 	]+72959073[ 	]+csrw[ 	]+0x729,a1
+[ 	]+[0-9a-f]+:[ 	]+72a02573[ 	]+csrr[ 	]+a0,0x72a
+[ 	]+[0-9a-f]+:[ 	]+72a59073[ 	]+csrw[ 	]+0x72a,a1
+[ 	]+[0-9a-f]+:[ 	]+72b02573[ 	]+csrr[ 	]+a0,0x72b
+[ 	]+[0-9a-f]+:[ 	]+72b59073[ 	]+csrw[ 	]+0x72b,a1
+[ 	]+[0-9a-f]+:[ 	]+72c02573[ 	]+csrr[ 	]+a0,0x72c
+[ 	]+[0-9a-f]+:[ 	]+72c59073[ 	]+csrw[ 	]+0x72c,a1
+[ 	]+[0-9a-f]+:[ 	]+72d02573[ 	]+csrr[ 	]+a0,0x72d
+[ 	]+[0-9a-f]+:[ 	]+72d59073[ 	]+csrw[ 	]+0x72d,a1
+[ 	]+[0-9a-f]+:[ 	]+72e02573[ 	]+csrr[ 	]+a0,0x72e
+[ 	]+[0-9a-f]+:[ 	]+72e59073[ 	]+csrw[ 	]+0x72e,a1
+[ 	]+[0-9a-f]+:[ 	]+72f02573[ 	]+csrr[ 	]+a0,0x72f
+[ 	]+[0-9a-f]+:[ 	]+72f59073[ 	]+csrw[ 	]+0x72f,a1
+[ 	]+[0-9a-f]+:[ 	]+73002573[ 	]+csrr[ 	]+a0,0x730
+[ 	]+[0-9a-f]+:[ 	]+73059073[ 	]+csrw[ 	]+0x730,a1
+[ 	]+[0-9a-f]+:[ 	]+73102573[ 	]+csrr[ 	]+a0,0x731
+[ 	]+[0-9a-f]+:[ 	]+73159073[ 	]+csrw[ 	]+0x731,a1
+[ 	]+[0-9a-f]+:[ 	]+73202573[ 	]+csrr[ 	]+a0,0x732
+[ 	]+[0-9a-f]+:[ 	]+73259073[ 	]+csrw[ 	]+0x732,a1
+[ 	]+[0-9a-f]+:[ 	]+73302573[ 	]+csrr[ 	]+a0,0x733
+[ 	]+[0-9a-f]+:[ 	]+73359073[ 	]+csrw[ 	]+0x733,a1
+[ 	]+[0-9a-f]+:[ 	]+73402573[ 	]+csrr[ 	]+a0,0x734
+[ 	]+[0-9a-f]+:[ 	]+73459073[ 	]+csrw[ 	]+0x734,a1
+[ 	]+[0-9a-f]+:[ 	]+73502573[ 	]+csrr[ 	]+a0,0x735
+[ 	]+[0-9a-f]+:[ 	]+73559073[ 	]+csrw[ 	]+0x735,a1
+[ 	]+[0-9a-f]+:[ 	]+73602573[ 	]+csrr[ 	]+a0,0x736
+[ 	]+[0-9a-f]+:[ 	]+73659073[ 	]+csrw[ 	]+0x736,a1
+[ 	]+[0-9a-f]+:[ 	]+73702573[ 	]+csrr[ 	]+a0,0x737
+[ 	]+[0-9a-f]+:[ 	]+73759073[ 	]+csrw[ 	]+0x737,a1
+[ 	]+[0-9a-f]+:[ 	]+73802573[ 	]+csrr[ 	]+a0,0x738
+[ 	]+[0-9a-f]+:[ 	]+73859073[ 	]+csrw[ 	]+0x738,a1
+[ 	]+[0-9a-f]+:[ 	]+73902573[ 	]+csrr[ 	]+a0,0x739
+[ 	]+[0-9a-f]+:[ 	]+73959073[ 	]+csrw[ 	]+0x739,a1
+[ 	]+[0-9a-f]+:[ 	]+73a02573[ 	]+csrr[ 	]+a0,0x73a
+[ 	]+[0-9a-f]+:[ 	]+73a59073[ 	]+csrw[ 	]+0x73a,a1
+[ 	]+[0-9a-f]+:[ 	]+73b02573[ 	]+csrr[ 	]+a0,0x73b
+[ 	]+[0-9a-f]+:[ 	]+73b59073[ 	]+csrw[ 	]+0x73b,a1
+[ 	]+[0-9a-f]+:[ 	]+73c02573[ 	]+csrr[ 	]+a0,0x73c
+[ 	]+[0-9a-f]+:[ 	]+73c59073[ 	]+csrw[ 	]+0x73c,a1
+[ 	]+[0-9a-f]+:[ 	]+73d02573[ 	]+csrr[ 	]+a0,0x73d
+[ 	]+[0-9a-f]+:[ 	]+73d59073[ 	]+csrw[ 	]+0x73d,a1
+[ 	]+[0-9a-f]+:[ 	]+73e02573[ 	]+csrr[ 	]+a0,0x73e
+[ 	]+[0-9a-f]+:[ 	]+73e59073[ 	]+csrw[ 	]+0x73e,a1
+[ 	]+[0-9a-f]+:[ 	]+73f02573[ 	]+csrr[ 	]+a0,0x73f
+[ 	]+[0-9a-f]+:[ 	]+73f59073[ 	]+csrw[ 	]+0x73f,a1
 [ 	]+[0-9a-f]+:[ 	]+04302573[ 	]+csrr[ 	]+a0,utval
 [ 	]+[0-9a-f]+:[ 	]+04359073[ 	]+csrw[ 	]+utval,a1
 [ 	]+[0-9a-f]+:[ 	]+14302573[ 	]+csrr[ 	]+a0,stval
diff --git a/gas/testsuite/gas/riscv/csr-version-1p10.l b/gas/testsuite/gas/riscv/csr-version-1p10.l
index e67ec153578..264bda20b2a 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p10.l
+++ b/gas/testsuite/gas/riscv/csr-version-1p10.l
@@ -469,6 +469,127 @@
 .*Warning: invalid CSR `hstateen3h' for the privileged spec `1.10'
 .*Warning: invalid CSR `hstateen3h' for the current ISA
 .*Warning: invalid CSR `hstateen3h' for the privileged spec `1.10'
+.*Warning: invalid CSR `scountovf' for the current ISA
+.*Warning: invalid CSR `scountovf' for the privileged spec `1.10'
+.*Warning: invalid CSR `scountovf' for the current ISA
+.*Warning: invalid CSR `scountovf' for the privileged spec `1.10'
+.*Warning: read-only CSR is written `csrw scountovf,a1'
+.*Warning: invalid CSR `mhpmevent3h' for the current ISA
+.*Warning: invalid CSR `mhpmevent3h' for the privileged spec `1.10'
+.*Warning: invalid CSR `mhpmevent3h' for the current ISA
+.*Warning: invalid CSR `mhpmevent3h' for the privileged spec `1.10'
+.*Warning: invalid CSR `mhpmevent4h' for the current ISA
+.*Warning: invalid CSR `mhpmevent4h' for the privileged spec `1.10'
+.*Warning: invalid CSR `mhpmevent4h' for the current ISA
+.*Warning: invalid CSR `mhpmevent4h' for the privileged spec `1.10'
+.*Warning: invalid CSR `mhpmevent5h' for the current ISA
+.*Warning: invalid CSR `mhpmevent5h' for the privileged spec `1.10'
+.*Warning: invalid CSR `mhpmevent5h' for the current ISA
+.*Warning: invalid CSR `mhpmevent5h' for the privileged spec `1.10'
+.*Warning: invalid CSR `mhpmevent6h' for the current ISA
+.*Warning: invalid CSR `mhpmevent6h' for the privileged spec `1.10'
+.*Warning: invalid CSR `mhpmevent6h' for the current ISA
+.*Warning: invalid CSR `mhpmevent6h' for the privileged spec `1.10'
+.*Warning: invalid CSR `mhpmevent7h' for the current ISA
+.*Warning: invalid CSR `mhpmevent7h' for the privileged spec `1.10'
+.*Warning: invalid CSR `mhpmevent7h' for the current ISA
+.*Warning: invalid CSR `mhpmevent7h' for the privileged spec `1.10'
+.*Warning: invalid CSR `mhpmevent8h' for the current ISA
+.*Warning: invalid CSR `mhpmevent8h' for the privileged spec `1.10'
+.*Warning: invalid CSR `mhpmevent8h' for the current ISA
+.*Warning: invalid CSR `mhpmevent8h' for the privileged spec `1.10'
+.*Warning: invalid CSR `mhpmevent9h' for the current ISA
+.*Warning: invalid CSR `mhpmevent9h' for the privileged spec `1.10'
+.*Warning: invalid CSR `mhpmevent9h' for the current ISA
+.*Warning: invalid CSR `mhpmevent9h' for the privileged spec `1.10'
+.*Warning: invalid CSR `mhpmevent10h' for the current ISA
+.*Warning: invalid CSR `mhpmevent10h' for the privileged spec `1.10'
+.*Warning: invalid CSR `mhpmevent10h' for the current ISA
+.*Warning: invalid CSR `mhpmevent10h' for the privileged spec `1.10'
+.*Warning: invalid CSR `mhpmevent11h' for the current ISA
+.*Warning: invalid CSR `mhpmevent11h' for the privileged spec `1.10'
+.*Warning: invalid CSR `mhpmevent11h' for the current ISA
+.*Warning: invalid CSR `mhpmevent11h' for the privileged spec `1.10'
+.*Warning: invalid CSR `mhpmevent12h' for the current ISA
+.*Warning: invalid CSR `mhpmevent12h' for the privileged spec `1.10'
+.*Warning: invalid CSR `mhpmevent12h' for the current ISA
+.*Warning: invalid CSR `mhpmevent12h' for the privileged spec `1.10'
+.*Warning: invalid CSR `mhpmevent13h' for the current ISA
+.*Warning: invalid CSR `mhpmevent13h' for the privileged spec `1.10'
+.*Warning: invalid CSR `mhpmevent13h' for the current ISA
+.*Warning: invalid CSR `mhpmevent13h' for the privileged spec `1.10'
+.*Warning: invalid CSR `mhpmevent14h' for the current ISA
+.*Warning: invalid CSR `mhpmevent14h' for the privileged spec `1.10'
+.*Warning: invalid CSR `mhpmevent14h' for the current ISA
+.*Warning: invalid CSR `mhpmevent14h' for the privileged spec `1.10'
+.*Warning: invalid CSR `mhpmevent15h' for the current ISA
+.*Warning: invalid CSR `mhpmevent15h' for the privileged spec `1.10'
+.*Warning: invalid CSR `mhpmevent15h' for the current ISA
+.*Warning: invalid CSR `mhpmevent15h' for the privileged spec `1.10'
+.*Warning: invalid CSR `mhpmevent16h' for the current ISA
+.*Warning: invalid CSR `mhpmevent16h' for the privileged spec `1.10'
+.*Warning: invalid CSR `mhpmevent16h' for the current ISA
+.*Warning: invalid CSR `mhpmevent16h' for the privileged spec `1.10'
+.*Warning: invalid CSR `mhpmevent17h' for the current ISA
+.*Warning: invalid CSR `mhpmevent17h' for the privileged spec `1.10'
+.*Warning: invalid CSR `mhpmevent17h' for the current ISA
+.*Warning: invalid CSR `mhpmevent17h' for the privileged spec `1.10'
+.*Warning: invalid CSR `mhpmevent18h' for the current ISA
+.*Warning: invalid CSR `mhpmevent18h' for the privileged spec `1.10'
+.*Warning: invalid CSR `mhpmevent18h' for the current ISA
+.*Warning: invalid CSR `mhpmevent18h' for the privileged spec `1.10'
+.*Warning: invalid CSR `mhpmevent19h' for the current ISA
+.*Warning: invalid CSR `mhpmevent19h' for the privileged spec `1.10'
+.*Warning: invalid CSR `mhpmevent19h' for the current ISA
+.*Warning: invalid CSR `mhpmevent19h' for the privileged spec `1.10'
+.*Warning: invalid CSR `mhpmevent20h' for the current ISA
+.*Warning: invalid CSR `mhpmevent20h' for the privileged spec `1.10'
+.*Warning: invalid CSR `mhpmevent20h' for the current ISA
+.*Warning: invalid CSR `mhpmevent20h' for the privileged spec `1.10'
+.*Warning: invalid CSR `mhpmevent21h' for the current ISA
+.*Warning: invalid CSR `mhpmevent21h' for the privileged spec `1.10'
+.*Warning: invalid CSR `mhpmevent21h' for the current ISA
+.*Warning: invalid CSR `mhpmevent21h' for the privileged spec `1.10'
+.*Warning: invalid CSR `mhpmevent22h' for the current ISA
+.*Warning: invalid CSR `mhpmevent22h' for the privileged spec `1.10'
+.*Warning: invalid CSR `mhpmevent22h' for the current ISA
+.*Warning: invalid CSR `mhpmevent22h' for the privileged spec `1.10'
+.*Warning: invalid CSR `mhpmevent23h' for the current ISA
+.*Warning: invalid CSR `mhpmevent23h' for the privileged spec `1.10'
+.*Warning: invalid CSR `mhpmevent23h' for the current ISA
+.*Warning: invalid CSR `mhpmevent23h' for the privileged spec `1.10'
+.*Warning: invalid CSR `mhpmevent24h' for the current ISA
+.*Warning: invalid CSR `mhpmevent24h' for the privileged spec `1.10'
+.*Warning: invalid CSR `mhpmevent24h' for the current ISA
+.*Warning: invalid CSR `mhpmevent24h' for the privileged spec `1.10'
+.*Warning: invalid CSR `mhpmevent25h' for the current ISA
+.*Warning: invalid CSR `mhpmevent25h' for the privileged spec `1.10'
+.*Warning: invalid CSR `mhpmevent25h' for the current ISA
+.*Warning: invalid CSR `mhpmevent25h' for the privileged spec `1.10'
+.*Warning: invalid CSR `mhpmevent26h' for the current ISA
+.*Warning: invalid CSR `mhpmevent26h' for the privileged spec `1.10'
+.*Warning: invalid CSR `mhpmevent26h' for the current ISA
+.*Warning: invalid CSR `mhpmevent26h' for the privileged spec `1.10'
+.*Warning: invalid CSR `mhpmevent27h' for the current ISA
+.*Warning: invalid CSR `mhpmevent27h' for the privileged spec `1.10'
+.*Warning: invalid CSR `mhpmevent27h' for the current ISA
+.*Warning: invalid CSR `mhpmevent27h' for the privileged spec `1.10'
+.*Warning: invalid CSR `mhpmevent28h' for the current ISA
+.*Warning: invalid CSR `mhpmevent28h' for the privileged spec `1.10'
+.*Warning: invalid CSR `mhpmevent28h' for the current ISA
+.*Warning: invalid CSR `mhpmevent28h' for the privileged spec `1.10'
+.*Warning: invalid CSR `mhpmevent29h' for the current ISA
+.*Warning: invalid CSR `mhpmevent29h' for the privileged spec `1.10'
+.*Warning: invalid CSR `mhpmevent29h' for the current ISA
+.*Warning: invalid CSR `mhpmevent29h' for the privileged spec `1.10'
+.*Warning: invalid CSR `mhpmevent30h' for the current ISA
+.*Warning: invalid CSR `mhpmevent30h' for the privileged spec `1.10'
+.*Warning: invalid CSR `mhpmevent30h' for the current ISA
+.*Warning: invalid CSR `mhpmevent30h' for the privileged spec `1.10'
+.*Warning: invalid CSR `mhpmevent31h' for the current ISA
+.*Warning: invalid CSR `mhpmevent31h' for the privileged spec `1.10'
+.*Warning: invalid CSR `mhpmevent31h' for the current ISA
+.*Warning: invalid CSR `mhpmevent31h' for the privileged spec `1.10'
 .*Warning: invalid CSR `ubadaddr' for the privileged spec `1.10'
 .*Warning: invalid CSR `ubadaddr' for the privileged spec `1.10'
 .*Warning: invalid CSR `sbadaddr' for the privileged spec `1.10'
diff --git a/gas/testsuite/gas/riscv/csr-version-1p11.d b/gas/testsuite/gas/riscv/csr-version-1p11.d
index c48e7cba2e8..0a37e88654c 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p11.d
+++ b/gas/testsuite/gas/riscv/csr-version-1p11.d
@@ -663,6 +663,66 @@ Disassembly of section .text:
 [ 	]+[0-9a-f]+:[ 	]+61e59073[ 	]+csrw[ 	]+0x61e,a1
 [ 	]+[0-9a-f]+:[ 	]+61f02573[ 	]+csrr[ 	]+a0,0x61f
 [ 	]+[0-9a-f]+:[ 	]+61f59073[ 	]+csrw[ 	]+0x61f,a1
+[ 	]+[0-9a-f]+:[ 	]+da002573[ 	]+csrr[ 	]+a0,scountovf
+[ 	]+[0-9a-f]+:[ 	]+da059073[ 	]+csrw[ 	]+scountovf,a1
+[ 	]+[0-9a-f]+:[ 	]+72302573[ 	]+csrr[ 	]+a0,mhpmevent3h
+[ 	]+[0-9a-f]+:[ 	]+72359073[ 	]+csrw[ 	]+mhpmevent3h,a1
+[ 	]+[0-9a-f]+:[ 	]+72402573[ 	]+csrr[ 	]+a0,mhpmevent4h
+[ 	]+[0-9a-f]+:[ 	]+72459073[ 	]+csrw[ 	]+mhpmevent4h,a1
+[ 	]+[0-9a-f]+:[ 	]+72502573[ 	]+csrr[ 	]+a0,mhpmevent5h
+[ 	]+[0-9a-f]+:[ 	]+72559073[ 	]+csrw[ 	]+mhpmevent5h,a1
+[ 	]+[0-9a-f]+:[ 	]+72602573[ 	]+csrr[ 	]+a0,mhpmevent6h
+[ 	]+[0-9a-f]+:[ 	]+72659073[ 	]+csrw[ 	]+mhpmevent6h,a1
+[ 	]+[0-9a-f]+:[ 	]+72702573[ 	]+csrr[ 	]+a0,mhpmevent7h
+[ 	]+[0-9a-f]+:[ 	]+72759073[ 	]+csrw[ 	]+mhpmevent7h,a1
+[ 	]+[0-9a-f]+:[ 	]+72802573[ 	]+csrr[ 	]+a0,mhpmevent8h
+[ 	]+[0-9a-f]+:[ 	]+72859073[ 	]+csrw[ 	]+mhpmevent8h,a1
+[ 	]+[0-9a-f]+:[ 	]+72902573[ 	]+csrr[ 	]+a0,mhpmevent9h
+[ 	]+[0-9a-f]+:[ 	]+72959073[ 	]+csrw[ 	]+mhpmevent9h,a1
+[ 	]+[0-9a-f]+:[ 	]+72a02573[ 	]+csrr[ 	]+a0,mhpmevent10h
+[ 	]+[0-9a-f]+:[ 	]+72a59073[ 	]+csrw[ 	]+mhpmevent10h,a1
+[ 	]+[0-9a-f]+:[ 	]+72b02573[ 	]+csrr[ 	]+a0,mhpmevent11h
+[ 	]+[0-9a-f]+:[ 	]+72b59073[ 	]+csrw[ 	]+mhpmevent11h,a1
+[ 	]+[0-9a-f]+:[ 	]+72c02573[ 	]+csrr[ 	]+a0,mhpmevent12h
+[ 	]+[0-9a-f]+:[ 	]+72c59073[ 	]+csrw[ 	]+mhpmevent12h,a1
+[ 	]+[0-9a-f]+:[ 	]+72d02573[ 	]+csrr[ 	]+a0,mhpmevent13h
+[ 	]+[0-9a-f]+:[ 	]+72d59073[ 	]+csrw[ 	]+mhpmevent13h,a1
+[ 	]+[0-9a-f]+:[ 	]+72e02573[ 	]+csrr[ 	]+a0,mhpmevent14h
+[ 	]+[0-9a-f]+:[ 	]+72e59073[ 	]+csrw[ 	]+mhpmevent14h,a1
+[ 	]+[0-9a-f]+:[ 	]+72f02573[ 	]+csrr[ 	]+a0,mhpmevent15h
+[ 	]+[0-9a-f]+:[ 	]+72f59073[ 	]+csrw[ 	]+mhpmevent15h,a1
+[ 	]+[0-9a-f]+:[ 	]+73002573[ 	]+csrr[ 	]+a0,mhpmevent16h
+[ 	]+[0-9a-f]+:[ 	]+73059073[ 	]+csrw[ 	]+mhpmevent16h,a1
+[ 	]+[0-9a-f]+:[ 	]+73102573[ 	]+csrr[ 	]+a0,mhpmevent17h
+[ 	]+[0-9a-f]+:[ 	]+73159073[ 	]+csrw[ 	]+mhpmevent17h,a1
+[ 	]+[0-9a-f]+:[ 	]+73202573[ 	]+csrr[ 	]+a0,mhpmevent18h
+[ 	]+[0-9a-f]+:[ 	]+73259073[ 	]+csrw[ 	]+mhpmevent18h,a1
+[ 	]+[0-9a-f]+:[ 	]+73302573[ 	]+csrr[ 	]+a0,mhpmevent19h
+[ 	]+[0-9a-f]+:[ 	]+73359073[ 	]+csrw[ 	]+mhpmevent19h,a1
+[ 	]+[0-9a-f]+:[ 	]+73402573[ 	]+csrr[ 	]+a0,mhpmevent20h
+[ 	]+[0-9a-f]+:[ 	]+73459073[ 	]+csrw[ 	]+mhpmevent20h,a1
+[ 	]+[0-9a-f]+:[ 	]+73502573[ 	]+csrr[ 	]+a0,mhpmevent21h
+[ 	]+[0-9a-f]+:[ 	]+73559073[ 	]+csrw[ 	]+mhpmevent21h,a1
+[ 	]+[0-9a-f]+:[ 	]+73602573[ 	]+csrr[ 	]+a0,mhpmevent22h
+[ 	]+[0-9a-f]+:[ 	]+73659073[ 	]+csrw[ 	]+mhpmevent22h,a1
+[ 	]+[0-9a-f]+:[ 	]+73702573[ 	]+csrr[ 	]+a0,mhpmevent23h
+[ 	]+[0-9a-f]+:[ 	]+73759073[ 	]+csrw[ 	]+mhpmevent23h,a1
+[ 	]+[0-9a-f]+:[ 	]+73802573[ 	]+csrr[ 	]+a0,mhpmevent24h
+[ 	]+[0-9a-f]+:[ 	]+73859073[ 	]+csrw[ 	]+mhpmevent24h,a1
+[ 	]+[0-9a-f]+:[ 	]+73902573[ 	]+csrr[ 	]+a0,mhpmevent25h
+[ 	]+[0-9a-f]+:[ 	]+73959073[ 	]+csrw[ 	]+mhpmevent25h,a1
+[ 	]+[0-9a-f]+:[ 	]+73a02573[ 	]+csrr[ 	]+a0,mhpmevent26h
+[ 	]+[0-9a-f]+:[ 	]+73a59073[ 	]+csrw[ 	]+mhpmevent26h,a1
+[ 	]+[0-9a-f]+:[ 	]+73b02573[ 	]+csrr[ 	]+a0,mhpmevent27h
+[ 	]+[0-9a-f]+:[ 	]+73b59073[ 	]+csrw[ 	]+mhpmevent27h,a1
+[ 	]+[0-9a-f]+:[ 	]+73c02573[ 	]+csrr[ 	]+a0,mhpmevent28h
+[ 	]+[0-9a-f]+:[ 	]+73c59073[ 	]+csrw[ 	]+mhpmevent28h,a1
+[ 	]+[0-9a-f]+:[ 	]+73d02573[ 	]+csrr[ 	]+a0,mhpmevent29h
+[ 	]+[0-9a-f]+:[ 	]+73d59073[ 	]+csrw[ 	]+mhpmevent29h,a1
+[ 	]+[0-9a-f]+:[ 	]+73e02573[ 	]+csrr[ 	]+a0,mhpmevent30h
+[ 	]+[0-9a-f]+:[ 	]+73e59073[ 	]+csrw[ 	]+mhpmevent30h,a1
+[ 	]+[0-9a-f]+:[ 	]+73f02573[ 	]+csrr[ 	]+a0,mhpmevent31h
+[ 	]+[0-9a-f]+:[ 	]+73f59073[ 	]+csrw[ 	]+mhpmevent31h,a1
 [ 	]+[0-9a-f]+:[ 	]+04302573[ 	]+csrr[ 	]+a0,utval
 [ 	]+[0-9a-f]+:[ 	]+04359073[ 	]+csrw[ 	]+utval,a1
 [ 	]+[0-9a-f]+:[ 	]+14302573[ 	]+csrr[ 	]+a0,stval
diff --git a/gas/testsuite/gas/riscv/csr-version-1p11.l b/gas/testsuite/gas/riscv/csr-version-1p11.l
index 80abdfe575a..89e0894c21d 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p11.l
+++ b/gas/testsuite/gas/riscv/csr-version-1p11.l
@@ -467,6 +467,67 @@
 .*Warning: invalid CSR `hstateen3h' for the privileged spec `1.11'
 .*Warning: invalid CSR `hstateen3h' for the current ISA
 .*Warning: invalid CSR `hstateen3h' for the privileged spec `1.11'
+.*Warning: invalid CSR `scountovf' for the current ISA
+.*Warning: invalid CSR `scountovf' for the current ISA
+.*Warning: read-only CSR is written `csrw scountovf,a1'
+.*Warning: invalid CSR `mhpmevent3h' for the current ISA
+.*Warning: invalid CSR `mhpmevent3h' for the current ISA
+.*Warning: invalid CSR `mhpmevent4h' for the current ISA
+.*Warning: invalid CSR `mhpmevent4h' for the current ISA
+.*Warning: invalid CSR `mhpmevent5h' for the current ISA
+.*Warning: invalid CSR `mhpmevent5h' for the current ISA
+.*Warning: invalid CSR `mhpmevent6h' for the current ISA
+.*Warning: invalid CSR `mhpmevent6h' for the current ISA
+.*Warning: invalid CSR `mhpmevent7h' for the current ISA
+.*Warning: invalid CSR `mhpmevent7h' for the current ISA
+.*Warning: invalid CSR `mhpmevent8h' for the current ISA
+.*Warning: invalid CSR `mhpmevent8h' for the current ISA
+.*Warning: invalid CSR `mhpmevent9h' for the current ISA
+.*Warning: invalid CSR `mhpmevent9h' for the current ISA
+.*Warning: invalid CSR `mhpmevent10h' for the current ISA
+.*Warning: invalid CSR `mhpmevent10h' for the current ISA
+.*Warning: invalid CSR `mhpmevent11h' for the current ISA
+.*Warning: invalid CSR `mhpmevent11h' for the current ISA
+.*Warning: invalid CSR `mhpmevent12h' for the current ISA
+.*Warning: invalid CSR `mhpmevent12h' for the current ISA
+.*Warning: invalid CSR `mhpmevent13h' for the current ISA
+.*Warning: invalid CSR `mhpmevent13h' for the current ISA
+.*Warning: invalid CSR `mhpmevent14h' for the current ISA
+.*Warning: invalid CSR `mhpmevent14h' for the current ISA
+.*Warning: invalid CSR `mhpmevent15h' for the current ISA
+.*Warning: invalid CSR `mhpmevent15h' for the current ISA
+.*Warning: invalid CSR `mhpmevent16h' for the current ISA
+.*Warning: invalid CSR `mhpmevent16h' for the current ISA
+.*Warning: invalid CSR `mhpmevent17h' for the current ISA
+.*Warning: invalid CSR `mhpmevent17h' for the current ISA
+.*Warning: invalid CSR `mhpmevent18h' for the current ISA
+.*Warning: invalid CSR `mhpmevent18h' for the current ISA
+.*Warning: invalid CSR `mhpmevent19h' for the current ISA
+.*Warning: invalid CSR `mhpmevent19h' for the current ISA
+.*Warning: invalid CSR `mhpmevent20h' for the current ISA
+.*Warning: invalid CSR `mhpmevent20h' for the current ISA
+.*Warning: invalid CSR `mhpmevent21h' for the current ISA
+.*Warning: invalid CSR `mhpmevent21h' for the current ISA
+.*Warning: invalid CSR `mhpmevent22h' for the current ISA
+.*Warning: invalid CSR `mhpmevent22h' for the current ISA
+.*Warning: invalid CSR `mhpmevent23h' for the current ISA
+.*Warning: invalid CSR `mhpmevent23h' for the current ISA
+.*Warning: invalid CSR `mhpmevent24h' for the current ISA
+.*Warning: invalid CSR `mhpmevent24h' for the current ISA
+.*Warning: invalid CSR `mhpmevent25h' for the current ISA
+.*Warning: invalid CSR `mhpmevent25h' for the current ISA
+.*Warning: invalid CSR `mhpmevent26h' for the current ISA
+.*Warning: invalid CSR `mhpmevent26h' for the current ISA
+.*Warning: invalid CSR `mhpmevent27h' for the current ISA
+.*Warning: invalid CSR `mhpmevent27h' for the current ISA
+.*Warning: invalid CSR `mhpmevent28h' for the current ISA
+.*Warning: invalid CSR `mhpmevent28h' for the current ISA
+.*Warning: invalid CSR `mhpmevent29h' for the current ISA
+.*Warning: invalid CSR `mhpmevent29h' for the current ISA
+.*Warning: invalid CSR `mhpmevent30h' for the current ISA
+.*Warning: invalid CSR `mhpmevent30h' for the current ISA
+.*Warning: invalid CSR `mhpmevent31h' for the current ISA
+.*Warning: invalid CSR `mhpmevent31h' for the current ISA
 .*Warning: invalid CSR `ubadaddr' for the privileged spec `1.11'
 .*Warning: invalid CSR `ubadaddr' for the privileged spec `1.11'
 .*Warning: invalid CSR `sbadaddr' for the privileged spec `1.11'
diff --git a/gas/testsuite/gas/riscv/csr-version-1p12.d b/gas/testsuite/gas/riscv/csr-version-1p12.d
index 08da50283fb..c30f413eccf 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p12.d
+++ b/gas/testsuite/gas/riscv/csr-version-1p12.d
@@ -663,6 +663,66 @@ Disassembly of section .text:
 [ 	]+[0-9a-f]+:[ 	]+61e59073[ 	]+csrw[ 	]+hstateen2h,a1
 [ 	]+[0-9a-f]+:[ 	]+61f02573[ 	]+csrr[ 	]+a0,hstateen3h
 [ 	]+[0-9a-f]+:[ 	]+61f59073[ 	]+csrw[ 	]+hstateen3h,a1
+[ 	]+[0-9a-f]+:[ 	]+da002573[ 	]+csrr[ 	]+a0,scountovf
+[ 	]+[0-9a-f]+:[ 	]+da059073[ 	]+csrw[ 	]+scountovf,a1
+[ 	]+[0-9a-f]+:[ 	]+72302573[ 	]+csrr[ 	]+a0,mhpmevent3h
+[ 	]+[0-9a-f]+:[ 	]+72359073[ 	]+csrw[ 	]+mhpmevent3h,a1
+[ 	]+[0-9a-f]+:[ 	]+72402573[ 	]+csrr[ 	]+a0,mhpmevent4h
+[ 	]+[0-9a-f]+:[ 	]+72459073[ 	]+csrw[ 	]+mhpmevent4h,a1
+[ 	]+[0-9a-f]+:[ 	]+72502573[ 	]+csrr[ 	]+a0,mhpmevent5h
+[ 	]+[0-9a-f]+:[ 	]+72559073[ 	]+csrw[ 	]+mhpmevent5h,a1
+[ 	]+[0-9a-f]+:[ 	]+72602573[ 	]+csrr[ 	]+a0,mhpmevent6h
+[ 	]+[0-9a-f]+:[ 	]+72659073[ 	]+csrw[ 	]+mhpmevent6h,a1
+[ 	]+[0-9a-f]+:[ 	]+72702573[ 	]+csrr[ 	]+a0,mhpmevent7h
+[ 	]+[0-9a-f]+:[ 	]+72759073[ 	]+csrw[ 	]+mhpmevent7h,a1
+[ 	]+[0-9a-f]+:[ 	]+72802573[ 	]+csrr[ 	]+a0,mhpmevent8h
+[ 	]+[0-9a-f]+:[ 	]+72859073[ 	]+csrw[ 	]+mhpmevent8h,a1
+[ 	]+[0-9a-f]+:[ 	]+72902573[ 	]+csrr[ 	]+a0,mhpmevent9h
+[ 	]+[0-9a-f]+:[ 	]+72959073[ 	]+csrw[ 	]+mhpmevent9h,a1
+[ 	]+[0-9a-f]+:[ 	]+72a02573[ 	]+csrr[ 	]+a0,mhpmevent10h
+[ 	]+[0-9a-f]+:[ 	]+72a59073[ 	]+csrw[ 	]+mhpmevent10h,a1
+[ 	]+[0-9a-f]+:[ 	]+72b02573[ 	]+csrr[ 	]+a0,mhpmevent11h
+[ 	]+[0-9a-f]+:[ 	]+72b59073[ 	]+csrw[ 	]+mhpmevent11h,a1
+[ 	]+[0-9a-f]+:[ 	]+72c02573[ 	]+csrr[ 	]+a0,mhpmevent12h
+[ 	]+[0-9a-f]+:[ 	]+72c59073[ 	]+csrw[ 	]+mhpmevent12h,a1
+[ 	]+[0-9a-f]+:[ 	]+72d02573[ 	]+csrr[ 	]+a0,mhpmevent13h
+[ 	]+[0-9a-f]+:[ 	]+72d59073[ 	]+csrw[ 	]+mhpmevent13h,a1
+[ 	]+[0-9a-f]+:[ 	]+72e02573[ 	]+csrr[ 	]+a0,mhpmevent14h
+[ 	]+[0-9a-f]+:[ 	]+72e59073[ 	]+csrw[ 	]+mhpmevent14h,a1
+[ 	]+[0-9a-f]+:[ 	]+72f02573[ 	]+csrr[ 	]+a0,mhpmevent15h
+[ 	]+[0-9a-f]+:[ 	]+72f59073[ 	]+csrw[ 	]+mhpmevent15h,a1
+[ 	]+[0-9a-f]+:[ 	]+73002573[ 	]+csrr[ 	]+a0,mhpmevent16h
+[ 	]+[0-9a-f]+:[ 	]+73059073[ 	]+csrw[ 	]+mhpmevent16h,a1
+[ 	]+[0-9a-f]+:[ 	]+73102573[ 	]+csrr[ 	]+a0,mhpmevent17h
+[ 	]+[0-9a-f]+:[ 	]+73159073[ 	]+csrw[ 	]+mhpmevent17h,a1
+[ 	]+[0-9a-f]+:[ 	]+73202573[ 	]+csrr[ 	]+a0,mhpmevent18h
+[ 	]+[0-9a-f]+:[ 	]+73259073[ 	]+csrw[ 	]+mhpmevent18h,a1
+[ 	]+[0-9a-f]+:[ 	]+73302573[ 	]+csrr[ 	]+a0,mhpmevent19h
+[ 	]+[0-9a-f]+:[ 	]+73359073[ 	]+csrw[ 	]+mhpmevent19h,a1
+[ 	]+[0-9a-f]+:[ 	]+73402573[ 	]+csrr[ 	]+a0,mhpmevent20h
+[ 	]+[0-9a-f]+:[ 	]+73459073[ 	]+csrw[ 	]+mhpmevent20h,a1
+[ 	]+[0-9a-f]+:[ 	]+73502573[ 	]+csrr[ 	]+a0,mhpmevent21h
+[ 	]+[0-9a-f]+:[ 	]+73559073[ 	]+csrw[ 	]+mhpmevent21h,a1
+[ 	]+[0-9a-f]+:[ 	]+73602573[ 	]+csrr[ 	]+a0,mhpmevent22h
+[ 	]+[0-9a-f]+:[ 	]+73659073[ 	]+csrw[ 	]+mhpmevent22h,a1
+[ 	]+[0-9a-f]+:[ 	]+73702573[ 	]+csrr[ 	]+a0,mhpmevent23h
+[ 	]+[0-9a-f]+:[ 	]+73759073[ 	]+csrw[ 	]+mhpmevent23h,a1
+[ 	]+[0-9a-f]+:[ 	]+73802573[ 	]+csrr[ 	]+a0,mhpmevent24h
+[ 	]+[0-9a-f]+:[ 	]+73859073[ 	]+csrw[ 	]+mhpmevent24h,a1
+[ 	]+[0-9a-f]+:[ 	]+73902573[ 	]+csrr[ 	]+a0,mhpmevent25h
+[ 	]+[0-9a-f]+:[ 	]+73959073[ 	]+csrw[ 	]+mhpmevent25h,a1
+[ 	]+[0-9a-f]+:[ 	]+73a02573[ 	]+csrr[ 	]+a0,mhpmevent26h
+[ 	]+[0-9a-f]+:[ 	]+73a59073[ 	]+csrw[ 	]+mhpmevent26h,a1
+[ 	]+[0-9a-f]+:[ 	]+73b02573[ 	]+csrr[ 	]+a0,mhpmevent27h
+[ 	]+[0-9a-f]+:[ 	]+73b59073[ 	]+csrw[ 	]+mhpmevent27h,a1
+[ 	]+[0-9a-f]+:[ 	]+73c02573[ 	]+csrr[ 	]+a0,mhpmevent28h
+[ 	]+[0-9a-f]+:[ 	]+73c59073[ 	]+csrw[ 	]+mhpmevent28h,a1
+[ 	]+[0-9a-f]+:[ 	]+73d02573[ 	]+csrr[ 	]+a0,mhpmevent29h
+[ 	]+[0-9a-f]+:[ 	]+73d59073[ 	]+csrw[ 	]+mhpmevent29h,a1
+[ 	]+[0-9a-f]+:[ 	]+73e02573[ 	]+csrr[ 	]+a0,mhpmevent30h
+[ 	]+[0-9a-f]+:[ 	]+73e59073[ 	]+csrw[ 	]+mhpmevent30h,a1
+[ 	]+[0-9a-f]+:[ 	]+73f02573[ 	]+csrr[ 	]+a0,mhpmevent31h
+[ 	]+[0-9a-f]+:[ 	]+73f59073[ 	]+csrw[ 	]+mhpmevent31h,a1
 [ 	]+[0-9a-f]+:[ 	]+04302573[ 	]+csrr[ 	]+a0,utval
 [ 	]+[0-9a-f]+:[ 	]+04359073[ 	]+csrw[ 	]+utval,a1
 [ 	]+[0-9a-f]+:[ 	]+14302573[ 	]+csrr[ 	]+a0,stval
diff --git a/gas/testsuite/gas/riscv/csr-version-1p12.l b/gas/testsuite/gas/riscv/csr-version-1p12.l
index 6f45008b62f..ce1d689e104 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p12.l
+++ b/gas/testsuite/gas/riscv/csr-version-1p12.l
@@ -261,6 +261,67 @@
 .*Warning: invalid CSR `hstateen2h' for the current ISA
 .*Warning: invalid CSR `hstateen3h' for the current ISA
 .*Warning: invalid CSR `hstateen3h' for the current ISA
+.*Warning: invalid CSR `scountovf' for the current ISA
+.*Warning: invalid CSR `scountovf' for the current ISA
+.*Warning: read-only CSR is written `csrw scountovf,a1'
+.*Warning: invalid CSR `mhpmevent3h' for the current ISA
+.*Warning: invalid CSR `mhpmevent3h' for the current ISA
+.*Warning: invalid CSR `mhpmevent4h' for the current ISA
+.*Warning: invalid CSR `mhpmevent4h' for the current ISA
+.*Warning: invalid CSR `mhpmevent5h' for the current ISA
+.*Warning: invalid CSR `mhpmevent5h' for the current ISA
+.*Warning: invalid CSR `mhpmevent6h' for the current ISA
+.*Warning: invalid CSR `mhpmevent6h' for the current ISA
+.*Warning: invalid CSR `mhpmevent7h' for the current ISA
+.*Warning: invalid CSR `mhpmevent7h' for the current ISA
+.*Warning: invalid CSR `mhpmevent8h' for the current ISA
+.*Warning: invalid CSR `mhpmevent8h' for the current ISA
+.*Warning: invalid CSR `mhpmevent9h' for the current ISA
+.*Warning: invalid CSR `mhpmevent9h' for the current ISA
+.*Warning: invalid CSR `mhpmevent10h' for the current ISA
+.*Warning: invalid CSR `mhpmevent10h' for the current ISA
+.*Warning: invalid CSR `mhpmevent11h' for the current ISA
+.*Warning: invalid CSR `mhpmevent11h' for the current ISA
+.*Warning: invalid CSR `mhpmevent12h' for the current ISA
+.*Warning: invalid CSR `mhpmevent12h' for the current ISA
+.*Warning: invalid CSR `mhpmevent13h' for the current ISA
+.*Warning: invalid CSR `mhpmevent13h' for the current ISA
+.*Warning: invalid CSR `mhpmevent14h' for the current ISA
+.*Warning: invalid CSR `mhpmevent14h' for the current ISA
+.*Warning: invalid CSR `mhpmevent15h' for the current ISA
+.*Warning: invalid CSR `mhpmevent15h' for the current ISA
+.*Warning: invalid CSR `mhpmevent16h' for the current ISA
+.*Warning: invalid CSR `mhpmevent16h' for the current ISA
+.*Warning: invalid CSR `mhpmevent17h' for the current ISA
+.*Warning: invalid CSR `mhpmevent17h' for the current ISA
+.*Warning: invalid CSR `mhpmevent18h' for the current ISA
+.*Warning: invalid CSR `mhpmevent18h' for the current ISA
+.*Warning: invalid CSR `mhpmevent19h' for the current ISA
+.*Warning: invalid CSR `mhpmevent19h' for the current ISA
+.*Warning: invalid CSR `mhpmevent20h' for the current ISA
+.*Warning: invalid CSR `mhpmevent20h' for the current ISA
+.*Warning: invalid CSR `mhpmevent21h' for the current ISA
+.*Warning: invalid CSR `mhpmevent21h' for the current ISA
+.*Warning: invalid CSR `mhpmevent22h' for the current ISA
+.*Warning: invalid CSR `mhpmevent22h' for the current ISA
+.*Warning: invalid CSR `mhpmevent23h' for the current ISA
+.*Warning: invalid CSR `mhpmevent23h' for the current ISA
+.*Warning: invalid CSR `mhpmevent24h' for the current ISA
+.*Warning: invalid CSR `mhpmevent24h' for the current ISA
+.*Warning: invalid CSR `mhpmevent25h' for the current ISA
+.*Warning: invalid CSR `mhpmevent25h' for the current ISA
+.*Warning: invalid CSR `mhpmevent26h' for the current ISA
+.*Warning: invalid CSR `mhpmevent26h' for the current ISA
+.*Warning: invalid CSR `mhpmevent27h' for the current ISA
+.*Warning: invalid CSR `mhpmevent27h' for the current ISA
+.*Warning: invalid CSR `mhpmevent28h' for the current ISA
+.*Warning: invalid CSR `mhpmevent28h' for the current ISA
+.*Warning: invalid CSR `mhpmevent29h' for the current ISA
+.*Warning: invalid CSR `mhpmevent29h' for the current ISA
+.*Warning: invalid CSR `mhpmevent30h' for the current ISA
+.*Warning: invalid CSR `mhpmevent30h' for the current ISA
+.*Warning: invalid CSR `mhpmevent31h' for the current ISA
+.*Warning: invalid CSR `mhpmevent31h' for the current ISA
 .*Warning: invalid CSR `ubadaddr' for the privileged spec `1.12'
 .*Warning: invalid CSR `ubadaddr' for the privileged spec `1.12'
 .*Warning: invalid CSR `sbadaddr' for the privileged spec `1.12'
diff --git a/gas/testsuite/gas/riscv/csr-version-1p9p1.d b/gas/testsuite/gas/riscv/csr-version-1p9p1.d
index d41bc634284..294742fefb3 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p9p1.d
+++ b/gas/testsuite/gas/riscv/csr-version-1p9p1.d
@@ -663,6 +663,66 @@ Disassembly of section .text:
 [ 	]+[0-9a-f]+:[ 	]+61e59073[ 	]+csrw[ 	]+0x61e,a1
 [ 	]+[0-9a-f]+:[ 	]+61f02573[ 	]+csrr[ 	]+a0,0x61f
 [ 	]+[0-9a-f]+:[ 	]+61f59073[ 	]+csrw[ 	]+0x61f,a1
+[ 	]+[0-9a-f]+:[ 	]+da002573[ 	]+csrr[ 	]+a0,0xda0
+[ 	]+[0-9a-f]+:[ 	]+da059073[ 	]+csrw[ 	]+0xda0,a1
+[ 	]+[0-9a-f]+:[ 	]+72302573[ 	]+csrr[ 	]+a0,0x723
+[ 	]+[0-9a-f]+:[ 	]+72359073[ 	]+csrw[ 	]+0x723,a1
+[ 	]+[0-9a-f]+:[ 	]+72402573[ 	]+csrr[ 	]+a0,0x724
+[ 	]+[0-9a-f]+:[ 	]+72459073[ 	]+csrw[ 	]+0x724,a1
+[ 	]+[0-9a-f]+:[ 	]+72502573[ 	]+csrr[ 	]+a0,0x725
+[ 	]+[0-9a-f]+:[ 	]+72559073[ 	]+csrw[ 	]+0x725,a1
+[ 	]+[0-9a-f]+:[ 	]+72602573[ 	]+csrr[ 	]+a0,0x726
+[ 	]+[0-9a-f]+:[ 	]+72659073[ 	]+csrw[ 	]+0x726,a1
+[ 	]+[0-9a-f]+:[ 	]+72702573[ 	]+csrr[ 	]+a0,0x727
+[ 	]+[0-9a-f]+:[ 	]+72759073[ 	]+csrw[ 	]+0x727,a1
+[ 	]+[0-9a-f]+:[ 	]+72802573[ 	]+csrr[ 	]+a0,0x728
+[ 	]+[0-9a-f]+:[ 	]+72859073[ 	]+csrw[ 	]+0x728,a1
+[ 	]+[0-9a-f]+:[ 	]+72902573[ 	]+csrr[ 	]+a0,0x729
+[ 	]+[0-9a-f]+:[ 	]+72959073[ 	]+csrw[ 	]+0x729,a1
+[ 	]+[0-9a-f]+:[ 	]+72a02573[ 	]+csrr[ 	]+a0,0x72a
+[ 	]+[0-9a-f]+:[ 	]+72a59073[ 	]+csrw[ 	]+0x72a,a1
+[ 	]+[0-9a-f]+:[ 	]+72b02573[ 	]+csrr[ 	]+a0,0x72b
+[ 	]+[0-9a-f]+:[ 	]+72b59073[ 	]+csrw[ 	]+0x72b,a1
+[ 	]+[0-9a-f]+:[ 	]+72c02573[ 	]+csrr[ 	]+a0,0x72c
+[ 	]+[0-9a-f]+:[ 	]+72c59073[ 	]+csrw[ 	]+0x72c,a1
+[ 	]+[0-9a-f]+:[ 	]+72d02573[ 	]+csrr[ 	]+a0,0x72d
+[ 	]+[0-9a-f]+:[ 	]+72d59073[ 	]+csrw[ 	]+0x72d,a1
+[ 	]+[0-9a-f]+:[ 	]+72e02573[ 	]+csrr[ 	]+a0,0x72e
+[ 	]+[0-9a-f]+:[ 	]+72e59073[ 	]+csrw[ 	]+0x72e,a1
+[ 	]+[0-9a-f]+:[ 	]+72f02573[ 	]+csrr[ 	]+a0,0x72f
+[ 	]+[0-9a-f]+:[ 	]+72f59073[ 	]+csrw[ 	]+0x72f,a1
+[ 	]+[0-9a-f]+:[ 	]+73002573[ 	]+csrr[ 	]+a0,0x730
+[ 	]+[0-9a-f]+:[ 	]+73059073[ 	]+csrw[ 	]+0x730,a1
+[ 	]+[0-9a-f]+:[ 	]+73102573[ 	]+csrr[ 	]+a0,0x731
+[ 	]+[0-9a-f]+:[ 	]+73159073[ 	]+csrw[ 	]+0x731,a1
+[ 	]+[0-9a-f]+:[ 	]+73202573[ 	]+csrr[ 	]+a0,0x732
+[ 	]+[0-9a-f]+:[ 	]+73259073[ 	]+csrw[ 	]+0x732,a1
+[ 	]+[0-9a-f]+:[ 	]+73302573[ 	]+csrr[ 	]+a0,0x733
+[ 	]+[0-9a-f]+:[ 	]+73359073[ 	]+csrw[ 	]+0x733,a1
+[ 	]+[0-9a-f]+:[ 	]+73402573[ 	]+csrr[ 	]+a0,0x734
+[ 	]+[0-9a-f]+:[ 	]+73459073[ 	]+csrw[ 	]+0x734,a1
+[ 	]+[0-9a-f]+:[ 	]+73502573[ 	]+csrr[ 	]+a0,0x735
+[ 	]+[0-9a-f]+:[ 	]+73559073[ 	]+csrw[ 	]+0x735,a1
+[ 	]+[0-9a-f]+:[ 	]+73602573[ 	]+csrr[ 	]+a0,0x736
+[ 	]+[0-9a-f]+:[ 	]+73659073[ 	]+csrw[ 	]+0x736,a1
+[ 	]+[0-9a-f]+:[ 	]+73702573[ 	]+csrr[ 	]+a0,0x737
+[ 	]+[0-9a-f]+:[ 	]+73759073[ 	]+csrw[ 	]+0x737,a1
+[ 	]+[0-9a-f]+:[ 	]+73802573[ 	]+csrr[ 	]+a0,0x738
+[ 	]+[0-9a-f]+:[ 	]+73859073[ 	]+csrw[ 	]+0x738,a1
+[ 	]+[0-9a-f]+:[ 	]+73902573[ 	]+csrr[ 	]+a0,0x739
+[ 	]+[0-9a-f]+:[ 	]+73959073[ 	]+csrw[ 	]+0x739,a1
+[ 	]+[0-9a-f]+:[ 	]+73a02573[ 	]+csrr[ 	]+a0,0x73a
+[ 	]+[0-9a-f]+:[ 	]+73a59073[ 	]+csrw[ 	]+0x73a,a1
+[ 	]+[0-9a-f]+:[ 	]+73b02573[ 	]+csrr[ 	]+a0,0x73b
+[ 	]+[0-9a-f]+:[ 	]+73b59073[ 	]+csrw[ 	]+0x73b,a1
+[ 	]+[0-9a-f]+:[ 	]+73c02573[ 	]+csrr[ 	]+a0,0x73c
+[ 	]+[0-9a-f]+:[ 	]+73c59073[ 	]+csrw[ 	]+0x73c,a1
+[ 	]+[0-9a-f]+:[ 	]+73d02573[ 	]+csrr[ 	]+a0,0x73d
+[ 	]+[0-9a-f]+:[ 	]+73d59073[ 	]+csrw[ 	]+0x73d,a1
+[ 	]+[0-9a-f]+:[ 	]+73e02573[ 	]+csrr[ 	]+a0,0x73e
+[ 	]+[0-9a-f]+:[ 	]+73e59073[ 	]+csrw[ 	]+0x73e,a1
+[ 	]+[0-9a-f]+:[ 	]+73f02573[ 	]+csrr[ 	]+a0,0x73f
+[ 	]+[0-9a-f]+:[ 	]+73f59073[ 	]+csrw[ 	]+0x73f,a1
 [ 	]+[0-9a-f]+:[ 	]+04302573[ 	]+csrr[ 	]+a0,ubadaddr
 [ 	]+[0-9a-f]+:[ 	]+04359073[ 	]+csrw[ 	]+ubadaddr,a1
 [ 	]+[0-9a-f]+:[ 	]+14302573[ 	]+csrr[ 	]+a0,sbadaddr
diff --git a/gas/testsuite/gas/riscv/csr-version-1p9p1.l b/gas/testsuite/gas/riscv/csr-version-1p9p1.l
index 6e9c35495eb..9ff40ef8249 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p9p1.l
+++ b/gas/testsuite/gas/riscv/csr-version-1p9p1.l
@@ -521,6 +521,127 @@
 .*Warning: invalid CSR `hstateen3h' for the privileged spec `1.9.1'
 .*Warning: invalid CSR `hstateen3h' for the current ISA
 .*Warning: invalid CSR `hstateen3h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `scountovf' for the current ISA
+.*Warning: invalid CSR `scountovf' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `scountovf' for the current ISA
+.*Warning: invalid CSR `scountovf' for the privileged spec `1.9.1'
+.*Warning: read-only CSR is written `csrw scountovf,a1'
+.*Warning: invalid CSR `mhpmevent3h' for the current ISA
+.*Warning: invalid CSR `mhpmevent3h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mhpmevent3h' for the current ISA
+.*Warning: invalid CSR `mhpmevent3h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mhpmevent4h' for the current ISA
+.*Warning: invalid CSR `mhpmevent4h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mhpmevent4h' for the current ISA
+.*Warning: invalid CSR `mhpmevent4h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mhpmevent5h' for the current ISA
+.*Warning: invalid CSR `mhpmevent5h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mhpmevent5h' for the current ISA
+.*Warning: invalid CSR `mhpmevent5h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mhpmevent6h' for the current ISA
+.*Warning: invalid CSR `mhpmevent6h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mhpmevent6h' for the current ISA
+.*Warning: invalid CSR `mhpmevent6h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mhpmevent7h' for the current ISA
+.*Warning: invalid CSR `mhpmevent7h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mhpmevent7h' for the current ISA
+.*Warning: invalid CSR `mhpmevent7h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mhpmevent8h' for the current ISA
+.*Warning: invalid CSR `mhpmevent8h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mhpmevent8h' for the current ISA
+.*Warning: invalid CSR `mhpmevent8h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mhpmevent9h' for the current ISA
+.*Warning: invalid CSR `mhpmevent9h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mhpmevent9h' for the current ISA
+.*Warning: invalid CSR `mhpmevent9h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mhpmevent10h' for the current ISA
+.*Warning: invalid CSR `mhpmevent10h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mhpmevent10h' for the current ISA
+.*Warning: invalid CSR `mhpmevent10h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mhpmevent11h' for the current ISA
+.*Warning: invalid CSR `mhpmevent11h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mhpmevent11h' for the current ISA
+.*Warning: invalid CSR `mhpmevent11h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mhpmevent12h' for the current ISA
+.*Warning: invalid CSR `mhpmevent12h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mhpmevent12h' for the current ISA
+.*Warning: invalid CSR `mhpmevent12h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mhpmevent13h' for the current ISA
+.*Warning: invalid CSR `mhpmevent13h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mhpmevent13h' for the current ISA
+.*Warning: invalid CSR `mhpmevent13h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mhpmevent14h' for the current ISA
+.*Warning: invalid CSR `mhpmevent14h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mhpmevent14h' for the current ISA
+.*Warning: invalid CSR `mhpmevent14h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mhpmevent15h' for the current ISA
+.*Warning: invalid CSR `mhpmevent15h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mhpmevent15h' for the current ISA
+.*Warning: invalid CSR `mhpmevent15h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mhpmevent16h' for the current ISA
+.*Warning: invalid CSR `mhpmevent16h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mhpmevent16h' for the current ISA
+.*Warning: invalid CSR `mhpmevent16h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mhpmevent17h' for the current ISA
+.*Warning: invalid CSR `mhpmevent17h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mhpmevent17h' for the current ISA
+.*Warning: invalid CSR `mhpmevent17h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mhpmevent18h' for the current ISA
+.*Warning: invalid CSR `mhpmevent18h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mhpmevent18h' for the current ISA
+.*Warning: invalid CSR `mhpmevent18h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mhpmevent19h' for the current ISA
+.*Warning: invalid CSR `mhpmevent19h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mhpmevent19h' for the current ISA
+.*Warning: invalid CSR `mhpmevent19h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mhpmevent20h' for the current ISA
+.*Warning: invalid CSR `mhpmevent20h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mhpmevent20h' for the current ISA
+.*Warning: invalid CSR `mhpmevent20h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mhpmevent21h' for the current ISA
+.*Warning: invalid CSR `mhpmevent21h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mhpmevent21h' for the current ISA
+.*Warning: invalid CSR `mhpmevent21h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mhpmevent22h' for the current ISA
+.*Warning: invalid CSR `mhpmevent22h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mhpmevent22h' for the current ISA
+.*Warning: invalid CSR `mhpmevent22h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mhpmevent23h' for the current ISA
+.*Warning: invalid CSR `mhpmevent23h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mhpmevent23h' for the current ISA
+.*Warning: invalid CSR `mhpmevent23h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mhpmevent24h' for the current ISA
+.*Warning: invalid CSR `mhpmevent24h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mhpmevent24h' for the current ISA
+.*Warning: invalid CSR `mhpmevent24h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mhpmevent25h' for the current ISA
+.*Warning: invalid CSR `mhpmevent25h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mhpmevent25h' for the current ISA
+.*Warning: invalid CSR `mhpmevent25h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mhpmevent26h' for the current ISA
+.*Warning: invalid CSR `mhpmevent26h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mhpmevent26h' for the current ISA
+.*Warning: invalid CSR `mhpmevent26h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mhpmevent27h' for the current ISA
+.*Warning: invalid CSR `mhpmevent27h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mhpmevent27h' for the current ISA
+.*Warning: invalid CSR `mhpmevent27h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mhpmevent28h' for the current ISA
+.*Warning: invalid CSR `mhpmevent28h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mhpmevent28h' for the current ISA
+.*Warning: invalid CSR `mhpmevent28h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mhpmevent29h' for the current ISA
+.*Warning: invalid CSR `mhpmevent29h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mhpmevent29h' for the current ISA
+.*Warning: invalid CSR `mhpmevent29h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mhpmevent30h' for the current ISA
+.*Warning: invalid CSR `mhpmevent30h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mhpmevent30h' for the current ISA
+.*Warning: invalid CSR `mhpmevent30h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mhpmevent31h' for the current ISA
+.*Warning: invalid CSR `mhpmevent31h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mhpmevent31h' for the current ISA
+.*Warning: invalid CSR `mhpmevent31h' for the privileged spec `1.9.1'
 .*Warning: invalid CSR `fflags' for the current ISA
 .*Warning: invalid CSR `fflags' for the current ISA
 .*Warning: invalid CSR `frm' for the current ISA
diff --git a/gas/testsuite/gas/riscv/csr.s b/gas/testsuite/gas/riscv/csr.s
index a65dbe534b2..38c5015fc94 100644
--- a/gas/testsuite/gas/riscv/csr.s
+++ b/gas/testsuite/gas/riscv/csr.s
@@ -372,6 +372,38 @@
 	csr hstateen2h
 	csr hstateen3h
 
+	# Sscofpmf extension
+	csr scountovf
+	csr mhpmevent3h
+	csr mhpmevent4h
+	csr mhpmevent5h
+	csr mhpmevent6h
+	csr mhpmevent7h
+	csr mhpmevent8h
+	csr mhpmevent9h
+	csr mhpmevent10h
+	csr mhpmevent11h
+	csr mhpmevent12h
+	csr mhpmevent13h
+	csr mhpmevent14h
+	csr mhpmevent15h
+	csr mhpmevent16h
+	csr mhpmevent17h
+	csr mhpmevent18h
+	csr mhpmevent19h
+	csr mhpmevent20h
+	csr mhpmevent21h
+	csr mhpmevent22h
+	csr mhpmevent23h
+	csr mhpmevent24h
+	csr mhpmevent25h
+	csr mhpmevent26h
+	csr mhpmevent27h
+	csr mhpmevent28h
+	csr mhpmevent29h
+	csr mhpmevent30h
+	csr mhpmevent31h
+
 	# Supported in previous priv spec, but dropped now
 
 	csr ubadaddr		# 0x043 in 1.9.1, but the value is utval since 1.10
diff --git a/include/opcode/riscv-opc.h b/include/opcode/riscv-opc.h
index e218f6641cc..d5802d9cc18 100644
--- a/include/opcode/riscv-opc.h
+++ b/include/opcode/riscv-opc.h
@@ -2367,6 +2367,37 @@
 #define CSR_HSTATEEN1H 0x61d
 #define CSR_HSTATEEN2H 0x61e
 #define CSR_HSTATEEN3H 0x61f
+/* Sscofpmf extension */
+#define CSR_SCOUNTOVF 0xda0
+#define CSR_MHPMEVENT3H 0x723
+#define CSR_MHPMEVENT4H 0x724
+#define CSR_MHPMEVENT5H 0x725
+#define CSR_MHPMEVENT6H 0x726
+#define CSR_MHPMEVENT7H 0x727
+#define CSR_MHPMEVENT8H 0x728
+#define CSR_MHPMEVENT9H 0x729
+#define CSR_MHPMEVENT10H 0x72a
+#define CSR_MHPMEVENT11H 0x72b
+#define CSR_MHPMEVENT12H 0x72c
+#define CSR_MHPMEVENT13H 0x72d
+#define CSR_MHPMEVENT14H 0x72e
+#define CSR_MHPMEVENT15H 0x72f
+#define CSR_MHPMEVENT16H 0x730
+#define CSR_MHPMEVENT17H 0x731
+#define CSR_MHPMEVENT18H 0x732
+#define CSR_MHPMEVENT19H 0x733
+#define CSR_MHPMEVENT20H 0x734
+#define CSR_MHPMEVENT21H 0x735
+#define CSR_MHPMEVENT22H 0x736
+#define CSR_MHPMEVENT23H 0x737
+#define CSR_MHPMEVENT24H 0x738
+#define CSR_MHPMEVENT25H 0x739
+#define CSR_MHPMEVENT26H 0x73a
+#define CSR_MHPMEVENT27H 0x73b
+#define CSR_MHPMEVENT28H 0x73c
+#define CSR_MHPMEVENT29H 0x73d
+#define CSR_MHPMEVENT30H 0x73e
+#define CSR_MHPMEVENT31H 0x73f
 /* Unprivileged CSR addresses.  */
 #define CSR_FFLAGS 0x1
 #define CSR_FRM 0x2
@@ -3050,6 +3081,37 @@ DECLARE_CSR(hstateen0h, CSR_HSTATEEN0H, CSR_CLASS_SMSTATEEN_32, PRIV_SPEC_CLASS_
 DECLARE_CSR(hstateen1h, CSR_HSTATEEN1H, CSR_CLASS_SMSTATEEN_32, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
 DECLARE_CSR(hstateen2h, CSR_HSTATEEN2H, CSR_CLASS_SMSTATEEN_32, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
 DECLARE_CSR(hstateen3h, CSR_HSTATEEN3H, CSR_CLASS_SMSTATEEN_32, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
+/* Sscofpmf extension */
+DECLARE_CSR(scountovf, CSR_SCOUNTOVF, CSR_CLASS_SSCOFPMF, PRIV_SPEC_CLASS_1P11, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmevent3h, CSR_MHPMEVENT3H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_1P11, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmevent4h, CSR_MHPMEVENT4H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_1P11, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmevent5h, CSR_MHPMEVENT5H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_1P11, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmevent6h, CSR_MHPMEVENT6H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_1P11, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmevent7h, CSR_MHPMEVENT7H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_1P11, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmevent8h, CSR_MHPMEVENT8H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_1P11, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmevent9h, CSR_MHPMEVENT9H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_1P11, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmevent10h, CSR_MHPMEVENT10H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_1P11, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmevent11h, CSR_MHPMEVENT11H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_1P11, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmevent12h, CSR_MHPMEVENT12H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_1P11, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmevent13h, CSR_MHPMEVENT13H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_1P11, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmevent14h, CSR_MHPMEVENT14H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_1P11, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmevent15h, CSR_MHPMEVENT15H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_1P11, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmevent16h, CSR_MHPMEVENT16H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_1P11, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmevent17h, CSR_MHPMEVENT17H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_1P11, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmevent18h, CSR_MHPMEVENT18H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_1P11, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmevent19h, CSR_MHPMEVENT19H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_1P11, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmevent20h, CSR_MHPMEVENT20H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_1P11, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmevent21h, CSR_MHPMEVENT21H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_1P11, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmevent22h, CSR_MHPMEVENT22H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_1P11, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmevent23h, CSR_MHPMEVENT23H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_1P11, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmevent24h, CSR_MHPMEVENT24H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_1P11, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmevent25h, CSR_MHPMEVENT25H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_1P11, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmevent26h, CSR_MHPMEVENT26H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_1P11, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmevent27h, CSR_MHPMEVENT27H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_1P11, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmevent28h, CSR_MHPMEVENT28H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_1P11, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmevent29h, CSR_MHPMEVENT29H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_1P11, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmevent30h, CSR_MHPMEVENT30H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_1P11, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmevent31h, CSR_MHPMEVENT31H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_1P11, PRIV_SPEC_CLASS_DRAFT)
 /* Dropped CSRs.  */
 DECLARE_CSR(mbase, CSR_MBASE, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_1P10)
 DECLARE_CSR(mbound, CSR_MBOUND, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_1P10)
-- 
2.32.0


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

* [PATCH 6/6] RISC-V: Add 'Sstc' extension and its CSRs
  2022-01-11 10:59 [PATCH 0/6] RISC-V: Add Privileged Arch 1.12 and More CSRs Tsukasa OI
                   ` (4 preceding siblings ...)
  2022-01-11 10:59 ` [PATCH 5/6] RISC-V: Add 'Sscofpmf' extension with " Tsukasa OI
@ 2022-01-11 10:59 ` Tsukasa OI
  2022-02-24 12:10 ` [PATCH 0/3] RISC-V: Add CSRs for several supervisor extensions Tsukasa OI
  6 siblings, 0 replies; 32+ messages in thread
From: Tsukasa OI @ 2022-01-11 10:59 UTC (permalink / raw)
  To: Tsukasa OI; +Cc: binutils

This commit adds "stimecmp / vstimecmp" Extension (Sstc) and its CSRs.

bfd/ChangeLog:

	* elfxx-riscv.c (riscv_supported_std_s_ext): Add 'Sstc'
	extension to valid 'S' extension list.

gas/ChangeLog:

	* config/tc-riscv.c (enum riscv_csr_class): Add CSR classes for
	'Sstc' extension. (riscv_csr_address): Add handling for new CSR
	classes.
	* testsuite/gas/riscv/csr-dw-regnums.s: Add new CSRs.
	* testsuite/gas/riscv/csr-dw-regnums.d: 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_STIMECMP, CSR_STIMECMPH,
	CSR_VSTIMECMP, CSR_VSTIMECMPH): New CSR macros.
---
 bfd/elfxx-riscv.c                           |  1 +
 gas/config/tc-riscv.c                       |  8 ++++++++
 gas/testsuite/gas/riscv/csr-dw-regnums.d    |  4 ++++
 gas/testsuite/gas/riscv/csr-dw-regnums.s    |  5 +++++
 gas/testsuite/gas/riscv/csr-version-1p10.d  |  8 ++++++++
 gas/testsuite/gas/riscv/csr-version-1p10.l  | 16 ++++++++++++++++
 gas/testsuite/gas/riscv/csr-version-1p11.d  |  8 ++++++++
 gas/testsuite/gas/riscv/csr-version-1p11.l  | 12 ++++++++++++
 gas/testsuite/gas/riscv/csr-version-1p12.d  |  8 ++++++++
 gas/testsuite/gas/riscv/csr-version-1p12.l  |  8 ++++++++
 gas/testsuite/gas/riscv/csr-version-1p9p1.d |  8 ++++++++
 gas/testsuite/gas/riscv/csr-version-1p9p1.l | 16 ++++++++++++++++
 gas/testsuite/gas/riscv/csr.s               |  6 ++++++
 include/opcode/riscv-opc.h                  | 10 ++++++++++
 14 files changed, 118 insertions(+)

diff --git a/bfd/elfxx-riscv.c b/bfd/elfxx-riscv.c
index f8061869047..eeef566586f 100644
--- a/bfd/elfxx-riscv.c
+++ b/bfd/elfxx-riscv.c
@@ -1229,6 +1229,7 @@ static struct riscv_supported_ext riscv_supported_std_s_ext[] =
 {
   {"smstateen",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
   {"sscofpmf",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
+  {"sstc",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
   {"svinval",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
   {NULL, 0, 0, 0, 0}
 };
diff --git a/gas/config/tc-riscv.c b/gas/config/tc-riscv.c
index 03389605869..36e527e1b9c 100644
--- a/gas/config/tc-riscv.c
+++ b/gas/config/tc-riscv.c
@@ -69,6 +69,8 @@ enum riscv_csr_class
   CSR_CLASS_SMSTATEEN_32,	/* Smstateen RV32 only */
   CSR_CLASS_SSCOFPMF,		/* Sscofpmf only */
   CSR_CLASS_SSCOFPMF_32,	/* Sscofpmf RV32 only */
+  CSR_CLASS_SSTC,		/* Sstc only */
+  CSR_CLASS_SSTC_32,		/* Sstc RV32 only */
   CSR_CLASS_DEBUG	/* debug CSR */
 };
 
@@ -921,6 +923,12 @@ riscv_csr_address (const char *csr_name,
     case CSR_CLASS_SSCOFPMF_32:
       result = (xlen == 32 && riscv_subset_supports (&riscv_rps_as, "sscofpmf"));
       break;
+    case CSR_CLASS_SSTC:
+      result = riscv_subset_supports (&riscv_rps_as, "sstc");
+      break;
+    case CSR_CLASS_SSTC_32:
+      result = (xlen == 32 && riscv_subset_supports (&riscv_rps_as, "sstc"));
+      break;
     case CSR_CLASS_DEBUG:
       need_check_version = false;
       break;
diff --git a/gas/testsuite/gas/riscv/csr-dw-regnums.d b/gas/testsuite/gas/riscv/csr-dw-regnums.d
index 355272e5327..6c25ad64a0d 100644
--- a/gas/testsuite/gas/riscv/csr-dw-regnums.d
+++ b/gas/testsuite/gas/riscv/csr-dw-regnums.d
@@ -374,6 +374,10 @@ 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: 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
+  DW_CFA_offset_extended_sf: r4701 \(vstimecmph\) at cfa\+2420
   DW_CFA_offset_extended_sf: r4163 \(utval\) at cfa\+268
   DW_CFA_offset_extended_sf: r4419 \(stval\) at cfa\+1292
   DW_CFA_offset_extended_sf: r4480 \(satp\) at cfa\+1536
diff --git a/gas/testsuite/gas/riscv/csr-dw-regnums.s b/gas/testsuite/gas/riscv/csr-dw-regnums.s
index 3f7a520c6f2..26c9daeb2ad 100644
--- a/gas/testsuite/gas/riscv/csr-dw-regnums.s
+++ b/gas/testsuite/gas/riscv/csr-dw-regnums.s
@@ -367,6 +367,11 @@ _start:
 	.cfi_offset mhpmevent29h, 7412
 	.cfi_offset mhpmevent30h, 7416
 	.cfi_offset mhpmevent31h, 7420
+	# Sstc extension
+	.cfi_offset stimecmp, 1332
+	.cfi_offset stimecmph, 1396
+	.cfi_offset vstimecmp, 2356
+	.cfi_offset vstimecmph, 2420
 	# dropped aliases
 	.cfi_offset ubadaddr, 268
 	.cfi_offset sbadaddr, 1292
diff --git a/gas/testsuite/gas/riscv/csr-version-1p10.d b/gas/testsuite/gas/riscv/csr-version-1p10.d
index 84cd8c651ce..27efd5c1ea2 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p10.d
+++ b/gas/testsuite/gas/riscv/csr-version-1p10.d
@@ -723,6 +723,14 @@ Disassembly of section .text:
 [ 	]+[0-9a-f]+:[ 	]+73e59073[ 	]+csrw[ 	]+0x73e,a1
 [ 	]+[0-9a-f]+:[ 	]+73f02573[ 	]+csrr[ 	]+a0,0x73f
 [ 	]+[0-9a-f]+:[ 	]+73f59073[ 	]+csrw[ 	]+0x73f,a1
+[ 	]+[0-9a-f]+:[ 	]+14d02573[ 	]+csrr[ 	]+a0,0x14d
+[ 	]+[0-9a-f]+:[ 	]+14d59073[ 	]+csrw[ 	]+0x14d,a1
+[ 	]+[0-9a-f]+:[ 	]+15d02573[ 	]+csrr[ 	]+a0,0x15d
+[ 	]+[0-9a-f]+:[ 	]+15d59073[ 	]+csrw[ 	]+0x15d,a1
+[ 	]+[0-9a-f]+:[ 	]+24d02573[ 	]+csrr[ 	]+a0,0x24d
+[ 	]+[0-9a-f]+:[ 	]+24d59073[ 	]+csrw[ 	]+0x24d,a1
+[ 	]+[0-9a-f]+:[ 	]+25d02573[ 	]+csrr[ 	]+a0,0x25d
+[ 	]+[0-9a-f]+:[ 	]+25d59073[ 	]+csrw[ 	]+0x25d,a1
 [ 	]+[0-9a-f]+:[ 	]+04302573[ 	]+csrr[ 	]+a0,utval
 [ 	]+[0-9a-f]+:[ 	]+04359073[ 	]+csrw[ 	]+utval,a1
 [ 	]+[0-9a-f]+:[ 	]+14302573[ 	]+csrr[ 	]+a0,stval
diff --git a/gas/testsuite/gas/riscv/csr-version-1p10.l b/gas/testsuite/gas/riscv/csr-version-1p10.l
index 264bda20b2a..03a36d24510 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p10.l
+++ b/gas/testsuite/gas/riscv/csr-version-1p10.l
@@ -590,6 +590,22 @@
 .*Warning: invalid CSR `mhpmevent31h' for the privileged spec `1.10'
 .*Warning: invalid CSR `mhpmevent31h' for the current ISA
 .*Warning: invalid CSR `mhpmevent31h' for the privileged spec `1.10'
+.*Warning: invalid CSR `stimecmp' for the current ISA
+.*Warning: invalid CSR `stimecmp' for the privileged spec `1.10'
+.*Warning: invalid CSR `stimecmp' for the current ISA
+.*Warning: invalid CSR `stimecmp' for the privileged spec `1.10'
+.*Warning: invalid CSR `stimecmph' for the current ISA
+.*Warning: invalid CSR `stimecmph' for the privileged spec `1.10'
+.*Warning: invalid CSR `stimecmph' for the current ISA
+.*Warning: invalid CSR `stimecmph' for the privileged spec `1.10'
+.*Warning: invalid CSR `vstimecmp' for the current ISA
+.*Warning: invalid CSR `vstimecmp' for the privileged spec `1.10'
+.*Warning: invalid CSR `vstimecmp' for the current ISA
+.*Warning: invalid CSR `vstimecmp' for the privileged spec `1.10'
+.*Warning: invalid CSR `vstimecmph' for the current ISA
+.*Warning: invalid CSR `vstimecmph' for the privileged spec `1.10'
+.*Warning: invalid CSR `vstimecmph' for the current ISA
+.*Warning: invalid CSR `vstimecmph' for the privileged spec `1.10'
 .*Warning: invalid CSR `ubadaddr' for the privileged spec `1.10'
 .*Warning: invalid CSR `ubadaddr' for the privileged spec `1.10'
 .*Warning: invalid CSR `sbadaddr' for the privileged spec `1.10'
diff --git a/gas/testsuite/gas/riscv/csr-version-1p11.d b/gas/testsuite/gas/riscv/csr-version-1p11.d
index 0a37e88654c..ac81a66f27b 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p11.d
+++ b/gas/testsuite/gas/riscv/csr-version-1p11.d
@@ -723,6 +723,14 @@ 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]+:[ 	]+14d02573[ 	]+csrr[ 	]+a0,stimecmp
+[ 	]+[0-9a-f]+:[ 	]+14d59073[ 	]+csrw[ 	]+stimecmp,a1
+[ 	]+[0-9a-f]+:[ 	]+15d02573[ 	]+csrr[ 	]+a0,stimecmph
+[ 	]+[0-9a-f]+:[ 	]+15d59073[ 	]+csrw[ 	]+stimecmph,a1
+[ 	]+[0-9a-f]+:[ 	]+24d02573[ 	]+csrr[ 	]+a0,0x24d
+[ 	]+[0-9a-f]+:[ 	]+24d59073[ 	]+csrw[ 	]+0x24d,a1
+[ 	]+[0-9a-f]+:[ 	]+25d02573[ 	]+csrr[ 	]+a0,0x25d
+[ 	]+[0-9a-f]+:[ 	]+25d59073[ 	]+csrw[ 	]+0x25d,a1
 [ 	]+[0-9a-f]+:[ 	]+04302573[ 	]+csrr[ 	]+a0,utval
 [ 	]+[0-9a-f]+:[ 	]+04359073[ 	]+csrw[ 	]+utval,a1
 [ 	]+[0-9a-f]+:[ 	]+14302573[ 	]+csrr[ 	]+a0,stval
diff --git a/gas/testsuite/gas/riscv/csr-version-1p11.l b/gas/testsuite/gas/riscv/csr-version-1p11.l
index 89e0894c21d..44c73e152f8 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p11.l
+++ b/gas/testsuite/gas/riscv/csr-version-1p11.l
@@ -528,6 +528,18 @@
 .*Warning: invalid CSR `mhpmevent30h' for the current ISA
 .*Warning: invalid CSR `mhpmevent31h' for the current ISA
 .*Warning: invalid CSR `mhpmevent31h' for the current ISA
+.*Warning: invalid CSR `stimecmp' for the current ISA
+.*Warning: invalid CSR `stimecmp' for the current ISA
+.*Warning: invalid CSR `stimecmph' for the current ISA
+.*Warning: invalid CSR `stimecmph' for the current ISA
+.*Warning: invalid CSR `vstimecmp' for the current ISA
+.*Warning: invalid CSR `vstimecmp' for the privileged spec `1.11'
+.*Warning: invalid CSR `vstimecmp' for the current ISA
+.*Warning: invalid CSR `vstimecmp' for the privileged spec `1.11'
+.*Warning: invalid CSR `vstimecmph' for the current ISA
+.*Warning: invalid CSR `vstimecmph' for the privileged spec `1.11'
+.*Warning: invalid CSR `vstimecmph' for the current ISA
+.*Warning: invalid CSR `vstimecmph' for the privileged spec `1.11'
 .*Warning: invalid CSR `ubadaddr' for the privileged spec `1.11'
 .*Warning: invalid CSR `ubadaddr' for the privileged spec `1.11'
 .*Warning: invalid CSR `sbadaddr' for the privileged spec `1.11'
diff --git a/gas/testsuite/gas/riscv/csr-version-1p12.d b/gas/testsuite/gas/riscv/csr-version-1p12.d
index c30f413eccf..0b6fb537b98 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p12.d
+++ b/gas/testsuite/gas/riscv/csr-version-1p12.d
@@ -723,6 +723,14 @@ 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]+:[ 	]+14d02573[ 	]+csrr[ 	]+a0,stimecmp
+[ 	]+[0-9a-f]+:[ 	]+14d59073[ 	]+csrw[ 	]+stimecmp,a1
+[ 	]+[0-9a-f]+:[ 	]+15d02573[ 	]+csrr[ 	]+a0,stimecmph
+[ 	]+[0-9a-f]+:[ 	]+15d59073[ 	]+csrw[ 	]+stimecmph,a1
+[ 	]+[0-9a-f]+:[ 	]+24d02573[ 	]+csrr[ 	]+a0,vstimecmp
+[ 	]+[0-9a-f]+:[ 	]+24d59073[ 	]+csrw[ 	]+vstimecmp,a1
+[ 	]+[0-9a-f]+:[ 	]+25d02573[ 	]+csrr[ 	]+a0,vstimecmph
+[ 	]+[0-9a-f]+:[ 	]+25d59073[ 	]+csrw[ 	]+vstimecmph,a1
 [ 	]+[0-9a-f]+:[ 	]+04302573[ 	]+csrr[ 	]+a0,utval
 [ 	]+[0-9a-f]+:[ 	]+04359073[ 	]+csrw[ 	]+utval,a1
 [ 	]+[0-9a-f]+:[ 	]+14302573[ 	]+csrr[ 	]+a0,stval
diff --git a/gas/testsuite/gas/riscv/csr-version-1p12.l b/gas/testsuite/gas/riscv/csr-version-1p12.l
index ce1d689e104..38404de1988 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p12.l
+++ b/gas/testsuite/gas/riscv/csr-version-1p12.l
@@ -322,6 +322,14 @@
 .*Warning: invalid CSR `mhpmevent30h' for the current ISA
 .*Warning: invalid CSR `mhpmevent31h' for the current ISA
 .*Warning: invalid CSR `mhpmevent31h' for the current ISA
+.*Warning: invalid CSR `stimecmp' for the current ISA
+.*Warning: invalid CSR `stimecmp' for the current ISA
+.*Warning: invalid CSR `stimecmph' for the current ISA
+.*Warning: invalid CSR `stimecmph' for the current ISA
+.*Warning: invalid CSR `vstimecmp' for the current ISA
+.*Warning: invalid CSR `vstimecmp' for the current ISA
+.*Warning: invalid CSR `vstimecmph' for the current ISA
+.*Warning: invalid CSR `vstimecmph' for the current ISA
 .*Warning: invalid CSR `ubadaddr' for the privileged spec `1.12'
 .*Warning: invalid CSR `ubadaddr' for the privileged spec `1.12'
 .*Warning: invalid CSR `sbadaddr' for the privileged spec `1.12'
diff --git a/gas/testsuite/gas/riscv/csr-version-1p9p1.d b/gas/testsuite/gas/riscv/csr-version-1p9p1.d
index 294742fefb3..d1075221b34 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p9p1.d
+++ b/gas/testsuite/gas/riscv/csr-version-1p9p1.d
@@ -723,6 +723,14 @@ Disassembly of section .text:
 [ 	]+[0-9a-f]+:[ 	]+73e59073[ 	]+csrw[ 	]+0x73e,a1
 [ 	]+[0-9a-f]+:[ 	]+73f02573[ 	]+csrr[ 	]+a0,0x73f
 [ 	]+[0-9a-f]+:[ 	]+73f59073[ 	]+csrw[ 	]+0x73f,a1
+[ 	]+[0-9a-f]+:[ 	]+14d02573[ 	]+csrr[ 	]+a0,0x14d
+[ 	]+[0-9a-f]+:[ 	]+14d59073[ 	]+csrw[ 	]+0x14d,a1
+[ 	]+[0-9a-f]+:[ 	]+15d02573[ 	]+csrr[ 	]+a0,0x15d
+[ 	]+[0-9a-f]+:[ 	]+15d59073[ 	]+csrw[ 	]+0x15d,a1
+[ 	]+[0-9a-f]+:[ 	]+24d02573[ 	]+csrr[ 	]+a0,0x24d
+[ 	]+[0-9a-f]+:[ 	]+24d59073[ 	]+csrw[ 	]+0x24d,a1
+[ 	]+[0-9a-f]+:[ 	]+25d02573[ 	]+csrr[ 	]+a0,0x25d
+[ 	]+[0-9a-f]+:[ 	]+25d59073[ 	]+csrw[ 	]+0x25d,a1
 [ 	]+[0-9a-f]+:[ 	]+04302573[ 	]+csrr[ 	]+a0,ubadaddr
 [ 	]+[0-9a-f]+:[ 	]+04359073[ 	]+csrw[ 	]+ubadaddr,a1
 [ 	]+[0-9a-f]+:[ 	]+14302573[ 	]+csrr[ 	]+a0,sbadaddr
diff --git a/gas/testsuite/gas/riscv/csr-version-1p9p1.l b/gas/testsuite/gas/riscv/csr-version-1p9p1.l
index 9ff40ef8249..be569a123e6 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p9p1.l
+++ b/gas/testsuite/gas/riscv/csr-version-1p9p1.l
@@ -642,6 +642,22 @@
 .*Warning: invalid CSR `mhpmevent31h' for the privileged spec `1.9.1'
 .*Warning: invalid CSR `mhpmevent31h' for the current ISA
 .*Warning: invalid CSR `mhpmevent31h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `stimecmp' for the current ISA
+.*Warning: invalid CSR `stimecmp' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `stimecmp' for the current ISA
+.*Warning: invalid CSR `stimecmp' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `stimecmph' for the current ISA
+.*Warning: invalid CSR `stimecmph' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `stimecmph' for the current ISA
+.*Warning: invalid CSR `stimecmph' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `vstimecmp' for the current ISA
+.*Warning: invalid CSR `vstimecmp' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `vstimecmp' for the current ISA
+.*Warning: invalid CSR `vstimecmp' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `vstimecmph' for the current ISA
+.*Warning: invalid CSR `vstimecmph' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `vstimecmph' for the current ISA
+.*Warning: invalid CSR `vstimecmph' for the privileged spec `1.9.1'
 .*Warning: invalid CSR `fflags' for the current ISA
 .*Warning: invalid CSR `fflags' for the current ISA
 .*Warning: invalid CSR `frm' for the current ISA
diff --git a/gas/testsuite/gas/riscv/csr.s b/gas/testsuite/gas/riscv/csr.s
index 38c5015fc94..67e15d4cefc 100644
--- a/gas/testsuite/gas/riscv/csr.s
+++ b/gas/testsuite/gas/riscv/csr.s
@@ -404,6 +404,12 @@
 	csr mhpmevent30h
 	csr mhpmevent31h
 
+	# Sstc extension
+	csr stimecmp
+	csr stimecmph
+	csr vstimecmp
+	csr vstimecmph
+
 	# Supported in previous priv spec, but dropped now
 
 	csr ubadaddr		# 0x043 in 1.9.1, but the value is utval since 1.10
diff --git a/include/opcode/riscv-opc.h b/include/opcode/riscv-opc.h
index d5802d9cc18..39611ef511b 100644
--- a/include/opcode/riscv-opc.h
+++ b/include/opcode/riscv-opc.h
@@ -2398,6 +2398,11 @@
 #define CSR_MHPMEVENT29H 0x73d
 #define CSR_MHPMEVENT30H 0x73e
 #define CSR_MHPMEVENT31H 0x73f
+/* Sstc extension */
+#define CSR_STIMECMP 0x14d
+#define CSR_STIMECMPH 0x15d
+#define CSR_VSTIMECMP 0x24d
+#define CSR_VSTIMECMPH 0x25d
 /* Unprivileged CSR addresses.  */
 #define CSR_FFLAGS 0x1
 #define CSR_FRM 0x2
@@ -3112,6 +3117,11 @@ DECLARE_CSR(mhpmevent28h, CSR_MHPMEVENT28H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLA
 DECLARE_CSR(mhpmevent29h, CSR_MHPMEVENT29H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_1P11, PRIV_SPEC_CLASS_DRAFT)
 DECLARE_CSR(mhpmevent30h, CSR_MHPMEVENT30H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_1P11, PRIV_SPEC_CLASS_DRAFT)
 DECLARE_CSR(mhpmevent31h, CSR_MHPMEVENT31H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_1P11, PRIV_SPEC_CLASS_DRAFT)
+/* Sstc extension */
+DECLARE_CSR(stimecmp, CSR_STIMECMP, CSR_CLASS_SSTC, PRIV_SPEC_CLASS_1P11, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(stimecmph, CSR_STIMECMPH, CSR_CLASS_SSTC_32, PRIV_SPEC_CLASS_1P11, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(vstimecmp, CSR_VSTIMECMP, CSR_CLASS_SSTC, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(vstimecmph, CSR_VSTIMECMPH, CSR_CLASS_SSTC_32, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
 /* Dropped CSRs.  */
 DECLARE_CSR(mbase, CSR_MBASE, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_1P10)
 DECLARE_CSR(mbound, CSR_MBOUND, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_1P10)
-- 
2.32.0


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

* Re: [PATCH 1/6] RISC-V: Reorganize testcases for CFI directives
  2022-01-11 10:59 ` [PATCH 1/6] RISC-V: Reorganize testcases for CFI directives Tsukasa OI
@ 2022-02-23  6:58   ` Nelson Chu
  0 siblings, 0 replies; 32+ messages in thread
From: Nelson Chu @ 2022-02-23  6:58 UTC (permalink / raw)
  To: Tsukasa OI; +Cc: Binutils

OK, committed.

Thanks
Nelson

On Tue, Jan 11, 2022 at 7:00 PM Tsukasa OI via Binutils
<binutils@sourceware.org> wrote:
>
> This commit reorganizes and adds some CSRs to csr-dw-regnums.[sd] to
> make it test the same CSRs as csr.s.
>
> gas/ChangeLog:
>
>         * testsuite/gas/riscv/csr-dw-regnums.s: Reorganize and add
>         defined CSRs tested in csr.s.
>         * testsuite/gas/riscv/csr-dw-regnums.d: Likewise.
> ---
>  gas/testsuite/gas/riscv/csr-dw-regnums.d | 48 ++++++++++++++++++----
>  gas/testsuite/gas/riscv/csr-dw-regnums.s | 51 +++++++++++++++++++++---
>  2 files changed, 86 insertions(+), 13 deletions(-)
>
> diff --git a/gas/testsuite/gas/riscv/csr-dw-regnums.d b/gas/testsuite/gas/riscv/csr-dw-regnums.d
> index ea0a445c39c..2aa5ff4bcee 100644
> --- a/gas/testsuite/gas/riscv/csr-dw-regnums.d
> +++ b/gas/testsuite/gas/riscv/csr-dw-regnums.d
> @@ -1,4 +1,4 @@
> -#as: -march=rv32if -mpriv-spec=1.11
> +#as: -march=rv32if -mpriv-spec=1.12
>  #objdump: --dwarf=frames
>
>
> @@ -229,6 +229,37 @@ Contents of the .* section:
>    DW_CFA_offset_extended_sf: r4925 \(mhpmevent29\) at cfa\+3316
>    DW_CFA_offset_extended_sf: r4926 \(mhpmevent30\) at cfa\+3320
>    DW_CFA_offset_extended_sf: r4927 \(mhpmevent31\) at cfa\+3324
> +  DW_CFA_offset_extended_sf: r5632 \(hstatus\) at cfa\+6144
> +  DW_CFA_offset_extended_sf: r5634 \(hedeleg\) at cfa\+6152
> +  DW_CFA_offset_extended_sf: r5635 \(hideleg\) at cfa\+6156
> +  DW_CFA_offset_extended_sf: r5636 \(hie\) at cfa\+6160
> +  DW_CFA_offset_extended_sf: r5638 \(hcounteren\) at cfa\+6168
> +  DW_CFA_offset_extended_sf: r5639 \(hgeie\) at cfa\+6172
> +  DW_CFA_offset_extended_sf: r5699 \(htval\) at cfa\+6412
> +  DW_CFA_offset_extended_sf: r5700 \(hip\) at cfa\+6416
> +  DW_CFA_offset_extended_sf: r5701 \(hvip\) at cfa\+6420
> +  DW_CFA_offset_extended_sf: r5706 \(htinst\) at cfa\+6440
> +  DW_CFA_offset_extended_sf: r7698 \(hgeip\) at cfa\+14408
> +  DW_CFA_offset_extended_sf: r5642 \(henvcfg\) at cfa\+6184
> +  DW_CFA_offset_extended_sf: r5658 \(henvcfgh\) at cfa\+6248
> +  DW_CFA_offset_extended_sf: r5760 \(hgatp\) at cfa\+6656
> +  DW_CFA_offset_extended_sf: r5800 \(hcontext\) at cfa\+6816
> +  DW_CFA_offset_extended_sf: r5637 \(htimedelta\) at cfa\+6164
> +  DW_CFA_offset_extended_sf: r5653 \(htimedeltah\) at cfa\+6228
> +  DW_CFA_offset_extended_sf: r4608 \(vsstatus\) at cfa\+2048
> +  DW_CFA_offset_extended_sf: r4612 \(vsie\) at cfa\+2064
> +  DW_CFA_offset_extended_sf: r4613 \(vstvec\) at cfa\+2068
> +  DW_CFA_offset_extended_sf: r4672 \(vsscratch\) at cfa\+2304
> +  DW_CFA_offset_extended_sf: r4673 \(vsepc\) at cfa\+2308
> +  DW_CFA_offset_extended_sf: r4674 \(vscause\) at cfa\+2312
> +  DW_CFA_offset_extended_sf: r4675 \(vstval\) at cfa\+2316
> +  DW_CFA_offset_extended_sf: r4676 \(vsip\) at cfa\+2320
> +  DW_CFA_offset_extended_sf: r4736 \(vsatp\) at cfa\+2560
> +  DW_CFA_offset_extended_sf: r4163 \(utval\) at cfa\+268
> +  DW_CFA_offset_extended_sf: r4419 \(stval\) at cfa\+1292
> +  DW_CFA_offset_extended_sf: r4480 \(satp\) at cfa\+1536
> +  DW_CFA_offset_extended_sf: r4931 \(mtval\) at cfa\+3340
> +  DW_CFA_offset_extended_sf: r4896 \(mcountinhibit\) at cfa\+3200
>    DW_CFA_offset_extended_sf: r4992 \(mbase\) at cfa\+3584
>    DW_CFA_offset_extended_sf: r4993 \(mbound\) at cfa\+3588
>    DW_CFA_offset_extended_sf: r4994 \(mibase\) at cfa\+3592
> @@ -244,6 +275,7 @@ Contents of the .* section:
>    DW_CFA_offset_extended_sf: r6065 \(dpc\) at cfa\+7876
>    DW_CFA_offset_extended_sf: r6066 \(dscratch0\) at cfa\+7880
>    DW_CFA_offset_extended_sf: r6067 \(dscratch1\) at cfa\+7884
> +  DW_CFA_offset_extended_sf: r6066 \(dscratch0\) at cfa\+7880
>    DW_CFA_offset_extended_sf: r6048 \(tselect\) at cfa\+7808
>    DW_CFA_offset_extended_sf: r6049 \(tdata1\) at cfa\+7812
>    DW_CFA_offset_extended_sf: r6050 \(tdata2\) at cfa\+7816
> @@ -252,16 +284,18 @@ Contents of the .* section:
>    DW_CFA_offset_extended_sf: r6053 \(tcontrol\) at cfa\+7828
>    DW_CFA_offset_extended_sf: r6056 \(mcontext\) at cfa\+7840
>    DW_CFA_offset_extended_sf: r6058 \(scontext\) at cfa\+7848
> -  DW_CFA_offset_extended_sf: r4163 \(utval\) at cfa\+268
> -  DW_CFA_offset_extended_sf: r4419 \(stval\) at cfa\+1292
> -  DW_CFA_offset_extended_sf: r4480 \(satp\) at cfa\+1536
> -  DW_CFA_offset_extended_sf: r4931 \(mtval\) at cfa\+3340
> -  DW_CFA_offset_extended_sf: r4896 \(mcountinhibit\) at cfa\+3200
> -  DW_CFA_offset_extended_sf: r6066 \(dscratch0\) at cfa\+7880
>    DW_CFA_offset_extended_sf: r6049 \(tdata1\) at cfa\+7812
>    DW_CFA_offset_extended_sf: r6049 \(tdata1\) at cfa\+7812
>    DW_CFA_offset_extended_sf: r6049 \(tdata1\) at cfa\+7812
>    DW_CFA_offset_extended_sf: r6049 \(tdata1\) at cfa\+7812
>    DW_CFA_offset_extended_sf: r6051 \(tdata3\) at cfa\+7820
>    DW_CFA_offset_extended_sf: r6051 \(tdata3\) at cfa\+7820
> +  DW_CFA_offset_extended_sf: r4117 \(seed\) at cfa\+84
> +  DW_CFA_offset_extended_sf: r4104 \(vstart\) at cfa\+32
> +  DW_CFA_offset_extended_sf: r4105 \(vxsat\) at cfa\+36
> +  DW_CFA_offset_extended_sf: r4106 \(vxrm\) at cfa\+40
> +  DW_CFA_offset_extended_sf: r4111 \(vcsr\) at cfa\+60
> +  DW_CFA_offset_extended_sf: r7200 \(vl\) at cfa\+12416
> +  DW_CFA_offset_extended_sf: r7201 \(vtype\) at cfa\+12420
> +  DW_CFA_offset_extended_sf: r7202 \(vlenb\) at cfa\+12424
>  #...
> diff --git a/gas/testsuite/gas/riscv/csr-dw-regnums.s b/gas/testsuite/gas/riscv/csr-dw-regnums.s
> index 549475d650e..2431a23f37c 100644
> --- a/gas/testsuite/gas/riscv/csr-dw-regnums.s
> +++ b/gas/testsuite/gas/riscv/csr-dw-regnums.s
> @@ -219,6 +219,39 @@ _start:
>         .cfi_offset mhpmevent29, 3316
>         .cfi_offset mhpmevent30, 3320
>         .cfi_offset mhpmevent31, 3324
> +       # Hypervisor extension (Privileged Architecture, version 1.12)
> +       .cfi_offset hstatus, 6144
> +       .cfi_offset hedeleg, 6152
> +       .cfi_offset hideleg, 6156
> +       .cfi_offset hie, 6160
> +       .cfi_offset hcounteren, 6168
> +       .cfi_offset hgeie, 6172
> +       .cfi_offset htval, 6412
> +       .cfi_offset hip, 6416
> +       .cfi_offset hvip, 6420
> +       .cfi_offset htinst, 6440
> +       .cfi_offset hgeip, 14408
> +       .cfi_offset henvcfg, 6184
> +       .cfi_offset henvcfgh, 6248
> +       .cfi_offset hgatp, 6656
> +       .cfi_offset hcontext, 6816
> +       .cfi_offset htimedelta, 6164
> +       .cfi_offset htimedeltah, 6228
> +       .cfi_offset vsstatus, 2048
> +       .cfi_offset vsie, 2064
> +       .cfi_offset vstvec, 2068
> +       .cfi_offset vsscratch, 2304
> +       .cfi_offset vsepc, 2308
> +       .cfi_offset vscause, 2312
> +       .cfi_offset vstval, 2316
> +       .cfi_offset vsip, 2320
> +       .cfi_offset vsatp, 2560
> +       # dropped aliases
> +       .cfi_offset ubadaddr, 268
> +       .cfi_offset sbadaddr, 1292
> +       .cfi_offset sptbr, 1536
> +       .cfi_offset mbadaddr, 3340
> +       .cfi_offset mucounteren, 3200
>         # dropped
>         .cfi_offset mbase, 3584
>         .cfi_offset mbound, 3588
> @@ -236,6 +269,9 @@ _start:
>         .cfi_offset dpc, 7876
>         .cfi_offset dscratch0, 7880
>         .cfi_offset dscratch1, 7884
> +       # unprivileged alias
> +       .cfi_offset dscratch, 7880
> +       # unprivileged
>         .cfi_offset tselect, 7808
>         .cfi_offset tdata1, 7812
>         .cfi_offset tdata2, 7816
> @@ -245,17 +281,20 @@ _start:
>         .cfi_offset mcontext, 7840
>         .cfi_offset scontext, 7848
>         # aliases
> -       .cfi_offset ubadaddr, 268
> -       .cfi_offset sbadaddr, 1292
> -       .cfi_offset sptbr, 1536
> -       .cfi_offset mbadaddr, 3340
> -       .cfi_offset mucounteren, 3200
> -       .cfi_offset dscratch, 7880
>         .cfi_offset mcontrol, 7812
>         .cfi_offset icount, 7812
>         .cfi_offset itrigger, 7812
>         .cfi_offset etrigger, 7812
>         .cfi_offset textra32, 7820
>         .cfi_offset textra64, 7820
> +       # unprivileged
> +       .cfi_offset seed, 84
> +       .cfi_offset vstart, 32
> +       .cfi_offset vxsat, 36
> +       .cfi_offset vxrm, 40
> +       .cfi_offset vcsr, 60
> +       .cfi_offset vl, 12416
> +       .cfi_offset vtype, 12420
> +       .cfi_offset vlenb, 12424
>         nop
>         .cfi_endproc
> --
> 2.32.0
>

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

* Re: [PATCH 2/6] RISC-V: Add Privileged Architecture 1.12 CSRs
  2022-01-11 10:59 ` [PATCH 2/6] RISC-V: Add Privileged Architecture 1.12 CSRs Tsukasa OI
@ 2022-02-23  6:58   ` Nelson Chu
  2022-02-24  2:35     ` Tsukasa OI
  0 siblings, 1 reply; 32+ messages in thread
From: Nelson Chu @ 2022-02-23  6:58 UTC (permalink / raw)
  To: Tsukasa OI; +Cc: Binutils

OK, committed.

Thanks
Nelson

On Tue, Jan 11, 2022 at 7:01 PM Tsukasa OI via Binutils
<binutils@sourceware.org> wrote:
>
> This commit adds most of CSRs as listed in the Privileged Architecture,
> version 1.12 (except scontext and mscontext).
>
> include/ChangeLog:
>
>         * opcode/riscv-opc.h (CSR_SENVCFG, CSR_MCONFIGPTR, CSR_MENVCFG,
>         CSR_MSTATUSH, CSR_MENVCFGH, CSR_MTINST, CSR_MTVAL2, CSR_MSECCFG,
>         CSR_MSECCFGH, CSR_PMPCFG4, CSR_PMPCFG5, CSR_PMPCFG6,
>         CSR_PMPCFG7, CSR_PMPCFG8, CSR_PMPCFG9, CSR_PMPCFG10,
>         CSR_PMPCFG11, CSR_PMPCFG12, CSR_PMPCFG13, CSR_PMPCFG14,
>         CSR_PMPCFG15, CSR_PMPADDR16, CSR_PMPADDR17, CSR_PMPADDR18,
>         CSR_PMPADDR19, CSR_PMPADDR20, CSR_PMPADDR21, CSR_PMPADDR22,
>         CSR_PMPADDR23, CSR_PMPADDR24, CSR_PMPADDR25, CSR_PMPADDR26,
>         CSR_PMPADDR27, CSR_PMPADDR28, CSR_PMPADDR29, CSR_PMPADDR30,
>         CSR_PMPADDR31, CSR_PMPADDR32, CSR_PMPADDR33, CSR_PMPADDR34,
>         CSR_PMPADDR35, CSR_PMPADDR36, CSR_PMPADDR37, CSR_PMPADDR38,
>         CSR_PMPADDR39, CSR_PMPADDR40, CSR_PMPADDR41, CSR_PMPADDR42,
>         CSR_PMPADDR43, CSR_PMPADDR44, CSR_PMPADDR45, CSR_PMPADDR46,
>         CSR_PMPADDR47, CSR_PMPADDR48, CSR_PMPADDR49, CSR_PMPADDR50,
>         CSR_PMPADDR51, CSR_PMPADDR52, CSR_PMPADDR53, CSR_PMPADDR54,
>         CSR_PMPADDR55, CSR_PMPADDR56, CSR_PMPADDR57, CSR_PMPADDR58,
>         CSR_PMPADDR59, CSR_PMPADDR60, CSR_PMPADDR61, CSR_PMPADDR62,
>         CSR_PMPADDR63): New CSR macros.
> ---
>  include/opcode/riscv-opc.h | 138 +++++++++++++++++++++++++++++++++++++
>  1 file changed, 138 insertions(+)
>
> diff --git a/include/opcode/riscv-opc.h b/include/opcode/riscv-opc.h
> index 0b8cc6c7ddb..734d7862b2d 100644
> --- a/include/opcode/riscv-opc.h
> +++ b/include/opcode/riscv-opc.h
> @@ -2108,6 +2108,7 @@
>  #define CSR_SIE 0x104
>  #define CSR_STVEC 0x105
>  #define CSR_SCOUNTEREN 0x106
> +#define CSR_SENVCFG 0x10a
>  #define CSR_SSCRATCH 0x140
>  #define CSR_SEPC 0x141
>  #define CSR_SCAUSE 0x142
> @@ -2118,6 +2119,7 @@
>  #define CSR_MARCHID 0xf12
>  #define CSR_MIMPID 0xf13
>  #define CSR_MHARTID 0xf14
> +#define CSR_MCONFIGPTR 0xf15
>  #define CSR_MSTATUS 0x300
>  #define CSR_MISA 0x301
>  #define CSR_MEDELEG 0x302
> @@ -2125,15 +2127,34 @@
>  #define CSR_MIE 0x304
>  #define CSR_MTVEC 0x305
>  #define CSR_MCOUNTEREN 0x306
> +#define CSR_MENVCFG 0x30a
> +#define CSR_MSTATUSH 0x310
> +#define CSR_MENVCFGH 0x31a
>  #define CSR_MSCRATCH 0x340
>  #define CSR_MEPC 0x341
>  #define CSR_MCAUSE 0x342
>  #define CSR_MTVAL 0x343
>  #define CSR_MIP 0x344
> +#define CSR_MTINST 0x34a
> +#define CSR_MTVAL2 0x34b
> +#define CSR_MSECCFG 0x747
> +#define CSR_MSECCFGH 0x757
>  #define CSR_PMPCFG0 0x3a0
>  #define CSR_PMPCFG1 0x3a1
>  #define CSR_PMPCFG2 0x3a2
>  #define CSR_PMPCFG3 0x3a3
> +#define CSR_PMPCFG4 0x3a4
> +#define CSR_PMPCFG5 0x3a5
> +#define CSR_PMPCFG6 0x3a6
> +#define CSR_PMPCFG7 0x3a7
> +#define CSR_PMPCFG8 0x3a8
> +#define CSR_PMPCFG9 0x3a9
> +#define CSR_PMPCFG10 0x3aa
> +#define CSR_PMPCFG11 0x3ab
> +#define CSR_PMPCFG12 0x3ac
> +#define CSR_PMPCFG13 0x3ad
> +#define CSR_PMPCFG14 0x3ae
> +#define CSR_PMPCFG15 0x3af
>  #define CSR_PMPADDR0 0x3b0
>  #define CSR_PMPADDR1 0x3b1
>  #define CSR_PMPADDR2 0x3b2
> @@ -2150,6 +2171,54 @@
>  #define CSR_PMPADDR13 0x3bd
>  #define CSR_PMPADDR14 0x3be
>  #define CSR_PMPADDR15 0x3bf
> +#define CSR_PMPADDR16 0x3c0
> +#define CSR_PMPADDR17 0x3c1
> +#define CSR_PMPADDR18 0x3c2
> +#define CSR_PMPADDR19 0x3c3
> +#define CSR_PMPADDR20 0x3c4
> +#define CSR_PMPADDR21 0x3c5
> +#define CSR_PMPADDR22 0x3c6
> +#define CSR_PMPADDR23 0x3c7
> +#define CSR_PMPADDR24 0x3c8
> +#define CSR_PMPADDR25 0x3c9
> +#define CSR_PMPADDR26 0x3ca
> +#define CSR_PMPADDR27 0x3cb
> +#define CSR_PMPADDR28 0x3cc
> +#define CSR_PMPADDR29 0x3cd
> +#define CSR_PMPADDR30 0x3ce
> +#define CSR_PMPADDR31 0x3cf
> +#define CSR_PMPADDR32 0x3d0
> +#define CSR_PMPADDR33 0x3d1
> +#define CSR_PMPADDR34 0x3d2
> +#define CSR_PMPADDR35 0x3d3
> +#define CSR_PMPADDR36 0x3d4
> +#define CSR_PMPADDR37 0x3d5
> +#define CSR_PMPADDR38 0x3d6
> +#define CSR_PMPADDR39 0x3d7
> +#define CSR_PMPADDR40 0x3d8
> +#define CSR_PMPADDR41 0x3d9
> +#define CSR_PMPADDR42 0x3da
> +#define CSR_PMPADDR43 0x3db
> +#define CSR_PMPADDR44 0x3dc
> +#define CSR_PMPADDR45 0x3dd
> +#define CSR_PMPADDR46 0x3de
> +#define CSR_PMPADDR47 0x3df
> +#define CSR_PMPADDR48 0x3e0
> +#define CSR_PMPADDR49 0x3e1
> +#define CSR_PMPADDR50 0x3e2
> +#define CSR_PMPADDR51 0x3e3
> +#define CSR_PMPADDR52 0x3e4
> +#define CSR_PMPADDR53 0x3e5
> +#define CSR_PMPADDR54 0x3e6
> +#define CSR_PMPADDR55 0x3e7
> +#define CSR_PMPADDR56 0x3e8
> +#define CSR_PMPADDR57 0x3e9
> +#define CSR_PMPADDR58 0x3ea
> +#define CSR_PMPADDR59 0x3eb
> +#define CSR_PMPADDR60 0x3ec
> +#define CSR_PMPADDR61 0x3ed
> +#define CSR_PMPADDR62 0x3ee
> +#define CSR_PMPADDR63 0x3ef
>  #define CSR_MCYCLE 0xb00
>  #define CSR_MINSTRET 0xb02
>  #define CSR_MHPMCOUNTER3 0xb03
> @@ -2709,6 +2778,7 @@ DECLARE_CSR(sideleg, CSR_SIDELEG, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_
>  DECLARE_CSR(sie, CSR_SIE, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
>  DECLARE_CSR(stvec, CSR_STVEC, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
>  DECLARE_CSR(scounteren, CSR_SCOUNTEREN, CSR_CLASS_I, PRIV_SPEC_CLASS_1P10, PRIV_SPEC_CLASS_DRAFT)
> +DECLARE_CSR(senvcfg, CSR_SENVCFG, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
>  DECLARE_CSR(sscratch, CSR_SSCRATCH, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
>  DECLARE_CSR(sepc, CSR_SEPC, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
>  DECLARE_CSR(scause, CSR_SCAUSE, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
> @@ -2719,6 +2789,7 @@ DECLARE_CSR(mvendorid, CSR_MVENDORID, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_S
>  DECLARE_CSR(marchid, CSR_MARCHID, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
>  DECLARE_CSR(mimpid, CSR_MIMPID, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
>  DECLARE_CSR(mhartid, CSR_MHARTID, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
> +DECLARE_CSR(mconfigptr, CSR_MCONFIGPTR, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
>  DECLARE_CSR(mstatus, CSR_MSTATUS, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
>  DECLARE_CSR(misa, CSR_MISA, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
>  DECLARE_CSR(medeleg, CSR_MEDELEG, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
> @@ -2726,15 +2797,34 @@ DECLARE_CSR(mideleg, CSR_MIDELEG, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_
>  DECLARE_CSR(mie, CSR_MIE, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
>  DECLARE_CSR(mtvec, CSR_MTVEC, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
>  DECLARE_CSR(mcounteren, CSR_MCOUNTEREN, CSR_CLASS_I, PRIV_SPEC_CLASS_1P10, PRIV_SPEC_CLASS_DRAFT)
> +DECLARE_CSR(menvcfg, CSR_MENVCFG, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
> +DECLARE_CSR(mstatush, CSR_MSTATUSH, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
> +DECLARE_CSR(menvcfgh, CSR_MENVCFGH, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
>  DECLARE_CSR(mscratch, CSR_MSCRATCH, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
>  DECLARE_CSR(mepc, CSR_MEPC, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
>  DECLARE_CSR(mcause, CSR_MCAUSE, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
>  DECLARE_CSR(mtval, CSR_MTVAL, CSR_CLASS_I, PRIV_SPEC_CLASS_1P10, PRIV_SPEC_CLASS_DRAFT)
>  DECLARE_CSR(mip, CSR_MIP, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
> +DECLARE_CSR(mtinst, CSR_MTINST, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
> +DECLARE_CSR(mtval2, CSR_MTVAL2, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
> +DECLARE_CSR(mseccfg, CSR_MSECCFG, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
> +DECLARE_CSR(mseccfgh, CSR_MSECCFGH, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
>  DECLARE_CSR(pmpcfg0, CSR_PMPCFG0, CSR_CLASS_I, PRIV_SPEC_CLASS_1P10, PRIV_SPEC_CLASS_DRAFT)
>  DECLARE_CSR(pmpcfg1, CSR_PMPCFG1, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P10, PRIV_SPEC_CLASS_DRAFT)
>  DECLARE_CSR(pmpcfg2, CSR_PMPCFG2, CSR_CLASS_I, PRIV_SPEC_CLASS_1P10, PRIV_SPEC_CLASS_DRAFT)
>  DECLARE_CSR(pmpcfg3, CSR_PMPCFG3, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P10, PRIV_SPEC_CLASS_DRAFT)
> +DECLARE_CSR(pmpcfg4, CSR_PMPCFG4, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
> +DECLARE_CSR(pmpcfg5, CSR_PMPCFG5, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
> +DECLARE_CSR(pmpcfg6, CSR_PMPCFG6, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
> +DECLARE_CSR(pmpcfg7, CSR_PMPCFG7, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
> +DECLARE_CSR(pmpcfg8, CSR_PMPCFG8, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
> +DECLARE_CSR(pmpcfg9, CSR_PMPCFG9, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
> +DECLARE_CSR(pmpcfg10, CSR_PMPCFG10, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
> +DECLARE_CSR(pmpcfg11, CSR_PMPCFG11, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
> +DECLARE_CSR(pmpcfg12, CSR_PMPCFG12, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
> +DECLARE_CSR(pmpcfg13, CSR_PMPCFG13, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
> +DECLARE_CSR(pmpcfg14, CSR_PMPCFG14, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
> +DECLARE_CSR(pmpcfg15, CSR_PMPCFG15, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
>  DECLARE_CSR(pmpaddr0, CSR_PMPADDR0, CSR_CLASS_I, PRIV_SPEC_CLASS_1P10, PRIV_SPEC_CLASS_DRAFT)
>  DECLARE_CSR(pmpaddr1, CSR_PMPADDR1, CSR_CLASS_I, PRIV_SPEC_CLASS_1P10, PRIV_SPEC_CLASS_DRAFT)
>  DECLARE_CSR(pmpaddr2, CSR_PMPADDR2, CSR_CLASS_I, PRIV_SPEC_CLASS_1P10, PRIV_SPEC_CLASS_DRAFT)
> @@ -2751,6 +2841,54 @@ DECLARE_CSR(pmpaddr12, CSR_PMPADDR12, CSR_CLASS_I, PRIV_SPEC_CLASS_1P10, PRIV_SP
>  DECLARE_CSR(pmpaddr13, CSR_PMPADDR13, CSR_CLASS_I, PRIV_SPEC_CLASS_1P10, PRIV_SPEC_CLASS_DRAFT)
>  DECLARE_CSR(pmpaddr14, CSR_PMPADDR14, CSR_CLASS_I, PRIV_SPEC_CLASS_1P10, PRIV_SPEC_CLASS_DRAFT)
>  DECLARE_CSR(pmpaddr15, CSR_PMPADDR15, CSR_CLASS_I, PRIV_SPEC_CLASS_1P10, PRIV_SPEC_CLASS_DRAFT)
> +DECLARE_CSR(pmpaddr16, CSR_PMPADDR16, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
> +DECLARE_CSR(pmpaddr17, CSR_PMPADDR17, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
> +DECLARE_CSR(pmpaddr18, CSR_PMPADDR18, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
> +DECLARE_CSR(pmpaddr19, CSR_PMPADDR19, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
> +DECLARE_CSR(pmpaddr20, CSR_PMPADDR20, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
> +DECLARE_CSR(pmpaddr21, CSR_PMPADDR21, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
> +DECLARE_CSR(pmpaddr22, CSR_PMPADDR22, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
> +DECLARE_CSR(pmpaddr23, CSR_PMPADDR23, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
> +DECLARE_CSR(pmpaddr24, CSR_PMPADDR24, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
> +DECLARE_CSR(pmpaddr25, CSR_PMPADDR25, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
> +DECLARE_CSR(pmpaddr26, CSR_PMPADDR26, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
> +DECLARE_CSR(pmpaddr27, CSR_PMPADDR27, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
> +DECLARE_CSR(pmpaddr28, CSR_PMPADDR28, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
> +DECLARE_CSR(pmpaddr29, CSR_PMPADDR29, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
> +DECLARE_CSR(pmpaddr30, CSR_PMPADDR30, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
> +DECLARE_CSR(pmpaddr31, CSR_PMPADDR31, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
> +DECLARE_CSR(pmpaddr32, CSR_PMPADDR32, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
> +DECLARE_CSR(pmpaddr33, CSR_PMPADDR33, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
> +DECLARE_CSR(pmpaddr34, CSR_PMPADDR34, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
> +DECLARE_CSR(pmpaddr35, CSR_PMPADDR35, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
> +DECLARE_CSR(pmpaddr36, CSR_PMPADDR36, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
> +DECLARE_CSR(pmpaddr37, CSR_PMPADDR37, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
> +DECLARE_CSR(pmpaddr38, CSR_PMPADDR38, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
> +DECLARE_CSR(pmpaddr39, CSR_PMPADDR39, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
> +DECLARE_CSR(pmpaddr40, CSR_PMPADDR40, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
> +DECLARE_CSR(pmpaddr41, CSR_PMPADDR41, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
> +DECLARE_CSR(pmpaddr42, CSR_PMPADDR42, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
> +DECLARE_CSR(pmpaddr43, CSR_PMPADDR43, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
> +DECLARE_CSR(pmpaddr44, CSR_PMPADDR44, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
> +DECLARE_CSR(pmpaddr45, CSR_PMPADDR45, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
> +DECLARE_CSR(pmpaddr46, CSR_PMPADDR46, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
> +DECLARE_CSR(pmpaddr47, CSR_PMPADDR47, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
> +DECLARE_CSR(pmpaddr48, CSR_PMPADDR48, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
> +DECLARE_CSR(pmpaddr49, CSR_PMPADDR49, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
> +DECLARE_CSR(pmpaddr50, CSR_PMPADDR50, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
> +DECLARE_CSR(pmpaddr51, CSR_PMPADDR51, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
> +DECLARE_CSR(pmpaddr52, CSR_PMPADDR52, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
> +DECLARE_CSR(pmpaddr53, CSR_PMPADDR53, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
> +DECLARE_CSR(pmpaddr54, CSR_PMPADDR54, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
> +DECLARE_CSR(pmpaddr55, CSR_PMPADDR55, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
> +DECLARE_CSR(pmpaddr56, CSR_PMPADDR56, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
> +DECLARE_CSR(pmpaddr57, CSR_PMPADDR57, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
> +DECLARE_CSR(pmpaddr58, CSR_PMPADDR58, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
> +DECLARE_CSR(pmpaddr59, CSR_PMPADDR59, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
> +DECLARE_CSR(pmpaddr60, CSR_PMPADDR60, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
> +DECLARE_CSR(pmpaddr61, CSR_PMPADDR61, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
> +DECLARE_CSR(pmpaddr62, CSR_PMPADDR62, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
> +DECLARE_CSR(pmpaddr63, CSR_PMPADDR63, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
>  DECLARE_CSR(mcycle, CSR_MCYCLE, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
>  DECLARE_CSR(minstret, CSR_MINSTRET, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
>  DECLARE_CSR(mhpmcounter3, CSR_MHPMCOUNTER3, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
> --
> 2.32.0
>

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

* Re: [PATCH 3/6] RISC-V: Add Privileged Arch 1.12 CSR testcases
  2022-01-11 10:59 ` [PATCH 3/6] RISC-V: Add Privileged Arch 1.12 CSR testcases Tsukasa OI
@ 2022-02-23  6:58   ` Nelson Chu
  0 siblings, 0 replies; 32+ messages in thread
From: Nelson Chu @ 2022-02-23  6:58 UTC (permalink / raw)
  To: Tsukasa OI; +Cc: Binutils

Committed with previous one.

Thanks
Nelson

On Tue, Jan 11, 2022 at 7:02 PM Tsukasa OI via Binutils
<binutils@sourceware.org> wrote:
>
> This commit adds testcases for most CSRs added on the Privileged
> Architecture, version 1.12 (except moved "scontext" and
> new "mscontext").
>
> gas/ChangeLog:
>
>         * testsuite/gas/riscv/csr-dw-regnums.s: Add new CSRs.
>         * testsuite/gas/riscv/csr-dw-regnums.d: 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.
> ---
>  gas/testsuite/gas/riscv/csr-dw-regnums.d    |  69 +++++++++
>  gas/testsuite/gas/riscv/csr-dw-regnums.s    |  69 +++++++++
>  gas/testsuite/gas/riscv/csr-version-1p10.d  | 138 +++++++++++++++++
>  gas/testsuite/gas/riscv/csr-version-1p10.l  | 157 ++++++++++++++++++++
>  gas/testsuite/gas/riscv/csr-version-1p11.d  | 138 +++++++++++++++++
>  gas/testsuite/gas/riscv/csr-version-1p11.l  | 157 ++++++++++++++++++++
>  gas/testsuite/gas/riscv/csr-version-1p12.d  | 138 +++++++++++++++++
>  gas/testsuite/gas/riscv/csr-version-1p12.l  |  19 +++
>  gas/testsuite/gas/riscv/csr-version-1p9p1.d | 138 +++++++++++++++++
>  gas/testsuite/gas/riscv/csr-version-1p9p1.l | 157 ++++++++++++++++++++
>  gas/testsuite/gas/riscv/csr.s               |  69 +++++++++
>  11 files changed, 1249 insertions(+)
>
> diff --git a/gas/testsuite/gas/riscv/csr-dw-regnums.d b/gas/testsuite/gas/riscv/csr-dw-regnums.d
> index 2aa5ff4bcee..e4bb865ed3f 100644
> --- a/gas/testsuite/gas/riscv/csr-dw-regnums.d
> +++ b/gas/testsuite/gas/riscv/csr-dw-regnums.d
> @@ -95,6 +95,7 @@ Contents of the .* section:
>    DW_CFA_offset_extended_sf: r4356 \(sie\) at cfa\+1040
>    DW_CFA_offset_extended_sf: r4357 \(stvec\) at cfa\+1044
>    DW_CFA_offset_extended_sf: r4358 \(scounteren\) at cfa\+1048
> +  DW_CFA_offset_extended_sf: r4362 \(senvcfg\) at cfa\+1064
>    DW_CFA_offset_extended_sf: r4416 \(sscratch\) at cfa\+1280
>    DW_CFA_offset_extended_sf: r4417 \(sepc\) at cfa\+1284
>    DW_CFA_offset_extended_sf: r4418 \(scause\) at cfa\+1288
> @@ -105,6 +106,7 @@ Contents of the .* section:
>    DW_CFA_offset_extended_sf: r7954 \(marchid\) at cfa\+15432
>    DW_CFA_offset_extended_sf: r7955 \(mimpid\) at cfa\+15436
>    DW_CFA_offset_extended_sf: r7956 \(mhartid\) at cfa\+15440
> +  DW_CFA_offset_extended_sf: r7957 \(mconfigptr\) at cfa\+15444
>    DW_CFA_offset_extended_sf: r4864 \(mstatus\) at cfa\+3072
>    DW_CFA_offset_extended_sf: r4865 \(misa\) at cfa\+3076
>    DW_CFA_offset_extended_sf: r4866 \(medeleg\) at cfa\+3080
> @@ -112,15 +114,34 @@ Contents of the .* section:
>    DW_CFA_offset_extended_sf: r4868 \(mie\) at cfa\+3088
>    DW_CFA_offset_extended_sf: r4869 \(mtvec\) at cfa\+3092
>    DW_CFA_offset_extended_sf: r4870 \(mcounteren\) at cfa\+3096
> +  DW_CFA_offset_extended_sf: r4874 \(menvcfg\) at cfa\+3112
> +  DW_CFA_offset_extended_sf: r4880 \(mstatush\) at cfa\+3136
> +  DW_CFA_offset_extended_sf: r4890 \(menvcfgh\) at cfa\+3176
> +  DW_CFA_offset_extended_sf: r5959 \(mseccfg\) at cfa\+7452
> +  DW_CFA_offset_extended_sf: r5975 \(mseccfgh\) at cfa\+7516
>    DW_CFA_offset_extended_sf: r4928 \(mscratch\) at cfa\+3328
>    DW_CFA_offset_extended_sf: r4929 \(mepc\) at cfa\+3332
>    DW_CFA_offset_extended_sf: r4930 \(mcause\) at cfa\+3336
>    DW_CFA_offset_extended_sf: r4931 \(mtval\) at cfa\+3340
>    DW_CFA_offset_extended_sf: r4932 \(mip\) at cfa\+3344
> +  DW_CFA_offset_extended_sf: r4938 \(mtinst\) at cfa\+3368
> +  DW_CFA_offset_extended_sf: r4939 \(mtval2\) at cfa\+3372
>    DW_CFA_offset_extended_sf: r5024 \(pmpcfg0\) at cfa\+3712
>    DW_CFA_offset_extended_sf: r5025 \(pmpcfg1\) at cfa\+3716
>    DW_CFA_offset_extended_sf: r5026 \(pmpcfg2\) at cfa\+3720
>    DW_CFA_offset_extended_sf: r5027 \(pmpcfg3\) at cfa\+3724
> +  DW_CFA_offset_extended_sf: r5028 \(pmpcfg4\) at cfa\+3728
> +  DW_CFA_offset_extended_sf: r5029 \(pmpcfg5\) at cfa\+3732
> +  DW_CFA_offset_extended_sf: r5030 \(pmpcfg6\) at cfa\+3736
> +  DW_CFA_offset_extended_sf: r5031 \(pmpcfg7\) at cfa\+3740
> +  DW_CFA_offset_extended_sf: r5032 \(pmpcfg8\) at cfa\+3744
> +  DW_CFA_offset_extended_sf: r5033 \(pmpcfg9\) at cfa\+3748
> +  DW_CFA_offset_extended_sf: r5034 \(pmpcfg10\) at cfa\+3752
> +  DW_CFA_offset_extended_sf: r5035 \(pmpcfg11\) at cfa\+3756
> +  DW_CFA_offset_extended_sf: r5036 \(pmpcfg12\) at cfa\+3760
> +  DW_CFA_offset_extended_sf: r5037 \(pmpcfg13\) at cfa\+3764
> +  DW_CFA_offset_extended_sf: r5038 \(pmpcfg14\) at cfa\+3768
> +  DW_CFA_offset_extended_sf: r5039 \(pmpcfg15\) at cfa\+3772
>    DW_CFA_offset_extended_sf: r5040 \(pmpaddr0\) at cfa\+3776
>    DW_CFA_offset_extended_sf: r5041 \(pmpaddr1\) at cfa\+3780
>    DW_CFA_offset_extended_sf: r5042 \(pmpaddr2\) at cfa\+3784
> @@ -137,6 +158,54 @@ Contents of the .* section:
>    DW_CFA_offset_extended_sf: r5053 \(pmpaddr13\) at cfa\+3828
>    DW_CFA_offset_extended_sf: r5054 \(pmpaddr14\) at cfa\+3832
>    DW_CFA_offset_extended_sf: r5055 \(pmpaddr15\) at cfa\+3836
> +  DW_CFA_offset_extended_sf: r5056 \(pmpaddr16\) at cfa\+3840
> +  DW_CFA_offset_extended_sf: r5057 \(pmpaddr17\) at cfa\+3844
> +  DW_CFA_offset_extended_sf: r5058 \(pmpaddr18\) at cfa\+3848
> +  DW_CFA_offset_extended_sf: r5059 \(pmpaddr19\) at cfa\+3852
> +  DW_CFA_offset_extended_sf: r5060 \(pmpaddr20\) at cfa\+3856
> +  DW_CFA_offset_extended_sf: r5061 \(pmpaddr21\) at cfa\+3860
> +  DW_CFA_offset_extended_sf: r5062 \(pmpaddr22\) at cfa\+3864
> +  DW_CFA_offset_extended_sf: r5063 \(pmpaddr23\) at cfa\+3868
> +  DW_CFA_offset_extended_sf: r5064 \(pmpaddr24\) at cfa\+3872
> +  DW_CFA_offset_extended_sf: r5065 \(pmpaddr25\) at cfa\+3876
> +  DW_CFA_offset_extended_sf: r5066 \(pmpaddr26\) at cfa\+3880
> +  DW_CFA_offset_extended_sf: r5067 \(pmpaddr27\) at cfa\+3884
> +  DW_CFA_offset_extended_sf: r5068 \(pmpaddr28\) at cfa\+3888
> +  DW_CFA_offset_extended_sf: r5069 \(pmpaddr29\) at cfa\+3892
> +  DW_CFA_offset_extended_sf: r5070 \(pmpaddr30\) at cfa\+3896
> +  DW_CFA_offset_extended_sf: r5071 \(pmpaddr31\) at cfa\+3900
> +  DW_CFA_offset_extended_sf: r5072 \(pmpaddr32\) at cfa\+3904
> +  DW_CFA_offset_extended_sf: r5073 \(pmpaddr33\) at cfa\+3908
> +  DW_CFA_offset_extended_sf: r5074 \(pmpaddr34\) at cfa\+3912
> +  DW_CFA_offset_extended_sf: r5075 \(pmpaddr35\) at cfa\+3916
> +  DW_CFA_offset_extended_sf: r5076 \(pmpaddr36\) at cfa\+3920
> +  DW_CFA_offset_extended_sf: r5077 \(pmpaddr37\) at cfa\+3924
> +  DW_CFA_offset_extended_sf: r5078 \(pmpaddr38\) at cfa\+3928
> +  DW_CFA_offset_extended_sf: r5079 \(pmpaddr39\) at cfa\+3932
> +  DW_CFA_offset_extended_sf: r5080 \(pmpaddr40\) at cfa\+3936
> +  DW_CFA_offset_extended_sf: r5081 \(pmpaddr41\) at cfa\+3940
> +  DW_CFA_offset_extended_sf: r5082 \(pmpaddr42\) at cfa\+3944
> +  DW_CFA_offset_extended_sf: r5083 \(pmpaddr43\) at cfa\+3948
> +  DW_CFA_offset_extended_sf: r5084 \(pmpaddr44\) at cfa\+3952
> +  DW_CFA_offset_extended_sf: r5085 \(pmpaddr45\) at cfa\+3956
> +  DW_CFA_offset_extended_sf: r5086 \(pmpaddr46\) at cfa\+3960
> +  DW_CFA_offset_extended_sf: r5087 \(pmpaddr47\) at cfa\+3964
> +  DW_CFA_offset_extended_sf: r5088 \(pmpaddr48\) at cfa\+3968
> +  DW_CFA_offset_extended_sf: r5089 \(pmpaddr49\) at cfa\+3972
> +  DW_CFA_offset_extended_sf: r5090 \(pmpaddr50\) at cfa\+3976
> +  DW_CFA_offset_extended_sf: r5091 \(pmpaddr51\) at cfa\+3980
> +  DW_CFA_offset_extended_sf: r5092 \(pmpaddr52\) at cfa\+3984
> +  DW_CFA_offset_extended_sf: r5093 \(pmpaddr53\) at cfa\+3988
> +  DW_CFA_offset_extended_sf: r5094 \(pmpaddr54\) at cfa\+3992
> +  DW_CFA_offset_extended_sf: r5095 \(pmpaddr55\) at cfa\+3996
> +  DW_CFA_offset_extended_sf: r5096 \(pmpaddr56\) at cfa\+4000
> +  DW_CFA_offset_extended_sf: r5097 \(pmpaddr57\) at cfa\+4004
> +  DW_CFA_offset_extended_sf: r5098 \(pmpaddr58\) at cfa\+4008
> +  DW_CFA_offset_extended_sf: r5099 \(pmpaddr59\) at cfa\+4012
> +  DW_CFA_offset_extended_sf: r5100 \(pmpaddr60\) at cfa\+4016
> +  DW_CFA_offset_extended_sf: r5101 \(pmpaddr61\) at cfa\+4020
> +  DW_CFA_offset_extended_sf: r5102 \(pmpaddr62\) at cfa\+4024
> +  DW_CFA_offset_extended_sf: r5103 \(pmpaddr63\) at cfa\+4028
>    DW_CFA_offset_extended_sf: r6912 \(mcycle\) at cfa\+11264
>    DW_CFA_offset_extended_sf: r6914 \(minstret\) at cfa\+11272
>    DW_CFA_offset_extended_sf: r6915 \(mhpmcounter3\) at cfa\+11276
> diff --git a/gas/testsuite/gas/riscv/csr-dw-regnums.s b/gas/testsuite/gas/riscv/csr-dw-regnums.s
> index 2431a23f37c..34635d9c04f 100644
> --- a/gas/testsuite/gas/riscv/csr-dw-regnums.s
> +++ b/gas/testsuite/gas/riscv/csr-dw-regnums.s
> @@ -85,6 +85,7 @@ _start:
>         .cfi_offset sie, 1040
>         .cfi_offset stvec, 1044
>         .cfi_offset scounteren, 1048
> +       .cfi_offset senvcfg, 1064
>         .cfi_offset sscratch, 1280
>         .cfi_offset sepc, 1284
>         .cfi_offset scause, 1288
> @@ -95,6 +96,7 @@ _start:
>         .cfi_offset marchid, 15432
>         .cfi_offset mimpid, 15436
>         .cfi_offset mhartid, 15440
> +       .cfi_offset mconfigptr, 15444
>         .cfi_offset mstatus, 3072
>         .cfi_offset misa, 3076
>         .cfi_offset medeleg, 3080
> @@ -102,15 +104,34 @@ _start:
>         .cfi_offset mie, 3088
>         .cfi_offset mtvec, 3092
>         .cfi_offset mcounteren, 3096
> +       .cfi_offset menvcfg, 3112
> +       .cfi_offset mstatush, 3136
> +       .cfi_offset menvcfgh, 3176
> +       .cfi_offset mseccfg, 7452
> +       .cfi_offset mseccfgh, 7516
>         .cfi_offset mscratch, 3328
>         .cfi_offset mepc, 3332
>         .cfi_offset mcause, 3336
>         .cfi_offset mtval, 3340
>         .cfi_offset mip, 3344
> +       .cfi_offset mtinst, 3368
> +       .cfi_offset mtval2, 3372
>         .cfi_offset pmpcfg0, 3712
>         .cfi_offset pmpcfg1, 3716
>         .cfi_offset pmpcfg2, 3720
>         .cfi_offset pmpcfg3, 3724
> +       .cfi_offset pmpcfg4, 3728
> +       .cfi_offset pmpcfg5, 3732
> +       .cfi_offset pmpcfg6, 3736
> +       .cfi_offset pmpcfg7, 3740
> +       .cfi_offset pmpcfg8, 3744
> +       .cfi_offset pmpcfg9, 3748
> +       .cfi_offset pmpcfg10, 3752
> +       .cfi_offset pmpcfg11, 3756
> +       .cfi_offset pmpcfg12, 3760
> +       .cfi_offset pmpcfg13, 3764
> +       .cfi_offset pmpcfg14, 3768
> +       .cfi_offset pmpcfg15, 3772
>         .cfi_offset pmpaddr0, 3776
>         .cfi_offset pmpaddr1, 3780
>         .cfi_offset pmpaddr2, 3784
> @@ -127,6 +148,54 @@ _start:
>         .cfi_offset pmpaddr13, 3828
>         .cfi_offset pmpaddr14, 3832
>         .cfi_offset pmpaddr15, 3836
> +       .cfi_offset pmpaddr16, 3840
> +       .cfi_offset pmpaddr17, 3844
> +       .cfi_offset pmpaddr18, 3848
> +       .cfi_offset pmpaddr19, 3852
> +       .cfi_offset pmpaddr20, 3856
> +       .cfi_offset pmpaddr21, 3860
> +       .cfi_offset pmpaddr22, 3864
> +       .cfi_offset pmpaddr23, 3868
> +       .cfi_offset pmpaddr24, 3872
> +       .cfi_offset pmpaddr25, 3876
> +       .cfi_offset pmpaddr26, 3880
> +       .cfi_offset pmpaddr27, 3884
> +       .cfi_offset pmpaddr28, 3888
> +       .cfi_offset pmpaddr29, 3892
> +       .cfi_offset pmpaddr30, 3896
> +       .cfi_offset pmpaddr31, 3900
> +       .cfi_offset pmpaddr32, 3904
> +       .cfi_offset pmpaddr33, 3908
> +       .cfi_offset pmpaddr34, 3912
> +       .cfi_offset pmpaddr35, 3916
> +       .cfi_offset pmpaddr36, 3920
> +       .cfi_offset pmpaddr37, 3924
> +       .cfi_offset pmpaddr38, 3928
> +       .cfi_offset pmpaddr39, 3932
> +       .cfi_offset pmpaddr40, 3936
> +       .cfi_offset pmpaddr41, 3940
> +       .cfi_offset pmpaddr42, 3944
> +       .cfi_offset pmpaddr43, 3948
> +       .cfi_offset pmpaddr44, 3952
> +       .cfi_offset pmpaddr45, 3956
> +       .cfi_offset pmpaddr46, 3960
> +       .cfi_offset pmpaddr47, 3964
> +       .cfi_offset pmpaddr48, 3968
> +       .cfi_offset pmpaddr49, 3972
> +       .cfi_offset pmpaddr50, 3976
> +       .cfi_offset pmpaddr51, 3980
> +       .cfi_offset pmpaddr52, 3984
> +       .cfi_offset pmpaddr53, 3988
> +       .cfi_offset pmpaddr54, 3992
> +       .cfi_offset pmpaddr55, 3996
> +       .cfi_offset pmpaddr56, 4000
> +       .cfi_offset pmpaddr57, 4004
> +       .cfi_offset pmpaddr58, 4008
> +       .cfi_offset pmpaddr59, 4012
> +       .cfi_offset pmpaddr60, 4016
> +       .cfi_offset pmpaddr61, 4020
> +       .cfi_offset pmpaddr62, 4024
> +       .cfi_offset pmpaddr63, 4028
>         .cfi_offset mcycle, 11264
>         .cfi_offset minstret, 11272
>         .cfi_offset mhpmcounter3, 11276
> diff --git a/gas/testsuite/gas/riscv/csr-version-1p10.d b/gas/testsuite/gas/riscv/csr-version-1p10.d
> index 88da7240a78..ef4cb65f195 100644
> --- a/gas/testsuite/gas/riscv/csr-version-1p10.d
> +++ b/gas/testsuite/gas/riscv/csr-version-1p10.d
> @@ -165,6 +165,8 @@ Disassembly of section .text:
>  [      ]+[0-9a-f]+:[   ]+10559073[     ]+csrw[         ]+stvec,a1
>  [      ]+[0-9a-f]+:[   ]+10602573[     ]+csrr[         ]+a0,scounteren
>  [      ]+[0-9a-f]+:[   ]+10659073[     ]+csrw[         ]+scounteren,a1
> +[      ]+[0-9a-f]+:[   ]+10a02573[     ]+csrr[         ]+a0,0x10a
> +[      ]+[0-9a-f]+:[   ]+10a59073[     ]+csrw[         ]+0x10a,a1
>  [      ]+[0-9a-f]+:[   ]+14002573[     ]+csrr[         ]+a0,sscratch
>  [      ]+[0-9a-f]+:[   ]+14059073[     ]+csrw[         ]+sscratch,a1
>  [      ]+[0-9a-f]+:[   ]+14102573[     ]+csrr[         ]+a0,sepc
> @@ -185,6 +187,8 @@ Disassembly of section .text:
>  [      ]+[0-9a-f]+:[   ]+f1359073[     ]+csrw[         ]+mimpid,a1
>  [      ]+[0-9a-f]+:[   ]+f1402573[     ]+csrr[         ]+a0,mhartid
>  [      ]+[0-9a-f]+:[   ]+f1459073[     ]+csrw[         ]+mhartid,a1
> +[      ]+[0-9a-f]+:[   ]+f1502573[     ]+csrr[         ]+a0,0xf15
> +[      ]+[0-9a-f]+:[   ]+f1559073[     ]+csrw[         ]+0xf15,a1
>  [      ]+[0-9a-f]+:[   ]+30002573[     ]+csrr[         ]+a0,mstatus
>  [      ]+[0-9a-f]+:[   ]+30059073[     ]+csrw[         ]+mstatus,a1
>  [      ]+[0-9a-f]+:[   ]+30102573[     ]+csrr[         ]+a0,misa
> @@ -199,6 +203,16 @@ Disassembly of section .text:
>  [      ]+[0-9a-f]+:[   ]+30559073[     ]+csrw[         ]+mtvec,a1
>  [      ]+[0-9a-f]+:[   ]+30602573[     ]+csrr[         ]+a0,mcounteren
>  [      ]+[0-9a-f]+:[   ]+30659073[     ]+csrw[         ]+mcounteren,a1
> +[      ]+[0-9a-f]+:[   ]+30a02573[     ]+csrr[         ]+a0,0x30a
> +[      ]+[0-9a-f]+:[   ]+30a59073[     ]+csrw[         ]+0x30a,a1
> +[      ]+[0-9a-f]+:[   ]+31002573[     ]+csrr[         ]+a0,0x310
> +[      ]+[0-9a-f]+:[   ]+31059073[     ]+csrw[         ]+0x310,a1
> +[      ]+[0-9a-f]+:[   ]+31a02573[     ]+csrr[         ]+a0,0x31a
> +[      ]+[0-9a-f]+:[   ]+31a59073[     ]+csrw[         ]+0x31a,a1
> +[      ]+[0-9a-f]+:[   ]+74702573[     ]+csrr[         ]+a0,0x747
> +[      ]+[0-9a-f]+:[   ]+74759073[     ]+csrw[         ]+0x747,a1
> +[      ]+[0-9a-f]+:[   ]+75702573[     ]+csrr[         ]+a0,0x757
> +[      ]+[0-9a-f]+:[   ]+75759073[     ]+csrw[         ]+0x757,a1
>  [      ]+[0-9a-f]+:[   ]+34002573[     ]+csrr[         ]+a0,mscratch
>  [      ]+[0-9a-f]+:[   ]+34059073[     ]+csrw[         ]+mscratch,a1
>  [      ]+[0-9a-f]+:[   ]+34102573[     ]+csrr[         ]+a0,mepc
> @@ -209,6 +223,10 @@ Disassembly of section .text:
>  [      ]+[0-9a-f]+:[   ]+34359073[     ]+csrw[         ]+mtval,a1
>  [      ]+[0-9a-f]+:[   ]+34402573[     ]+csrr[         ]+a0,mip
>  [      ]+[0-9a-f]+:[   ]+34459073[     ]+csrw[         ]+mip,a1
> +[      ]+[0-9a-f]+:[   ]+34a02573[     ]+csrr[         ]+a0,0x34a
> +[      ]+[0-9a-f]+:[   ]+34a59073[     ]+csrw[         ]+0x34a,a1
> +[      ]+[0-9a-f]+:[   ]+34b02573[     ]+csrr[         ]+a0,0x34b
> +[      ]+[0-9a-f]+:[   ]+34b59073[     ]+csrw[         ]+0x34b,a1
>  [      ]+[0-9a-f]+:[   ]+3a002573[     ]+csrr[         ]+a0,pmpcfg0
>  [      ]+[0-9a-f]+:[   ]+3a059073[     ]+csrw[         ]+pmpcfg0,a1
>  [      ]+[0-9a-f]+:[   ]+3a102573[     ]+csrr[         ]+a0,pmpcfg1
> @@ -217,6 +235,30 @@ Disassembly of section .text:
>  [      ]+[0-9a-f]+:[   ]+3a259073[     ]+csrw[         ]+pmpcfg2,a1
>  [      ]+[0-9a-f]+:[   ]+3a302573[     ]+csrr[         ]+a0,pmpcfg3
>  [      ]+[0-9a-f]+:[   ]+3a359073[     ]+csrw[         ]+pmpcfg3,a1
> +[      ]+[0-9a-f]+:[   ]+3a402573[     ]+csrr[         ]+a0,0x3a4
> +[      ]+[0-9a-f]+:[   ]+3a459073[     ]+csrw[         ]+0x3a4,a1
> +[      ]+[0-9a-f]+:[   ]+3a502573[     ]+csrr[         ]+a0,0x3a5
> +[      ]+[0-9a-f]+:[   ]+3a559073[     ]+csrw[         ]+0x3a5,a1
> +[      ]+[0-9a-f]+:[   ]+3a602573[     ]+csrr[         ]+a0,0x3a6
> +[      ]+[0-9a-f]+:[   ]+3a659073[     ]+csrw[         ]+0x3a6,a1
> +[      ]+[0-9a-f]+:[   ]+3a702573[     ]+csrr[         ]+a0,0x3a7
> +[      ]+[0-9a-f]+:[   ]+3a759073[     ]+csrw[         ]+0x3a7,a1
> +[      ]+[0-9a-f]+:[   ]+3a802573[     ]+csrr[         ]+a0,0x3a8
> +[      ]+[0-9a-f]+:[   ]+3a859073[     ]+csrw[         ]+0x3a8,a1
> +[      ]+[0-9a-f]+:[   ]+3a902573[     ]+csrr[         ]+a0,0x3a9
> +[      ]+[0-9a-f]+:[   ]+3a959073[     ]+csrw[         ]+0x3a9,a1
> +[      ]+[0-9a-f]+:[   ]+3aa02573[     ]+csrr[         ]+a0,0x3aa
> +[      ]+[0-9a-f]+:[   ]+3aa59073[     ]+csrw[         ]+0x3aa,a1
> +[      ]+[0-9a-f]+:[   ]+3ab02573[     ]+csrr[         ]+a0,0x3ab
> +[      ]+[0-9a-f]+:[   ]+3ab59073[     ]+csrw[         ]+0x3ab,a1
> +[      ]+[0-9a-f]+:[   ]+3ac02573[     ]+csrr[         ]+a0,0x3ac
> +[      ]+[0-9a-f]+:[   ]+3ac59073[     ]+csrw[         ]+0x3ac,a1
> +[      ]+[0-9a-f]+:[   ]+3ad02573[     ]+csrr[         ]+a0,0x3ad
> +[      ]+[0-9a-f]+:[   ]+3ad59073[     ]+csrw[         ]+0x3ad,a1
> +[      ]+[0-9a-f]+:[   ]+3ae02573[     ]+csrr[         ]+a0,0x3ae
> +[      ]+[0-9a-f]+:[   ]+3ae59073[     ]+csrw[         ]+0x3ae,a1
> +[      ]+[0-9a-f]+:[   ]+3af02573[     ]+csrr[         ]+a0,0x3af
> +[      ]+[0-9a-f]+:[   ]+3af59073[     ]+csrw[         ]+0x3af,a1
>  [      ]+[0-9a-f]+:[   ]+3b002573[     ]+csrr[         ]+a0,pmpaddr0
>  [      ]+[0-9a-f]+:[   ]+3b059073[     ]+csrw[         ]+pmpaddr0,a1
>  [      ]+[0-9a-f]+:[   ]+3b102573[     ]+csrr[         ]+a0,pmpaddr1
> @@ -249,6 +291,102 @@ Disassembly of section .text:
>  [      ]+[0-9a-f]+:[   ]+3be59073[     ]+csrw[         ]+pmpaddr14,a1
>  [      ]+[0-9a-f]+:[   ]+3bf02573[     ]+csrr[         ]+a0,pmpaddr15
>  [      ]+[0-9a-f]+:[   ]+3bf59073[     ]+csrw[         ]+pmpaddr15,a1
> +[      ]+[0-9a-f]+:[   ]+3c002573[     ]+csrr[         ]+a0,0x3c0
> +[      ]+[0-9a-f]+:[   ]+3c059073[     ]+csrw[         ]+0x3c0,a1
> +[      ]+[0-9a-f]+:[   ]+3c102573[     ]+csrr[         ]+a0,0x3c1
> +[      ]+[0-9a-f]+:[   ]+3c159073[     ]+csrw[         ]+0x3c1,a1
> +[      ]+[0-9a-f]+:[   ]+3c202573[     ]+csrr[         ]+a0,0x3c2
> +[      ]+[0-9a-f]+:[   ]+3c259073[     ]+csrw[         ]+0x3c2,a1
> +[      ]+[0-9a-f]+:[   ]+3c302573[     ]+csrr[         ]+a0,0x3c3
> +[      ]+[0-9a-f]+:[   ]+3c359073[     ]+csrw[         ]+0x3c3,a1
> +[      ]+[0-9a-f]+:[   ]+3c402573[     ]+csrr[         ]+a0,0x3c4
> +[      ]+[0-9a-f]+:[   ]+3c459073[     ]+csrw[         ]+0x3c4,a1
> +[      ]+[0-9a-f]+:[   ]+3c502573[     ]+csrr[         ]+a0,0x3c5
> +[      ]+[0-9a-f]+:[   ]+3c559073[     ]+csrw[         ]+0x3c5,a1
> +[      ]+[0-9a-f]+:[   ]+3c602573[     ]+csrr[         ]+a0,0x3c6
> +[      ]+[0-9a-f]+:[   ]+3c659073[     ]+csrw[         ]+0x3c6,a1
> +[      ]+[0-9a-f]+:[   ]+3c702573[     ]+csrr[         ]+a0,0x3c7
> +[      ]+[0-9a-f]+:[   ]+3c759073[     ]+csrw[         ]+0x3c7,a1
> +[      ]+[0-9a-f]+:[   ]+3c802573[     ]+csrr[         ]+a0,0x3c8
> +[      ]+[0-9a-f]+:[   ]+3c859073[     ]+csrw[         ]+0x3c8,a1
> +[      ]+[0-9a-f]+:[   ]+3c902573[     ]+csrr[         ]+a0,0x3c9
> +[      ]+[0-9a-f]+:[   ]+3c959073[     ]+csrw[         ]+0x3c9,a1
> +[      ]+[0-9a-f]+:[   ]+3ca02573[     ]+csrr[         ]+a0,0x3ca
> +[      ]+[0-9a-f]+:[   ]+3ca59073[     ]+csrw[         ]+0x3ca,a1
> +[      ]+[0-9a-f]+:[   ]+3cb02573[     ]+csrr[         ]+a0,0x3cb
> +[      ]+[0-9a-f]+:[   ]+3cb59073[     ]+csrw[         ]+0x3cb,a1
> +[      ]+[0-9a-f]+:[   ]+3cc02573[     ]+csrr[         ]+a0,0x3cc
> +[      ]+[0-9a-f]+:[   ]+3cc59073[     ]+csrw[         ]+0x3cc,a1
> +[      ]+[0-9a-f]+:[   ]+3cd02573[     ]+csrr[         ]+a0,0x3cd
> +[      ]+[0-9a-f]+:[   ]+3cd59073[     ]+csrw[         ]+0x3cd,a1
> +[      ]+[0-9a-f]+:[   ]+3ce02573[     ]+csrr[         ]+a0,0x3ce
> +[      ]+[0-9a-f]+:[   ]+3ce59073[     ]+csrw[         ]+0x3ce,a1
> +[      ]+[0-9a-f]+:[   ]+3cf02573[     ]+csrr[         ]+a0,0x3cf
> +[      ]+[0-9a-f]+:[   ]+3cf59073[     ]+csrw[         ]+0x3cf,a1
> +[      ]+[0-9a-f]+:[   ]+3d002573[     ]+csrr[         ]+a0,0x3d0
> +[      ]+[0-9a-f]+:[   ]+3d059073[     ]+csrw[         ]+0x3d0,a1
> +[      ]+[0-9a-f]+:[   ]+3d102573[     ]+csrr[         ]+a0,0x3d1
> +[      ]+[0-9a-f]+:[   ]+3d159073[     ]+csrw[         ]+0x3d1,a1
> +[      ]+[0-9a-f]+:[   ]+3d202573[     ]+csrr[         ]+a0,0x3d2
> +[      ]+[0-9a-f]+:[   ]+3d259073[     ]+csrw[         ]+0x3d2,a1
> +[      ]+[0-9a-f]+:[   ]+3d302573[     ]+csrr[         ]+a0,0x3d3
> +[      ]+[0-9a-f]+:[   ]+3d359073[     ]+csrw[         ]+0x3d3,a1
> +[      ]+[0-9a-f]+:[   ]+3d402573[     ]+csrr[         ]+a0,0x3d4
> +[      ]+[0-9a-f]+:[   ]+3d459073[     ]+csrw[         ]+0x3d4,a1
> +[      ]+[0-9a-f]+:[   ]+3d502573[     ]+csrr[         ]+a0,0x3d5
> +[      ]+[0-9a-f]+:[   ]+3d559073[     ]+csrw[         ]+0x3d5,a1
> +[      ]+[0-9a-f]+:[   ]+3d602573[     ]+csrr[         ]+a0,0x3d6
> +[      ]+[0-9a-f]+:[   ]+3d659073[     ]+csrw[         ]+0x3d6,a1
> +[      ]+[0-9a-f]+:[   ]+3d702573[     ]+csrr[         ]+a0,0x3d7
> +[      ]+[0-9a-f]+:[   ]+3d759073[     ]+csrw[         ]+0x3d7,a1
> +[      ]+[0-9a-f]+:[   ]+3d802573[     ]+csrr[         ]+a0,0x3d8
> +[      ]+[0-9a-f]+:[   ]+3d859073[     ]+csrw[         ]+0x3d8,a1
> +[      ]+[0-9a-f]+:[   ]+3d902573[     ]+csrr[         ]+a0,0x3d9
> +[      ]+[0-9a-f]+:[   ]+3d959073[     ]+csrw[         ]+0x3d9,a1
> +[      ]+[0-9a-f]+:[   ]+3da02573[     ]+csrr[         ]+a0,0x3da
> +[      ]+[0-9a-f]+:[   ]+3da59073[     ]+csrw[         ]+0x3da,a1
> +[      ]+[0-9a-f]+:[   ]+3db02573[     ]+csrr[         ]+a0,0x3db
> +[      ]+[0-9a-f]+:[   ]+3db59073[     ]+csrw[         ]+0x3db,a1
> +[      ]+[0-9a-f]+:[   ]+3dc02573[     ]+csrr[         ]+a0,0x3dc
> +[      ]+[0-9a-f]+:[   ]+3dc59073[     ]+csrw[         ]+0x3dc,a1
> +[      ]+[0-9a-f]+:[   ]+3dd02573[     ]+csrr[         ]+a0,0x3dd
> +[      ]+[0-9a-f]+:[   ]+3dd59073[     ]+csrw[         ]+0x3dd,a1
> +[      ]+[0-9a-f]+:[   ]+3de02573[     ]+csrr[         ]+a0,0x3de
> +[      ]+[0-9a-f]+:[   ]+3de59073[     ]+csrw[         ]+0x3de,a1
> +[      ]+[0-9a-f]+:[   ]+3df02573[     ]+csrr[         ]+a0,0x3df
> +[      ]+[0-9a-f]+:[   ]+3df59073[     ]+csrw[         ]+0x3df,a1
> +[      ]+[0-9a-f]+:[   ]+3e002573[     ]+csrr[         ]+a0,0x3e0
> +[      ]+[0-9a-f]+:[   ]+3e059073[     ]+csrw[         ]+0x3e0,a1
> +[      ]+[0-9a-f]+:[   ]+3e102573[     ]+csrr[         ]+a0,0x3e1
> +[      ]+[0-9a-f]+:[   ]+3e159073[     ]+csrw[         ]+0x3e1,a1
> +[      ]+[0-9a-f]+:[   ]+3e202573[     ]+csrr[         ]+a0,0x3e2
> +[      ]+[0-9a-f]+:[   ]+3e259073[     ]+csrw[         ]+0x3e2,a1
> +[      ]+[0-9a-f]+:[   ]+3e302573[     ]+csrr[         ]+a0,0x3e3
> +[      ]+[0-9a-f]+:[   ]+3e359073[     ]+csrw[         ]+0x3e3,a1
> +[      ]+[0-9a-f]+:[   ]+3e402573[     ]+csrr[         ]+a0,0x3e4
> +[      ]+[0-9a-f]+:[   ]+3e459073[     ]+csrw[         ]+0x3e4,a1
> +[      ]+[0-9a-f]+:[   ]+3e502573[     ]+csrr[         ]+a0,0x3e5
> +[      ]+[0-9a-f]+:[   ]+3e559073[     ]+csrw[         ]+0x3e5,a1
> +[      ]+[0-9a-f]+:[   ]+3e602573[     ]+csrr[         ]+a0,0x3e6
> +[      ]+[0-9a-f]+:[   ]+3e659073[     ]+csrw[         ]+0x3e6,a1
> +[      ]+[0-9a-f]+:[   ]+3e702573[     ]+csrr[         ]+a0,0x3e7
> +[      ]+[0-9a-f]+:[   ]+3e759073[     ]+csrw[         ]+0x3e7,a1
> +[      ]+[0-9a-f]+:[   ]+3e802573[     ]+csrr[         ]+a0,0x3e8
> +[      ]+[0-9a-f]+:[   ]+3e859073[     ]+csrw[         ]+0x3e8,a1
> +[      ]+[0-9a-f]+:[   ]+3e902573[     ]+csrr[         ]+a0,0x3e9
> +[      ]+[0-9a-f]+:[   ]+3e959073[     ]+csrw[         ]+0x3e9,a1
> +[      ]+[0-9a-f]+:[   ]+3ea02573[     ]+csrr[         ]+a0,0x3ea
> +[      ]+[0-9a-f]+:[   ]+3ea59073[     ]+csrw[         ]+0x3ea,a1
> +[      ]+[0-9a-f]+:[   ]+3eb02573[     ]+csrr[         ]+a0,0x3eb
> +[      ]+[0-9a-f]+:[   ]+3eb59073[     ]+csrw[         ]+0x3eb,a1
> +[      ]+[0-9a-f]+:[   ]+3ec02573[     ]+csrr[         ]+a0,0x3ec
> +[      ]+[0-9a-f]+:[   ]+3ec59073[     ]+csrw[         ]+0x3ec,a1
> +[      ]+[0-9a-f]+:[   ]+3ed02573[     ]+csrr[         ]+a0,0x3ed
> +[      ]+[0-9a-f]+:[   ]+3ed59073[     ]+csrw[         ]+0x3ed,a1
> +[      ]+[0-9a-f]+:[   ]+3ee02573[     ]+csrr[         ]+a0,0x3ee
> +[      ]+[0-9a-f]+:[   ]+3ee59073[     ]+csrw[         ]+0x3ee,a1
> +[      ]+[0-9a-f]+:[   ]+3ef02573[     ]+csrr[         ]+a0,0x3ef
> +[      ]+[0-9a-f]+:[   ]+3ef59073[     ]+csrw[         ]+0x3ef,a1
>  [      ]+[0-9a-f]+:[   ]+b0002573[     ]+csrr[         ]+a0,mcycle
>  [      ]+[0-9a-f]+:[   ]+b0059073[     ]+csrw[         ]+mcycle,a1
>  [      ]+[0-9a-f]+:[   ]+b0202573[     ]+csrr[         ]+a0,minstret
> diff --git a/gas/testsuite/gas/riscv/csr-version-1p10.l b/gas/testsuite/gas/riscv/csr-version-1p10.l
> index ed6773e637c..c0cb2d5d279 100644
> --- a/gas/testsuite/gas/riscv/csr-version-1p10.l
> +++ b/gas/testsuite/gas/riscv/csr-version-1p10.l
> @@ -127,14 +127,171 @@
>  .*Warning: invalid CSR `hpmcounter31h' for the current ISA
>  .*Warning: invalid CSR `hpmcounter31h' for the current ISA
>  .*Warning: read-only CSR is written `csrw hpmcounter31h,a1'
> +.*Warning: invalid CSR `senvcfg' for the privileged spec `1.10'
> +.*Warning: invalid CSR `senvcfg' for the privileged spec `1.10'
>  .*Warning: read-only CSR is written `csrw mvendorid,a1'
>  .*Warning: read-only CSR is written `csrw marchid,a1'
>  .*Warning: read-only CSR is written `csrw mimpid,a1'
>  .*Warning: read-only CSR is written `csrw mhartid,a1'
> +.*Warning: invalid CSR `mconfigptr' for the privileged spec `1.10'
> +.*Warning: invalid CSR `mconfigptr' for the privileged spec `1.10'
> +.*Warning: read-only CSR is written `csrw mconfigptr,a1'
> +.*Warning: invalid CSR `menvcfg' for the privileged spec `1.10'
> +.*Warning: invalid CSR `menvcfg' for the privileged spec `1.10'
> +.*Warning: invalid CSR `mstatush' for the current ISA
> +.*Warning: invalid CSR `mstatush' for the privileged spec `1.10'
> +.*Warning: invalid CSR `mstatush' for the current ISA
> +.*Warning: invalid CSR `mstatush' for the privileged spec `1.10'
> +.*Warning: invalid CSR `menvcfgh' for the current ISA
> +.*Warning: invalid CSR `menvcfgh' for the privileged spec `1.10'
> +.*Warning: invalid CSR `menvcfgh' for the current ISA
> +.*Warning: invalid CSR `menvcfgh' for the privileged spec `1.10'
> +.*Warning: invalid CSR `mseccfg' for the privileged spec `1.10'
> +.*Warning: invalid CSR `mseccfg' for the privileged spec `1.10'
> +.*Warning: invalid CSR `mseccfgh' for the current ISA
> +.*Warning: invalid CSR `mseccfgh' for the privileged spec `1.10'
> +.*Warning: invalid CSR `mseccfgh' for the current ISA
> +.*Warning: invalid CSR `mseccfgh' for the privileged spec `1.10'
> +.*Warning: invalid CSR `mtinst' for the privileged spec `1.10'
> +.*Warning: invalid CSR `mtinst' for the privileged spec `1.10'
> +.*Warning: invalid CSR `mtval2' for the privileged spec `1.10'
> +.*Warning: invalid CSR `mtval2' for the privileged spec `1.10'
>  .*Warning: invalid CSR `pmpcfg1' for the current ISA
>  .*Warning: invalid CSR `pmpcfg1' for the current ISA
>  .*Warning: invalid CSR `pmpcfg3' for the current ISA
>  .*Warning: invalid CSR `pmpcfg3' for the current ISA
> +.*Warning: invalid CSR `pmpcfg4' for the privileged spec `1.10'
> +.*Warning: invalid CSR `pmpcfg4' for the privileged spec `1.10'
> +.*Warning: invalid CSR `pmpcfg5' for the current ISA
> +.*Warning: invalid CSR `pmpcfg5' for the privileged spec `1.10'
> +.*Warning: invalid CSR `pmpcfg5' for the current ISA
> +.*Warning: invalid CSR `pmpcfg5' for the privileged spec `1.10'
> +.*Warning: invalid CSR `pmpcfg6' for the privileged spec `1.10'
> +.*Warning: invalid CSR `pmpcfg6' for the privileged spec `1.10'
> +.*Warning: invalid CSR `pmpcfg7' for the current ISA
> +.*Warning: invalid CSR `pmpcfg7' for the privileged spec `1.10'
> +.*Warning: invalid CSR `pmpcfg7' for the current ISA
> +.*Warning: invalid CSR `pmpcfg7' for the privileged spec `1.10'
> +.*Warning: invalid CSR `pmpcfg8' for the privileged spec `1.10'
> +.*Warning: invalid CSR `pmpcfg8' for the privileged spec `1.10'
> +.*Warning: invalid CSR `pmpcfg9' for the current ISA
> +.*Warning: invalid CSR `pmpcfg9' for the privileged spec `1.10'
> +.*Warning: invalid CSR `pmpcfg9' for the current ISA
> +.*Warning: invalid CSR `pmpcfg9' for the privileged spec `1.10'
> +.*Warning: invalid CSR `pmpcfg10' for the privileged spec `1.10'
> +.*Warning: invalid CSR `pmpcfg10' for the privileged spec `1.10'
> +.*Warning: invalid CSR `pmpcfg11' for the current ISA
> +.*Warning: invalid CSR `pmpcfg11' for the privileged spec `1.10'
> +.*Warning: invalid CSR `pmpcfg11' for the current ISA
> +.*Warning: invalid CSR `pmpcfg11' for the privileged spec `1.10'
> +.*Warning: invalid CSR `pmpcfg12' for the privileged spec `1.10'
> +.*Warning: invalid CSR `pmpcfg12' for the privileged spec `1.10'
> +.*Warning: invalid CSR `pmpcfg13' for the current ISA
> +.*Warning: invalid CSR `pmpcfg13' for the privileged spec `1.10'
> +.*Warning: invalid CSR `pmpcfg13' for the current ISA
> +.*Warning: invalid CSR `pmpcfg13' for the privileged spec `1.10'
> +.*Warning: invalid CSR `pmpcfg14' for the privileged spec `1.10'
> +.*Warning: invalid CSR `pmpcfg14' for the privileged spec `1.10'
> +.*Warning: invalid CSR `pmpcfg15' for the current ISA
> +.*Warning: invalid CSR `pmpcfg15' for the privileged spec `1.10'
> +.*Warning: invalid CSR `pmpcfg15' for the current ISA
> +.*Warning: invalid CSR `pmpcfg15' for the privileged spec `1.10'
> +.*Warning: invalid CSR `pmpaddr16' for the privileged spec `1.10'
> +.*Warning: invalid CSR `pmpaddr16' for the privileged spec `1.10'
> +.*Warning: invalid CSR `pmpaddr17' for the privileged spec `1.10'
> +.*Warning: invalid CSR `pmpaddr17' for the privileged spec `1.10'
> +.*Warning: invalid CSR `pmpaddr18' for the privileged spec `1.10'
> +.*Warning: invalid CSR `pmpaddr18' for the privileged spec `1.10'
> +.*Warning: invalid CSR `pmpaddr19' for the privileged spec `1.10'
> +.*Warning: invalid CSR `pmpaddr19' for the privileged spec `1.10'
> +.*Warning: invalid CSR `pmpaddr20' for the privileged spec `1.10'
> +.*Warning: invalid CSR `pmpaddr20' for the privileged spec `1.10'
> +.*Warning: invalid CSR `pmpaddr21' for the privileged spec `1.10'
> +.*Warning: invalid CSR `pmpaddr21' for the privileged spec `1.10'
> +.*Warning: invalid CSR `pmpaddr22' for the privileged spec `1.10'
> +.*Warning: invalid CSR `pmpaddr22' for the privileged spec `1.10'
> +.*Warning: invalid CSR `pmpaddr23' for the privileged spec `1.10'
> +.*Warning: invalid CSR `pmpaddr23' for the privileged spec `1.10'
> +.*Warning: invalid CSR `pmpaddr24' for the privileged spec `1.10'
> +.*Warning: invalid CSR `pmpaddr24' for the privileged spec `1.10'
> +.*Warning: invalid CSR `pmpaddr25' for the privileged spec `1.10'
> +.*Warning: invalid CSR `pmpaddr25' for the privileged spec `1.10'
> +.*Warning: invalid CSR `pmpaddr26' for the privileged spec `1.10'
> +.*Warning: invalid CSR `pmpaddr26' for the privileged spec `1.10'
> +.*Warning: invalid CSR `pmpaddr27' for the privileged spec `1.10'
> +.*Warning: invalid CSR `pmpaddr27' for the privileged spec `1.10'
> +.*Warning: invalid CSR `pmpaddr28' for the privileged spec `1.10'
> +.*Warning: invalid CSR `pmpaddr28' for the privileged spec `1.10'
> +.*Warning: invalid CSR `pmpaddr29' for the privileged spec `1.10'
> +.*Warning: invalid CSR `pmpaddr29' for the privileged spec `1.10'
> +.*Warning: invalid CSR `pmpaddr30' for the privileged spec `1.10'
> +.*Warning: invalid CSR `pmpaddr30' for the privileged spec `1.10'
> +.*Warning: invalid CSR `pmpaddr31' for the privileged spec `1.10'
> +.*Warning: invalid CSR `pmpaddr31' for the privileged spec `1.10'
> +.*Warning: invalid CSR `pmpaddr32' for the privileged spec `1.10'
> +.*Warning: invalid CSR `pmpaddr32' for the privileged spec `1.10'
> +.*Warning: invalid CSR `pmpaddr33' for the privileged spec `1.10'
> +.*Warning: invalid CSR `pmpaddr33' for the privileged spec `1.10'
> +.*Warning: invalid CSR `pmpaddr34' for the privileged spec `1.10'
> +.*Warning: invalid CSR `pmpaddr34' for the privileged spec `1.10'
> +.*Warning: invalid CSR `pmpaddr35' for the privileged spec `1.10'
> +.*Warning: invalid CSR `pmpaddr35' for the privileged spec `1.10'
> +.*Warning: invalid CSR `pmpaddr36' for the privileged spec `1.10'
> +.*Warning: invalid CSR `pmpaddr36' for the privileged spec `1.10'
> +.*Warning: invalid CSR `pmpaddr37' for the privileged spec `1.10'
> +.*Warning: invalid CSR `pmpaddr37' for the privileged spec `1.10'
> +.*Warning: invalid CSR `pmpaddr38' for the privileged spec `1.10'
> +.*Warning: invalid CSR `pmpaddr38' for the privileged spec `1.10'
> +.*Warning: invalid CSR `pmpaddr39' for the privileged spec `1.10'
> +.*Warning: invalid CSR `pmpaddr39' for the privileged spec `1.10'
> +.*Warning: invalid CSR `pmpaddr40' for the privileged spec `1.10'
> +.*Warning: invalid CSR `pmpaddr40' for the privileged spec `1.10'
> +.*Warning: invalid CSR `pmpaddr41' for the privileged spec `1.10'
> +.*Warning: invalid CSR `pmpaddr41' for the privileged spec `1.10'
> +.*Warning: invalid CSR `pmpaddr42' for the privileged spec `1.10'
> +.*Warning: invalid CSR `pmpaddr42' for the privileged spec `1.10'
> +.*Warning: invalid CSR `pmpaddr43' for the privileged spec `1.10'
> +.*Warning: invalid CSR `pmpaddr43' for the privileged spec `1.10'
> +.*Warning: invalid CSR `pmpaddr44' for the privileged spec `1.10'
> +.*Warning: invalid CSR `pmpaddr44' for the privileged spec `1.10'
> +.*Warning: invalid CSR `pmpaddr45' for the privileged spec `1.10'
> +.*Warning: invalid CSR `pmpaddr45' for the privileged spec `1.10'
> +.*Warning: invalid CSR `pmpaddr46' for the privileged spec `1.10'
> +.*Warning: invalid CSR `pmpaddr46' for the privileged spec `1.10'
> +.*Warning: invalid CSR `pmpaddr47' for the privileged spec `1.10'
> +.*Warning: invalid CSR `pmpaddr47' for the privileged spec `1.10'
> +.*Warning: invalid CSR `pmpaddr48' for the privileged spec `1.10'
> +.*Warning: invalid CSR `pmpaddr48' for the privileged spec `1.10'
> +.*Warning: invalid CSR `pmpaddr49' for the privileged spec `1.10'
> +.*Warning: invalid CSR `pmpaddr49' for the privileged spec `1.10'
> +.*Warning: invalid CSR `pmpaddr50' for the privileged spec `1.10'
> +.*Warning: invalid CSR `pmpaddr50' for the privileged spec `1.10'
> +.*Warning: invalid CSR `pmpaddr51' for the privileged spec `1.10'
> +.*Warning: invalid CSR `pmpaddr51' for the privileged spec `1.10'
> +.*Warning: invalid CSR `pmpaddr52' for the privileged spec `1.10'
> +.*Warning: invalid CSR `pmpaddr52' for the privileged spec `1.10'
> +.*Warning: invalid CSR `pmpaddr53' for the privileged spec `1.10'
> +.*Warning: invalid CSR `pmpaddr53' for the privileged spec `1.10'
> +.*Warning: invalid CSR `pmpaddr54' for the privileged spec `1.10'
> +.*Warning: invalid CSR `pmpaddr54' for the privileged spec `1.10'
> +.*Warning: invalid CSR `pmpaddr55' for the privileged spec `1.10'
> +.*Warning: invalid CSR `pmpaddr55' for the privileged spec `1.10'
> +.*Warning: invalid CSR `pmpaddr56' for the privileged spec `1.10'
> +.*Warning: invalid CSR `pmpaddr56' for the privileged spec `1.10'
> +.*Warning: invalid CSR `pmpaddr57' for the privileged spec `1.10'
> +.*Warning: invalid CSR `pmpaddr57' for the privileged spec `1.10'
> +.*Warning: invalid CSR `pmpaddr58' for the privileged spec `1.10'
> +.*Warning: invalid CSR `pmpaddr58' for the privileged spec `1.10'
> +.*Warning: invalid CSR `pmpaddr59' for the privileged spec `1.10'
> +.*Warning: invalid CSR `pmpaddr59' for the privileged spec `1.10'
> +.*Warning: invalid CSR `pmpaddr60' for the privileged spec `1.10'
> +.*Warning: invalid CSR `pmpaddr60' for the privileged spec `1.10'
> +.*Warning: invalid CSR `pmpaddr61' for the privileged spec `1.10'
> +.*Warning: invalid CSR `pmpaddr61' for the privileged spec `1.10'
> +.*Warning: invalid CSR `pmpaddr62' for the privileged spec `1.10'
> +.*Warning: invalid CSR `pmpaddr62' for the privileged spec `1.10'
> +.*Warning: invalid CSR `pmpaddr63' for the privileged spec `1.10'
> +.*Warning: invalid CSR `pmpaddr63' for the privileged spec `1.10'
>  .*Warning: invalid CSR `mcycleh' for the current ISA
>  .*Warning: invalid CSR `mcycleh' for the current ISA
>  .*Warning: invalid CSR `minstreth' for the current ISA
> diff --git a/gas/testsuite/gas/riscv/csr-version-1p11.d b/gas/testsuite/gas/riscv/csr-version-1p11.d
> index b40c1d5d6b9..a8586d96408 100644
> --- a/gas/testsuite/gas/riscv/csr-version-1p11.d
> +++ b/gas/testsuite/gas/riscv/csr-version-1p11.d
> @@ -165,6 +165,8 @@ Disassembly of section .text:
>  [      ]+[0-9a-f]+:[   ]+10559073[     ]+csrw[         ]+stvec,a1
>  [      ]+[0-9a-f]+:[   ]+10602573[     ]+csrr[         ]+a0,scounteren
>  [      ]+[0-9a-f]+:[   ]+10659073[     ]+csrw[         ]+scounteren,a1
> +[      ]+[0-9a-f]+:[   ]+10a02573[     ]+csrr[         ]+a0,0x10a
> +[      ]+[0-9a-f]+:[   ]+10a59073[     ]+csrw[         ]+0x10a,a1
>  [      ]+[0-9a-f]+:[   ]+14002573[     ]+csrr[         ]+a0,sscratch
>  [      ]+[0-9a-f]+:[   ]+14059073[     ]+csrw[         ]+sscratch,a1
>  [      ]+[0-9a-f]+:[   ]+14102573[     ]+csrr[         ]+a0,sepc
> @@ -185,6 +187,8 @@ Disassembly of section .text:
>  [      ]+[0-9a-f]+:[   ]+f1359073[     ]+csrw[         ]+mimpid,a1
>  [      ]+[0-9a-f]+:[   ]+f1402573[     ]+csrr[         ]+a0,mhartid
>  [      ]+[0-9a-f]+:[   ]+f1459073[     ]+csrw[         ]+mhartid,a1
> +[      ]+[0-9a-f]+:[   ]+f1502573[     ]+csrr[         ]+a0,0xf15
> +[      ]+[0-9a-f]+:[   ]+f1559073[     ]+csrw[         ]+0xf15,a1
>  [      ]+[0-9a-f]+:[   ]+30002573[     ]+csrr[         ]+a0,mstatus
>  [      ]+[0-9a-f]+:[   ]+30059073[     ]+csrw[         ]+mstatus,a1
>  [      ]+[0-9a-f]+:[   ]+30102573[     ]+csrr[         ]+a0,misa
> @@ -199,6 +203,16 @@ Disassembly of section .text:
>  [      ]+[0-9a-f]+:[   ]+30559073[     ]+csrw[         ]+mtvec,a1
>  [      ]+[0-9a-f]+:[   ]+30602573[     ]+csrr[         ]+a0,mcounteren
>  [      ]+[0-9a-f]+:[   ]+30659073[     ]+csrw[         ]+mcounteren,a1
> +[      ]+[0-9a-f]+:[   ]+30a02573[     ]+csrr[         ]+a0,0x30a
> +[      ]+[0-9a-f]+:[   ]+30a59073[     ]+csrw[         ]+0x30a,a1
> +[      ]+[0-9a-f]+:[   ]+31002573[     ]+csrr[         ]+a0,0x310
> +[      ]+[0-9a-f]+:[   ]+31059073[     ]+csrw[         ]+0x310,a1
> +[      ]+[0-9a-f]+:[   ]+31a02573[     ]+csrr[         ]+a0,0x31a
> +[      ]+[0-9a-f]+:[   ]+31a59073[     ]+csrw[         ]+0x31a,a1
> +[      ]+[0-9a-f]+:[   ]+74702573[     ]+csrr[         ]+a0,0x747
> +[      ]+[0-9a-f]+:[   ]+74759073[     ]+csrw[         ]+0x747,a1
> +[      ]+[0-9a-f]+:[   ]+75702573[     ]+csrr[         ]+a0,0x757
> +[      ]+[0-9a-f]+:[   ]+75759073[     ]+csrw[         ]+0x757,a1
>  [      ]+[0-9a-f]+:[   ]+34002573[     ]+csrr[         ]+a0,mscratch
>  [      ]+[0-9a-f]+:[   ]+34059073[     ]+csrw[         ]+mscratch,a1
>  [      ]+[0-9a-f]+:[   ]+34102573[     ]+csrr[         ]+a0,mepc
> @@ -209,6 +223,10 @@ Disassembly of section .text:
>  [      ]+[0-9a-f]+:[   ]+34359073[     ]+csrw[         ]+mtval,a1
>  [      ]+[0-9a-f]+:[   ]+34402573[     ]+csrr[         ]+a0,mip
>  [      ]+[0-9a-f]+:[   ]+34459073[     ]+csrw[         ]+mip,a1
> +[      ]+[0-9a-f]+:[   ]+34a02573[     ]+csrr[         ]+a0,0x34a
> +[      ]+[0-9a-f]+:[   ]+34a59073[     ]+csrw[         ]+0x34a,a1
> +[      ]+[0-9a-f]+:[   ]+34b02573[     ]+csrr[         ]+a0,0x34b
> +[      ]+[0-9a-f]+:[   ]+34b59073[     ]+csrw[         ]+0x34b,a1
>  [      ]+[0-9a-f]+:[   ]+3a002573[     ]+csrr[         ]+a0,pmpcfg0
>  [      ]+[0-9a-f]+:[   ]+3a059073[     ]+csrw[         ]+pmpcfg0,a1
>  [      ]+[0-9a-f]+:[   ]+3a102573[     ]+csrr[         ]+a0,pmpcfg1
> @@ -217,6 +235,30 @@ Disassembly of section .text:
>  [      ]+[0-9a-f]+:[   ]+3a259073[     ]+csrw[         ]+pmpcfg2,a1
>  [      ]+[0-9a-f]+:[   ]+3a302573[     ]+csrr[         ]+a0,pmpcfg3
>  [      ]+[0-9a-f]+:[   ]+3a359073[     ]+csrw[         ]+pmpcfg3,a1
> +[      ]+[0-9a-f]+:[   ]+3a402573[     ]+csrr[         ]+a0,0x3a4
> +[      ]+[0-9a-f]+:[   ]+3a459073[     ]+csrw[         ]+0x3a4,a1
> +[      ]+[0-9a-f]+:[   ]+3a502573[     ]+csrr[         ]+a0,0x3a5
> +[      ]+[0-9a-f]+:[   ]+3a559073[     ]+csrw[         ]+0x3a5,a1
> +[      ]+[0-9a-f]+:[   ]+3a602573[     ]+csrr[         ]+a0,0x3a6
> +[      ]+[0-9a-f]+:[   ]+3a659073[     ]+csrw[         ]+0x3a6,a1
> +[      ]+[0-9a-f]+:[   ]+3a702573[     ]+csrr[         ]+a0,0x3a7
> +[      ]+[0-9a-f]+:[   ]+3a759073[     ]+csrw[         ]+0x3a7,a1
> +[      ]+[0-9a-f]+:[   ]+3a802573[     ]+csrr[         ]+a0,0x3a8
> +[      ]+[0-9a-f]+:[   ]+3a859073[     ]+csrw[         ]+0x3a8,a1
> +[      ]+[0-9a-f]+:[   ]+3a902573[     ]+csrr[         ]+a0,0x3a9
> +[      ]+[0-9a-f]+:[   ]+3a959073[     ]+csrw[         ]+0x3a9,a1
> +[      ]+[0-9a-f]+:[   ]+3aa02573[     ]+csrr[         ]+a0,0x3aa
> +[      ]+[0-9a-f]+:[   ]+3aa59073[     ]+csrw[         ]+0x3aa,a1
> +[      ]+[0-9a-f]+:[   ]+3ab02573[     ]+csrr[         ]+a0,0x3ab
> +[      ]+[0-9a-f]+:[   ]+3ab59073[     ]+csrw[         ]+0x3ab,a1
> +[      ]+[0-9a-f]+:[   ]+3ac02573[     ]+csrr[         ]+a0,0x3ac
> +[      ]+[0-9a-f]+:[   ]+3ac59073[     ]+csrw[         ]+0x3ac,a1
> +[      ]+[0-9a-f]+:[   ]+3ad02573[     ]+csrr[         ]+a0,0x3ad
> +[      ]+[0-9a-f]+:[   ]+3ad59073[     ]+csrw[         ]+0x3ad,a1
> +[      ]+[0-9a-f]+:[   ]+3ae02573[     ]+csrr[         ]+a0,0x3ae
> +[      ]+[0-9a-f]+:[   ]+3ae59073[     ]+csrw[         ]+0x3ae,a1
> +[      ]+[0-9a-f]+:[   ]+3af02573[     ]+csrr[         ]+a0,0x3af
> +[      ]+[0-9a-f]+:[   ]+3af59073[     ]+csrw[         ]+0x3af,a1
>  [      ]+[0-9a-f]+:[   ]+3b002573[     ]+csrr[         ]+a0,pmpaddr0
>  [      ]+[0-9a-f]+:[   ]+3b059073[     ]+csrw[         ]+pmpaddr0,a1
>  [      ]+[0-9a-f]+:[   ]+3b102573[     ]+csrr[         ]+a0,pmpaddr1
> @@ -249,6 +291,102 @@ Disassembly of section .text:
>  [      ]+[0-9a-f]+:[   ]+3be59073[     ]+csrw[         ]+pmpaddr14,a1
>  [      ]+[0-9a-f]+:[   ]+3bf02573[     ]+csrr[         ]+a0,pmpaddr15
>  [      ]+[0-9a-f]+:[   ]+3bf59073[     ]+csrw[         ]+pmpaddr15,a1
> +[      ]+[0-9a-f]+:[   ]+3c002573[     ]+csrr[         ]+a0,0x3c0
> +[      ]+[0-9a-f]+:[   ]+3c059073[     ]+csrw[         ]+0x3c0,a1
> +[      ]+[0-9a-f]+:[   ]+3c102573[     ]+csrr[         ]+a0,0x3c1
> +[      ]+[0-9a-f]+:[   ]+3c159073[     ]+csrw[         ]+0x3c1,a1
> +[      ]+[0-9a-f]+:[   ]+3c202573[     ]+csrr[         ]+a0,0x3c2
> +[      ]+[0-9a-f]+:[   ]+3c259073[     ]+csrw[         ]+0x3c2,a1
> +[      ]+[0-9a-f]+:[   ]+3c302573[     ]+csrr[         ]+a0,0x3c3
> +[      ]+[0-9a-f]+:[   ]+3c359073[     ]+csrw[         ]+0x3c3,a1
> +[      ]+[0-9a-f]+:[   ]+3c402573[     ]+csrr[         ]+a0,0x3c4
> +[      ]+[0-9a-f]+:[   ]+3c459073[     ]+csrw[         ]+0x3c4,a1
> +[      ]+[0-9a-f]+:[   ]+3c502573[     ]+csrr[         ]+a0,0x3c5
> +[      ]+[0-9a-f]+:[   ]+3c559073[     ]+csrw[         ]+0x3c5,a1
> +[      ]+[0-9a-f]+:[   ]+3c602573[     ]+csrr[         ]+a0,0x3c6
> +[      ]+[0-9a-f]+:[   ]+3c659073[     ]+csrw[         ]+0x3c6,a1
> +[      ]+[0-9a-f]+:[   ]+3c702573[     ]+csrr[         ]+a0,0x3c7
> +[      ]+[0-9a-f]+:[   ]+3c759073[     ]+csrw[         ]+0x3c7,a1
> +[      ]+[0-9a-f]+:[   ]+3c802573[     ]+csrr[         ]+a0,0x3c8
> +[      ]+[0-9a-f]+:[   ]+3c859073[     ]+csrw[         ]+0x3c8,a1
> +[      ]+[0-9a-f]+:[   ]+3c902573[     ]+csrr[         ]+a0,0x3c9
> +[      ]+[0-9a-f]+:[   ]+3c959073[     ]+csrw[         ]+0x3c9,a1
> +[      ]+[0-9a-f]+:[   ]+3ca02573[     ]+csrr[         ]+a0,0x3ca
> +[      ]+[0-9a-f]+:[   ]+3ca59073[     ]+csrw[         ]+0x3ca,a1
> +[      ]+[0-9a-f]+:[   ]+3cb02573[     ]+csrr[         ]+a0,0x3cb
> +[      ]+[0-9a-f]+:[   ]+3cb59073[     ]+csrw[         ]+0x3cb,a1
> +[      ]+[0-9a-f]+:[   ]+3cc02573[     ]+csrr[         ]+a0,0x3cc
> +[      ]+[0-9a-f]+:[   ]+3cc59073[     ]+csrw[         ]+0x3cc,a1
> +[      ]+[0-9a-f]+:[   ]+3cd02573[     ]+csrr[         ]+a0,0x3cd
> +[      ]+[0-9a-f]+:[   ]+3cd59073[     ]+csrw[         ]+0x3cd,a1
> +[      ]+[0-9a-f]+:[   ]+3ce02573[     ]+csrr[         ]+a0,0x3ce
> +[      ]+[0-9a-f]+:[   ]+3ce59073[     ]+csrw[         ]+0x3ce,a1
> +[      ]+[0-9a-f]+:[   ]+3cf02573[     ]+csrr[         ]+a0,0x3cf
> +[      ]+[0-9a-f]+:[   ]+3cf59073[     ]+csrw[         ]+0x3cf,a1
> +[      ]+[0-9a-f]+:[   ]+3d002573[     ]+csrr[         ]+a0,0x3d0
> +[      ]+[0-9a-f]+:[   ]+3d059073[     ]+csrw[         ]+0x3d0,a1
> +[      ]+[0-9a-f]+:[   ]+3d102573[     ]+csrr[         ]+a0,0x3d1
> +[      ]+[0-9a-f]+:[   ]+3d159073[     ]+csrw[         ]+0x3d1,a1
> +[      ]+[0-9a-f]+:[   ]+3d202573[     ]+csrr[         ]+a0,0x3d2
> +[      ]+[0-9a-f]+:[   ]+3d259073[     ]+csrw[         ]+0x3d2,a1
> +[      ]+[0-9a-f]+:[   ]+3d302573[     ]+csrr[         ]+a0,0x3d3
> +[      ]+[0-9a-f]+:[   ]+3d359073[     ]+csrw[         ]+0x3d3,a1
> +[      ]+[0-9a-f]+:[   ]+3d402573[     ]+csrr[         ]+a0,0x3d4
> +[      ]+[0-9a-f]+:[   ]+3d459073[     ]+csrw[         ]+0x3d4,a1
> +[      ]+[0-9a-f]+:[   ]+3d502573[     ]+csrr[         ]+a0,0x3d5
> +[      ]+[0-9a-f]+:[   ]+3d559073[     ]+csrw[         ]+0x3d5,a1
> +[      ]+[0-9a-f]+:[   ]+3d602573[     ]+csrr[         ]+a0,0x3d6
> +[      ]+[0-9a-f]+:[   ]+3d659073[     ]+csrw[         ]+0x3d6,a1
> +[      ]+[0-9a-f]+:[   ]+3d702573[     ]+csrr[         ]+a0,0x3d7
> +[      ]+[0-9a-f]+:[   ]+3d759073[     ]+csrw[         ]+0x3d7,a1
> +[      ]+[0-9a-f]+:[   ]+3d802573[     ]+csrr[         ]+a0,0x3d8
> +[      ]+[0-9a-f]+:[   ]+3d859073[     ]+csrw[         ]+0x3d8,a1
> +[      ]+[0-9a-f]+:[   ]+3d902573[     ]+csrr[         ]+a0,0x3d9
> +[      ]+[0-9a-f]+:[   ]+3d959073[     ]+csrw[         ]+0x3d9,a1
> +[      ]+[0-9a-f]+:[   ]+3da02573[     ]+csrr[         ]+a0,0x3da
> +[      ]+[0-9a-f]+:[   ]+3da59073[     ]+csrw[         ]+0x3da,a1
> +[      ]+[0-9a-f]+:[   ]+3db02573[     ]+csrr[         ]+a0,0x3db
> +[      ]+[0-9a-f]+:[   ]+3db59073[     ]+csrw[         ]+0x3db,a1
> +[      ]+[0-9a-f]+:[   ]+3dc02573[     ]+csrr[         ]+a0,0x3dc
> +[      ]+[0-9a-f]+:[   ]+3dc59073[     ]+csrw[         ]+0x3dc,a1
> +[      ]+[0-9a-f]+:[   ]+3dd02573[     ]+csrr[         ]+a0,0x3dd
> +[      ]+[0-9a-f]+:[   ]+3dd59073[     ]+csrw[         ]+0x3dd,a1
> +[      ]+[0-9a-f]+:[   ]+3de02573[     ]+csrr[         ]+a0,0x3de
> +[      ]+[0-9a-f]+:[   ]+3de59073[     ]+csrw[         ]+0x3de,a1
> +[      ]+[0-9a-f]+:[   ]+3df02573[     ]+csrr[         ]+a0,0x3df
> +[      ]+[0-9a-f]+:[   ]+3df59073[     ]+csrw[         ]+0x3df,a1
> +[      ]+[0-9a-f]+:[   ]+3e002573[     ]+csrr[         ]+a0,0x3e0
> +[      ]+[0-9a-f]+:[   ]+3e059073[     ]+csrw[         ]+0x3e0,a1
> +[      ]+[0-9a-f]+:[   ]+3e102573[     ]+csrr[         ]+a0,0x3e1
> +[      ]+[0-9a-f]+:[   ]+3e159073[     ]+csrw[         ]+0x3e1,a1
> +[      ]+[0-9a-f]+:[   ]+3e202573[     ]+csrr[         ]+a0,0x3e2
> +[      ]+[0-9a-f]+:[   ]+3e259073[     ]+csrw[         ]+0x3e2,a1
> +[      ]+[0-9a-f]+:[   ]+3e302573[     ]+csrr[         ]+a0,0x3e3
> +[      ]+[0-9a-f]+:[   ]+3e359073[     ]+csrw[         ]+0x3e3,a1
> +[      ]+[0-9a-f]+:[   ]+3e402573[     ]+csrr[         ]+a0,0x3e4
> +[      ]+[0-9a-f]+:[   ]+3e459073[     ]+csrw[         ]+0x3e4,a1
> +[      ]+[0-9a-f]+:[   ]+3e502573[     ]+csrr[         ]+a0,0x3e5
> +[      ]+[0-9a-f]+:[   ]+3e559073[     ]+csrw[         ]+0x3e5,a1
> +[      ]+[0-9a-f]+:[   ]+3e602573[     ]+csrr[         ]+a0,0x3e6
> +[      ]+[0-9a-f]+:[   ]+3e659073[     ]+csrw[         ]+0x3e6,a1
> +[      ]+[0-9a-f]+:[   ]+3e702573[     ]+csrr[         ]+a0,0x3e7
> +[      ]+[0-9a-f]+:[   ]+3e759073[     ]+csrw[         ]+0x3e7,a1
> +[      ]+[0-9a-f]+:[   ]+3e802573[     ]+csrr[         ]+a0,0x3e8
> +[      ]+[0-9a-f]+:[   ]+3e859073[     ]+csrw[         ]+0x3e8,a1
> +[      ]+[0-9a-f]+:[   ]+3e902573[     ]+csrr[         ]+a0,0x3e9
> +[      ]+[0-9a-f]+:[   ]+3e959073[     ]+csrw[         ]+0x3e9,a1
> +[      ]+[0-9a-f]+:[   ]+3ea02573[     ]+csrr[         ]+a0,0x3ea
> +[      ]+[0-9a-f]+:[   ]+3ea59073[     ]+csrw[         ]+0x3ea,a1
> +[      ]+[0-9a-f]+:[   ]+3eb02573[     ]+csrr[         ]+a0,0x3eb
> +[      ]+[0-9a-f]+:[   ]+3eb59073[     ]+csrw[         ]+0x3eb,a1
> +[      ]+[0-9a-f]+:[   ]+3ec02573[     ]+csrr[         ]+a0,0x3ec
> +[      ]+[0-9a-f]+:[   ]+3ec59073[     ]+csrw[         ]+0x3ec,a1
> +[      ]+[0-9a-f]+:[   ]+3ed02573[     ]+csrr[         ]+a0,0x3ed
> +[      ]+[0-9a-f]+:[   ]+3ed59073[     ]+csrw[         ]+0x3ed,a1
> +[      ]+[0-9a-f]+:[   ]+3ee02573[     ]+csrr[         ]+a0,0x3ee
> +[      ]+[0-9a-f]+:[   ]+3ee59073[     ]+csrw[         ]+0x3ee,a1
> +[      ]+[0-9a-f]+:[   ]+3ef02573[     ]+csrr[         ]+a0,0x3ef
> +[      ]+[0-9a-f]+:[   ]+3ef59073[     ]+csrw[         ]+0x3ef,a1
>  [      ]+[0-9a-f]+:[   ]+b0002573[     ]+csrr[         ]+a0,mcycle
>  [      ]+[0-9a-f]+:[   ]+b0059073[     ]+csrw[         ]+mcycle,a1
>  [      ]+[0-9a-f]+:[   ]+b0202573[     ]+csrr[         ]+a0,minstret
> diff --git a/gas/testsuite/gas/riscv/csr-version-1p11.l b/gas/testsuite/gas/riscv/csr-version-1p11.l
> index 44d9611fe49..36ca02a2b1f 100644
> --- a/gas/testsuite/gas/riscv/csr-version-1p11.l
> +++ b/gas/testsuite/gas/riscv/csr-version-1p11.l
> @@ -127,14 +127,171 @@
>  .*Warning: invalid CSR `hpmcounter31h' for the current ISA
>  .*Warning: invalid CSR `hpmcounter31h' for the current ISA
>  .*Warning: read-only CSR is written `csrw hpmcounter31h,a1'
> +.*Warning: invalid CSR `senvcfg' for the privileged spec `1.11'
> +.*Warning: invalid CSR `senvcfg' for the privileged spec `1.11'
>  .*Warning: read-only CSR is written `csrw mvendorid,a1'
>  .*Warning: read-only CSR is written `csrw marchid,a1'
>  .*Warning: read-only CSR is written `csrw mimpid,a1'
>  .*Warning: read-only CSR is written `csrw mhartid,a1'
> +.*Warning: invalid CSR `mconfigptr' for the privileged spec `1.11'
> +.*Warning: invalid CSR `mconfigptr' for the privileged spec `1.11'
> +.*Warning: read-only CSR is written `csrw mconfigptr,a1'
> +.*Warning: invalid CSR `menvcfg' for the privileged spec `1.11'
> +.*Warning: invalid CSR `menvcfg' for the privileged spec `1.11'
> +.*Warning: invalid CSR `mstatush' for the current ISA
> +.*Warning: invalid CSR `mstatush' for the privileged spec `1.11'
> +.*Warning: invalid CSR `mstatush' for the current ISA
> +.*Warning: invalid CSR `mstatush' for the privileged spec `1.11'
> +.*Warning: invalid CSR `menvcfgh' for the current ISA
> +.*Warning: invalid CSR `menvcfgh' for the privileged spec `1.11'
> +.*Warning: invalid CSR `menvcfgh' for the current ISA
> +.*Warning: invalid CSR `menvcfgh' for the privileged spec `1.11'
> +.*Warning: invalid CSR `mseccfg' for the privileged spec `1.11'
> +.*Warning: invalid CSR `mseccfg' for the privileged spec `1.11'
> +.*Warning: invalid CSR `mseccfgh' for the current ISA
> +.*Warning: invalid CSR `mseccfgh' for the privileged spec `1.11'
> +.*Warning: invalid CSR `mseccfgh' for the current ISA
> +.*Warning: invalid CSR `mseccfgh' for the privileged spec `1.11'
> +.*Warning: invalid CSR `mtinst' for the privileged spec `1.11'
> +.*Warning: invalid CSR `mtinst' for the privileged spec `1.11'
> +.*Warning: invalid CSR `mtval2' for the privileged spec `1.11'
> +.*Warning: invalid CSR `mtval2' for the privileged spec `1.11'
>  .*Warning: invalid CSR `pmpcfg1' for the current ISA
>  .*Warning: invalid CSR `pmpcfg1' for the current ISA
>  .*Warning: invalid CSR `pmpcfg3' for the current ISA
>  .*Warning: invalid CSR `pmpcfg3' for the current ISA
> +.*Warning: invalid CSR `pmpcfg4' for the privileged spec `1.11'
> +.*Warning: invalid CSR `pmpcfg4' for the privileged spec `1.11'
> +.*Warning: invalid CSR `pmpcfg5' for the current ISA
> +.*Warning: invalid CSR `pmpcfg5' for the privileged spec `1.11'
> +.*Warning: invalid CSR `pmpcfg5' for the current ISA
> +.*Warning: invalid CSR `pmpcfg5' for the privileged spec `1.11'
> +.*Warning: invalid CSR `pmpcfg6' for the privileged spec `1.11'
> +.*Warning: invalid CSR `pmpcfg6' for the privileged spec `1.11'
> +.*Warning: invalid CSR `pmpcfg7' for the current ISA
> +.*Warning: invalid CSR `pmpcfg7' for the privileged spec `1.11'
> +.*Warning: invalid CSR `pmpcfg7' for the current ISA
> +.*Warning: invalid CSR `pmpcfg7' for the privileged spec `1.11'
> +.*Warning: invalid CSR `pmpcfg8' for the privileged spec `1.11'
> +.*Warning: invalid CSR `pmpcfg8' for the privileged spec `1.11'
> +.*Warning: invalid CSR `pmpcfg9' for the current ISA
> +.*Warning: invalid CSR `pmpcfg9' for the privileged spec `1.11'
> +.*Warning: invalid CSR `pmpcfg9' for the current ISA
> +.*Warning: invalid CSR `pmpcfg9' for the privileged spec `1.11'
> +.*Warning: invalid CSR `pmpcfg10' for the privileged spec `1.11'
> +.*Warning: invalid CSR `pmpcfg10' for the privileged spec `1.11'
> +.*Warning: invalid CSR `pmpcfg11' for the current ISA
> +.*Warning: invalid CSR `pmpcfg11' for the privileged spec `1.11'
> +.*Warning: invalid CSR `pmpcfg11' for the current ISA
> +.*Warning: invalid CSR `pmpcfg11' for the privileged spec `1.11'
> +.*Warning: invalid CSR `pmpcfg12' for the privileged spec `1.11'
> +.*Warning: invalid CSR `pmpcfg12' for the privileged spec `1.11'
> +.*Warning: invalid CSR `pmpcfg13' for the current ISA
> +.*Warning: invalid CSR `pmpcfg13' for the privileged spec `1.11'
> +.*Warning: invalid CSR `pmpcfg13' for the current ISA
> +.*Warning: invalid CSR `pmpcfg13' for the privileged spec `1.11'
> +.*Warning: invalid CSR `pmpcfg14' for the privileged spec `1.11'
> +.*Warning: invalid CSR `pmpcfg14' for the privileged spec `1.11'
> +.*Warning: invalid CSR `pmpcfg15' for the current ISA
> +.*Warning: invalid CSR `pmpcfg15' for the privileged spec `1.11'
> +.*Warning: invalid CSR `pmpcfg15' for the current ISA
> +.*Warning: invalid CSR `pmpcfg15' for the privileged spec `1.11'
> +.*Warning: invalid CSR `pmpaddr16' for the privileged spec `1.11'
> +.*Warning: invalid CSR `pmpaddr16' for the privileged spec `1.11'
> +.*Warning: invalid CSR `pmpaddr17' for the privileged spec `1.11'
> +.*Warning: invalid CSR `pmpaddr17' for the privileged spec `1.11'
> +.*Warning: invalid CSR `pmpaddr18' for the privileged spec `1.11'
> +.*Warning: invalid CSR `pmpaddr18' for the privileged spec `1.11'
> +.*Warning: invalid CSR `pmpaddr19' for the privileged spec `1.11'
> +.*Warning: invalid CSR `pmpaddr19' for the privileged spec `1.11'
> +.*Warning: invalid CSR `pmpaddr20' for the privileged spec `1.11'
> +.*Warning: invalid CSR `pmpaddr20' for the privileged spec `1.11'
> +.*Warning: invalid CSR `pmpaddr21' for the privileged spec `1.11'
> +.*Warning: invalid CSR `pmpaddr21' for the privileged spec `1.11'
> +.*Warning: invalid CSR `pmpaddr22' for the privileged spec `1.11'
> +.*Warning: invalid CSR `pmpaddr22' for the privileged spec `1.11'
> +.*Warning: invalid CSR `pmpaddr23' for the privileged spec `1.11'
> +.*Warning: invalid CSR `pmpaddr23' for the privileged spec `1.11'
> +.*Warning: invalid CSR `pmpaddr24' for the privileged spec `1.11'
> +.*Warning: invalid CSR `pmpaddr24' for the privileged spec `1.11'
> +.*Warning: invalid CSR `pmpaddr25' for the privileged spec `1.11'
> +.*Warning: invalid CSR `pmpaddr25' for the privileged spec `1.11'
> +.*Warning: invalid CSR `pmpaddr26' for the privileged spec `1.11'
> +.*Warning: invalid CSR `pmpaddr26' for the privileged spec `1.11'
> +.*Warning: invalid CSR `pmpaddr27' for the privileged spec `1.11'
> +.*Warning: invalid CSR `pmpaddr27' for the privileged spec `1.11'
> +.*Warning: invalid CSR `pmpaddr28' for the privileged spec `1.11'
> +.*Warning: invalid CSR `pmpaddr28' for the privileged spec `1.11'
> +.*Warning: invalid CSR `pmpaddr29' for the privileged spec `1.11'
> +.*Warning: invalid CSR `pmpaddr29' for the privileged spec `1.11'
> +.*Warning: invalid CSR `pmpaddr30' for the privileged spec `1.11'
> +.*Warning: invalid CSR `pmpaddr30' for the privileged spec `1.11'
> +.*Warning: invalid CSR `pmpaddr31' for the privileged spec `1.11'
> +.*Warning: invalid CSR `pmpaddr31' for the privileged spec `1.11'
> +.*Warning: invalid CSR `pmpaddr32' for the privileged spec `1.11'
> +.*Warning: invalid CSR `pmpaddr32' for the privileged spec `1.11'
> +.*Warning: invalid CSR `pmpaddr33' for the privileged spec `1.11'
> +.*Warning: invalid CSR `pmpaddr33' for the privileged spec `1.11'
> +.*Warning: invalid CSR `pmpaddr34' for the privileged spec `1.11'
> +.*Warning: invalid CSR `pmpaddr34' for the privileged spec `1.11'
> +.*Warning: invalid CSR `pmpaddr35' for the privileged spec `1.11'
> +.*Warning: invalid CSR `pmpaddr35' for the privileged spec `1.11'
> +.*Warning: invalid CSR `pmpaddr36' for the privileged spec `1.11'
> +.*Warning: invalid CSR `pmpaddr36' for the privileged spec `1.11'
> +.*Warning: invalid CSR `pmpaddr37' for the privileged spec `1.11'
> +.*Warning: invalid CSR `pmpaddr37' for the privileged spec `1.11'
> +.*Warning: invalid CSR `pmpaddr38' for the privileged spec `1.11'
> +.*Warning: invalid CSR `pmpaddr38' for the privileged spec `1.11'
> +.*Warning: invalid CSR `pmpaddr39' for the privileged spec `1.11'
> +.*Warning: invalid CSR `pmpaddr39' for the privileged spec `1.11'
> +.*Warning: invalid CSR `pmpaddr40' for the privileged spec `1.11'
> +.*Warning: invalid CSR `pmpaddr40' for the privileged spec `1.11'
> +.*Warning: invalid CSR `pmpaddr41' for the privileged spec `1.11'
> +.*Warning: invalid CSR `pmpaddr41' for the privileged spec `1.11'
> +.*Warning: invalid CSR `pmpaddr42' for the privileged spec `1.11'
> +.*Warning: invalid CSR `pmpaddr42' for the privileged spec `1.11'
> +.*Warning: invalid CSR `pmpaddr43' for the privileged spec `1.11'
> +.*Warning: invalid CSR `pmpaddr43' for the privileged spec `1.11'
> +.*Warning: invalid CSR `pmpaddr44' for the privileged spec `1.11'
> +.*Warning: invalid CSR `pmpaddr44' for the privileged spec `1.11'
> +.*Warning: invalid CSR `pmpaddr45' for the privileged spec `1.11'
> +.*Warning: invalid CSR `pmpaddr45' for the privileged spec `1.11'
> +.*Warning: invalid CSR `pmpaddr46' for the privileged spec `1.11'
> +.*Warning: invalid CSR `pmpaddr46' for the privileged spec `1.11'
> +.*Warning: invalid CSR `pmpaddr47' for the privileged spec `1.11'
> +.*Warning: invalid CSR `pmpaddr47' for the privileged spec `1.11'
> +.*Warning: invalid CSR `pmpaddr48' for the privileged spec `1.11'
> +.*Warning: invalid CSR `pmpaddr48' for the privileged spec `1.11'
> +.*Warning: invalid CSR `pmpaddr49' for the privileged spec `1.11'
> +.*Warning: invalid CSR `pmpaddr49' for the privileged spec `1.11'
> +.*Warning: invalid CSR `pmpaddr50' for the privileged spec `1.11'
> +.*Warning: invalid CSR `pmpaddr50' for the privileged spec `1.11'
> +.*Warning: invalid CSR `pmpaddr51' for the privileged spec `1.11'
> +.*Warning: invalid CSR `pmpaddr51' for the privileged spec `1.11'
> +.*Warning: invalid CSR `pmpaddr52' for the privileged spec `1.11'
> +.*Warning: invalid CSR `pmpaddr52' for the privileged spec `1.11'
> +.*Warning: invalid CSR `pmpaddr53' for the privileged spec `1.11'
> +.*Warning: invalid CSR `pmpaddr53' for the privileged spec `1.11'
> +.*Warning: invalid CSR `pmpaddr54' for the privileged spec `1.11'
> +.*Warning: invalid CSR `pmpaddr54' for the privileged spec `1.11'
> +.*Warning: invalid CSR `pmpaddr55' for the privileged spec `1.11'
> +.*Warning: invalid CSR `pmpaddr55' for the privileged spec `1.11'
> +.*Warning: invalid CSR `pmpaddr56' for the privileged spec `1.11'
> +.*Warning: invalid CSR `pmpaddr56' for the privileged spec `1.11'
> +.*Warning: invalid CSR `pmpaddr57' for the privileged spec `1.11'
> +.*Warning: invalid CSR `pmpaddr57' for the privileged spec `1.11'
> +.*Warning: invalid CSR `pmpaddr58' for the privileged spec `1.11'
> +.*Warning: invalid CSR `pmpaddr58' for the privileged spec `1.11'
> +.*Warning: invalid CSR `pmpaddr59' for the privileged spec `1.11'
> +.*Warning: invalid CSR `pmpaddr59' for the privileged spec `1.11'
> +.*Warning: invalid CSR `pmpaddr60' for the privileged spec `1.11'
> +.*Warning: invalid CSR `pmpaddr60' for the privileged spec `1.11'
> +.*Warning: invalid CSR `pmpaddr61' for the privileged spec `1.11'
> +.*Warning: invalid CSR `pmpaddr61' for the privileged spec `1.11'
> +.*Warning: invalid CSR `pmpaddr62' for the privileged spec `1.11'
> +.*Warning: invalid CSR `pmpaddr62' for the privileged spec `1.11'
> +.*Warning: invalid CSR `pmpaddr63' for the privileged spec `1.11'
> +.*Warning: invalid CSR `pmpaddr63' for the privileged spec `1.11'
>  .*Warning: invalid CSR `mcycleh' for the current ISA
>  .*Warning: invalid CSR `mcycleh' for the current ISA
>  .*Warning: invalid CSR `minstreth' for the current ISA
> diff --git a/gas/testsuite/gas/riscv/csr-version-1p12.d b/gas/testsuite/gas/riscv/csr-version-1p12.d
> index fbc30ee2fcc..8281910b89f 100644
> --- a/gas/testsuite/gas/riscv/csr-version-1p12.d
> +++ b/gas/testsuite/gas/riscv/csr-version-1p12.d
> @@ -165,6 +165,8 @@ Disassembly of section .text:
>  [      ]+[0-9a-f]+:[   ]+10559073[     ]+csrw[         ]+stvec,a1
>  [      ]+[0-9a-f]+:[   ]+10602573[     ]+csrr[         ]+a0,scounteren
>  [      ]+[0-9a-f]+:[   ]+10659073[     ]+csrw[         ]+scounteren,a1
> +[      ]+[0-9a-f]+:[   ]+10a02573[     ]+csrr[         ]+a0,senvcfg
> +[      ]+[0-9a-f]+:[   ]+10a59073[     ]+csrw[         ]+senvcfg,a1
>  [      ]+[0-9a-f]+:[   ]+14002573[     ]+csrr[         ]+a0,sscratch
>  [      ]+[0-9a-f]+:[   ]+14059073[     ]+csrw[         ]+sscratch,a1
>  [      ]+[0-9a-f]+:[   ]+14102573[     ]+csrr[         ]+a0,sepc
> @@ -185,6 +187,8 @@ Disassembly of section .text:
>  [      ]+[0-9a-f]+:[   ]+f1359073[     ]+csrw[         ]+mimpid,a1
>  [      ]+[0-9a-f]+:[   ]+f1402573[     ]+csrr[         ]+a0,mhartid
>  [      ]+[0-9a-f]+:[   ]+f1459073[     ]+csrw[         ]+mhartid,a1
> +[      ]+[0-9a-f]+:[   ]+f1502573[     ]+csrr[         ]+a0,mconfigptr
> +[      ]+[0-9a-f]+:[   ]+f1559073[     ]+csrw[         ]+mconfigptr,a1
>  [      ]+[0-9a-f]+:[   ]+30002573[     ]+csrr[         ]+a0,mstatus
>  [      ]+[0-9a-f]+:[   ]+30059073[     ]+csrw[         ]+mstatus,a1
>  [      ]+[0-9a-f]+:[   ]+30102573[     ]+csrr[         ]+a0,misa
> @@ -199,6 +203,16 @@ Disassembly of section .text:
>  [      ]+[0-9a-f]+:[   ]+30559073[     ]+csrw[         ]+mtvec,a1
>  [      ]+[0-9a-f]+:[   ]+30602573[     ]+csrr[         ]+a0,mcounteren
>  [      ]+[0-9a-f]+:[   ]+30659073[     ]+csrw[         ]+mcounteren,a1
> +[      ]+[0-9a-f]+:[   ]+30a02573[     ]+csrr[         ]+a0,menvcfg
> +[      ]+[0-9a-f]+:[   ]+30a59073[     ]+csrw[         ]+menvcfg,a1
> +[      ]+[0-9a-f]+:[   ]+31002573[     ]+csrr[         ]+a0,mstatush
> +[      ]+[0-9a-f]+:[   ]+31059073[     ]+csrw[         ]+mstatush,a1
> +[      ]+[0-9a-f]+:[   ]+31a02573[     ]+csrr[         ]+a0,menvcfgh
> +[      ]+[0-9a-f]+:[   ]+31a59073[     ]+csrw[         ]+menvcfgh,a1
> +[      ]+[0-9a-f]+:[   ]+74702573[     ]+csrr[         ]+a0,mseccfg
> +[      ]+[0-9a-f]+:[   ]+74759073[     ]+csrw[         ]+mseccfg,a1
> +[      ]+[0-9a-f]+:[   ]+75702573[     ]+csrr[         ]+a0,mseccfgh
> +[      ]+[0-9a-f]+:[   ]+75759073[     ]+csrw[         ]+mseccfgh,a1
>  [      ]+[0-9a-f]+:[   ]+34002573[     ]+csrr[         ]+a0,mscratch
>  [      ]+[0-9a-f]+:[   ]+34059073[     ]+csrw[         ]+mscratch,a1
>  [      ]+[0-9a-f]+:[   ]+34102573[     ]+csrr[         ]+a0,mepc
> @@ -209,6 +223,10 @@ Disassembly of section .text:
>  [      ]+[0-9a-f]+:[   ]+34359073[     ]+csrw[         ]+mtval,a1
>  [      ]+[0-9a-f]+:[   ]+34402573[     ]+csrr[         ]+a0,mip
>  [      ]+[0-9a-f]+:[   ]+34459073[     ]+csrw[         ]+mip,a1
> +[      ]+[0-9a-f]+:[   ]+34a02573[     ]+csrr[         ]+a0,mtinst
> +[      ]+[0-9a-f]+:[   ]+34a59073[     ]+csrw[         ]+mtinst,a1
> +[      ]+[0-9a-f]+:[   ]+34b02573[     ]+csrr[         ]+a0,mtval2
> +[      ]+[0-9a-f]+:[   ]+34b59073[     ]+csrw[         ]+mtval2,a1
>  [      ]+[0-9a-f]+:[   ]+3a002573[     ]+csrr[         ]+a0,pmpcfg0
>  [      ]+[0-9a-f]+:[   ]+3a059073[     ]+csrw[         ]+pmpcfg0,a1
>  [      ]+[0-9a-f]+:[   ]+3a102573[     ]+csrr[         ]+a0,pmpcfg1
> @@ -217,6 +235,30 @@ Disassembly of section .text:
>  [      ]+[0-9a-f]+:[   ]+3a259073[     ]+csrw[         ]+pmpcfg2,a1
>  [      ]+[0-9a-f]+:[   ]+3a302573[     ]+csrr[         ]+a0,pmpcfg3
>  [      ]+[0-9a-f]+:[   ]+3a359073[     ]+csrw[         ]+pmpcfg3,a1
> +[      ]+[0-9a-f]+:[   ]+3a402573[     ]+csrr[         ]+a0,pmpcfg4
> +[      ]+[0-9a-f]+:[   ]+3a459073[     ]+csrw[         ]+pmpcfg4,a1
> +[      ]+[0-9a-f]+:[   ]+3a502573[     ]+csrr[         ]+a0,pmpcfg5
> +[      ]+[0-9a-f]+:[   ]+3a559073[     ]+csrw[         ]+pmpcfg5,a1
> +[      ]+[0-9a-f]+:[   ]+3a602573[     ]+csrr[         ]+a0,pmpcfg6
> +[      ]+[0-9a-f]+:[   ]+3a659073[     ]+csrw[         ]+pmpcfg6,a1
> +[      ]+[0-9a-f]+:[   ]+3a702573[     ]+csrr[         ]+a0,pmpcfg7
> +[      ]+[0-9a-f]+:[   ]+3a759073[     ]+csrw[         ]+pmpcfg7,a1
> +[      ]+[0-9a-f]+:[   ]+3a802573[     ]+csrr[         ]+a0,pmpcfg8
> +[      ]+[0-9a-f]+:[   ]+3a859073[     ]+csrw[         ]+pmpcfg8,a1
> +[      ]+[0-9a-f]+:[   ]+3a902573[     ]+csrr[         ]+a0,pmpcfg9
> +[      ]+[0-9a-f]+:[   ]+3a959073[     ]+csrw[         ]+pmpcfg9,a1
> +[      ]+[0-9a-f]+:[   ]+3aa02573[     ]+csrr[         ]+a0,pmpcfg10
> +[      ]+[0-9a-f]+:[   ]+3aa59073[     ]+csrw[         ]+pmpcfg10,a1
> +[      ]+[0-9a-f]+:[   ]+3ab02573[     ]+csrr[         ]+a0,pmpcfg11
> +[      ]+[0-9a-f]+:[   ]+3ab59073[     ]+csrw[         ]+pmpcfg11,a1
> +[      ]+[0-9a-f]+:[   ]+3ac02573[     ]+csrr[         ]+a0,pmpcfg12
> +[      ]+[0-9a-f]+:[   ]+3ac59073[     ]+csrw[         ]+pmpcfg12,a1
> +[      ]+[0-9a-f]+:[   ]+3ad02573[     ]+csrr[         ]+a0,pmpcfg13
> +[      ]+[0-9a-f]+:[   ]+3ad59073[     ]+csrw[         ]+pmpcfg13,a1
> +[      ]+[0-9a-f]+:[   ]+3ae02573[     ]+csrr[         ]+a0,pmpcfg14
> +[      ]+[0-9a-f]+:[   ]+3ae59073[     ]+csrw[         ]+pmpcfg14,a1
> +[      ]+[0-9a-f]+:[   ]+3af02573[     ]+csrr[         ]+a0,pmpcfg15
> +[      ]+[0-9a-f]+:[   ]+3af59073[     ]+csrw[         ]+pmpcfg15,a1
>  [      ]+[0-9a-f]+:[   ]+3b002573[     ]+csrr[         ]+a0,pmpaddr0
>  [      ]+[0-9a-f]+:[   ]+3b059073[     ]+csrw[         ]+pmpaddr0,a1
>  [      ]+[0-9a-f]+:[   ]+3b102573[     ]+csrr[         ]+a0,pmpaddr1
> @@ -249,6 +291,102 @@ Disassembly of section .text:
>  [      ]+[0-9a-f]+:[   ]+3be59073[     ]+csrw[         ]+pmpaddr14,a1
>  [      ]+[0-9a-f]+:[   ]+3bf02573[     ]+csrr[         ]+a0,pmpaddr15
>  [      ]+[0-9a-f]+:[   ]+3bf59073[     ]+csrw[         ]+pmpaddr15,a1
> +[      ]+[0-9a-f]+:[   ]+3c002573[     ]+csrr[         ]+a0,pmpaddr16
> +[      ]+[0-9a-f]+:[   ]+3c059073[     ]+csrw[         ]+pmpaddr16,a1
> +[      ]+[0-9a-f]+:[   ]+3c102573[     ]+csrr[         ]+a0,pmpaddr17
> +[      ]+[0-9a-f]+:[   ]+3c159073[     ]+csrw[         ]+pmpaddr17,a1
> +[      ]+[0-9a-f]+:[   ]+3c202573[     ]+csrr[         ]+a0,pmpaddr18
> +[      ]+[0-9a-f]+:[   ]+3c259073[     ]+csrw[         ]+pmpaddr18,a1
> +[      ]+[0-9a-f]+:[   ]+3c302573[     ]+csrr[         ]+a0,pmpaddr19
> +[      ]+[0-9a-f]+:[   ]+3c359073[     ]+csrw[         ]+pmpaddr19,a1
> +[      ]+[0-9a-f]+:[   ]+3c402573[     ]+csrr[         ]+a0,pmpaddr20
> +[      ]+[0-9a-f]+:[   ]+3c459073[     ]+csrw[         ]+pmpaddr20,a1
> +[      ]+[0-9a-f]+:[   ]+3c502573[     ]+csrr[         ]+a0,pmpaddr21
> +[      ]+[0-9a-f]+:[   ]+3c559073[     ]+csrw[         ]+pmpaddr21,a1
> +[      ]+[0-9a-f]+:[   ]+3c602573[     ]+csrr[         ]+a0,pmpaddr22
> +[      ]+[0-9a-f]+:[   ]+3c659073[     ]+csrw[         ]+pmpaddr22,a1
> +[      ]+[0-9a-f]+:[   ]+3c702573[     ]+csrr[         ]+a0,pmpaddr23
> +[      ]+[0-9a-f]+:[   ]+3c759073[     ]+csrw[         ]+pmpaddr23,a1
> +[      ]+[0-9a-f]+:[   ]+3c802573[     ]+csrr[         ]+a0,pmpaddr24
> +[      ]+[0-9a-f]+:[   ]+3c859073[     ]+csrw[         ]+pmpaddr24,a1
> +[      ]+[0-9a-f]+:[   ]+3c902573[     ]+csrr[         ]+a0,pmpaddr25
> +[      ]+[0-9a-f]+:[   ]+3c959073[     ]+csrw[         ]+pmpaddr25,a1
> +[      ]+[0-9a-f]+:[   ]+3ca02573[     ]+csrr[         ]+a0,pmpaddr26
> +[      ]+[0-9a-f]+:[   ]+3ca59073[     ]+csrw[         ]+pmpaddr26,a1
> +[      ]+[0-9a-f]+:[   ]+3cb02573[     ]+csrr[         ]+a0,pmpaddr27
> +[      ]+[0-9a-f]+:[   ]+3cb59073[     ]+csrw[         ]+pmpaddr27,a1
> +[      ]+[0-9a-f]+:[   ]+3cc02573[     ]+csrr[         ]+a0,pmpaddr28
> +[      ]+[0-9a-f]+:[   ]+3cc59073[     ]+csrw[         ]+pmpaddr28,a1
> +[      ]+[0-9a-f]+:[   ]+3cd02573[     ]+csrr[         ]+a0,pmpaddr29
> +[      ]+[0-9a-f]+:[   ]+3cd59073[     ]+csrw[         ]+pmpaddr29,a1
> +[      ]+[0-9a-f]+:[   ]+3ce02573[     ]+csrr[         ]+a0,pmpaddr30
> +[      ]+[0-9a-f]+:[   ]+3ce59073[     ]+csrw[         ]+pmpaddr30,a1
> +[      ]+[0-9a-f]+:[   ]+3cf02573[     ]+csrr[         ]+a0,pmpaddr31
> +[      ]+[0-9a-f]+:[   ]+3cf59073[     ]+csrw[         ]+pmpaddr31,a1
> +[      ]+[0-9a-f]+:[   ]+3d002573[     ]+csrr[         ]+a0,pmpaddr32
> +[      ]+[0-9a-f]+:[   ]+3d059073[     ]+csrw[         ]+pmpaddr32,a1
> +[      ]+[0-9a-f]+:[   ]+3d102573[     ]+csrr[         ]+a0,pmpaddr33
> +[      ]+[0-9a-f]+:[   ]+3d159073[     ]+csrw[         ]+pmpaddr33,a1
> +[      ]+[0-9a-f]+:[   ]+3d202573[     ]+csrr[         ]+a0,pmpaddr34
> +[      ]+[0-9a-f]+:[   ]+3d259073[     ]+csrw[         ]+pmpaddr34,a1
> +[      ]+[0-9a-f]+:[   ]+3d302573[     ]+csrr[         ]+a0,pmpaddr35
> +[      ]+[0-9a-f]+:[   ]+3d359073[     ]+csrw[         ]+pmpaddr35,a1
> +[      ]+[0-9a-f]+:[   ]+3d402573[     ]+csrr[         ]+a0,pmpaddr36
> +[      ]+[0-9a-f]+:[   ]+3d459073[     ]+csrw[         ]+pmpaddr36,a1
> +[      ]+[0-9a-f]+:[   ]+3d502573[     ]+csrr[         ]+a0,pmpaddr37
> +[      ]+[0-9a-f]+:[   ]+3d559073[     ]+csrw[         ]+pmpaddr37,a1
> +[      ]+[0-9a-f]+:[   ]+3d602573[     ]+csrr[         ]+a0,pmpaddr38
> +[      ]+[0-9a-f]+:[   ]+3d659073[     ]+csrw[         ]+pmpaddr38,a1
> +[      ]+[0-9a-f]+:[   ]+3d702573[     ]+csrr[         ]+a0,pmpaddr39
> +[      ]+[0-9a-f]+:[   ]+3d759073[     ]+csrw[         ]+pmpaddr39,a1
> +[      ]+[0-9a-f]+:[   ]+3d802573[     ]+csrr[         ]+a0,pmpaddr40
> +[      ]+[0-9a-f]+:[   ]+3d859073[     ]+csrw[         ]+pmpaddr40,a1
> +[      ]+[0-9a-f]+:[   ]+3d902573[     ]+csrr[         ]+a0,pmpaddr41
> +[      ]+[0-9a-f]+:[   ]+3d959073[     ]+csrw[         ]+pmpaddr41,a1
> +[      ]+[0-9a-f]+:[   ]+3da02573[     ]+csrr[         ]+a0,pmpaddr42
> +[      ]+[0-9a-f]+:[   ]+3da59073[     ]+csrw[         ]+pmpaddr42,a1
> +[      ]+[0-9a-f]+:[   ]+3db02573[     ]+csrr[         ]+a0,pmpaddr43
> +[      ]+[0-9a-f]+:[   ]+3db59073[     ]+csrw[         ]+pmpaddr43,a1
> +[      ]+[0-9a-f]+:[   ]+3dc02573[     ]+csrr[         ]+a0,pmpaddr44
> +[      ]+[0-9a-f]+:[   ]+3dc59073[     ]+csrw[         ]+pmpaddr44,a1
> +[      ]+[0-9a-f]+:[   ]+3dd02573[     ]+csrr[         ]+a0,pmpaddr45
> +[      ]+[0-9a-f]+:[   ]+3dd59073[     ]+csrw[         ]+pmpaddr45,a1
> +[      ]+[0-9a-f]+:[   ]+3de02573[     ]+csrr[         ]+a0,pmpaddr46
> +[      ]+[0-9a-f]+:[   ]+3de59073[     ]+csrw[         ]+pmpaddr46,a1
> +[      ]+[0-9a-f]+:[   ]+3df02573[     ]+csrr[         ]+a0,pmpaddr47
> +[      ]+[0-9a-f]+:[   ]+3df59073[     ]+csrw[         ]+pmpaddr47,a1
> +[      ]+[0-9a-f]+:[   ]+3e002573[     ]+csrr[         ]+a0,pmpaddr48
> +[      ]+[0-9a-f]+:[   ]+3e059073[     ]+csrw[         ]+pmpaddr48,a1
> +[      ]+[0-9a-f]+:[   ]+3e102573[     ]+csrr[         ]+a0,pmpaddr49
> +[      ]+[0-9a-f]+:[   ]+3e159073[     ]+csrw[         ]+pmpaddr49,a1
> +[      ]+[0-9a-f]+:[   ]+3e202573[     ]+csrr[         ]+a0,pmpaddr50
> +[      ]+[0-9a-f]+:[   ]+3e259073[     ]+csrw[         ]+pmpaddr50,a1
> +[      ]+[0-9a-f]+:[   ]+3e302573[     ]+csrr[         ]+a0,pmpaddr51
> +[      ]+[0-9a-f]+:[   ]+3e359073[     ]+csrw[         ]+pmpaddr51,a1
> +[      ]+[0-9a-f]+:[   ]+3e402573[     ]+csrr[         ]+a0,pmpaddr52
> +[      ]+[0-9a-f]+:[   ]+3e459073[     ]+csrw[         ]+pmpaddr52,a1
> +[      ]+[0-9a-f]+:[   ]+3e502573[     ]+csrr[         ]+a0,pmpaddr53
> +[      ]+[0-9a-f]+:[   ]+3e559073[     ]+csrw[         ]+pmpaddr53,a1
> +[      ]+[0-9a-f]+:[   ]+3e602573[     ]+csrr[         ]+a0,pmpaddr54
> +[      ]+[0-9a-f]+:[   ]+3e659073[     ]+csrw[         ]+pmpaddr54,a1
> +[      ]+[0-9a-f]+:[   ]+3e702573[     ]+csrr[         ]+a0,pmpaddr55
> +[      ]+[0-9a-f]+:[   ]+3e759073[     ]+csrw[         ]+pmpaddr55,a1
> +[      ]+[0-9a-f]+:[   ]+3e802573[     ]+csrr[         ]+a0,pmpaddr56
> +[      ]+[0-9a-f]+:[   ]+3e859073[     ]+csrw[         ]+pmpaddr56,a1
> +[      ]+[0-9a-f]+:[   ]+3e902573[     ]+csrr[         ]+a0,pmpaddr57
> +[      ]+[0-9a-f]+:[   ]+3e959073[     ]+csrw[         ]+pmpaddr57,a1
> +[      ]+[0-9a-f]+:[   ]+3ea02573[     ]+csrr[         ]+a0,pmpaddr58
> +[      ]+[0-9a-f]+:[   ]+3ea59073[     ]+csrw[         ]+pmpaddr58,a1
> +[      ]+[0-9a-f]+:[   ]+3eb02573[     ]+csrr[         ]+a0,pmpaddr59
> +[      ]+[0-9a-f]+:[   ]+3eb59073[     ]+csrw[         ]+pmpaddr59,a1
> +[      ]+[0-9a-f]+:[   ]+3ec02573[     ]+csrr[         ]+a0,pmpaddr60
> +[      ]+[0-9a-f]+:[   ]+3ec59073[     ]+csrw[         ]+pmpaddr60,a1
> +[      ]+[0-9a-f]+:[   ]+3ed02573[     ]+csrr[         ]+a0,pmpaddr61
> +[      ]+[0-9a-f]+:[   ]+3ed59073[     ]+csrw[         ]+pmpaddr61,a1
> +[      ]+[0-9a-f]+:[   ]+3ee02573[     ]+csrr[         ]+a0,pmpaddr62
> +[      ]+[0-9a-f]+:[   ]+3ee59073[     ]+csrw[         ]+pmpaddr62,a1
> +[      ]+[0-9a-f]+:[   ]+3ef02573[     ]+csrr[         ]+a0,pmpaddr63
> +[      ]+[0-9a-f]+:[   ]+3ef59073[     ]+csrw[         ]+pmpaddr63,a1
>  [      ]+[0-9a-f]+:[   ]+b0002573[     ]+csrr[         ]+a0,mcycle
>  [      ]+[0-9a-f]+:[   ]+b0059073[     ]+csrw[         ]+mcycle,a1
>  [      ]+[0-9a-f]+:[   ]+b0202573[     ]+csrr[         ]+a0,minstret
> diff --git a/gas/testsuite/gas/riscv/csr-version-1p12.l b/gas/testsuite/gas/riscv/csr-version-1p12.l
> index 237cb8a1699..387c6e2d419 100644
> --- a/gas/testsuite/gas/riscv/csr-version-1p12.l
> +++ b/gas/testsuite/gas/riscv/csr-version-1p12.l
> @@ -131,10 +131,29 @@
>  .*Warning: read-only CSR is written `csrw marchid,a1'
>  .*Warning: read-only CSR is written `csrw mimpid,a1'
>  .*Warning: read-only CSR is written `csrw mhartid,a1'
> +.*Warning: read-only CSR is written `csrw mconfigptr,a1'
> +.*Warning: invalid CSR `mstatush' for the current ISA
> +.*Warning: invalid CSR `mstatush' for the current ISA
> +.*Warning: invalid CSR `menvcfgh' for the current ISA
> +.*Warning: invalid CSR `menvcfgh' for the current ISA
> +.*Warning: invalid CSR `mseccfgh' for the current ISA
> +.*Warning: invalid CSR `mseccfgh' for the current ISA
>  .*Warning: invalid CSR `pmpcfg1' for the current ISA
>  .*Warning: invalid CSR `pmpcfg1' for the current ISA
>  .*Warning: invalid CSR `pmpcfg3' for the current ISA
>  .*Warning: invalid CSR `pmpcfg3' for the current ISA
> +.*Warning: invalid CSR `pmpcfg5' for the current ISA
> +.*Warning: invalid CSR `pmpcfg5' for the current ISA
> +.*Warning: invalid CSR `pmpcfg7' for the current ISA
> +.*Warning: invalid CSR `pmpcfg7' for the current ISA
> +.*Warning: invalid CSR `pmpcfg9' for the current ISA
> +.*Warning: invalid CSR `pmpcfg9' for the current ISA
> +.*Warning: invalid CSR `pmpcfg11' for the current ISA
> +.*Warning: invalid CSR `pmpcfg11' for the current ISA
> +.*Warning: invalid CSR `pmpcfg13' for the current ISA
> +.*Warning: invalid CSR `pmpcfg13' for the current ISA
> +.*Warning: invalid CSR `pmpcfg15' for the current ISA
> +.*Warning: invalid CSR `pmpcfg15' for the current ISA
>  .*Warning: invalid CSR `mcycleh' for the current ISA
>  .*Warning: invalid CSR `mcycleh' for the current ISA
>  .*Warning: invalid CSR `minstreth' for the current ISA
> diff --git a/gas/testsuite/gas/riscv/csr-version-1p9p1.d b/gas/testsuite/gas/riscv/csr-version-1p9p1.d
> index a96e8c9dbec..f5af018e1e1 100644
> --- a/gas/testsuite/gas/riscv/csr-version-1p9p1.d
> +++ b/gas/testsuite/gas/riscv/csr-version-1p9p1.d
> @@ -165,6 +165,8 @@ Disassembly of section .text:
>  [      ]+[0-9a-f]+:[   ]+10559073[     ]+csrw[         ]+stvec,a1
>  [      ]+[0-9a-f]+:[   ]+10602573[     ]+csrr[         ]+a0,0x106
>  [      ]+[0-9a-f]+:[   ]+10659073[     ]+csrw[         ]+0x106,a1
> +[      ]+[0-9a-f]+:[   ]+10a02573[     ]+csrr[         ]+a0,0x10a
> +[      ]+[0-9a-f]+:[   ]+10a59073[     ]+csrw[         ]+0x10a,a1
>  [      ]+[0-9a-f]+:[   ]+14002573[     ]+csrr[         ]+a0,sscratch
>  [      ]+[0-9a-f]+:[   ]+14059073[     ]+csrw[         ]+sscratch,a1
>  [      ]+[0-9a-f]+:[   ]+14102573[     ]+csrr[         ]+a0,sepc
> @@ -185,6 +187,8 @@ Disassembly of section .text:
>  [      ]+[0-9a-f]+:[   ]+f1359073[     ]+csrw[         ]+mimpid,a1
>  [      ]+[0-9a-f]+:[   ]+f1402573[     ]+csrr[         ]+a0,mhartid
>  [      ]+[0-9a-f]+:[   ]+f1459073[     ]+csrw[         ]+mhartid,a1
> +[      ]+[0-9a-f]+:[   ]+f1502573[     ]+csrr[         ]+a0,0xf15
> +[      ]+[0-9a-f]+:[   ]+f1559073[     ]+csrw[         ]+0xf15,a1
>  [      ]+[0-9a-f]+:[   ]+30002573[     ]+csrr[         ]+a0,mstatus
>  [      ]+[0-9a-f]+:[   ]+30059073[     ]+csrw[         ]+mstatus,a1
>  [      ]+[0-9a-f]+:[   ]+30102573[     ]+csrr[         ]+a0,misa
> @@ -199,6 +203,16 @@ Disassembly of section .text:
>  [      ]+[0-9a-f]+:[   ]+30559073[     ]+csrw[         ]+mtvec,a1
>  [      ]+[0-9a-f]+:[   ]+30602573[     ]+csrr[         ]+a0,0x306
>  [      ]+[0-9a-f]+:[   ]+30659073[     ]+csrw[         ]+0x306,a1
> +[      ]+[0-9a-f]+:[   ]+30a02573[     ]+csrr[         ]+a0,0x30a
> +[      ]+[0-9a-f]+:[   ]+30a59073[     ]+csrw[         ]+0x30a,a1
> +[      ]+[0-9a-f]+:[   ]+31002573[     ]+csrr[         ]+a0,0x310
> +[      ]+[0-9a-f]+:[   ]+31059073[     ]+csrw[         ]+0x310,a1
> +[      ]+[0-9a-f]+:[   ]+31a02573[     ]+csrr[         ]+a0,0x31a
> +[      ]+[0-9a-f]+:[   ]+31a59073[     ]+csrw[         ]+0x31a,a1
> +[      ]+[0-9a-f]+:[   ]+74702573[     ]+csrr[         ]+a0,0x747
> +[      ]+[0-9a-f]+:[   ]+74759073[     ]+csrw[         ]+0x747,a1
> +[      ]+[0-9a-f]+:[   ]+75702573[     ]+csrr[         ]+a0,0x757
> +[      ]+[0-9a-f]+:[   ]+75759073[     ]+csrw[         ]+0x757,a1
>  [      ]+[0-9a-f]+:[   ]+34002573[     ]+csrr[         ]+a0,mscratch
>  [      ]+[0-9a-f]+:[   ]+34059073[     ]+csrw[         ]+mscratch,a1
>  [      ]+[0-9a-f]+:[   ]+34102573[     ]+csrr[         ]+a0,mepc
> @@ -209,6 +223,10 @@ Disassembly of section .text:
>  [      ]+[0-9a-f]+:[   ]+34359073[     ]+csrw[         ]+mbadaddr,a1
>  [      ]+[0-9a-f]+:[   ]+34402573[     ]+csrr[         ]+a0,mip
>  [      ]+[0-9a-f]+:[   ]+34459073[     ]+csrw[         ]+mip,a1
> +[      ]+[0-9a-f]+:[   ]+34a02573[     ]+csrr[         ]+a0,0x34a
> +[      ]+[0-9a-f]+:[   ]+34a59073[     ]+csrw[         ]+0x34a,a1
> +[      ]+[0-9a-f]+:[   ]+34b02573[     ]+csrr[         ]+a0,0x34b
> +[      ]+[0-9a-f]+:[   ]+34b59073[     ]+csrw[         ]+0x34b,a1
>  [      ]+[0-9a-f]+:[   ]+3a002573[     ]+csrr[         ]+a0,0x3a0
>  [      ]+[0-9a-f]+:[   ]+3a059073[     ]+csrw[         ]+0x3a0,a1
>  [      ]+[0-9a-f]+:[   ]+3a102573[     ]+csrr[         ]+a0,0x3a1
> @@ -217,6 +235,30 @@ Disassembly of section .text:
>  [      ]+[0-9a-f]+:[   ]+3a259073[     ]+csrw[         ]+0x3a2,a1
>  [      ]+[0-9a-f]+:[   ]+3a302573[     ]+csrr[         ]+a0,0x3a3
>  [      ]+[0-9a-f]+:[   ]+3a359073[     ]+csrw[         ]+0x3a3,a1
> +[      ]+[0-9a-f]+:[   ]+3a402573[     ]+csrr[         ]+a0,0x3a4
> +[      ]+[0-9a-f]+:[   ]+3a459073[     ]+csrw[         ]+0x3a4,a1
> +[      ]+[0-9a-f]+:[   ]+3a502573[     ]+csrr[         ]+a0,0x3a5
> +[      ]+[0-9a-f]+:[   ]+3a559073[     ]+csrw[         ]+0x3a5,a1
> +[      ]+[0-9a-f]+:[   ]+3a602573[     ]+csrr[         ]+a0,0x3a6
> +[      ]+[0-9a-f]+:[   ]+3a659073[     ]+csrw[         ]+0x3a6,a1
> +[      ]+[0-9a-f]+:[   ]+3a702573[     ]+csrr[         ]+a0,0x3a7
> +[      ]+[0-9a-f]+:[   ]+3a759073[     ]+csrw[         ]+0x3a7,a1
> +[      ]+[0-9a-f]+:[   ]+3a802573[     ]+csrr[         ]+a0,0x3a8
> +[      ]+[0-9a-f]+:[   ]+3a859073[     ]+csrw[         ]+0x3a8,a1
> +[      ]+[0-9a-f]+:[   ]+3a902573[     ]+csrr[         ]+a0,0x3a9
> +[      ]+[0-9a-f]+:[   ]+3a959073[     ]+csrw[         ]+0x3a9,a1
> +[      ]+[0-9a-f]+:[   ]+3aa02573[     ]+csrr[         ]+a0,0x3aa
> +[      ]+[0-9a-f]+:[   ]+3aa59073[     ]+csrw[         ]+0x3aa,a1
> +[      ]+[0-9a-f]+:[   ]+3ab02573[     ]+csrr[         ]+a0,0x3ab
> +[      ]+[0-9a-f]+:[   ]+3ab59073[     ]+csrw[         ]+0x3ab,a1
> +[      ]+[0-9a-f]+:[   ]+3ac02573[     ]+csrr[         ]+a0,0x3ac
> +[      ]+[0-9a-f]+:[   ]+3ac59073[     ]+csrw[         ]+0x3ac,a1
> +[      ]+[0-9a-f]+:[   ]+3ad02573[     ]+csrr[         ]+a0,0x3ad
> +[      ]+[0-9a-f]+:[   ]+3ad59073[     ]+csrw[         ]+0x3ad,a1
> +[      ]+[0-9a-f]+:[   ]+3ae02573[     ]+csrr[         ]+a0,0x3ae
> +[      ]+[0-9a-f]+:[   ]+3ae59073[     ]+csrw[         ]+0x3ae,a1
> +[      ]+[0-9a-f]+:[   ]+3af02573[     ]+csrr[         ]+a0,0x3af
> +[      ]+[0-9a-f]+:[   ]+3af59073[     ]+csrw[         ]+0x3af,a1
>  [      ]+[0-9a-f]+:[   ]+3b002573[     ]+csrr[         ]+a0,0x3b0
>  [      ]+[0-9a-f]+:[   ]+3b059073[     ]+csrw[         ]+0x3b0,a1
>  [      ]+[0-9a-f]+:[   ]+3b102573[     ]+csrr[         ]+a0,0x3b1
> @@ -249,6 +291,102 @@ Disassembly of section .text:
>  [      ]+[0-9a-f]+:[   ]+3be59073[     ]+csrw[         ]+0x3be,a1
>  [      ]+[0-9a-f]+:[   ]+3bf02573[     ]+csrr[         ]+a0,0x3bf
>  [      ]+[0-9a-f]+:[   ]+3bf59073[     ]+csrw[         ]+0x3bf,a1
> +[      ]+[0-9a-f]+:[   ]+3c002573[     ]+csrr[         ]+a0,0x3c0
> +[      ]+[0-9a-f]+:[   ]+3c059073[     ]+csrw[         ]+0x3c0,a1
> +[      ]+[0-9a-f]+:[   ]+3c102573[     ]+csrr[         ]+a0,0x3c1
> +[      ]+[0-9a-f]+:[   ]+3c159073[     ]+csrw[         ]+0x3c1,a1
> +[      ]+[0-9a-f]+:[   ]+3c202573[     ]+csrr[         ]+a0,0x3c2
> +[      ]+[0-9a-f]+:[   ]+3c259073[     ]+csrw[         ]+0x3c2,a1
> +[      ]+[0-9a-f]+:[   ]+3c302573[     ]+csrr[         ]+a0,0x3c3
> +[      ]+[0-9a-f]+:[   ]+3c359073[     ]+csrw[         ]+0x3c3,a1
> +[      ]+[0-9a-f]+:[   ]+3c402573[     ]+csrr[         ]+a0,0x3c4
> +[      ]+[0-9a-f]+:[   ]+3c459073[     ]+csrw[         ]+0x3c4,a1
> +[      ]+[0-9a-f]+:[   ]+3c502573[     ]+csrr[         ]+a0,0x3c5
> +[      ]+[0-9a-f]+:[   ]+3c559073[     ]+csrw[         ]+0x3c5,a1
> +[      ]+[0-9a-f]+:[   ]+3c602573[     ]+csrr[         ]+a0,0x3c6
> +[      ]+[0-9a-f]+:[   ]+3c659073[     ]+csrw[         ]+0x3c6,a1
> +[      ]+[0-9a-f]+:[   ]+3c702573[     ]+csrr[         ]+a0,0x3c7
> +[      ]+[0-9a-f]+:[   ]+3c759073[     ]+csrw[         ]+0x3c7,a1
> +[      ]+[0-9a-f]+:[   ]+3c802573[     ]+csrr[         ]+a0,0x3c8
> +[      ]+[0-9a-f]+:[   ]+3c859073[     ]+csrw[         ]+0x3c8,a1
> +[      ]+[0-9a-f]+:[   ]+3c902573[     ]+csrr[         ]+a0,0x3c9
> +[      ]+[0-9a-f]+:[   ]+3c959073[     ]+csrw[         ]+0x3c9,a1
> +[      ]+[0-9a-f]+:[   ]+3ca02573[     ]+csrr[         ]+a0,0x3ca
> +[      ]+[0-9a-f]+:[   ]+3ca59073[     ]+csrw[         ]+0x3ca,a1
> +[      ]+[0-9a-f]+:[   ]+3cb02573[     ]+csrr[         ]+a0,0x3cb
> +[      ]+[0-9a-f]+:[   ]+3cb59073[     ]+csrw[         ]+0x3cb,a1
> +[      ]+[0-9a-f]+:[   ]+3cc02573[     ]+csrr[         ]+a0,0x3cc
> +[      ]+[0-9a-f]+:[   ]+3cc59073[     ]+csrw[         ]+0x3cc,a1
> +[      ]+[0-9a-f]+:[   ]+3cd02573[     ]+csrr[         ]+a0,0x3cd
> +[      ]+[0-9a-f]+:[   ]+3cd59073[     ]+csrw[         ]+0x3cd,a1
> +[      ]+[0-9a-f]+:[   ]+3ce02573[     ]+csrr[         ]+a0,0x3ce
> +[      ]+[0-9a-f]+:[   ]+3ce59073[     ]+csrw[         ]+0x3ce,a1
> +[      ]+[0-9a-f]+:[   ]+3cf02573[     ]+csrr[         ]+a0,0x3cf
> +[      ]+[0-9a-f]+:[   ]+3cf59073[     ]+csrw[         ]+0x3cf,a1
> +[      ]+[0-9a-f]+:[   ]+3d002573[     ]+csrr[         ]+a0,0x3d0
> +[      ]+[0-9a-f]+:[   ]+3d059073[     ]+csrw[         ]+0x3d0,a1
> +[      ]+[0-9a-f]+:[   ]+3d102573[     ]+csrr[         ]+a0,0x3d1
> +[      ]+[0-9a-f]+:[   ]+3d159073[     ]+csrw[         ]+0x3d1,a1
> +[      ]+[0-9a-f]+:[   ]+3d202573[     ]+csrr[         ]+a0,0x3d2
> +[      ]+[0-9a-f]+:[   ]+3d259073[     ]+csrw[         ]+0x3d2,a1
> +[      ]+[0-9a-f]+:[   ]+3d302573[     ]+csrr[         ]+a0,0x3d3
> +[      ]+[0-9a-f]+:[   ]+3d359073[     ]+csrw[         ]+0x3d3,a1
> +[      ]+[0-9a-f]+:[   ]+3d402573[     ]+csrr[         ]+a0,0x3d4
> +[      ]+[0-9a-f]+:[   ]+3d459073[     ]+csrw[         ]+0x3d4,a1
> +[      ]+[0-9a-f]+:[   ]+3d502573[     ]+csrr[         ]+a0,0x3d5
> +[      ]+[0-9a-f]+:[   ]+3d559073[     ]+csrw[         ]+0x3d5,a1
> +[      ]+[0-9a-f]+:[   ]+3d602573[     ]+csrr[         ]+a0,0x3d6
> +[      ]+[0-9a-f]+:[   ]+3d659073[     ]+csrw[         ]+0x3d6,a1
> +[      ]+[0-9a-f]+:[   ]+3d702573[     ]+csrr[         ]+a0,0x3d7
> +[      ]+[0-9a-f]+:[   ]+3d759073[     ]+csrw[         ]+0x3d7,a1
> +[      ]+[0-9a-f]+:[   ]+3d802573[     ]+csrr[         ]+a0,0x3d8
> +[      ]+[0-9a-f]+:[   ]+3d859073[     ]+csrw[         ]+0x3d8,a1
> +[      ]+[0-9a-f]+:[   ]+3d902573[     ]+csrr[         ]+a0,0x3d9
> +[      ]+[0-9a-f]+:[   ]+3d959073[     ]+csrw[         ]+0x3d9,a1
> +[      ]+[0-9a-f]+:[   ]+3da02573[     ]+csrr[         ]+a0,0x3da
> +[      ]+[0-9a-f]+:[   ]+3da59073[     ]+csrw[         ]+0x3da,a1
> +[      ]+[0-9a-f]+:[   ]+3db02573[     ]+csrr[         ]+a0,0x3db
> +[      ]+[0-9a-f]+:[   ]+3db59073[     ]+csrw[         ]+0x3db,a1
> +[      ]+[0-9a-f]+:[   ]+3dc02573[     ]+csrr[         ]+a0,0x3dc
> +[      ]+[0-9a-f]+:[   ]+3dc59073[     ]+csrw[         ]+0x3dc,a1
> +[      ]+[0-9a-f]+:[   ]+3dd02573[     ]+csrr[         ]+a0,0x3dd
> +[      ]+[0-9a-f]+:[   ]+3dd59073[     ]+csrw[         ]+0x3dd,a1
> +[      ]+[0-9a-f]+:[   ]+3de02573[     ]+csrr[         ]+a0,0x3de
> +[      ]+[0-9a-f]+:[   ]+3de59073[     ]+csrw[         ]+0x3de,a1
> +[      ]+[0-9a-f]+:[   ]+3df02573[     ]+csrr[         ]+a0,0x3df
> +[      ]+[0-9a-f]+:[   ]+3df59073[     ]+csrw[         ]+0x3df,a1
> +[      ]+[0-9a-f]+:[   ]+3e002573[     ]+csrr[         ]+a0,0x3e0
> +[      ]+[0-9a-f]+:[   ]+3e059073[     ]+csrw[         ]+0x3e0,a1
> +[      ]+[0-9a-f]+:[   ]+3e102573[     ]+csrr[         ]+a0,0x3e1
> +[      ]+[0-9a-f]+:[   ]+3e159073[     ]+csrw[         ]+0x3e1,a1
> +[      ]+[0-9a-f]+:[   ]+3e202573[     ]+csrr[         ]+a0,0x3e2
> +[      ]+[0-9a-f]+:[   ]+3e259073[     ]+csrw[         ]+0x3e2,a1
> +[      ]+[0-9a-f]+:[   ]+3e302573[     ]+csrr[         ]+a0,0x3e3
> +[      ]+[0-9a-f]+:[   ]+3e359073[     ]+csrw[         ]+0x3e3,a1
> +[      ]+[0-9a-f]+:[   ]+3e402573[     ]+csrr[         ]+a0,0x3e4
> +[      ]+[0-9a-f]+:[   ]+3e459073[     ]+csrw[         ]+0x3e4,a1
> +[      ]+[0-9a-f]+:[   ]+3e502573[     ]+csrr[         ]+a0,0x3e5
> +[      ]+[0-9a-f]+:[   ]+3e559073[     ]+csrw[         ]+0x3e5,a1
> +[      ]+[0-9a-f]+:[   ]+3e602573[     ]+csrr[         ]+a0,0x3e6
> +[      ]+[0-9a-f]+:[   ]+3e659073[     ]+csrw[         ]+0x3e6,a1
> +[      ]+[0-9a-f]+:[   ]+3e702573[     ]+csrr[         ]+a0,0x3e7
> +[      ]+[0-9a-f]+:[   ]+3e759073[     ]+csrw[         ]+0x3e7,a1
> +[      ]+[0-9a-f]+:[   ]+3e802573[     ]+csrr[         ]+a0,0x3e8
> +[      ]+[0-9a-f]+:[   ]+3e859073[     ]+csrw[         ]+0x3e8,a1
> +[      ]+[0-9a-f]+:[   ]+3e902573[     ]+csrr[         ]+a0,0x3e9
> +[      ]+[0-9a-f]+:[   ]+3e959073[     ]+csrw[         ]+0x3e9,a1
> +[      ]+[0-9a-f]+:[   ]+3ea02573[     ]+csrr[         ]+a0,0x3ea
> +[      ]+[0-9a-f]+:[   ]+3ea59073[     ]+csrw[         ]+0x3ea,a1
> +[      ]+[0-9a-f]+:[   ]+3eb02573[     ]+csrr[         ]+a0,0x3eb
> +[      ]+[0-9a-f]+:[   ]+3eb59073[     ]+csrw[         ]+0x3eb,a1
> +[      ]+[0-9a-f]+:[   ]+3ec02573[     ]+csrr[         ]+a0,0x3ec
> +[      ]+[0-9a-f]+:[   ]+3ec59073[     ]+csrw[         ]+0x3ec,a1
> +[      ]+[0-9a-f]+:[   ]+3ed02573[     ]+csrr[         ]+a0,0x3ed
> +[      ]+[0-9a-f]+:[   ]+3ed59073[     ]+csrw[         ]+0x3ed,a1
> +[      ]+[0-9a-f]+:[   ]+3ee02573[     ]+csrr[         ]+a0,0x3ee
> +[      ]+[0-9a-f]+:[   ]+3ee59073[     ]+csrw[         ]+0x3ee,a1
> +[      ]+[0-9a-f]+:[   ]+3ef02573[     ]+csrr[         ]+a0,0x3ef
> +[      ]+[0-9a-f]+:[   ]+3ef59073[     ]+csrw[         ]+0x3ef,a1
>  [      ]+[0-9a-f]+:[   ]+b0002573[     ]+csrr[         ]+a0,mcycle
>  [      ]+[0-9a-f]+:[   ]+b0059073[     ]+csrw[         ]+mcycle,a1
>  [      ]+[0-9a-f]+:[   ]+b0202573[     ]+csrr[         ]+a0,minstret
> diff --git a/gas/testsuite/gas/riscv/csr-version-1p9p1.l b/gas/testsuite/gas/riscv/csr-version-1p9p1.l
> index 00d46f509de..ca50442bc7a 100644
> --- a/gas/testsuite/gas/riscv/csr-version-1p9p1.l
> +++ b/gas/testsuite/gas/riscv/csr-version-1p9p1.l
> @@ -131,6 +131,8 @@
>  .*Warning: read-only CSR is written `csrw hpmcounter31h,a1'
>  .*Warning: invalid CSR `scounteren' for the privileged spec `1.9.1'
>  .*Warning: invalid CSR `scounteren' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `senvcfg' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `senvcfg' for the privileged spec `1.9.1'
>  .*Warning: invalid CSR `stval' for the privileged spec `1.9.1'
>  .*Warning: invalid CSR `stval' for the privileged spec `1.9.1'
>  .*Warning: invalid CSR `satp' for the privileged spec `1.9.1'
> @@ -139,10 +141,33 @@
>  .*Warning: read-only CSR is written `csrw marchid,a1'
>  .*Warning: read-only CSR is written `csrw mimpid,a1'
>  .*Warning: read-only CSR is written `csrw mhartid,a1'
> +.*Warning: invalid CSR `mconfigptr' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `mconfigptr' for the privileged spec `1.9.1'
> +.*Warning: read-only CSR is written `csrw mconfigptr,a1'
>  .*Warning: invalid CSR `mcounteren' for the privileged spec `1.9.1'
>  .*Warning: invalid CSR `mcounteren' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `menvcfg' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `menvcfg' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `mstatush' for the current ISA
> +.*Warning: invalid CSR `mstatush' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `mstatush' for the current ISA
> +.*Warning: invalid CSR `mstatush' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `menvcfgh' for the current ISA
> +.*Warning: invalid CSR `menvcfgh' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `menvcfgh' for the current ISA
> +.*Warning: invalid CSR `menvcfgh' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `mseccfg' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `mseccfg' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `mseccfgh' for the current ISA
> +.*Warning: invalid CSR `mseccfgh' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `mseccfgh' for the current ISA
> +.*Warning: invalid CSR `mseccfgh' for the privileged spec `1.9.1'
>  .*Warning: invalid CSR `mtval' for the privileged spec `1.9.1'
>  .*Warning: invalid CSR `mtval' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `mtinst' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `mtinst' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `mtval2' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `mtval2' for the privileged spec `1.9.1'
>  .*Warning: invalid CSR `pmpcfg0' for the privileged spec `1.9.1'
>  .*Warning: invalid CSR `pmpcfg0' for the privileged spec `1.9.1'
>  .*Warning: invalid CSR `pmpcfg1' for the current ISA
> @@ -155,6 +180,42 @@
>  .*Warning: invalid CSR `pmpcfg3' for the privileged spec `1.9.1'
>  .*Warning: invalid CSR `pmpcfg3' for the current ISA
>  .*Warning: invalid CSR `pmpcfg3' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpcfg4' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpcfg4' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpcfg5' for the current ISA
> +.*Warning: invalid CSR `pmpcfg5' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpcfg5' for the current ISA
> +.*Warning: invalid CSR `pmpcfg5' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpcfg6' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpcfg6' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpcfg7' for the current ISA
> +.*Warning: invalid CSR `pmpcfg7' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpcfg7' for the current ISA
> +.*Warning: invalid CSR `pmpcfg7' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpcfg8' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpcfg8' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpcfg9' for the current ISA
> +.*Warning: invalid CSR `pmpcfg9' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpcfg9' for the current ISA
> +.*Warning: invalid CSR `pmpcfg9' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpcfg10' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpcfg10' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpcfg11' for the current ISA
> +.*Warning: invalid CSR `pmpcfg11' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpcfg11' for the current ISA
> +.*Warning: invalid CSR `pmpcfg11' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpcfg12' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpcfg12' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpcfg13' for the current ISA
> +.*Warning: invalid CSR `pmpcfg13' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpcfg13' for the current ISA
> +.*Warning: invalid CSR `pmpcfg13' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpcfg14' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpcfg14' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpcfg15' for the current ISA
> +.*Warning: invalid CSR `pmpcfg15' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpcfg15' for the current ISA
> +.*Warning: invalid CSR `pmpcfg15' for the privileged spec `1.9.1'
>  .*Warning: invalid CSR `pmpaddr0' for the privileged spec `1.9.1'
>  .*Warning: invalid CSR `pmpaddr0' for the privileged spec `1.9.1'
>  .*Warning: invalid CSR `pmpaddr1' for the privileged spec `1.9.1'
> @@ -187,6 +248,102 @@
>  .*Warning: invalid CSR `pmpaddr14' for the privileged spec `1.9.1'
>  .*Warning: invalid CSR `pmpaddr15' for the privileged spec `1.9.1'
>  .*Warning: invalid CSR `pmpaddr15' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpaddr16' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpaddr16' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpaddr17' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpaddr17' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpaddr18' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpaddr18' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpaddr19' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpaddr19' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpaddr20' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpaddr20' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpaddr21' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpaddr21' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpaddr22' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpaddr22' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpaddr23' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpaddr23' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpaddr24' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpaddr24' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpaddr25' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpaddr25' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpaddr26' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpaddr26' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpaddr27' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpaddr27' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpaddr28' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpaddr28' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpaddr29' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpaddr29' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpaddr30' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpaddr30' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpaddr31' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpaddr31' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpaddr32' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpaddr32' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpaddr33' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpaddr33' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpaddr34' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpaddr34' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpaddr35' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpaddr35' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpaddr36' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpaddr36' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpaddr37' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpaddr37' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpaddr38' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpaddr38' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpaddr39' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpaddr39' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpaddr40' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpaddr40' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpaddr41' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpaddr41' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpaddr42' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpaddr42' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpaddr43' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpaddr43' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpaddr44' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpaddr44' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpaddr45' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpaddr45' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpaddr46' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpaddr46' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpaddr47' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpaddr47' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpaddr48' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpaddr48' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpaddr49' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpaddr49' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpaddr50' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpaddr50' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpaddr51' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpaddr51' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpaddr52' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpaddr52' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpaddr53' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpaddr53' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpaddr54' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpaddr54' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpaddr55' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpaddr55' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpaddr56' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpaddr56' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpaddr57' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpaddr57' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpaddr58' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpaddr58' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpaddr59' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpaddr59' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpaddr60' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpaddr60' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpaddr61' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpaddr61' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpaddr62' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpaddr62' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpaddr63' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `pmpaddr63' for the privileged spec `1.9.1'
>  .*Warning: invalid CSR `mcycleh' for the current ISA
>  .*Warning: invalid CSR `mcycleh' for the current ISA
>  .*Warning: invalid CSR `minstreth' for the current ISA
> diff --git a/gas/testsuite/gas/riscv/csr.s b/gas/testsuite/gas/riscv/csr.s
> index 568328d70d9..cbb0e23991b 100644
> --- a/gas/testsuite/gas/riscv/csr.s
> +++ b/gas/testsuite/gas/riscv/csr.s
> @@ -90,6 +90,7 @@
>         csr sie
>         csr stvec
>         csr scounteren          # Added in 1.10
> +       csr senvcfg             # Added in 1.12
>
>         # Supervisor Trap Handling
>         csr sscratch
> @@ -106,6 +107,7 @@
>         csr marchid
>         csr mimpid
>         csr mhartid
> +       csr mconfigptr          # Added in 1.12
>
>         # Machine Trap Setup
>         csr mstatus
> @@ -115,6 +117,11 @@
>         csr mie
>         csr mtvec
>         csr mcounteren          # Added in 1.10
> +       csr menvcfg             # Added in 1.12
> +       csr mstatush            # Added in 1.12
> +       csr menvcfgh            # Added in 1.12
> +       csr mseccfg             # Added in 1.12
> +       csr mseccfgh            # Added in 1.12
>
>         # Machine Trap Handling
>         csr mscratch
> @@ -122,12 +129,26 @@
>         csr mcause
>         csr mtval               # Added in 1.10
>         csr mip
> +       csr mtinst              # Added in 1.12
> +       csr mtval2              # Added in 1.12
>
>         # Machine Memory Protection
>         csr pmpcfg0             # Added in 1.10
>         csr pmpcfg1             # Added in 1.10
>         csr pmpcfg2             # Added in 1.10
>         csr pmpcfg3             # Added in 1.10
> +       csr pmpcfg4             # Added in 1.12
> +       csr pmpcfg5             # Added in 1.12
> +       csr pmpcfg6             # Added in 1.12
> +       csr pmpcfg7             # Added in 1.12
> +       csr pmpcfg8             # Added in 1.12
> +       csr pmpcfg9             # Added in 1.12
> +       csr pmpcfg10            # Added in 1.12
> +       csr pmpcfg11            # Added in 1.12
> +       csr pmpcfg12            # Added in 1.12
> +       csr pmpcfg13            # Added in 1.12
> +       csr pmpcfg14            # Added in 1.12
> +       csr pmpcfg15            # Added in 1.12
>         csr pmpaddr0            # Added in 1.10
>         csr pmpaddr1            # Added in 1.10
>         csr pmpaddr2            # Added in 1.10
> @@ -144,6 +165,54 @@
>         csr pmpaddr13           # Added in 1.10
>         csr pmpaddr14           # Added in 1.10
>         csr pmpaddr15           # Added in 1.10
> +       csr pmpaddr16           # Added in 1.12
> +       csr pmpaddr17           # Added in 1.12
> +       csr pmpaddr18           # Added in 1.12
> +       csr pmpaddr19           # Added in 1.12
> +       csr pmpaddr20           # Added in 1.12
> +       csr pmpaddr21           # Added in 1.12
> +       csr pmpaddr22           # Added in 1.12
> +       csr pmpaddr23           # Added in 1.12
> +       csr pmpaddr24           # Added in 1.12
> +       csr pmpaddr25           # Added in 1.12
> +       csr pmpaddr26           # Added in 1.12
> +       csr pmpaddr27           # Added in 1.12
> +       csr pmpaddr28           # Added in 1.12
> +       csr pmpaddr29           # Added in 1.12
> +       csr pmpaddr30           # Added in 1.12
> +       csr pmpaddr31           # Added in 1.12
> +       csr pmpaddr32           # Added in 1.12
> +       csr pmpaddr33           # Added in 1.12
> +       csr pmpaddr34           # Added in 1.12
> +       csr pmpaddr35           # Added in 1.12
> +       csr pmpaddr36           # Added in 1.12
> +       csr pmpaddr37           # Added in 1.12
> +       csr pmpaddr38           # Added in 1.12
> +       csr pmpaddr39           # Added in 1.12
> +       csr pmpaddr40           # Added in 1.12
> +       csr pmpaddr41           # Added in 1.12
> +       csr pmpaddr42           # Added in 1.12
> +       csr pmpaddr43           # Added in 1.12
> +       csr pmpaddr44           # Added in 1.12
> +       csr pmpaddr45           # Added in 1.12
> +       csr pmpaddr46           # Added in 1.12
> +       csr pmpaddr47           # Added in 1.12
> +       csr pmpaddr48           # Added in 1.12
> +       csr pmpaddr49           # Added in 1.12
> +       csr pmpaddr50           # Added in 1.12
> +       csr pmpaddr51           # Added in 1.12
> +       csr pmpaddr52           # Added in 1.12
> +       csr pmpaddr53           # Added in 1.12
> +       csr pmpaddr54           # Added in 1.12
> +       csr pmpaddr55           # Added in 1.12
> +       csr pmpaddr56           # Added in 1.12
> +       csr pmpaddr57           # Added in 1.12
> +       csr pmpaddr58           # Added in 1.12
> +       csr pmpaddr59           # Added in 1.12
> +       csr pmpaddr60           # Added in 1.12
> +       csr pmpaddr61           # Added in 1.12
> +       csr pmpaddr62           # Added in 1.12
> +       csr pmpaddr63           # Added in 1.12
>
>         # Machine Counter/Timer
>         csr mcycle
> --
> 2.32.0
>

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

* Re: [PATCH 2/6] RISC-V: Add Privileged Architecture 1.12 CSRs
  2022-02-23  6:58   ` Nelson Chu
@ 2022-02-24  2:35     ` Tsukasa OI
  2022-02-24  6:05       ` Nelson Chu
  0 siblings, 1 reply; 32+ messages in thread
From: Tsukasa OI @ 2022-02-24  2:35 UTC (permalink / raw)
  To: Nelson Chu; +Cc: Binutils

Thanks for merging!

For original PATCH 4-6/6 (adding following extensions), I can rebase and
submit with new CSR error reporting mechanism as introduced in
commit df0a549ebdae74ef9d233243b869d424e6a33c73.

1. Smstateen
2. Sscofpmf
3. Sstc

If you are not working for this now, I will.

Tsukasa

On 2022/02/23 15:58, Nelson Chu wrote:
> OK, committed.
> 
> Thanks
> Nelson
> 
> On Tue, Jan 11, 2022 at 7:01 PM Tsukasa OI via Binutils
> <binutils@sourceware.org> wrote:
>>
>> This commit adds most of CSRs as listed in the Privileged Architecture,
>> version 1.12 (except scontext and mscontext).
>>
>> include/ChangeLog:
>>
>>         * opcode/riscv-opc.h (CSR_SENVCFG, CSR_MCONFIGPTR, CSR_MENVCFG,
>>         CSR_MSTATUSH, CSR_MENVCFGH, CSR_MTINST, CSR_MTVAL2, CSR_MSECCFG,
>>         CSR_MSECCFGH, CSR_PMPCFG4, CSR_PMPCFG5, CSR_PMPCFG6,
>>         CSR_PMPCFG7, CSR_PMPCFG8, CSR_PMPCFG9, CSR_PMPCFG10,
>>         CSR_PMPCFG11, CSR_PMPCFG12, CSR_PMPCFG13, CSR_PMPCFG14,
>>         CSR_PMPCFG15, CSR_PMPADDR16, CSR_PMPADDR17, CSR_PMPADDR18,
>>         CSR_PMPADDR19, CSR_PMPADDR20, CSR_PMPADDR21, CSR_PMPADDR22,
>>         CSR_PMPADDR23, CSR_PMPADDR24, CSR_PMPADDR25, CSR_PMPADDR26,
>>         CSR_PMPADDR27, CSR_PMPADDR28, CSR_PMPADDR29, CSR_PMPADDR30,
>>         CSR_PMPADDR31, CSR_PMPADDR32, CSR_PMPADDR33, CSR_PMPADDR34,
>>         CSR_PMPADDR35, CSR_PMPADDR36, CSR_PMPADDR37, CSR_PMPADDR38,
>>         CSR_PMPADDR39, CSR_PMPADDR40, CSR_PMPADDR41, CSR_PMPADDR42,
>>         CSR_PMPADDR43, CSR_PMPADDR44, CSR_PMPADDR45, CSR_PMPADDR46,
>>         CSR_PMPADDR47, CSR_PMPADDR48, CSR_PMPADDR49, CSR_PMPADDR50,
>>         CSR_PMPADDR51, CSR_PMPADDR52, CSR_PMPADDR53, CSR_PMPADDR54,
>>         CSR_PMPADDR55, CSR_PMPADDR56, CSR_PMPADDR57, CSR_PMPADDR58,
>>         CSR_PMPADDR59, CSR_PMPADDR60, CSR_PMPADDR61, CSR_PMPADDR62,
>>         CSR_PMPADDR63): New CSR macros.
>> ---
>>  include/opcode/riscv-opc.h | 138 +++++++++++++++++++++++++++++++++++++
>>  1 file changed, 138 insertions(+)
>>
>> diff --git a/include/opcode/riscv-opc.h b/include/opcode/riscv-opc.h
>> index 0b8cc6c7ddb..734d7862b2d 100644
>> --- a/include/opcode/riscv-opc.h
>> +++ b/include/opcode/riscv-opc.h
>> @@ -2108,6 +2108,7 @@
>>  #define CSR_SIE 0x104
>>  #define CSR_STVEC 0x105
>>  #define CSR_SCOUNTEREN 0x106
>> +#define CSR_SENVCFG 0x10a
>>  #define CSR_SSCRATCH 0x140
>>  #define CSR_SEPC 0x141
>>  #define CSR_SCAUSE 0x142
>> @@ -2118,6 +2119,7 @@
>>  #define CSR_MARCHID 0xf12
>>  #define CSR_MIMPID 0xf13
>>  #define CSR_MHARTID 0xf14
>> +#define CSR_MCONFIGPTR 0xf15
>>  #define CSR_MSTATUS 0x300
>>  #define CSR_MISA 0x301
>>  #define CSR_MEDELEG 0x302
>> @@ -2125,15 +2127,34 @@
>>  #define CSR_MIE 0x304
>>  #define CSR_MTVEC 0x305
>>  #define CSR_MCOUNTEREN 0x306
>> +#define CSR_MENVCFG 0x30a
>> +#define CSR_MSTATUSH 0x310
>> +#define CSR_MENVCFGH 0x31a
>>  #define CSR_MSCRATCH 0x340
>>  #define CSR_MEPC 0x341
>>  #define CSR_MCAUSE 0x342
>>  #define CSR_MTVAL 0x343
>>  #define CSR_MIP 0x344
>> +#define CSR_MTINST 0x34a
>> +#define CSR_MTVAL2 0x34b
>> +#define CSR_MSECCFG 0x747
>> +#define CSR_MSECCFGH 0x757
>>  #define CSR_PMPCFG0 0x3a0
>>  #define CSR_PMPCFG1 0x3a1
>>  #define CSR_PMPCFG2 0x3a2
>>  #define CSR_PMPCFG3 0x3a3
>> +#define CSR_PMPCFG4 0x3a4
>> +#define CSR_PMPCFG5 0x3a5
>> +#define CSR_PMPCFG6 0x3a6
>> +#define CSR_PMPCFG7 0x3a7
>> +#define CSR_PMPCFG8 0x3a8
>> +#define CSR_PMPCFG9 0x3a9
>> +#define CSR_PMPCFG10 0x3aa
>> +#define CSR_PMPCFG11 0x3ab
>> +#define CSR_PMPCFG12 0x3ac
>> +#define CSR_PMPCFG13 0x3ad
>> +#define CSR_PMPCFG14 0x3ae
>> +#define CSR_PMPCFG15 0x3af
>>  #define CSR_PMPADDR0 0x3b0
>>  #define CSR_PMPADDR1 0x3b1
>>  #define CSR_PMPADDR2 0x3b2
>> @@ -2150,6 +2171,54 @@
>>  #define CSR_PMPADDR13 0x3bd
>>  #define CSR_PMPADDR14 0x3be
>>  #define CSR_PMPADDR15 0x3bf
>> +#define CSR_PMPADDR16 0x3c0
>> +#define CSR_PMPADDR17 0x3c1
>> +#define CSR_PMPADDR18 0x3c2
>> +#define CSR_PMPADDR19 0x3c3
>> +#define CSR_PMPADDR20 0x3c4
>> +#define CSR_PMPADDR21 0x3c5
>> +#define CSR_PMPADDR22 0x3c6
>> +#define CSR_PMPADDR23 0x3c7
>> +#define CSR_PMPADDR24 0x3c8
>> +#define CSR_PMPADDR25 0x3c9
>> +#define CSR_PMPADDR26 0x3ca
>> +#define CSR_PMPADDR27 0x3cb
>> +#define CSR_PMPADDR28 0x3cc
>> +#define CSR_PMPADDR29 0x3cd
>> +#define CSR_PMPADDR30 0x3ce
>> +#define CSR_PMPADDR31 0x3cf
>> +#define CSR_PMPADDR32 0x3d0
>> +#define CSR_PMPADDR33 0x3d1
>> +#define CSR_PMPADDR34 0x3d2
>> +#define CSR_PMPADDR35 0x3d3
>> +#define CSR_PMPADDR36 0x3d4
>> +#define CSR_PMPADDR37 0x3d5
>> +#define CSR_PMPADDR38 0x3d6
>> +#define CSR_PMPADDR39 0x3d7
>> +#define CSR_PMPADDR40 0x3d8
>> +#define CSR_PMPADDR41 0x3d9
>> +#define CSR_PMPADDR42 0x3da
>> +#define CSR_PMPADDR43 0x3db
>> +#define CSR_PMPADDR44 0x3dc
>> +#define CSR_PMPADDR45 0x3dd
>> +#define CSR_PMPADDR46 0x3de
>> +#define CSR_PMPADDR47 0x3df
>> +#define CSR_PMPADDR48 0x3e0
>> +#define CSR_PMPADDR49 0x3e1
>> +#define CSR_PMPADDR50 0x3e2
>> +#define CSR_PMPADDR51 0x3e3
>> +#define CSR_PMPADDR52 0x3e4
>> +#define CSR_PMPADDR53 0x3e5
>> +#define CSR_PMPADDR54 0x3e6
>> +#define CSR_PMPADDR55 0x3e7
>> +#define CSR_PMPADDR56 0x3e8
>> +#define CSR_PMPADDR57 0x3e9
>> +#define CSR_PMPADDR58 0x3ea
>> +#define CSR_PMPADDR59 0x3eb
>> +#define CSR_PMPADDR60 0x3ec
>> +#define CSR_PMPADDR61 0x3ed
>> +#define CSR_PMPADDR62 0x3ee
>> +#define CSR_PMPADDR63 0x3ef
>>  #define CSR_MCYCLE 0xb00
>>  #define CSR_MINSTRET 0xb02
>>  #define CSR_MHPMCOUNTER3 0xb03
>> @@ -2709,6 +2778,7 @@ DECLARE_CSR(sideleg, CSR_SIDELEG, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_
>>  DECLARE_CSR(sie, CSR_SIE, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
>>  DECLARE_CSR(stvec, CSR_STVEC, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
>>  DECLARE_CSR(scounteren, CSR_SCOUNTEREN, CSR_CLASS_I, PRIV_SPEC_CLASS_1P10, PRIV_SPEC_CLASS_DRAFT)
>> +DECLARE_CSR(senvcfg, CSR_SENVCFG, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
>>  DECLARE_CSR(sscratch, CSR_SSCRATCH, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
>>  DECLARE_CSR(sepc, CSR_SEPC, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
>>  DECLARE_CSR(scause, CSR_SCAUSE, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
>> @@ -2719,6 +2789,7 @@ DECLARE_CSR(mvendorid, CSR_MVENDORID, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_S
>>  DECLARE_CSR(marchid, CSR_MARCHID, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
>>  DECLARE_CSR(mimpid, CSR_MIMPID, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
>>  DECLARE_CSR(mhartid, CSR_MHARTID, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
>> +DECLARE_CSR(mconfigptr, CSR_MCONFIGPTR, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
>>  DECLARE_CSR(mstatus, CSR_MSTATUS, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
>>  DECLARE_CSR(misa, CSR_MISA, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
>>  DECLARE_CSR(medeleg, CSR_MEDELEG, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
>> @@ -2726,15 +2797,34 @@ DECLARE_CSR(mideleg, CSR_MIDELEG, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_
>>  DECLARE_CSR(mie, CSR_MIE, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
>>  DECLARE_CSR(mtvec, CSR_MTVEC, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
>>  DECLARE_CSR(mcounteren, CSR_MCOUNTEREN, CSR_CLASS_I, PRIV_SPEC_CLASS_1P10, PRIV_SPEC_CLASS_DRAFT)
>> +DECLARE_CSR(menvcfg, CSR_MENVCFG, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
>> +DECLARE_CSR(mstatush, CSR_MSTATUSH, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
>> +DECLARE_CSR(menvcfgh, CSR_MENVCFGH, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
>>  DECLARE_CSR(mscratch, CSR_MSCRATCH, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
>>  DECLARE_CSR(mepc, CSR_MEPC, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
>>  DECLARE_CSR(mcause, CSR_MCAUSE, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
>>  DECLARE_CSR(mtval, CSR_MTVAL, CSR_CLASS_I, PRIV_SPEC_CLASS_1P10, PRIV_SPEC_CLASS_DRAFT)
>>  DECLARE_CSR(mip, CSR_MIP, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
>> +DECLARE_CSR(mtinst, CSR_MTINST, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
>> +DECLARE_CSR(mtval2, CSR_MTVAL2, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
>> +DECLARE_CSR(mseccfg, CSR_MSECCFG, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
>> +DECLARE_CSR(mseccfgh, CSR_MSECCFGH, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
>>  DECLARE_CSR(pmpcfg0, CSR_PMPCFG0, CSR_CLASS_I, PRIV_SPEC_CLASS_1P10, PRIV_SPEC_CLASS_DRAFT)
>>  DECLARE_CSR(pmpcfg1, CSR_PMPCFG1, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P10, PRIV_SPEC_CLASS_DRAFT)
>>  DECLARE_CSR(pmpcfg2, CSR_PMPCFG2, CSR_CLASS_I, PRIV_SPEC_CLASS_1P10, PRIV_SPEC_CLASS_DRAFT)
>>  DECLARE_CSR(pmpcfg3, CSR_PMPCFG3, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P10, PRIV_SPEC_CLASS_DRAFT)
>> +DECLARE_CSR(pmpcfg4, CSR_PMPCFG4, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
>> +DECLARE_CSR(pmpcfg5, CSR_PMPCFG5, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
>> +DECLARE_CSR(pmpcfg6, CSR_PMPCFG6, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
>> +DECLARE_CSR(pmpcfg7, CSR_PMPCFG7, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
>> +DECLARE_CSR(pmpcfg8, CSR_PMPCFG8, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
>> +DECLARE_CSR(pmpcfg9, CSR_PMPCFG9, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
>> +DECLARE_CSR(pmpcfg10, CSR_PMPCFG10, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
>> +DECLARE_CSR(pmpcfg11, CSR_PMPCFG11, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
>> +DECLARE_CSR(pmpcfg12, CSR_PMPCFG12, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
>> +DECLARE_CSR(pmpcfg13, CSR_PMPCFG13, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
>> +DECLARE_CSR(pmpcfg14, CSR_PMPCFG14, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
>> +DECLARE_CSR(pmpcfg15, CSR_PMPCFG15, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
>>  DECLARE_CSR(pmpaddr0, CSR_PMPADDR0, CSR_CLASS_I, PRIV_SPEC_CLASS_1P10, PRIV_SPEC_CLASS_DRAFT)
>>  DECLARE_CSR(pmpaddr1, CSR_PMPADDR1, CSR_CLASS_I, PRIV_SPEC_CLASS_1P10, PRIV_SPEC_CLASS_DRAFT)
>>  DECLARE_CSR(pmpaddr2, CSR_PMPADDR2, CSR_CLASS_I, PRIV_SPEC_CLASS_1P10, PRIV_SPEC_CLASS_DRAFT)
>> @@ -2751,6 +2841,54 @@ DECLARE_CSR(pmpaddr12, CSR_PMPADDR12, CSR_CLASS_I, PRIV_SPEC_CLASS_1P10, PRIV_SP
>>  DECLARE_CSR(pmpaddr13, CSR_PMPADDR13, CSR_CLASS_I, PRIV_SPEC_CLASS_1P10, PRIV_SPEC_CLASS_DRAFT)
>>  DECLARE_CSR(pmpaddr14, CSR_PMPADDR14, CSR_CLASS_I, PRIV_SPEC_CLASS_1P10, PRIV_SPEC_CLASS_DRAFT)
>>  DECLARE_CSR(pmpaddr15, CSR_PMPADDR15, CSR_CLASS_I, PRIV_SPEC_CLASS_1P10, PRIV_SPEC_CLASS_DRAFT)
>> +DECLARE_CSR(pmpaddr16, CSR_PMPADDR16, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
>> +DECLARE_CSR(pmpaddr17, CSR_PMPADDR17, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
>> +DECLARE_CSR(pmpaddr18, CSR_PMPADDR18, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
>> +DECLARE_CSR(pmpaddr19, CSR_PMPADDR19, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
>> +DECLARE_CSR(pmpaddr20, CSR_PMPADDR20, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
>> +DECLARE_CSR(pmpaddr21, CSR_PMPADDR21, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
>> +DECLARE_CSR(pmpaddr22, CSR_PMPADDR22, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
>> +DECLARE_CSR(pmpaddr23, CSR_PMPADDR23, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
>> +DECLARE_CSR(pmpaddr24, CSR_PMPADDR24, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
>> +DECLARE_CSR(pmpaddr25, CSR_PMPADDR25, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
>> +DECLARE_CSR(pmpaddr26, CSR_PMPADDR26, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
>> +DECLARE_CSR(pmpaddr27, CSR_PMPADDR27, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
>> +DECLARE_CSR(pmpaddr28, CSR_PMPADDR28, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
>> +DECLARE_CSR(pmpaddr29, CSR_PMPADDR29, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
>> +DECLARE_CSR(pmpaddr30, CSR_PMPADDR30, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
>> +DECLARE_CSR(pmpaddr31, CSR_PMPADDR31, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
>> +DECLARE_CSR(pmpaddr32, CSR_PMPADDR32, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
>> +DECLARE_CSR(pmpaddr33, CSR_PMPADDR33, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
>> +DECLARE_CSR(pmpaddr34, CSR_PMPADDR34, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
>> +DECLARE_CSR(pmpaddr35, CSR_PMPADDR35, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
>> +DECLARE_CSR(pmpaddr36, CSR_PMPADDR36, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
>> +DECLARE_CSR(pmpaddr37, CSR_PMPADDR37, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
>> +DECLARE_CSR(pmpaddr38, CSR_PMPADDR38, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
>> +DECLARE_CSR(pmpaddr39, CSR_PMPADDR39, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
>> +DECLARE_CSR(pmpaddr40, CSR_PMPADDR40, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
>> +DECLARE_CSR(pmpaddr41, CSR_PMPADDR41, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
>> +DECLARE_CSR(pmpaddr42, CSR_PMPADDR42, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
>> +DECLARE_CSR(pmpaddr43, CSR_PMPADDR43, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
>> +DECLARE_CSR(pmpaddr44, CSR_PMPADDR44, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
>> +DECLARE_CSR(pmpaddr45, CSR_PMPADDR45, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
>> +DECLARE_CSR(pmpaddr46, CSR_PMPADDR46, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
>> +DECLARE_CSR(pmpaddr47, CSR_PMPADDR47, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
>> +DECLARE_CSR(pmpaddr48, CSR_PMPADDR48, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
>> +DECLARE_CSR(pmpaddr49, CSR_PMPADDR49, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
>> +DECLARE_CSR(pmpaddr50, CSR_PMPADDR50, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
>> +DECLARE_CSR(pmpaddr51, CSR_PMPADDR51, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
>> +DECLARE_CSR(pmpaddr52, CSR_PMPADDR52, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
>> +DECLARE_CSR(pmpaddr53, CSR_PMPADDR53, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
>> +DECLARE_CSR(pmpaddr54, CSR_PMPADDR54, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
>> +DECLARE_CSR(pmpaddr55, CSR_PMPADDR55, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
>> +DECLARE_CSR(pmpaddr56, CSR_PMPADDR56, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
>> +DECLARE_CSR(pmpaddr57, CSR_PMPADDR57, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
>> +DECLARE_CSR(pmpaddr58, CSR_PMPADDR58, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
>> +DECLARE_CSR(pmpaddr59, CSR_PMPADDR59, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
>> +DECLARE_CSR(pmpaddr60, CSR_PMPADDR60, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
>> +DECLARE_CSR(pmpaddr61, CSR_PMPADDR61, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
>> +DECLARE_CSR(pmpaddr62, CSR_PMPADDR62, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
>> +DECLARE_CSR(pmpaddr63, CSR_PMPADDR63, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
>>  DECLARE_CSR(mcycle, CSR_MCYCLE, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
>>  DECLARE_CSR(minstret, CSR_MINSTRET, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
>>  DECLARE_CSR(mhpmcounter3, CSR_MHPMCOUNTER3, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
>> --
>> 2.32.0
>>
> 

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

* Re: [PATCH 2/6] RISC-V: Add Privileged Architecture 1.12 CSRs
  2022-02-24  2:35     ` Tsukasa OI
@ 2022-02-24  6:05       ` Nelson Chu
  0 siblings, 0 replies; 32+ messages in thread
From: Nelson Chu @ 2022-02-24  6:05 UTC (permalink / raw)
  To: Tsukasa OI; +Cc: Binutils

On Thu, Feb 24, 2022 at 10:35 AM Tsukasa OI
<research_trasio@irq.a4lg.com> wrote:
>
> Thanks for merging!
>
> For original PATCH 4-6/6 (adding following extensions), I can rebase and
> submit with new CSR error reporting mechanism as introduced in
> commit df0a549ebdae74ef9d233243b869d424e6a33c73.
>
> 1. Smstateen
> 2. Sscofpmf
> 3. Sstc
>
> If you are not working for this now, I will.

OK, sounds great :)

Thanks
Nelson

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

* [PATCH 0/3] RISC-V: Add CSRs for several supervisor extensions
  2022-01-11 10:59 [PATCH 0/6] RISC-V: Add Privileged Arch 1.12 and More CSRs Tsukasa OI
                   ` (5 preceding siblings ...)
  2022-01-11 10:59 ` [PATCH 6/6] RISC-V: Add 'Sstc' extension and " Tsukasa OI
@ 2022-02-24 12:10 ` Tsukasa OI
  2022-02-24 12:10   ` [PATCH 1/3] RISC-V: Add 'Smstateen' extension and its CSRs Tsukasa OI
                     ` (3 more replies)
  6 siblings, 4 replies; 32+ messages in thread
From: Tsukasa OI @ 2022-02-24 12:10 UTC (permalink / raw)
  To: Tsukasa OI, Nelson Chu; +Cc: binutils

This is based on the second half of my previous CSR addition patchset:
<https://sourceware.org/pipermail/binutils/2022-January/119282.html>

(First half [PATCH 1-3] is merged by Nelson Chu with minor changes)

See above for original submission and details.


Commit df0a549ebdae74ef9d233243b869d424e6a33c73 introduced new CSR error
reporting mechanism that is incompatible with my previous patchset.

Due to this, many expected error messages for testing need to be fixed.

Added extensions:

- Smstateen
- Sscofpmf
- Sstc




Tsukasa OI (3):
  RISC-V: Add 'Smstateen' extension and its CSRs
  RISC-V: Add 'Sscofpmf' extension with its CSRs
  RISC-V: Add 'Sstc' extension and its CSRs

 bfd/elfxx-riscv.c                           |   3 +
 gas/config/tc-riscv.c                       |  27 ++
 gas/testsuite/gas/riscv/csr-dw-regnums.d    |  54 ++++
 gas/testsuite/gas/riscv/csr-dw-regnums.s    |  57 ++++
 gas/testsuite/gas/riscv/csr-version-1p10.d  | 108 ++++++++
 gas/testsuite/gas/riscv/csr-version-1p10.l  | 271 ++++++++++++++++++++
 gas/testsuite/gas/riscv/csr-version-1p11.d  | 108 ++++++++
 gas/testsuite/gas/riscv/csr-version-1p11.l  | 207 +++++++++++++++
 gas/testsuite/gas/riscv/csr-version-1p12.d  | 108 ++++++++
 gas/testsuite/gas/riscv/csr-version-1p12.l  | 187 ++++++++++++++
 gas/testsuite/gas/riscv/csr-version-1p9p1.d | 108 ++++++++
 gas/testsuite/gas/riscv/csr-version-1p9p1.l | 271 ++++++++++++++++++++
 gas/testsuite/gas/riscv/csr.s               |  60 +++++
 include/opcode/riscv-opc.h                  | 114 ++++++++
 14 files changed, 1683 insertions(+)


base-commit: 7190ae0d393d09c3c1f24add83d1e90727402749
-- 
2.32.0


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

* [PATCH 1/3] RISC-V: Add 'Smstateen' extension and its CSRs
  2022-02-24 12:10 ` [PATCH 0/3] RISC-V: Add CSRs for several supervisor extensions Tsukasa OI
@ 2022-02-24 12:10   ` Tsukasa OI
  2022-02-25  6:32     ` Nelson Chu
  2022-02-24 12:10   ` [PATCH 2/3] RISC-V: Add 'Sscofpmf' extension with " Tsukasa OI
                     ` (2 subsequent siblings)
  3 siblings, 1 reply; 32+ messages in thread
From: Tsukasa OI @ 2022-02-24 12:10 UTC (permalink / raw)
  To: Tsukasa OI, Nelson Chu; +Cc: binutils

This commit adds State Enable Extension (Smstateen) and its CSRs.

bfd/ChangeLog:

	* elfxx-riscv.c (riscv_supported_std_s_ext): Add 'Smstateen'
	extension to valid 'S' extension list.

gas/ChangeLog:

	* config/tc-riscv.c (enum riscv_csr_class): Add CSR classes for
	'Smstateen' extension. (riscv_csr_address): Add handling for
	new CSR classes.
	* testsuite/gas/riscv/csr-dw-regnums.s: Add new CSRs.
	* testsuite/gas/riscv/csr-dw-regnums.d: 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_MSTATEEN0, CSR_MSTATEEN1,
	CSR_MSTATEEN2, CSR_MSTATEEN3, CSR_SSTATEEN0, CSR_SSTATEEN1,
	CSR_SSTATEEN2, CSR_SSTATEEN3, CSR_HSTATEEN0, CSR_HSTATEEN1,
	CSR_HSTATEEN2, CSR_HSTATEEN3, CSR_MSTATEEN0H, CSR_MSTATEEN1H,
	CSR_MSTATEEN2H, CSR_MSTATEEN3H, CSR_HSTATEEN0H, CSR_HSTATEEN1H,
	CSR_HSTATEEN2H, CSR_HSTATEEN3H): New CSR macros.
---
 bfd/elfxx-riscv.c                           |  1 +
 gas/config/tc-riscv.c                       |  9 +++
 gas/testsuite/gas/riscv/csr-dw-regnums.d    | 20 ++++++
 gas/testsuite/gas/riscv/csr-dw-regnums.s    | 21 ++++++
 gas/testsuite/gas/riscv/csr-version-1p10.d  | 40 ++++++++++++
 gas/testsuite/gas/riscv/csr-version-1p10.l  | 72 +++++++++++++++++++++
 gas/testsuite/gas/riscv/csr-version-1p11.d  | 40 ++++++++++++
 gas/testsuite/gas/riscv/csr-version-1p11.l  | 72 +++++++++++++++++++++
 gas/testsuite/gas/riscv/csr-version-1p12.d  | 40 ++++++++++++
 gas/testsuite/gas/riscv/csr-version-1p12.l  | 56 ++++++++++++++++
 gas/testsuite/gas/riscv/csr-version-1p9p1.d | 40 ++++++++++++
 gas/testsuite/gas/riscv/csr-version-1p9p1.l | 72 +++++++++++++++++++++
 gas/testsuite/gas/riscv/csr.s               | 22 +++++++
 include/opcode/riscv-opc.h                  | 42 ++++++++++++
 14 files changed, 547 insertions(+)

diff --git a/bfd/elfxx-riscv.c b/bfd/elfxx-riscv.c
index d74e7a584eb..00767b53475 100644
--- a/bfd/elfxx-riscv.c
+++ b/bfd/elfxx-riscv.c
@@ -1220,6 +1220,7 @@ static struct riscv_supported_ext riscv_supported_std_z_ext[] =
 
 static struct riscv_supported_ext riscv_supported_std_s_ext[] =
 {
+  {"smstateen",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
   {"svinval",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
   {NULL, 0, 0, 0, 0}
 };
diff --git a/gas/config/tc-riscv.c b/gas/config/tc-riscv.c
index 322e0f070ba..b640e7bf2f8 100644
--- a/gas/config/tc-riscv.c
+++ b/gas/config/tc-riscv.c
@@ -65,6 +65,8 @@ enum riscv_csr_class
   CSR_CLASS_F,		/* f-ext only */
   CSR_CLASS_ZKR,	/* zkr only */
   CSR_CLASS_V,		/* rvv only */
+  CSR_CLASS_SMSTATEEN,		/* Smstateen only */
+  CSR_CLASS_SMSTATEEN_32,	/* Smstateen RV32 only */
   CSR_CLASS_DEBUG	/* debug CSR */
 };
 
@@ -918,6 +920,13 @@ riscv_csr_address (const char *csr_name,
     case CSR_CLASS_V:
       extension = "v";
       break;
+    case CSR_CLASS_SMSTATEEN_32:
+      rv32_only = (xlen == 32);
+      /* Fall through.  */
+    case CSR_CLASS_SMSTATEEN:
+      need_check_version = true;
+      extension = "smstateen";
+      break;
     case CSR_CLASS_DEBUG:
       break;
     default:
diff --git a/gas/testsuite/gas/riscv/csr-dw-regnums.d b/gas/testsuite/gas/riscv/csr-dw-regnums.d
index 23ceba193ca..0c9ec6e4035 100644
--- a/gas/testsuite/gas/riscv/csr-dw-regnums.d
+++ b/gas/testsuite/gas/riscv/csr-dw-regnums.d
@@ -313,6 +313,26 @@ Contents of the .* section:
   DW_CFA_offset_extended_sf: r4675 \(vstval\) at cfa\+2316
   DW_CFA_offset_extended_sf: r4676 \(vsip\) at cfa\+2320
   DW_CFA_offset_extended_sf: r4736 \(vsatp\) at cfa\+2560
+  DW_CFA_offset_extended_sf: r4876 \(mstateen0\) at cfa\+3120
+  DW_CFA_offset_extended_sf: r4877 \(mstateen1\) at cfa\+3124
+  DW_CFA_offset_extended_sf: r4878 \(mstateen2\) at cfa\+3128
+  DW_CFA_offset_extended_sf: r4879 \(mstateen3\) at cfa\+3132
+  DW_CFA_offset_extended_sf: r4364 \(sstateen0\) at cfa\+1072
+  DW_CFA_offset_extended_sf: r4365 \(sstateen1\) at cfa\+1076
+  DW_CFA_offset_extended_sf: r4366 \(sstateen2\) at cfa\+1080
+  DW_CFA_offset_extended_sf: r4367 \(sstateen3\) at cfa\+1084
+  DW_CFA_offset_extended_sf: r5644 \(hstateen0\) at cfa\+6192
+  DW_CFA_offset_extended_sf: r5645 \(hstateen1\) at cfa\+6196
+  DW_CFA_offset_extended_sf: r5646 \(hstateen2\) at cfa\+6200
+  DW_CFA_offset_extended_sf: r5647 \(hstateen3\) at cfa\+6204
+  DW_CFA_offset_extended_sf: r4892 \(mstateen0h\) at cfa\+3184
+  DW_CFA_offset_extended_sf: r4893 \(mstateen1h\) at cfa\+3188
+  DW_CFA_offset_extended_sf: r4894 \(mstateen2h\) at cfa\+3192
+  DW_CFA_offset_extended_sf: r4895 \(mstateen3h\) at cfa\+3196
+  DW_CFA_offset_extended_sf: r5660 \(hstateen0h\) at cfa\+6256
+  DW_CFA_offset_extended_sf: r5661 \(hstateen1h\) at cfa\+6260
+  DW_CFA_offset_extended_sf: r5662 \(hstateen2h\) at cfa\+6264
+  DW_CFA_offset_extended_sf: r5663 \(hstateen3h\) at cfa\+6268
   DW_CFA_offset_extended_sf: r4163 \(utval\) at cfa\+268
   DW_CFA_offset_extended_sf: r4419 \(stval\) at cfa\+1292
   DW_CFA_offset_extended_sf: r4480 \(satp\) at cfa\+1536
diff --git a/gas/testsuite/gas/riscv/csr-dw-regnums.s b/gas/testsuite/gas/riscv/csr-dw-regnums.s
index 4a243ad7b0f..2afadac49f6 100644
--- a/gas/testsuite/gas/riscv/csr-dw-regnums.s
+++ b/gas/testsuite/gas/riscv/csr-dw-regnums.s
@@ -307,6 +307,27 @@ _start:
 	.cfi_offset vstval, 2316
 	.cfi_offset vsip, 2320
 	.cfi_offset vsatp, 2560
+	# Smstateen extension
+	.cfi_offset mstateen0, 3120
+	.cfi_offset mstateen1, 3124
+	.cfi_offset mstateen2, 3128
+	.cfi_offset mstateen3, 3132
+	.cfi_offset sstateen0, 1072
+	.cfi_offset sstateen1, 1076
+	.cfi_offset sstateen2, 1080
+	.cfi_offset sstateen3, 1084
+	.cfi_offset hstateen0, 6192
+	.cfi_offset hstateen1, 6196
+	.cfi_offset hstateen2, 6200
+	.cfi_offset hstateen3, 6204
+	.cfi_offset mstateen0h, 3184
+	.cfi_offset mstateen1h, 3188
+	.cfi_offset mstateen2h, 3192
+	.cfi_offset mstateen3h, 3196
+	.cfi_offset hstateen0h, 6256
+	.cfi_offset hstateen1h, 6260
+	.cfi_offset hstateen2h, 6264
+	.cfi_offset hstateen3h, 6268
 	# dropped
 	.cfi_offset ubadaddr, 268	# aliases
 	.cfi_offset sbadaddr, 1292	# aliases
diff --git a/gas/testsuite/gas/riscv/csr-version-1p10.d b/gas/testsuite/gas/riscv/csr-version-1p10.d
index 6e0d1f6c66a..7f9f5497428 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p10.d
+++ b/gas/testsuite/gas/riscv/csr-version-1p10.d
@@ -601,6 +601,46 @@ Disassembly of section .text:
 [ 	]+[0-9a-f]+:[ 	]+24459073[ 	]+csrw[ 	]+0x244,a1
 [ 	]+[0-9a-f]+:[ 	]+28002573[ 	]+csrr[ 	]+a0,0x280
 [ 	]+[0-9a-f]+:[ 	]+28059073[ 	]+csrw[ 	]+0x280,a1
+[ 	]+[0-9a-f]+:[ 	]+30c02573[ 	]+csrr[ 	]+a0,mstateen0
+[ 	]+[0-9a-f]+:[ 	]+30c59073[ 	]+csrw[ 	]+mstateen0,a1
+[ 	]+[0-9a-f]+:[ 	]+30d02573[ 	]+csrr[ 	]+a0,mstateen1
+[ 	]+[0-9a-f]+:[ 	]+30d59073[ 	]+csrw[ 	]+mstateen1,a1
+[ 	]+[0-9a-f]+:[ 	]+30e02573[ 	]+csrr[ 	]+a0,mstateen2
+[ 	]+[0-9a-f]+:[ 	]+30e59073[ 	]+csrw[ 	]+mstateen2,a1
+[ 	]+[0-9a-f]+:[ 	]+30f02573[ 	]+csrr[ 	]+a0,mstateen3
+[ 	]+[0-9a-f]+:[ 	]+30f59073[ 	]+csrw[ 	]+mstateen3,a1
+[ 	]+[0-9a-f]+:[ 	]+10c02573[ 	]+csrr[ 	]+a0,sstateen0
+[ 	]+[0-9a-f]+:[ 	]+10c59073[ 	]+csrw[ 	]+sstateen0,a1
+[ 	]+[0-9a-f]+:[ 	]+10d02573[ 	]+csrr[ 	]+a0,sstateen1
+[ 	]+[0-9a-f]+:[ 	]+10d59073[ 	]+csrw[ 	]+sstateen1,a1
+[ 	]+[0-9a-f]+:[ 	]+10e02573[ 	]+csrr[ 	]+a0,sstateen2
+[ 	]+[0-9a-f]+:[ 	]+10e59073[ 	]+csrw[ 	]+sstateen2,a1
+[ 	]+[0-9a-f]+:[ 	]+10f02573[ 	]+csrr[ 	]+a0,sstateen3
+[ 	]+[0-9a-f]+:[ 	]+10f59073[ 	]+csrw[ 	]+sstateen3,a1
+[ 	]+[0-9a-f]+:[ 	]+60c02573[ 	]+csrr[ 	]+a0,0x60c
+[ 	]+[0-9a-f]+:[ 	]+60c59073[ 	]+csrw[ 	]+0x60c,a1
+[ 	]+[0-9a-f]+:[ 	]+60d02573[ 	]+csrr[ 	]+a0,0x60d
+[ 	]+[0-9a-f]+:[ 	]+60d59073[ 	]+csrw[ 	]+0x60d,a1
+[ 	]+[0-9a-f]+:[ 	]+60e02573[ 	]+csrr[ 	]+a0,0x60e
+[ 	]+[0-9a-f]+:[ 	]+60e59073[ 	]+csrw[ 	]+0x60e,a1
+[ 	]+[0-9a-f]+:[ 	]+60f02573[ 	]+csrr[ 	]+a0,0x60f
+[ 	]+[0-9a-f]+:[ 	]+60f59073[ 	]+csrw[ 	]+0x60f,a1
+[ 	]+[0-9a-f]+:[ 	]+31c02573[ 	]+csrr[ 	]+a0,mstateen0h
+[ 	]+[0-9a-f]+:[ 	]+31c59073[ 	]+csrw[ 	]+mstateen0h,a1
+[ 	]+[0-9a-f]+:[ 	]+31d02573[ 	]+csrr[ 	]+a0,mstateen1h
+[ 	]+[0-9a-f]+:[ 	]+31d59073[ 	]+csrw[ 	]+mstateen1h,a1
+[ 	]+[0-9a-f]+:[ 	]+31e02573[ 	]+csrr[ 	]+a0,mstateen2h
+[ 	]+[0-9a-f]+:[ 	]+31e59073[ 	]+csrw[ 	]+mstateen2h,a1
+[ 	]+[0-9a-f]+:[ 	]+31f02573[ 	]+csrr[ 	]+a0,mstateen3h
+[ 	]+[0-9a-f]+:[ 	]+31f59073[ 	]+csrw[ 	]+mstateen3h,a1
+[ 	]+[0-9a-f]+:[ 	]+61c02573[ 	]+csrr[ 	]+a0,0x61c
+[ 	]+[0-9a-f]+:[ 	]+61c59073[ 	]+csrw[ 	]+0x61c,a1
+[ 	]+[0-9a-f]+:[ 	]+61d02573[ 	]+csrr[ 	]+a0,0x61d
+[ 	]+[0-9a-f]+:[ 	]+61d59073[ 	]+csrw[ 	]+0x61d,a1
+[ 	]+[0-9a-f]+:[ 	]+61e02573[ 	]+csrr[ 	]+a0,0x61e
+[ 	]+[0-9a-f]+:[ 	]+61e59073[ 	]+csrw[ 	]+0x61e,a1
+[ 	]+[0-9a-f]+:[ 	]+61f02573[ 	]+csrr[ 	]+a0,0x61f
+[ 	]+[0-9a-f]+:[ 	]+61f59073[ 	]+csrw[ 	]+0x61f,a1
 [ 	]+[0-9a-f]+:[ 	]+04302573[ 	]+csrr[ 	]+a0,utval
 [ 	]+[0-9a-f]+:[ 	]+04359073[ 	]+csrw[ 	]+utval,a1
 [ 	]+[0-9a-f]+:[ 	]+14302573[ 	]+csrr[ 	]+a0,stval
diff --git a/gas/testsuite/gas/riscv/csr-version-1p10.l b/gas/testsuite/gas/riscv/csr-version-1p10.l
index 2511feeafc8..ff23c010d18 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p10.l
+++ b/gas/testsuite/gas/riscv/csr-version-1p10.l
@@ -411,6 +411,78 @@
 .*Warning: invalid CSR `vsip' for the privileged spec `1.10'
 .*Warning: invalid CSR `vsatp' for the privileged spec `1.10'
 .*Warning: invalid CSR `vsatp' for the privileged spec `1.10'
+.*Warning: invalid CSR `mstateen0', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen0', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen1', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen1', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen2', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen2', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen3', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen3', needs `smstateen' extension
+.*Warning: invalid CSR `sstateen0', needs `smstateen' extension
+.*Warning: invalid CSR `sstateen0', needs `smstateen' extension
+.*Warning: invalid CSR `sstateen1', needs `smstateen' extension
+.*Warning: invalid CSR `sstateen1', needs `smstateen' extension
+.*Warning: invalid CSR `sstateen2', needs `smstateen' extension
+.*Warning: invalid CSR `sstateen2', needs `smstateen' extension
+.*Warning: invalid CSR `sstateen3', needs `smstateen' extension
+.*Warning: invalid CSR `sstateen3', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen0', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen0' for the privileged spec `1.10'
+.*Warning: invalid CSR `hstateen0', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen0' for the privileged spec `1.10'
+.*Warning: invalid CSR `hstateen1', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen1' for the privileged spec `1.10'
+.*Warning: invalid CSR `hstateen1', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen1' for the privileged spec `1.10'
+.*Warning: invalid CSR `hstateen2', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen2' for the privileged spec `1.10'
+.*Warning: invalid CSR `hstateen2', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen2' for the privileged spec `1.10'
+.*Warning: invalid CSR `hstateen3', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen3' for the privileged spec `1.10'
+.*Warning: invalid CSR `hstateen3', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen3' for the privileged spec `1.10'
+.*Warning: invalid CSR `mstateen0h', needs rv32i extension
+.*Warning: invalid CSR `mstateen0h', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen0h', needs rv32i extension
+.*Warning: invalid CSR `mstateen0h', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen1h', needs rv32i extension
+.*Warning: invalid CSR `mstateen1h', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen1h', needs rv32i extension
+.*Warning: invalid CSR `mstateen1h', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen2h', needs rv32i extension
+.*Warning: invalid CSR `mstateen2h', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen2h', needs rv32i extension
+.*Warning: invalid CSR `mstateen2h', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen3h', needs rv32i extension
+.*Warning: invalid CSR `mstateen3h', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen3h', needs rv32i extension
+.*Warning: invalid CSR `mstateen3h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen0h', needs rv32i extension
+.*Warning: invalid CSR `hstateen0h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen0h' for the privileged spec `1.10'
+.*Warning: invalid CSR `hstateen0h', needs rv32i extension
+.*Warning: invalid CSR `hstateen0h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen0h' for the privileged spec `1.10'
+.*Warning: invalid CSR `hstateen1h', needs rv32i extension
+.*Warning: invalid CSR `hstateen1h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen1h' for the privileged spec `1.10'
+.*Warning: invalid CSR `hstateen1h', needs rv32i extension
+.*Warning: invalid CSR `hstateen1h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen1h' for the privileged spec `1.10'
+.*Warning: invalid CSR `hstateen2h', needs rv32i extension
+.*Warning: invalid CSR `hstateen2h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen2h' for the privileged spec `1.10'
+.*Warning: invalid CSR `hstateen2h', needs rv32i extension
+.*Warning: invalid CSR `hstateen2h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen2h' for the privileged spec `1.10'
+.*Warning: invalid CSR `hstateen3h', needs rv32i extension
+.*Warning: invalid CSR `hstateen3h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen3h' for the privileged spec `1.10'
+.*Warning: invalid CSR `hstateen3h', needs rv32i extension
+.*Warning: invalid CSR `hstateen3h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen3h' for the privileged spec `1.10'
 .*Warning: invalid CSR `ubadaddr' for the privileged spec `1.10'
 .*Warning: invalid CSR `ubadaddr' for the privileged spec `1.10'
 .*Warning: invalid CSR `sbadaddr' for the privileged spec `1.10'
diff --git a/gas/testsuite/gas/riscv/csr-version-1p11.d b/gas/testsuite/gas/riscv/csr-version-1p11.d
index 0c9166555a4..6e85a7e2d4d 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p11.d
+++ b/gas/testsuite/gas/riscv/csr-version-1p11.d
@@ -601,6 +601,46 @@ Disassembly of section .text:
 [ 	]+[0-9a-f]+:[ 	]+24459073[ 	]+csrw[ 	]+0x244,a1
 [ 	]+[0-9a-f]+:[ 	]+28002573[ 	]+csrr[ 	]+a0,0x280
 [ 	]+[0-9a-f]+:[ 	]+28059073[ 	]+csrw[ 	]+0x280,a1
+[ 	]+[0-9a-f]+:[ 	]+30c02573[ 	]+csrr[ 	]+a0,mstateen0
+[ 	]+[0-9a-f]+:[ 	]+30c59073[ 	]+csrw[ 	]+mstateen0,a1
+[ 	]+[0-9a-f]+:[ 	]+30d02573[ 	]+csrr[ 	]+a0,mstateen1
+[ 	]+[0-9a-f]+:[ 	]+30d59073[ 	]+csrw[ 	]+mstateen1,a1
+[ 	]+[0-9a-f]+:[ 	]+30e02573[ 	]+csrr[ 	]+a0,mstateen2
+[ 	]+[0-9a-f]+:[ 	]+30e59073[ 	]+csrw[ 	]+mstateen2,a1
+[ 	]+[0-9a-f]+:[ 	]+30f02573[ 	]+csrr[ 	]+a0,mstateen3
+[ 	]+[0-9a-f]+:[ 	]+30f59073[ 	]+csrw[ 	]+mstateen3,a1
+[ 	]+[0-9a-f]+:[ 	]+10c02573[ 	]+csrr[ 	]+a0,sstateen0
+[ 	]+[0-9a-f]+:[ 	]+10c59073[ 	]+csrw[ 	]+sstateen0,a1
+[ 	]+[0-9a-f]+:[ 	]+10d02573[ 	]+csrr[ 	]+a0,sstateen1
+[ 	]+[0-9a-f]+:[ 	]+10d59073[ 	]+csrw[ 	]+sstateen1,a1
+[ 	]+[0-9a-f]+:[ 	]+10e02573[ 	]+csrr[ 	]+a0,sstateen2
+[ 	]+[0-9a-f]+:[ 	]+10e59073[ 	]+csrw[ 	]+sstateen2,a1
+[ 	]+[0-9a-f]+:[ 	]+10f02573[ 	]+csrr[ 	]+a0,sstateen3
+[ 	]+[0-9a-f]+:[ 	]+10f59073[ 	]+csrw[ 	]+sstateen3,a1
+[ 	]+[0-9a-f]+:[ 	]+60c02573[ 	]+csrr[ 	]+a0,0x60c
+[ 	]+[0-9a-f]+:[ 	]+60c59073[ 	]+csrw[ 	]+0x60c,a1
+[ 	]+[0-9a-f]+:[ 	]+60d02573[ 	]+csrr[ 	]+a0,0x60d
+[ 	]+[0-9a-f]+:[ 	]+60d59073[ 	]+csrw[ 	]+0x60d,a1
+[ 	]+[0-9a-f]+:[ 	]+60e02573[ 	]+csrr[ 	]+a0,0x60e
+[ 	]+[0-9a-f]+:[ 	]+60e59073[ 	]+csrw[ 	]+0x60e,a1
+[ 	]+[0-9a-f]+:[ 	]+60f02573[ 	]+csrr[ 	]+a0,0x60f
+[ 	]+[0-9a-f]+:[ 	]+60f59073[ 	]+csrw[ 	]+0x60f,a1
+[ 	]+[0-9a-f]+:[ 	]+31c02573[ 	]+csrr[ 	]+a0,mstateen0h
+[ 	]+[0-9a-f]+:[ 	]+31c59073[ 	]+csrw[ 	]+mstateen0h,a1
+[ 	]+[0-9a-f]+:[ 	]+31d02573[ 	]+csrr[ 	]+a0,mstateen1h
+[ 	]+[0-9a-f]+:[ 	]+31d59073[ 	]+csrw[ 	]+mstateen1h,a1
+[ 	]+[0-9a-f]+:[ 	]+31e02573[ 	]+csrr[ 	]+a0,mstateen2h
+[ 	]+[0-9a-f]+:[ 	]+31e59073[ 	]+csrw[ 	]+mstateen2h,a1
+[ 	]+[0-9a-f]+:[ 	]+31f02573[ 	]+csrr[ 	]+a0,mstateen3h
+[ 	]+[0-9a-f]+:[ 	]+31f59073[ 	]+csrw[ 	]+mstateen3h,a1
+[ 	]+[0-9a-f]+:[ 	]+61c02573[ 	]+csrr[ 	]+a0,0x61c
+[ 	]+[0-9a-f]+:[ 	]+61c59073[ 	]+csrw[ 	]+0x61c,a1
+[ 	]+[0-9a-f]+:[ 	]+61d02573[ 	]+csrr[ 	]+a0,0x61d
+[ 	]+[0-9a-f]+:[ 	]+61d59073[ 	]+csrw[ 	]+0x61d,a1
+[ 	]+[0-9a-f]+:[ 	]+61e02573[ 	]+csrr[ 	]+a0,0x61e
+[ 	]+[0-9a-f]+:[ 	]+61e59073[ 	]+csrw[ 	]+0x61e,a1
+[ 	]+[0-9a-f]+:[ 	]+61f02573[ 	]+csrr[ 	]+a0,0x61f
+[ 	]+[0-9a-f]+:[ 	]+61f59073[ 	]+csrw[ 	]+0x61f,a1
 [ 	]+[0-9a-f]+:[ 	]+04302573[ 	]+csrr[ 	]+a0,utval
 [ 	]+[0-9a-f]+:[ 	]+04359073[ 	]+csrw[ 	]+utval,a1
 [ 	]+[0-9a-f]+:[ 	]+14302573[ 	]+csrr[ 	]+a0,stval
diff --git a/gas/testsuite/gas/riscv/csr-version-1p11.l b/gas/testsuite/gas/riscv/csr-version-1p11.l
index 570efe25cb7..3a767cbcadf 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p11.l
+++ b/gas/testsuite/gas/riscv/csr-version-1p11.l
@@ -409,6 +409,78 @@
 .*Warning: invalid CSR `vsip' for the privileged spec `1.11'
 .*Warning: invalid CSR `vsatp' for the privileged spec `1.11'
 .*Warning: invalid CSR `vsatp' for the privileged spec `1.11'
+.*Warning: invalid CSR `mstateen0', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen0', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen1', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen1', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen2', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen2', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen3', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen3', needs `smstateen' extension
+.*Warning: invalid CSR `sstateen0', needs `smstateen' extension
+.*Warning: invalid CSR `sstateen0', needs `smstateen' extension
+.*Warning: invalid CSR `sstateen1', needs `smstateen' extension
+.*Warning: invalid CSR `sstateen1', needs `smstateen' extension
+.*Warning: invalid CSR `sstateen2', needs `smstateen' extension
+.*Warning: invalid CSR `sstateen2', needs `smstateen' extension
+.*Warning: invalid CSR `sstateen3', needs `smstateen' extension
+.*Warning: invalid CSR `sstateen3', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen0', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen0' for the privileged spec `1.11'
+.*Warning: invalid CSR `hstateen0', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen0' for the privileged spec `1.11'
+.*Warning: invalid CSR `hstateen1', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen1' for the privileged spec `1.11'
+.*Warning: invalid CSR `hstateen1', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen1' for the privileged spec `1.11'
+.*Warning: invalid CSR `hstateen2', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen2' for the privileged spec `1.11'
+.*Warning: invalid CSR `hstateen2', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen2' for the privileged spec `1.11'
+.*Warning: invalid CSR `hstateen3', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen3' for the privileged spec `1.11'
+.*Warning: invalid CSR `hstateen3', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen3' for the privileged spec `1.11'
+.*Warning: invalid CSR `mstateen0h', needs rv32i extension
+.*Warning: invalid CSR `mstateen0h', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen0h', needs rv32i extension
+.*Warning: invalid CSR `mstateen0h', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen1h', needs rv32i extension
+.*Warning: invalid CSR `mstateen1h', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen1h', needs rv32i extension
+.*Warning: invalid CSR `mstateen1h', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen2h', needs rv32i extension
+.*Warning: invalid CSR `mstateen2h', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen2h', needs rv32i extension
+.*Warning: invalid CSR `mstateen2h', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen3h', needs rv32i extension
+.*Warning: invalid CSR `mstateen3h', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen3h', needs rv32i extension
+.*Warning: invalid CSR `mstateen3h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen0h', needs rv32i extension
+.*Warning: invalid CSR `hstateen0h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen0h' for the privileged spec `1.11'
+.*Warning: invalid CSR `hstateen0h', needs rv32i extension
+.*Warning: invalid CSR `hstateen0h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen0h' for the privileged spec `1.11'
+.*Warning: invalid CSR `hstateen1h', needs rv32i extension
+.*Warning: invalid CSR `hstateen1h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen1h' for the privileged spec `1.11'
+.*Warning: invalid CSR `hstateen1h', needs rv32i extension
+.*Warning: invalid CSR `hstateen1h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen1h' for the privileged spec `1.11'
+.*Warning: invalid CSR `hstateen2h', needs rv32i extension
+.*Warning: invalid CSR `hstateen2h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen2h' for the privileged spec `1.11'
+.*Warning: invalid CSR `hstateen2h', needs rv32i extension
+.*Warning: invalid CSR `hstateen2h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen2h' for the privileged spec `1.11'
+.*Warning: invalid CSR `hstateen3h', needs rv32i extension
+.*Warning: invalid CSR `hstateen3h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen3h' for the privileged spec `1.11'
+.*Warning: invalid CSR `hstateen3h', needs rv32i extension
+.*Warning: invalid CSR `hstateen3h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen3h' for the privileged spec `1.11'
 .*Warning: invalid CSR `ubadaddr' for the privileged spec `1.11'
 .*Warning: invalid CSR `ubadaddr' for the privileged spec `1.11'
 .*Warning: invalid CSR `sbadaddr' for the privileged spec `1.11'
diff --git a/gas/testsuite/gas/riscv/csr-version-1p12.d b/gas/testsuite/gas/riscv/csr-version-1p12.d
index 3c27ca2de20..46ca519b31e 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p12.d
+++ b/gas/testsuite/gas/riscv/csr-version-1p12.d
@@ -601,6 +601,46 @@ Disassembly of section .text:
 [ 	]+[0-9a-f]+:[ 	]+24459073[ 	]+csrw[ 	]+vsip,a1
 [ 	]+[0-9a-f]+:[ 	]+28002573[ 	]+csrr[ 	]+a0,vsatp
 [ 	]+[0-9a-f]+:[ 	]+28059073[ 	]+csrw[ 	]+vsatp,a1
+[ 	]+[0-9a-f]+:[ 	]+30c02573[ 	]+csrr[ 	]+a0,mstateen0
+[ 	]+[0-9a-f]+:[ 	]+30c59073[ 	]+csrw[ 	]+mstateen0,a1
+[ 	]+[0-9a-f]+:[ 	]+30d02573[ 	]+csrr[ 	]+a0,mstateen1
+[ 	]+[0-9a-f]+:[ 	]+30d59073[ 	]+csrw[ 	]+mstateen1,a1
+[ 	]+[0-9a-f]+:[ 	]+30e02573[ 	]+csrr[ 	]+a0,mstateen2
+[ 	]+[0-9a-f]+:[ 	]+30e59073[ 	]+csrw[ 	]+mstateen2,a1
+[ 	]+[0-9a-f]+:[ 	]+30f02573[ 	]+csrr[ 	]+a0,mstateen3
+[ 	]+[0-9a-f]+:[ 	]+30f59073[ 	]+csrw[ 	]+mstateen3,a1
+[ 	]+[0-9a-f]+:[ 	]+10c02573[ 	]+csrr[ 	]+a0,sstateen0
+[ 	]+[0-9a-f]+:[ 	]+10c59073[ 	]+csrw[ 	]+sstateen0,a1
+[ 	]+[0-9a-f]+:[ 	]+10d02573[ 	]+csrr[ 	]+a0,sstateen1
+[ 	]+[0-9a-f]+:[ 	]+10d59073[ 	]+csrw[ 	]+sstateen1,a1
+[ 	]+[0-9a-f]+:[ 	]+10e02573[ 	]+csrr[ 	]+a0,sstateen2
+[ 	]+[0-9a-f]+:[ 	]+10e59073[ 	]+csrw[ 	]+sstateen2,a1
+[ 	]+[0-9a-f]+:[ 	]+10f02573[ 	]+csrr[ 	]+a0,sstateen3
+[ 	]+[0-9a-f]+:[ 	]+10f59073[ 	]+csrw[ 	]+sstateen3,a1
+[ 	]+[0-9a-f]+:[ 	]+60c02573[ 	]+csrr[ 	]+a0,hstateen0
+[ 	]+[0-9a-f]+:[ 	]+60c59073[ 	]+csrw[ 	]+hstateen0,a1
+[ 	]+[0-9a-f]+:[ 	]+60d02573[ 	]+csrr[ 	]+a0,hstateen1
+[ 	]+[0-9a-f]+:[ 	]+60d59073[ 	]+csrw[ 	]+hstateen1,a1
+[ 	]+[0-9a-f]+:[ 	]+60e02573[ 	]+csrr[ 	]+a0,hstateen2
+[ 	]+[0-9a-f]+:[ 	]+60e59073[ 	]+csrw[ 	]+hstateen2,a1
+[ 	]+[0-9a-f]+:[ 	]+60f02573[ 	]+csrr[ 	]+a0,hstateen3
+[ 	]+[0-9a-f]+:[ 	]+60f59073[ 	]+csrw[ 	]+hstateen3,a1
+[ 	]+[0-9a-f]+:[ 	]+31c02573[ 	]+csrr[ 	]+a0,mstateen0h
+[ 	]+[0-9a-f]+:[ 	]+31c59073[ 	]+csrw[ 	]+mstateen0h,a1
+[ 	]+[0-9a-f]+:[ 	]+31d02573[ 	]+csrr[ 	]+a0,mstateen1h
+[ 	]+[0-9a-f]+:[ 	]+31d59073[ 	]+csrw[ 	]+mstateen1h,a1
+[ 	]+[0-9a-f]+:[ 	]+31e02573[ 	]+csrr[ 	]+a0,mstateen2h
+[ 	]+[0-9a-f]+:[ 	]+31e59073[ 	]+csrw[ 	]+mstateen2h,a1
+[ 	]+[0-9a-f]+:[ 	]+31f02573[ 	]+csrr[ 	]+a0,mstateen3h
+[ 	]+[0-9a-f]+:[ 	]+31f59073[ 	]+csrw[ 	]+mstateen3h,a1
+[ 	]+[0-9a-f]+:[ 	]+61c02573[ 	]+csrr[ 	]+a0,hstateen0h
+[ 	]+[0-9a-f]+:[ 	]+61c59073[ 	]+csrw[ 	]+hstateen0h,a1
+[ 	]+[0-9a-f]+:[ 	]+61d02573[ 	]+csrr[ 	]+a0,hstateen1h
+[ 	]+[0-9a-f]+:[ 	]+61d59073[ 	]+csrw[ 	]+hstateen1h,a1
+[ 	]+[0-9a-f]+:[ 	]+61e02573[ 	]+csrr[ 	]+a0,hstateen2h
+[ 	]+[0-9a-f]+:[ 	]+61e59073[ 	]+csrw[ 	]+hstateen2h,a1
+[ 	]+[0-9a-f]+:[ 	]+61f02573[ 	]+csrr[ 	]+a0,hstateen3h
+[ 	]+[0-9a-f]+:[ 	]+61f59073[ 	]+csrw[ 	]+hstateen3h,a1
 [ 	]+[0-9a-f]+:[ 	]+04302573[ 	]+csrr[ 	]+a0,0x43
 [ 	]+[0-9a-f]+:[ 	]+04359073[ 	]+csrw[ 	]+0x43,a1
 [ 	]+[0-9a-f]+:[ 	]+14302573[ 	]+csrr[ 	]+a0,stval
diff --git a/gas/testsuite/gas/riscv/csr-version-1p12.l b/gas/testsuite/gas/riscv/csr-version-1p12.l
index 03d193cd50e..b23a705f88a 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p12.l
+++ b/gas/testsuite/gas/riscv/csr-version-1p12.l
@@ -221,6 +221,62 @@
 .*Warning: invalid CSR `henvcfgh', needs rv32i extension
 .*Warning: invalid CSR `htimedeltah', needs rv32i extension
 .*Warning: invalid CSR `htimedeltah', needs rv32i extension
+.*Warning: invalid CSR `mstateen0', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen0', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen1', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen1', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen2', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen2', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen3', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen3', needs `smstateen' extension
+.*Warning: invalid CSR `sstateen0', needs `smstateen' extension
+.*Warning: invalid CSR `sstateen0', needs `smstateen' extension
+.*Warning: invalid CSR `sstateen1', needs `smstateen' extension
+.*Warning: invalid CSR `sstateen1', needs `smstateen' extension
+.*Warning: invalid CSR `sstateen2', needs `smstateen' extension
+.*Warning: invalid CSR `sstateen2', needs `smstateen' extension
+.*Warning: invalid CSR `sstateen3', needs `smstateen' extension
+.*Warning: invalid CSR `sstateen3', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen0', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen0', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen1', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen1', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen2', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen2', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen3', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen3', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen0h', needs rv32i extension
+.*Warning: invalid CSR `mstateen0h', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen0h', needs rv32i extension
+.*Warning: invalid CSR `mstateen0h', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen1h', needs rv32i extension
+.*Warning: invalid CSR `mstateen1h', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen1h', needs rv32i extension
+.*Warning: invalid CSR `mstateen1h', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen2h', needs rv32i extension
+.*Warning: invalid CSR `mstateen2h', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen2h', needs rv32i extension
+.*Warning: invalid CSR `mstateen2h', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen3h', needs rv32i extension
+.*Warning: invalid CSR `mstateen3h', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen3h', needs rv32i extension
+.*Warning: invalid CSR `mstateen3h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen0h', needs rv32i extension
+.*Warning: invalid CSR `hstateen0h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen0h', needs rv32i extension
+.*Warning: invalid CSR `hstateen0h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen1h', needs rv32i extension
+.*Warning: invalid CSR `hstateen1h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen1h', needs rv32i extension
+.*Warning: invalid CSR `hstateen1h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen2h', needs rv32i extension
+.*Warning: invalid CSR `hstateen2h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen2h', needs rv32i extension
+.*Warning: invalid CSR `hstateen2h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen3h', needs rv32i extension
+.*Warning: invalid CSR `hstateen3h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen3h', needs rv32i extension
+.*Warning: invalid CSR `hstateen3h', needs `smstateen' extension
 .*Warning: invalid CSR `ubadaddr' for the privileged spec `1.12'
 .*Warning: invalid CSR `ubadaddr' for the privileged spec `1.12'
 .*Warning: invalid CSR `sbadaddr' for the privileged spec `1.12'
diff --git a/gas/testsuite/gas/riscv/csr-version-1p9p1.d b/gas/testsuite/gas/riscv/csr-version-1p9p1.d
index d0841df5aba..a593182b168 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p9p1.d
+++ b/gas/testsuite/gas/riscv/csr-version-1p9p1.d
@@ -601,6 +601,46 @@ Disassembly of section .text:
 [ 	]+[0-9a-f]+:[ 	]+24459073[ 	]+csrw[ 	]+0x244,a1
 [ 	]+[0-9a-f]+:[ 	]+28002573[ 	]+csrr[ 	]+a0,0x280
 [ 	]+[0-9a-f]+:[ 	]+28059073[ 	]+csrw[ 	]+0x280,a1
+[ 	]+[0-9a-f]+:[ 	]+30c02573[ 	]+csrr[ 	]+a0,mstateen0
+[ 	]+[0-9a-f]+:[ 	]+30c59073[ 	]+csrw[ 	]+mstateen0,a1
+[ 	]+[0-9a-f]+:[ 	]+30d02573[ 	]+csrr[ 	]+a0,mstateen1
+[ 	]+[0-9a-f]+:[ 	]+30d59073[ 	]+csrw[ 	]+mstateen1,a1
+[ 	]+[0-9a-f]+:[ 	]+30e02573[ 	]+csrr[ 	]+a0,mstateen2
+[ 	]+[0-9a-f]+:[ 	]+30e59073[ 	]+csrw[ 	]+mstateen2,a1
+[ 	]+[0-9a-f]+:[ 	]+30f02573[ 	]+csrr[ 	]+a0,mstateen3
+[ 	]+[0-9a-f]+:[ 	]+30f59073[ 	]+csrw[ 	]+mstateen3,a1
+[ 	]+[0-9a-f]+:[ 	]+10c02573[ 	]+csrr[ 	]+a0,sstateen0
+[ 	]+[0-9a-f]+:[ 	]+10c59073[ 	]+csrw[ 	]+sstateen0,a1
+[ 	]+[0-9a-f]+:[ 	]+10d02573[ 	]+csrr[ 	]+a0,sstateen1
+[ 	]+[0-9a-f]+:[ 	]+10d59073[ 	]+csrw[ 	]+sstateen1,a1
+[ 	]+[0-9a-f]+:[ 	]+10e02573[ 	]+csrr[ 	]+a0,sstateen2
+[ 	]+[0-9a-f]+:[ 	]+10e59073[ 	]+csrw[ 	]+sstateen2,a1
+[ 	]+[0-9a-f]+:[ 	]+10f02573[ 	]+csrr[ 	]+a0,sstateen3
+[ 	]+[0-9a-f]+:[ 	]+10f59073[ 	]+csrw[ 	]+sstateen3,a1
+[ 	]+[0-9a-f]+:[ 	]+60c02573[ 	]+csrr[ 	]+a0,0x60c
+[ 	]+[0-9a-f]+:[ 	]+60c59073[ 	]+csrw[ 	]+0x60c,a1
+[ 	]+[0-9a-f]+:[ 	]+60d02573[ 	]+csrr[ 	]+a0,0x60d
+[ 	]+[0-9a-f]+:[ 	]+60d59073[ 	]+csrw[ 	]+0x60d,a1
+[ 	]+[0-9a-f]+:[ 	]+60e02573[ 	]+csrr[ 	]+a0,0x60e
+[ 	]+[0-9a-f]+:[ 	]+60e59073[ 	]+csrw[ 	]+0x60e,a1
+[ 	]+[0-9a-f]+:[ 	]+60f02573[ 	]+csrr[ 	]+a0,0x60f
+[ 	]+[0-9a-f]+:[ 	]+60f59073[ 	]+csrw[ 	]+0x60f,a1
+[ 	]+[0-9a-f]+:[ 	]+31c02573[ 	]+csrr[ 	]+a0,mstateen0h
+[ 	]+[0-9a-f]+:[ 	]+31c59073[ 	]+csrw[ 	]+mstateen0h,a1
+[ 	]+[0-9a-f]+:[ 	]+31d02573[ 	]+csrr[ 	]+a0,mstateen1h
+[ 	]+[0-9a-f]+:[ 	]+31d59073[ 	]+csrw[ 	]+mstateen1h,a1
+[ 	]+[0-9a-f]+:[ 	]+31e02573[ 	]+csrr[ 	]+a0,mstateen2h
+[ 	]+[0-9a-f]+:[ 	]+31e59073[ 	]+csrw[ 	]+mstateen2h,a1
+[ 	]+[0-9a-f]+:[ 	]+31f02573[ 	]+csrr[ 	]+a0,mstateen3h
+[ 	]+[0-9a-f]+:[ 	]+31f59073[ 	]+csrw[ 	]+mstateen3h,a1
+[ 	]+[0-9a-f]+:[ 	]+61c02573[ 	]+csrr[ 	]+a0,0x61c
+[ 	]+[0-9a-f]+:[ 	]+61c59073[ 	]+csrw[ 	]+0x61c,a1
+[ 	]+[0-9a-f]+:[ 	]+61d02573[ 	]+csrr[ 	]+a0,0x61d
+[ 	]+[0-9a-f]+:[ 	]+61d59073[ 	]+csrw[ 	]+0x61d,a1
+[ 	]+[0-9a-f]+:[ 	]+61e02573[ 	]+csrr[ 	]+a0,0x61e
+[ 	]+[0-9a-f]+:[ 	]+61e59073[ 	]+csrw[ 	]+0x61e,a1
+[ 	]+[0-9a-f]+:[ 	]+61f02573[ 	]+csrr[ 	]+a0,0x61f
+[ 	]+[0-9a-f]+:[ 	]+61f59073[ 	]+csrw[ 	]+0x61f,a1
 [ 	]+[0-9a-f]+:[ 	]+04302573[ 	]+csrr[ 	]+a0,ubadaddr
 [ 	]+[0-9a-f]+:[ 	]+04359073[ 	]+csrw[ 	]+ubadaddr,a1
 [ 	]+[0-9a-f]+:[ 	]+14302573[ 	]+csrr[ 	]+a0,sbadaddr
diff --git a/gas/testsuite/gas/riscv/csr-version-1p9p1.l b/gas/testsuite/gas/riscv/csr-version-1p9p1.l
index 340216e5ca7..75eda35d2ce 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p9p1.l
+++ b/gas/testsuite/gas/riscv/csr-version-1p9p1.l
@@ -461,6 +461,78 @@
 .*Warning: invalid CSR `vsip' for the privileged spec `1.9.1'
 .*Warning: invalid CSR `vsatp' for the privileged spec `1.9.1'
 .*Warning: invalid CSR `vsatp' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mstateen0', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen0', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen1', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen1', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen2', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen2', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen3', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen3', needs `smstateen' extension
+.*Warning: invalid CSR `sstateen0', needs `smstateen' extension
+.*Warning: invalid CSR `sstateen0', needs `smstateen' extension
+.*Warning: invalid CSR `sstateen1', needs `smstateen' extension
+.*Warning: invalid CSR `sstateen1', needs `smstateen' extension
+.*Warning: invalid CSR `sstateen2', needs `smstateen' extension
+.*Warning: invalid CSR `sstateen2', needs `smstateen' extension
+.*Warning: invalid CSR `sstateen3', needs `smstateen' extension
+.*Warning: invalid CSR `sstateen3', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen0', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen0' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `hstateen0', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen0' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `hstateen1', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen1' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `hstateen1', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen1' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `hstateen2', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen2' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `hstateen2', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen2' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `hstateen3', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen3' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `hstateen3', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen3' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mstateen0h', needs rv32i extension
+.*Warning: invalid CSR `mstateen0h', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen0h', needs rv32i extension
+.*Warning: invalid CSR `mstateen0h', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen1h', needs rv32i extension
+.*Warning: invalid CSR `mstateen1h', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen1h', needs rv32i extension
+.*Warning: invalid CSR `mstateen1h', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen2h', needs rv32i extension
+.*Warning: invalid CSR `mstateen2h', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen2h', needs rv32i extension
+.*Warning: invalid CSR `mstateen2h', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen3h', needs rv32i extension
+.*Warning: invalid CSR `mstateen3h', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen3h', needs rv32i extension
+.*Warning: invalid CSR `mstateen3h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen0h', needs rv32i extension
+.*Warning: invalid CSR `hstateen0h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen0h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `hstateen0h', needs rv32i extension
+.*Warning: invalid CSR `hstateen0h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen0h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `hstateen1h', needs rv32i extension
+.*Warning: invalid CSR `hstateen1h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen1h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `hstateen1h', needs rv32i extension
+.*Warning: invalid CSR `hstateen1h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen1h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `hstateen2h', needs rv32i extension
+.*Warning: invalid CSR `hstateen2h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen2h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `hstateen2h', needs rv32i extension
+.*Warning: invalid CSR `hstateen2h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen2h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `hstateen3h', needs rv32i extension
+.*Warning: invalid CSR `hstateen3h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen3h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `hstateen3h', needs rv32i extension
+.*Warning: invalid CSR `hstateen3h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen3h' for the privileged spec `1.9.1'
 .*Warning: invalid CSR `utval' for the privileged spec `1.9.1'
 .*Warning: invalid CSR `utval' for the privileged spec `1.9.1'
 .*Warning: invalid CSR `fflags', needs `f' extension
diff --git a/gas/testsuite/gas/riscv/csr.s b/gas/testsuite/gas/riscv/csr.s
index 0d0ec712c15..1a4a2be2c0f 100644
--- a/gas/testsuite/gas/riscv/csr.s
+++ b/gas/testsuite/gas/riscv/csr.s
@@ -337,6 +337,28 @@
 	csr vsip
 	csr vsatp
 
+	# Smstateen extension
+	csr mstateen0
+	csr mstateen1
+	csr mstateen2
+	csr mstateen3
+	csr sstateen0
+	csr sstateen1
+	csr sstateen2
+	csr sstateen3
+	csr hstateen0
+	csr hstateen1
+	csr hstateen2
+	csr hstateen3
+	csr mstateen0h
+	csr mstateen1h
+	csr mstateen2h
+	csr mstateen3h
+	csr hstateen0h
+	csr hstateen1h
+	csr hstateen2h
+	csr hstateen3h
+
 	# Supported in previous priv spec, but dropped now
 
 	csr ubadaddr		# 0x043 in 1.9.1, but the value is utval since 1.10
diff --git a/include/opcode/riscv-opc.h b/include/opcode/riscv-opc.h
index 01cd3a4e9dd..badfd48efdc 100644
--- a/include/opcode/riscv-opc.h
+++ b/include/opcode/riscv-opc.h
@@ -2348,6 +2348,27 @@
 #define CSR_UIP 0x44
 #define CSR_SEDELEG 0x102
 #define CSR_SIDELEG 0x103
+/* Smstateen extension */
+#define CSR_MSTATEEN0 0x30c
+#define CSR_MSTATEEN1 0x30d
+#define CSR_MSTATEEN2 0x30e
+#define CSR_MSTATEEN3 0x30f
+#define CSR_SSTATEEN0 0x10c
+#define CSR_SSTATEEN1 0x10d
+#define CSR_SSTATEEN2 0x10e
+#define CSR_SSTATEEN3 0x10f
+#define CSR_HSTATEEN0 0x60c
+#define CSR_HSTATEEN1 0x60d
+#define CSR_HSTATEEN2 0x60e
+#define CSR_HSTATEEN3 0x60f
+#define CSR_MSTATEEN0H 0x31c
+#define CSR_MSTATEEN1H 0x31d
+#define CSR_MSTATEEN2H 0x31e
+#define CSR_MSTATEEN3H 0x31f
+#define CSR_HSTATEEN0H 0x61c
+#define CSR_HSTATEEN1H 0x61d
+#define CSR_HSTATEEN2H 0x61e
+#define CSR_HSTATEEN3H 0x61f
 /* Unprivileged Floating-Point CSR addresses.  */
 #define CSR_FFLAGS 0x1
 #define CSR_FRM 0x2
@@ -3006,6 +3027,27 @@ DECLARE_CSR(vscause, CSR_VSCAUSE, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_C
 DECLARE_CSR(vstval, CSR_VSTVAL, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
 DECLARE_CSR(vsip, CSR_VSIP, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
 DECLARE_CSR(vsatp, CSR_VSATP, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
+/* Smstateen extension */
+DECLARE_CSR(mstateen0, CSR_MSTATEEN0, CSR_CLASS_SMSTATEEN, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mstateen1, CSR_MSTATEEN1, CSR_CLASS_SMSTATEEN, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mstateen2, CSR_MSTATEEN2, CSR_CLASS_SMSTATEEN, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mstateen3, CSR_MSTATEEN3, CSR_CLASS_SMSTATEEN, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(sstateen0, CSR_SSTATEEN0, CSR_CLASS_SMSTATEEN, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(sstateen1, CSR_SSTATEEN1, CSR_CLASS_SMSTATEEN, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(sstateen2, CSR_SSTATEEN2, CSR_CLASS_SMSTATEEN, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(sstateen3, CSR_SSTATEEN3, CSR_CLASS_SMSTATEEN, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(hstateen0, CSR_HSTATEEN0, CSR_CLASS_SMSTATEEN, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(hstateen1, CSR_HSTATEEN1, CSR_CLASS_SMSTATEEN, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(hstateen2, CSR_HSTATEEN2, CSR_CLASS_SMSTATEEN, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(hstateen3, CSR_HSTATEEN3, CSR_CLASS_SMSTATEEN, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mstateen0h, CSR_MSTATEEN0H, CSR_CLASS_SMSTATEEN_32, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mstateen1h, CSR_MSTATEEN1H, CSR_CLASS_SMSTATEEN_32, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mstateen2h, CSR_MSTATEEN2H, CSR_CLASS_SMSTATEEN_32, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mstateen3h, CSR_MSTATEEN3H, CSR_CLASS_SMSTATEEN_32, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(hstateen0h, CSR_HSTATEEN0H, CSR_CLASS_SMSTATEEN_32, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(hstateen1h, CSR_HSTATEEN1H, CSR_CLASS_SMSTATEEN_32, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(hstateen2h, CSR_HSTATEEN2H, CSR_CLASS_SMSTATEEN_32, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(hstateen3h, CSR_HSTATEEN3H, CSR_CLASS_SMSTATEEN_32, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
 /* Dropped CSRs.  */
 DECLARE_CSR(mbase, CSR_MBASE, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_1P10)
 DECLARE_CSR(mbound, CSR_MBOUND, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_1P10)
-- 
2.32.0


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

* [PATCH 2/3] RISC-V: Add 'Sscofpmf' extension with its CSRs
  2022-02-24 12:10 ` [PATCH 0/3] RISC-V: Add CSRs for several supervisor extensions Tsukasa OI
  2022-02-24 12:10   ` [PATCH 1/3] RISC-V: Add 'Smstateen' extension and its CSRs Tsukasa OI
@ 2022-02-24 12:10   ` Tsukasa OI
  2022-02-24 12:10   ` [PATCH 3/3] RISC-V: Add 'Sstc' extension and " Tsukasa OI
  2022-05-24  9:35   ` [PATCH v2 0/3] RISC-V: Add CSRs for several supervisor extensions Tsukasa OI
  3 siblings, 0 replies; 32+ messages in thread
From: Tsukasa OI @ 2022-02-24 12:10 UTC (permalink / raw)
  To: Tsukasa OI, Nelson Chu; +Cc: binutils

This commit adds Count Overflow and Mode-Based Filtering Extension
(Sscofpmf) and its CSRs.

bfd/ChangeLog:

	* elfxx-riscv.c (riscv_supported_std_s_ext): Add 'Sscofpmf'
	extension to valid 'S' extension list.

gas/ChangeLog:

	* config/tc-riscv.c (enum riscv_csr_class): Add CSR classes for
	'Sscofpmf' extension. (riscv_csr_address): Add handling for new
	CSR classes.
	* testsuite/gas/riscv/csr-dw-regnums.s: Add new CSRs.
	* testsuite/gas/riscv/csr-dw-regnums.d: 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_SCOUNTOVF, CSR_MHPMEVENT3H,
	CSR_MHPMEVENT4H, CSR_MHPMEVENT5H, CSR_MHPMEVENT6H,
	CSR_MHPMEVENT7H, CSR_MHPMEVENT8H, CSR_MHPMEVENT9H,
	CSR_MHPMEVENT10H, CSR_MHPMEVENT11H, CSR_MHPMEVENT12H,
	CSR_MHPMEVENT13H, CSR_MHPMEVENT14H, CSR_MHPMEVENT15H,
	CSR_MHPMEVENT16H, CSR_MHPMEVENT17H, CSR_MHPMEVENT18H,
	CSR_MHPMEVENT19H, CSR_MHPMEVENT20H, CSR_MHPMEVENT21H,
	CSR_MHPMEVENT22H, CSR_MHPMEVENT23H, CSR_MHPMEVENT24H,
	CSR_MHPMEVENT25H, CSR_MHPMEVENT26H, CSR_MHPMEVENT27H,
	CSR_MHPMEVENT28H, CSR_MHPMEVENT29H, CSR_MHPMEVENT30H,
	CSR_MHPMEVENT31H): New CSR macros.
---
 bfd/elfxx-riscv.c                           |   1 +
 gas/config/tc-riscv.c                       |   9 +
 gas/testsuite/gas/riscv/csr-dw-regnums.d    |  30 ++++
 gas/testsuite/gas/riscv/csr-dw-regnums.s    |  31 ++++
 gas/testsuite/gas/riscv/csr-version-1p10.d  |  60 +++++++
 gas/testsuite/gas/riscv/csr-version-1p10.l  | 179 ++++++++++++++++++++
 gas/testsuite/gas/riscv/csr-version-1p11.d  |  60 +++++++
 gas/testsuite/gas/riscv/csr-version-1p11.l  | 119 +++++++++++++
 gas/testsuite/gas/riscv/csr-version-1p12.d  |  60 +++++++
 gas/testsuite/gas/riscv/csr-version-1p12.l  | 119 +++++++++++++
 gas/testsuite/gas/riscv/csr-version-1p9p1.d |  60 +++++++
 gas/testsuite/gas/riscv/csr-version-1p9p1.l | 179 ++++++++++++++++++++
 gas/testsuite/gas/riscv/csr.s               |  32 ++++
 include/opcode/riscv-opc.h                  |  62 +++++++
 14 files changed, 1001 insertions(+)

diff --git a/bfd/elfxx-riscv.c b/bfd/elfxx-riscv.c
index 00767b53475..fab30c700ba 100644
--- a/bfd/elfxx-riscv.c
+++ b/bfd/elfxx-riscv.c
@@ -1221,6 +1221,7 @@ static struct riscv_supported_ext riscv_supported_std_z_ext[] =
 static struct riscv_supported_ext riscv_supported_std_s_ext[] =
 {
   {"smstateen",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
+  {"sscofpmf",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
   {"svinval",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
   {NULL, 0, 0, 0, 0}
 };
diff --git a/gas/config/tc-riscv.c b/gas/config/tc-riscv.c
index b640e7bf2f8..3600af64607 100644
--- a/gas/config/tc-riscv.c
+++ b/gas/config/tc-riscv.c
@@ -67,6 +67,8 @@ enum riscv_csr_class
   CSR_CLASS_V,		/* rvv only */
   CSR_CLASS_SMSTATEEN,		/* Smstateen only */
   CSR_CLASS_SMSTATEEN_32,	/* Smstateen RV32 only */
+  CSR_CLASS_SSCOFPMF,		/* Sscofpmf only */
+  CSR_CLASS_SSCOFPMF_32,	/* Sscofpmf RV32 only */
   CSR_CLASS_DEBUG	/* debug CSR */
 };
 
@@ -927,6 +929,13 @@ riscv_csr_address (const char *csr_name,
       need_check_version = true;
       extension = "smstateen";
       break;
+    case CSR_CLASS_SSCOFPMF_32:
+      rv32_only = (xlen == 32);
+      /* Fall through.  */
+    case CSR_CLASS_SSCOFPMF:
+      need_check_version = true;
+      extension = "sscofpmf";
+      break;
     case CSR_CLASS_DEBUG:
       break;
     default:
diff --git a/gas/testsuite/gas/riscv/csr-dw-regnums.d b/gas/testsuite/gas/riscv/csr-dw-regnums.d
index 0c9ec6e4035..2f353293faa 100644
--- a/gas/testsuite/gas/riscv/csr-dw-regnums.d
+++ b/gas/testsuite/gas/riscv/csr-dw-regnums.d
@@ -333,6 +333,36 @@ Contents of the .* section:
   DW_CFA_offset_extended_sf: r5661 \(hstateen1h\) at cfa\+6260
   DW_CFA_offset_extended_sf: r5662 \(hstateen2h\) at cfa\+6264
   DW_CFA_offset_extended_sf: r5663 \(hstateen3h\) at cfa\+6268
+  DW_CFA_offset_extended_sf: r7584 \(scountovf\) at cfa\+13952
+  DW_CFA_offset_extended_sf: r5923 \(mhpmevent3h\) at cfa\+7308
+  DW_CFA_offset_extended_sf: r5924 \(mhpmevent4h\) at cfa\+7312
+  DW_CFA_offset_extended_sf: r5925 \(mhpmevent5h\) at cfa\+7316
+  DW_CFA_offset_extended_sf: r5926 \(mhpmevent6h\) at cfa\+7320
+  DW_CFA_offset_extended_sf: r5927 \(mhpmevent7h\) at cfa\+7324
+  DW_CFA_offset_extended_sf: r5928 \(mhpmevent8h\) at cfa\+7328
+  DW_CFA_offset_extended_sf: r5929 \(mhpmevent9h\) at cfa\+7332
+  DW_CFA_offset_extended_sf: r5930 \(mhpmevent10h\) at cfa\+7336
+  DW_CFA_offset_extended_sf: r5931 \(mhpmevent11h\) at cfa\+7340
+  DW_CFA_offset_extended_sf: r5932 \(mhpmevent12h\) at cfa\+7344
+  DW_CFA_offset_extended_sf: r5933 \(mhpmevent13h\) at cfa\+7348
+  DW_CFA_offset_extended_sf: r5934 \(mhpmevent14h\) at cfa\+7352
+  DW_CFA_offset_extended_sf: r5935 \(mhpmevent15h\) at cfa\+7356
+  DW_CFA_offset_extended_sf: r5936 \(mhpmevent16h\) at cfa\+7360
+  DW_CFA_offset_extended_sf: r5937 \(mhpmevent17h\) at cfa\+7364
+  DW_CFA_offset_extended_sf: r5938 \(mhpmevent18h\) at cfa\+7368
+  DW_CFA_offset_extended_sf: r5939 \(mhpmevent19h\) at cfa\+7372
+  DW_CFA_offset_extended_sf: r5940 \(mhpmevent20h\) at cfa\+7376
+  DW_CFA_offset_extended_sf: r5941 \(mhpmevent21h\) at cfa\+7380
+  DW_CFA_offset_extended_sf: r5942 \(mhpmevent22h\) at cfa\+7384
+  DW_CFA_offset_extended_sf: r5943 \(mhpmevent23h\) at cfa\+7388
+  DW_CFA_offset_extended_sf: r5944 \(mhpmevent24h\) at cfa\+7392
+  DW_CFA_offset_extended_sf: r5945 \(mhpmevent25h\) at cfa\+7396
+  DW_CFA_offset_extended_sf: r5946 \(mhpmevent26h\) at cfa\+7400
+  DW_CFA_offset_extended_sf: r5947 \(mhpmevent27h\) at cfa\+7404
+  DW_CFA_offset_extended_sf: r5948 \(mhpmevent28h\) at cfa\+7408
+  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: r4163 \(utval\) at cfa\+268
   DW_CFA_offset_extended_sf: r4419 \(stval\) at cfa\+1292
   DW_CFA_offset_extended_sf: r4480 \(satp\) at cfa\+1536
diff --git a/gas/testsuite/gas/riscv/csr-dw-regnums.s b/gas/testsuite/gas/riscv/csr-dw-regnums.s
index 2afadac49f6..caac321c6e2 100644
--- a/gas/testsuite/gas/riscv/csr-dw-regnums.s
+++ b/gas/testsuite/gas/riscv/csr-dw-regnums.s
@@ -328,6 +328,37 @@ _start:
 	.cfi_offset hstateen1h, 6260
 	.cfi_offset hstateen2h, 6264
 	.cfi_offset hstateen3h, 6268
+	# Sscofpmf extension
+	.cfi_offset scountovf, 13952
+	.cfi_offset mhpmevent3h, 7308
+	.cfi_offset mhpmevent4h, 7312
+	.cfi_offset mhpmevent5h, 7316
+	.cfi_offset mhpmevent6h, 7320
+	.cfi_offset mhpmevent7h, 7324
+	.cfi_offset mhpmevent8h, 7328
+	.cfi_offset mhpmevent9h, 7332
+	.cfi_offset mhpmevent10h, 7336
+	.cfi_offset mhpmevent11h, 7340
+	.cfi_offset mhpmevent12h, 7344
+	.cfi_offset mhpmevent13h, 7348
+	.cfi_offset mhpmevent14h, 7352
+	.cfi_offset mhpmevent15h, 7356
+	.cfi_offset mhpmevent16h, 7360
+	.cfi_offset mhpmevent17h, 7364
+	.cfi_offset mhpmevent18h, 7368
+	.cfi_offset mhpmevent19h, 7372
+	.cfi_offset mhpmevent20h, 7376
+	.cfi_offset mhpmevent21h, 7380
+	.cfi_offset mhpmevent22h, 7384
+	.cfi_offset mhpmevent23h, 7388
+	.cfi_offset mhpmevent24h, 7392
+	.cfi_offset mhpmevent25h, 7396
+	.cfi_offset mhpmevent26h, 7400
+	.cfi_offset mhpmevent27h, 7404
+	.cfi_offset mhpmevent28h, 7408
+	.cfi_offset mhpmevent29h, 7412
+	.cfi_offset mhpmevent30h, 7416
+	.cfi_offset mhpmevent31h, 7420
 	# dropped
 	.cfi_offset ubadaddr, 268	# aliases
 	.cfi_offset sbadaddr, 1292	# aliases
diff --git a/gas/testsuite/gas/riscv/csr-version-1p10.d b/gas/testsuite/gas/riscv/csr-version-1p10.d
index 7f9f5497428..124ef73baa7 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p10.d
+++ b/gas/testsuite/gas/riscv/csr-version-1p10.d
@@ -641,6 +641,66 @@ Disassembly of section .text:
 [ 	]+[0-9a-f]+:[ 	]+61e59073[ 	]+csrw[ 	]+0x61e,a1
 [ 	]+[0-9a-f]+:[ 	]+61f02573[ 	]+csrr[ 	]+a0,0x61f
 [ 	]+[0-9a-f]+:[ 	]+61f59073[ 	]+csrw[ 	]+0x61f,a1
+[ 	]+[0-9a-f]+:[ 	]+da002573[ 	]+csrr[ 	]+a0,0xda0
+[ 	]+[0-9a-f]+:[ 	]+da059073[ 	]+csrw[ 	]+0xda0,a1
+[ 	]+[0-9a-f]+:[ 	]+72302573[ 	]+csrr[ 	]+a0,0x723
+[ 	]+[0-9a-f]+:[ 	]+72359073[ 	]+csrw[ 	]+0x723,a1
+[ 	]+[0-9a-f]+:[ 	]+72402573[ 	]+csrr[ 	]+a0,0x724
+[ 	]+[0-9a-f]+:[ 	]+72459073[ 	]+csrw[ 	]+0x724,a1
+[ 	]+[0-9a-f]+:[ 	]+72502573[ 	]+csrr[ 	]+a0,0x725
+[ 	]+[0-9a-f]+:[ 	]+72559073[ 	]+csrw[ 	]+0x725,a1
+[ 	]+[0-9a-f]+:[ 	]+72602573[ 	]+csrr[ 	]+a0,0x726
+[ 	]+[0-9a-f]+:[ 	]+72659073[ 	]+csrw[ 	]+0x726,a1
+[ 	]+[0-9a-f]+:[ 	]+72702573[ 	]+csrr[ 	]+a0,0x727
+[ 	]+[0-9a-f]+:[ 	]+72759073[ 	]+csrw[ 	]+0x727,a1
+[ 	]+[0-9a-f]+:[ 	]+72802573[ 	]+csrr[ 	]+a0,0x728
+[ 	]+[0-9a-f]+:[ 	]+72859073[ 	]+csrw[ 	]+0x728,a1
+[ 	]+[0-9a-f]+:[ 	]+72902573[ 	]+csrr[ 	]+a0,0x729
+[ 	]+[0-9a-f]+:[ 	]+72959073[ 	]+csrw[ 	]+0x729,a1
+[ 	]+[0-9a-f]+:[ 	]+72a02573[ 	]+csrr[ 	]+a0,0x72a
+[ 	]+[0-9a-f]+:[ 	]+72a59073[ 	]+csrw[ 	]+0x72a,a1
+[ 	]+[0-9a-f]+:[ 	]+72b02573[ 	]+csrr[ 	]+a0,0x72b
+[ 	]+[0-9a-f]+:[ 	]+72b59073[ 	]+csrw[ 	]+0x72b,a1
+[ 	]+[0-9a-f]+:[ 	]+72c02573[ 	]+csrr[ 	]+a0,0x72c
+[ 	]+[0-9a-f]+:[ 	]+72c59073[ 	]+csrw[ 	]+0x72c,a1
+[ 	]+[0-9a-f]+:[ 	]+72d02573[ 	]+csrr[ 	]+a0,0x72d
+[ 	]+[0-9a-f]+:[ 	]+72d59073[ 	]+csrw[ 	]+0x72d,a1
+[ 	]+[0-9a-f]+:[ 	]+72e02573[ 	]+csrr[ 	]+a0,0x72e
+[ 	]+[0-9a-f]+:[ 	]+72e59073[ 	]+csrw[ 	]+0x72e,a1
+[ 	]+[0-9a-f]+:[ 	]+72f02573[ 	]+csrr[ 	]+a0,0x72f
+[ 	]+[0-9a-f]+:[ 	]+72f59073[ 	]+csrw[ 	]+0x72f,a1
+[ 	]+[0-9a-f]+:[ 	]+73002573[ 	]+csrr[ 	]+a0,0x730
+[ 	]+[0-9a-f]+:[ 	]+73059073[ 	]+csrw[ 	]+0x730,a1
+[ 	]+[0-9a-f]+:[ 	]+73102573[ 	]+csrr[ 	]+a0,0x731
+[ 	]+[0-9a-f]+:[ 	]+73159073[ 	]+csrw[ 	]+0x731,a1
+[ 	]+[0-9a-f]+:[ 	]+73202573[ 	]+csrr[ 	]+a0,0x732
+[ 	]+[0-9a-f]+:[ 	]+73259073[ 	]+csrw[ 	]+0x732,a1
+[ 	]+[0-9a-f]+:[ 	]+73302573[ 	]+csrr[ 	]+a0,0x733
+[ 	]+[0-9a-f]+:[ 	]+73359073[ 	]+csrw[ 	]+0x733,a1
+[ 	]+[0-9a-f]+:[ 	]+73402573[ 	]+csrr[ 	]+a0,0x734
+[ 	]+[0-9a-f]+:[ 	]+73459073[ 	]+csrw[ 	]+0x734,a1
+[ 	]+[0-9a-f]+:[ 	]+73502573[ 	]+csrr[ 	]+a0,0x735
+[ 	]+[0-9a-f]+:[ 	]+73559073[ 	]+csrw[ 	]+0x735,a1
+[ 	]+[0-9a-f]+:[ 	]+73602573[ 	]+csrr[ 	]+a0,0x736
+[ 	]+[0-9a-f]+:[ 	]+73659073[ 	]+csrw[ 	]+0x736,a1
+[ 	]+[0-9a-f]+:[ 	]+73702573[ 	]+csrr[ 	]+a0,0x737
+[ 	]+[0-9a-f]+:[ 	]+73759073[ 	]+csrw[ 	]+0x737,a1
+[ 	]+[0-9a-f]+:[ 	]+73802573[ 	]+csrr[ 	]+a0,0x738
+[ 	]+[0-9a-f]+:[ 	]+73859073[ 	]+csrw[ 	]+0x738,a1
+[ 	]+[0-9a-f]+:[ 	]+73902573[ 	]+csrr[ 	]+a0,0x739
+[ 	]+[0-9a-f]+:[ 	]+73959073[ 	]+csrw[ 	]+0x739,a1
+[ 	]+[0-9a-f]+:[ 	]+73a02573[ 	]+csrr[ 	]+a0,0x73a
+[ 	]+[0-9a-f]+:[ 	]+73a59073[ 	]+csrw[ 	]+0x73a,a1
+[ 	]+[0-9a-f]+:[ 	]+73b02573[ 	]+csrr[ 	]+a0,0x73b
+[ 	]+[0-9a-f]+:[ 	]+73b59073[ 	]+csrw[ 	]+0x73b,a1
+[ 	]+[0-9a-f]+:[ 	]+73c02573[ 	]+csrr[ 	]+a0,0x73c
+[ 	]+[0-9a-f]+:[ 	]+73c59073[ 	]+csrw[ 	]+0x73c,a1
+[ 	]+[0-9a-f]+:[ 	]+73d02573[ 	]+csrr[ 	]+a0,0x73d
+[ 	]+[0-9a-f]+:[ 	]+73d59073[ 	]+csrw[ 	]+0x73d,a1
+[ 	]+[0-9a-f]+:[ 	]+73e02573[ 	]+csrr[ 	]+a0,0x73e
+[ 	]+[0-9a-f]+:[ 	]+73e59073[ 	]+csrw[ 	]+0x73e,a1
+[ 	]+[0-9a-f]+:[ 	]+73f02573[ 	]+csrr[ 	]+a0,0x73f
+[ 	]+[0-9a-f]+:[ 	]+73f59073[ 	]+csrw[ 	]+0x73f,a1
 [ 	]+[0-9a-f]+:[ 	]+04302573[ 	]+csrr[ 	]+a0,utval
 [ 	]+[0-9a-f]+:[ 	]+04359073[ 	]+csrw[ 	]+utval,a1
 [ 	]+[0-9a-f]+:[ 	]+14302573[ 	]+csrr[ 	]+a0,stval
diff --git a/gas/testsuite/gas/riscv/csr-version-1p10.l b/gas/testsuite/gas/riscv/csr-version-1p10.l
index ff23c010d18..e2d2cfef15a 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p10.l
+++ b/gas/testsuite/gas/riscv/csr-version-1p10.l
@@ -483,6 +483,185 @@
 .*Warning: invalid CSR `hstateen3h', needs rv32i extension
 .*Warning: invalid CSR `hstateen3h', needs `smstateen' extension
 .*Warning: invalid CSR `hstateen3h' for the privileged spec `1.10'
+.*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
+.*Warning: invalid CSR `scountovf' for the privileged spec `1.10'
+.*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
+.*Warning: invalid CSR `scountovf' for the privileged spec `1.10'
+.*Warning: read-only CSR is written `csrw scountovf,a1'
+.*Warning: invalid CSR `mhpmevent3h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent3h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent3h' for the privileged spec `1.10'
+.*Warning: invalid CSR `mhpmevent3h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent3h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent3h' for the privileged spec `1.10'
+.*Warning: invalid CSR `mhpmevent4h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent4h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent4h' for the privileged spec `1.10'
+.*Warning: invalid CSR `mhpmevent4h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent4h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent4h' for the privileged spec `1.10'
+.*Warning: invalid CSR `mhpmevent5h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent5h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent5h' for the privileged spec `1.10'
+.*Warning: invalid CSR `mhpmevent5h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent5h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent5h' for the privileged spec `1.10'
+.*Warning: invalid CSR `mhpmevent6h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent6h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent6h' for the privileged spec `1.10'
+.*Warning: invalid CSR `mhpmevent6h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent6h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent6h' for the privileged spec `1.10'
+.*Warning: invalid CSR `mhpmevent7h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent7h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent7h' for the privileged spec `1.10'
+.*Warning: invalid CSR `mhpmevent7h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent7h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent7h' for the privileged spec `1.10'
+.*Warning: invalid CSR `mhpmevent8h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent8h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent8h' for the privileged spec `1.10'
+.*Warning: invalid CSR `mhpmevent8h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent8h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent8h' for the privileged spec `1.10'
+.*Warning: invalid CSR `mhpmevent9h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent9h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent9h' for the privileged spec `1.10'
+.*Warning: invalid CSR `mhpmevent9h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent9h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent9h' for the privileged spec `1.10'
+.*Warning: invalid CSR `mhpmevent10h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent10h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent10h' for the privileged spec `1.10'
+.*Warning: invalid CSR `mhpmevent10h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent10h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent10h' for the privileged spec `1.10'
+.*Warning: invalid CSR `mhpmevent11h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent11h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent11h' for the privileged spec `1.10'
+.*Warning: invalid CSR `mhpmevent11h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent11h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent11h' for the privileged spec `1.10'
+.*Warning: invalid CSR `mhpmevent12h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent12h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent12h' for the privileged spec `1.10'
+.*Warning: invalid CSR `mhpmevent12h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent12h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent12h' for the privileged spec `1.10'
+.*Warning: invalid CSR `mhpmevent13h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent13h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent13h' for the privileged spec `1.10'
+.*Warning: invalid CSR `mhpmevent13h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent13h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent13h' for the privileged spec `1.10'
+.*Warning: invalid CSR `mhpmevent14h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent14h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent14h' for the privileged spec `1.10'
+.*Warning: invalid CSR `mhpmevent14h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent14h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent14h' for the privileged spec `1.10'
+.*Warning: invalid CSR `mhpmevent15h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent15h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent15h' for the privileged spec `1.10'
+.*Warning: invalid CSR `mhpmevent15h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent15h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent15h' for the privileged spec `1.10'
+.*Warning: invalid CSR `mhpmevent16h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent16h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent16h' for the privileged spec `1.10'
+.*Warning: invalid CSR `mhpmevent16h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent16h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent16h' for the privileged spec `1.10'
+.*Warning: invalid CSR `mhpmevent17h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent17h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent17h' for the privileged spec `1.10'
+.*Warning: invalid CSR `mhpmevent17h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent17h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent17h' for the privileged spec `1.10'
+.*Warning: invalid CSR `mhpmevent18h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent18h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent18h' for the privileged spec `1.10'
+.*Warning: invalid CSR `mhpmevent18h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent18h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent18h' for the privileged spec `1.10'
+.*Warning: invalid CSR `mhpmevent19h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent19h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent19h' for the privileged spec `1.10'
+.*Warning: invalid CSR `mhpmevent19h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent19h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent19h' for the privileged spec `1.10'
+.*Warning: invalid CSR `mhpmevent20h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent20h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent20h' for the privileged spec `1.10'
+.*Warning: invalid CSR `mhpmevent20h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent20h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent20h' for the privileged spec `1.10'
+.*Warning: invalid CSR `mhpmevent21h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent21h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent21h' for the privileged spec `1.10'
+.*Warning: invalid CSR `mhpmevent21h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent21h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent21h' for the privileged spec `1.10'
+.*Warning: invalid CSR `mhpmevent22h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent22h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent22h' for the privileged spec `1.10'
+.*Warning: invalid CSR `mhpmevent22h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent22h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent22h' for the privileged spec `1.10'
+.*Warning: invalid CSR `mhpmevent23h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent23h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent23h' for the privileged spec `1.10'
+.*Warning: invalid CSR `mhpmevent23h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent23h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent23h' for the privileged spec `1.10'
+.*Warning: invalid CSR `mhpmevent24h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent24h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent24h' for the privileged spec `1.10'
+.*Warning: invalid CSR `mhpmevent24h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent24h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent24h' for the privileged spec `1.10'
+.*Warning: invalid CSR `mhpmevent25h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent25h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent25h' for the privileged spec `1.10'
+.*Warning: invalid CSR `mhpmevent25h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent25h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent25h' for the privileged spec `1.10'
+.*Warning: invalid CSR `mhpmevent26h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent26h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent26h' for the privileged spec `1.10'
+.*Warning: invalid CSR `mhpmevent26h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent26h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent26h' for the privileged spec `1.10'
+.*Warning: invalid CSR `mhpmevent27h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent27h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent27h' for the privileged spec `1.10'
+.*Warning: invalid CSR `mhpmevent27h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent27h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent27h' for the privileged spec `1.10'
+.*Warning: invalid CSR `mhpmevent28h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent28h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent28h' for the privileged spec `1.10'
+.*Warning: invalid CSR `mhpmevent28h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent28h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent28h' for the privileged spec `1.10'
+.*Warning: invalid CSR `mhpmevent29h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent29h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent29h' for the privileged spec `1.10'
+.*Warning: invalid CSR `mhpmevent29h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent29h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent29h' for the privileged spec `1.10'
+.*Warning: invalid CSR `mhpmevent30h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent30h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent30h' for the privileged spec `1.10'
+.*Warning: invalid CSR `mhpmevent30h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent30h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent30h' for the privileged spec `1.10'
+.*Warning: invalid CSR `mhpmevent31h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent31h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent31h' for the privileged spec `1.10'
+.*Warning: invalid CSR `mhpmevent31h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent31h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent31h' for the privileged spec `1.10'
 .*Warning: invalid CSR `ubadaddr' for the privileged spec `1.10'
 .*Warning: invalid CSR `ubadaddr' for the privileged spec `1.10'
 .*Warning: invalid CSR `sbadaddr' for the privileged spec `1.10'
diff --git a/gas/testsuite/gas/riscv/csr-version-1p11.d b/gas/testsuite/gas/riscv/csr-version-1p11.d
index 6e85a7e2d4d..1d2640b540e 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p11.d
+++ b/gas/testsuite/gas/riscv/csr-version-1p11.d
@@ -641,6 +641,66 @@ Disassembly of section .text:
 [ 	]+[0-9a-f]+:[ 	]+61e59073[ 	]+csrw[ 	]+0x61e,a1
 [ 	]+[0-9a-f]+:[ 	]+61f02573[ 	]+csrr[ 	]+a0,0x61f
 [ 	]+[0-9a-f]+:[ 	]+61f59073[ 	]+csrw[ 	]+0x61f,a1
+[ 	]+[0-9a-f]+:[ 	]+da002573[ 	]+csrr[ 	]+a0,scountovf
+[ 	]+[0-9a-f]+:[ 	]+da059073[ 	]+csrw[ 	]+scountovf,a1
+[ 	]+[0-9a-f]+:[ 	]+72302573[ 	]+csrr[ 	]+a0,mhpmevent3h
+[ 	]+[0-9a-f]+:[ 	]+72359073[ 	]+csrw[ 	]+mhpmevent3h,a1
+[ 	]+[0-9a-f]+:[ 	]+72402573[ 	]+csrr[ 	]+a0,mhpmevent4h
+[ 	]+[0-9a-f]+:[ 	]+72459073[ 	]+csrw[ 	]+mhpmevent4h,a1
+[ 	]+[0-9a-f]+:[ 	]+72502573[ 	]+csrr[ 	]+a0,mhpmevent5h
+[ 	]+[0-9a-f]+:[ 	]+72559073[ 	]+csrw[ 	]+mhpmevent5h,a1
+[ 	]+[0-9a-f]+:[ 	]+72602573[ 	]+csrr[ 	]+a0,mhpmevent6h
+[ 	]+[0-9a-f]+:[ 	]+72659073[ 	]+csrw[ 	]+mhpmevent6h,a1
+[ 	]+[0-9a-f]+:[ 	]+72702573[ 	]+csrr[ 	]+a0,mhpmevent7h
+[ 	]+[0-9a-f]+:[ 	]+72759073[ 	]+csrw[ 	]+mhpmevent7h,a1
+[ 	]+[0-9a-f]+:[ 	]+72802573[ 	]+csrr[ 	]+a0,mhpmevent8h
+[ 	]+[0-9a-f]+:[ 	]+72859073[ 	]+csrw[ 	]+mhpmevent8h,a1
+[ 	]+[0-9a-f]+:[ 	]+72902573[ 	]+csrr[ 	]+a0,mhpmevent9h
+[ 	]+[0-9a-f]+:[ 	]+72959073[ 	]+csrw[ 	]+mhpmevent9h,a1
+[ 	]+[0-9a-f]+:[ 	]+72a02573[ 	]+csrr[ 	]+a0,mhpmevent10h
+[ 	]+[0-9a-f]+:[ 	]+72a59073[ 	]+csrw[ 	]+mhpmevent10h,a1
+[ 	]+[0-9a-f]+:[ 	]+72b02573[ 	]+csrr[ 	]+a0,mhpmevent11h
+[ 	]+[0-9a-f]+:[ 	]+72b59073[ 	]+csrw[ 	]+mhpmevent11h,a1
+[ 	]+[0-9a-f]+:[ 	]+72c02573[ 	]+csrr[ 	]+a0,mhpmevent12h
+[ 	]+[0-9a-f]+:[ 	]+72c59073[ 	]+csrw[ 	]+mhpmevent12h,a1
+[ 	]+[0-9a-f]+:[ 	]+72d02573[ 	]+csrr[ 	]+a0,mhpmevent13h
+[ 	]+[0-9a-f]+:[ 	]+72d59073[ 	]+csrw[ 	]+mhpmevent13h,a1
+[ 	]+[0-9a-f]+:[ 	]+72e02573[ 	]+csrr[ 	]+a0,mhpmevent14h
+[ 	]+[0-9a-f]+:[ 	]+72e59073[ 	]+csrw[ 	]+mhpmevent14h,a1
+[ 	]+[0-9a-f]+:[ 	]+72f02573[ 	]+csrr[ 	]+a0,mhpmevent15h
+[ 	]+[0-9a-f]+:[ 	]+72f59073[ 	]+csrw[ 	]+mhpmevent15h,a1
+[ 	]+[0-9a-f]+:[ 	]+73002573[ 	]+csrr[ 	]+a0,mhpmevent16h
+[ 	]+[0-9a-f]+:[ 	]+73059073[ 	]+csrw[ 	]+mhpmevent16h,a1
+[ 	]+[0-9a-f]+:[ 	]+73102573[ 	]+csrr[ 	]+a0,mhpmevent17h
+[ 	]+[0-9a-f]+:[ 	]+73159073[ 	]+csrw[ 	]+mhpmevent17h,a1
+[ 	]+[0-9a-f]+:[ 	]+73202573[ 	]+csrr[ 	]+a0,mhpmevent18h
+[ 	]+[0-9a-f]+:[ 	]+73259073[ 	]+csrw[ 	]+mhpmevent18h,a1
+[ 	]+[0-9a-f]+:[ 	]+73302573[ 	]+csrr[ 	]+a0,mhpmevent19h
+[ 	]+[0-9a-f]+:[ 	]+73359073[ 	]+csrw[ 	]+mhpmevent19h,a1
+[ 	]+[0-9a-f]+:[ 	]+73402573[ 	]+csrr[ 	]+a0,mhpmevent20h
+[ 	]+[0-9a-f]+:[ 	]+73459073[ 	]+csrw[ 	]+mhpmevent20h,a1
+[ 	]+[0-9a-f]+:[ 	]+73502573[ 	]+csrr[ 	]+a0,mhpmevent21h
+[ 	]+[0-9a-f]+:[ 	]+73559073[ 	]+csrw[ 	]+mhpmevent21h,a1
+[ 	]+[0-9a-f]+:[ 	]+73602573[ 	]+csrr[ 	]+a0,mhpmevent22h
+[ 	]+[0-9a-f]+:[ 	]+73659073[ 	]+csrw[ 	]+mhpmevent22h,a1
+[ 	]+[0-9a-f]+:[ 	]+73702573[ 	]+csrr[ 	]+a0,mhpmevent23h
+[ 	]+[0-9a-f]+:[ 	]+73759073[ 	]+csrw[ 	]+mhpmevent23h,a1
+[ 	]+[0-9a-f]+:[ 	]+73802573[ 	]+csrr[ 	]+a0,mhpmevent24h
+[ 	]+[0-9a-f]+:[ 	]+73859073[ 	]+csrw[ 	]+mhpmevent24h,a1
+[ 	]+[0-9a-f]+:[ 	]+73902573[ 	]+csrr[ 	]+a0,mhpmevent25h
+[ 	]+[0-9a-f]+:[ 	]+73959073[ 	]+csrw[ 	]+mhpmevent25h,a1
+[ 	]+[0-9a-f]+:[ 	]+73a02573[ 	]+csrr[ 	]+a0,mhpmevent26h
+[ 	]+[0-9a-f]+:[ 	]+73a59073[ 	]+csrw[ 	]+mhpmevent26h,a1
+[ 	]+[0-9a-f]+:[ 	]+73b02573[ 	]+csrr[ 	]+a0,mhpmevent27h
+[ 	]+[0-9a-f]+:[ 	]+73b59073[ 	]+csrw[ 	]+mhpmevent27h,a1
+[ 	]+[0-9a-f]+:[ 	]+73c02573[ 	]+csrr[ 	]+a0,mhpmevent28h
+[ 	]+[0-9a-f]+:[ 	]+73c59073[ 	]+csrw[ 	]+mhpmevent28h,a1
+[ 	]+[0-9a-f]+:[ 	]+73d02573[ 	]+csrr[ 	]+a0,mhpmevent29h
+[ 	]+[0-9a-f]+:[ 	]+73d59073[ 	]+csrw[ 	]+mhpmevent29h,a1
+[ 	]+[0-9a-f]+:[ 	]+73e02573[ 	]+csrr[ 	]+a0,mhpmevent30h
+[ 	]+[0-9a-f]+:[ 	]+73e59073[ 	]+csrw[ 	]+mhpmevent30h,a1
+[ 	]+[0-9a-f]+:[ 	]+73f02573[ 	]+csrr[ 	]+a0,mhpmevent31h
+[ 	]+[0-9a-f]+:[ 	]+73f59073[ 	]+csrw[ 	]+mhpmevent31h,a1
 [ 	]+[0-9a-f]+:[ 	]+04302573[ 	]+csrr[ 	]+a0,utval
 [ 	]+[0-9a-f]+:[ 	]+04359073[ 	]+csrw[ 	]+utval,a1
 [ 	]+[0-9a-f]+:[ 	]+14302573[ 	]+csrr[ 	]+a0,stval
diff --git a/gas/testsuite/gas/riscv/csr-version-1p11.l b/gas/testsuite/gas/riscv/csr-version-1p11.l
index 3a767cbcadf..3d129511534 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p11.l
+++ b/gas/testsuite/gas/riscv/csr-version-1p11.l
@@ -481,6 +481,125 @@
 .*Warning: invalid CSR `hstateen3h', needs rv32i extension
 .*Warning: invalid CSR `hstateen3h', needs `smstateen' extension
 .*Warning: invalid CSR `hstateen3h' for the privileged spec `1.11'
+.*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
+.*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
+.*Warning: read-only CSR is written `csrw scountovf,a1'
+.*Warning: invalid CSR `mhpmevent3h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent3h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent3h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent3h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent4h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent4h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent4h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent4h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent5h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent5h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent5h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent5h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent6h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent6h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent6h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent6h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent7h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent7h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent7h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent7h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent8h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent8h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent8h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent8h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent9h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent9h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent9h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent9h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent10h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent10h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent10h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent10h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent11h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent11h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent11h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent11h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent12h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent12h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent12h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent12h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent13h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent13h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent13h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent13h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent14h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent14h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent14h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent14h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent15h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent15h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent15h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent15h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent16h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent16h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent16h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent16h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent17h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent17h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent17h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent17h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent18h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent18h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent18h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent18h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent19h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent19h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent19h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent19h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent20h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent20h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent20h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent20h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent21h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent21h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent21h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent21h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent22h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent22h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent22h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent22h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent23h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent23h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent23h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent23h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent24h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent24h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent24h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent24h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent25h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent25h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent25h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent25h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent26h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent26h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent26h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent26h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent27h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent27h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent27h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent27h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent28h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent28h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent28h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent28h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent29h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent29h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent29h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent29h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent30h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent30h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent30h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent30h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent31h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent31h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent31h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent31h', needs `sscofpmf' extension
 .*Warning: invalid CSR `ubadaddr' for the privileged spec `1.11'
 .*Warning: invalid CSR `ubadaddr' for the privileged spec `1.11'
 .*Warning: invalid CSR `sbadaddr' for the privileged spec `1.11'
diff --git a/gas/testsuite/gas/riscv/csr-version-1p12.d b/gas/testsuite/gas/riscv/csr-version-1p12.d
index 46ca519b31e..60f19bff874 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p12.d
+++ b/gas/testsuite/gas/riscv/csr-version-1p12.d
@@ -641,6 +641,66 @@ Disassembly of section .text:
 [ 	]+[0-9a-f]+:[ 	]+61e59073[ 	]+csrw[ 	]+hstateen2h,a1
 [ 	]+[0-9a-f]+:[ 	]+61f02573[ 	]+csrr[ 	]+a0,hstateen3h
 [ 	]+[0-9a-f]+:[ 	]+61f59073[ 	]+csrw[ 	]+hstateen3h,a1
+[ 	]+[0-9a-f]+:[ 	]+da002573[ 	]+csrr[ 	]+a0,scountovf
+[ 	]+[0-9a-f]+:[ 	]+da059073[ 	]+csrw[ 	]+scountovf,a1
+[ 	]+[0-9a-f]+:[ 	]+72302573[ 	]+csrr[ 	]+a0,mhpmevent3h
+[ 	]+[0-9a-f]+:[ 	]+72359073[ 	]+csrw[ 	]+mhpmevent3h,a1
+[ 	]+[0-9a-f]+:[ 	]+72402573[ 	]+csrr[ 	]+a0,mhpmevent4h
+[ 	]+[0-9a-f]+:[ 	]+72459073[ 	]+csrw[ 	]+mhpmevent4h,a1
+[ 	]+[0-9a-f]+:[ 	]+72502573[ 	]+csrr[ 	]+a0,mhpmevent5h
+[ 	]+[0-9a-f]+:[ 	]+72559073[ 	]+csrw[ 	]+mhpmevent5h,a1
+[ 	]+[0-9a-f]+:[ 	]+72602573[ 	]+csrr[ 	]+a0,mhpmevent6h
+[ 	]+[0-9a-f]+:[ 	]+72659073[ 	]+csrw[ 	]+mhpmevent6h,a1
+[ 	]+[0-9a-f]+:[ 	]+72702573[ 	]+csrr[ 	]+a0,mhpmevent7h
+[ 	]+[0-9a-f]+:[ 	]+72759073[ 	]+csrw[ 	]+mhpmevent7h,a1
+[ 	]+[0-9a-f]+:[ 	]+72802573[ 	]+csrr[ 	]+a0,mhpmevent8h
+[ 	]+[0-9a-f]+:[ 	]+72859073[ 	]+csrw[ 	]+mhpmevent8h,a1
+[ 	]+[0-9a-f]+:[ 	]+72902573[ 	]+csrr[ 	]+a0,mhpmevent9h
+[ 	]+[0-9a-f]+:[ 	]+72959073[ 	]+csrw[ 	]+mhpmevent9h,a1
+[ 	]+[0-9a-f]+:[ 	]+72a02573[ 	]+csrr[ 	]+a0,mhpmevent10h
+[ 	]+[0-9a-f]+:[ 	]+72a59073[ 	]+csrw[ 	]+mhpmevent10h,a1
+[ 	]+[0-9a-f]+:[ 	]+72b02573[ 	]+csrr[ 	]+a0,mhpmevent11h
+[ 	]+[0-9a-f]+:[ 	]+72b59073[ 	]+csrw[ 	]+mhpmevent11h,a1
+[ 	]+[0-9a-f]+:[ 	]+72c02573[ 	]+csrr[ 	]+a0,mhpmevent12h
+[ 	]+[0-9a-f]+:[ 	]+72c59073[ 	]+csrw[ 	]+mhpmevent12h,a1
+[ 	]+[0-9a-f]+:[ 	]+72d02573[ 	]+csrr[ 	]+a0,mhpmevent13h
+[ 	]+[0-9a-f]+:[ 	]+72d59073[ 	]+csrw[ 	]+mhpmevent13h,a1
+[ 	]+[0-9a-f]+:[ 	]+72e02573[ 	]+csrr[ 	]+a0,mhpmevent14h
+[ 	]+[0-9a-f]+:[ 	]+72e59073[ 	]+csrw[ 	]+mhpmevent14h,a1
+[ 	]+[0-9a-f]+:[ 	]+72f02573[ 	]+csrr[ 	]+a0,mhpmevent15h
+[ 	]+[0-9a-f]+:[ 	]+72f59073[ 	]+csrw[ 	]+mhpmevent15h,a1
+[ 	]+[0-9a-f]+:[ 	]+73002573[ 	]+csrr[ 	]+a0,mhpmevent16h
+[ 	]+[0-9a-f]+:[ 	]+73059073[ 	]+csrw[ 	]+mhpmevent16h,a1
+[ 	]+[0-9a-f]+:[ 	]+73102573[ 	]+csrr[ 	]+a0,mhpmevent17h
+[ 	]+[0-9a-f]+:[ 	]+73159073[ 	]+csrw[ 	]+mhpmevent17h,a1
+[ 	]+[0-9a-f]+:[ 	]+73202573[ 	]+csrr[ 	]+a0,mhpmevent18h
+[ 	]+[0-9a-f]+:[ 	]+73259073[ 	]+csrw[ 	]+mhpmevent18h,a1
+[ 	]+[0-9a-f]+:[ 	]+73302573[ 	]+csrr[ 	]+a0,mhpmevent19h
+[ 	]+[0-9a-f]+:[ 	]+73359073[ 	]+csrw[ 	]+mhpmevent19h,a1
+[ 	]+[0-9a-f]+:[ 	]+73402573[ 	]+csrr[ 	]+a0,mhpmevent20h
+[ 	]+[0-9a-f]+:[ 	]+73459073[ 	]+csrw[ 	]+mhpmevent20h,a1
+[ 	]+[0-9a-f]+:[ 	]+73502573[ 	]+csrr[ 	]+a0,mhpmevent21h
+[ 	]+[0-9a-f]+:[ 	]+73559073[ 	]+csrw[ 	]+mhpmevent21h,a1
+[ 	]+[0-9a-f]+:[ 	]+73602573[ 	]+csrr[ 	]+a0,mhpmevent22h
+[ 	]+[0-9a-f]+:[ 	]+73659073[ 	]+csrw[ 	]+mhpmevent22h,a1
+[ 	]+[0-9a-f]+:[ 	]+73702573[ 	]+csrr[ 	]+a0,mhpmevent23h
+[ 	]+[0-9a-f]+:[ 	]+73759073[ 	]+csrw[ 	]+mhpmevent23h,a1
+[ 	]+[0-9a-f]+:[ 	]+73802573[ 	]+csrr[ 	]+a0,mhpmevent24h
+[ 	]+[0-9a-f]+:[ 	]+73859073[ 	]+csrw[ 	]+mhpmevent24h,a1
+[ 	]+[0-9a-f]+:[ 	]+73902573[ 	]+csrr[ 	]+a0,mhpmevent25h
+[ 	]+[0-9a-f]+:[ 	]+73959073[ 	]+csrw[ 	]+mhpmevent25h,a1
+[ 	]+[0-9a-f]+:[ 	]+73a02573[ 	]+csrr[ 	]+a0,mhpmevent26h
+[ 	]+[0-9a-f]+:[ 	]+73a59073[ 	]+csrw[ 	]+mhpmevent26h,a1
+[ 	]+[0-9a-f]+:[ 	]+73b02573[ 	]+csrr[ 	]+a0,mhpmevent27h
+[ 	]+[0-9a-f]+:[ 	]+73b59073[ 	]+csrw[ 	]+mhpmevent27h,a1
+[ 	]+[0-9a-f]+:[ 	]+73c02573[ 	]+csrr[ 	]+a0,mhpmevent28h
+[ 	]+[0-9a-f]+:[ 	]+73c59073[ 	]+csrw[ 	]+mhpmevent28h,a1
+[ 	]+[0-9a-f]+:[ 	]+73d02573[ 	]+csrr[ 	]+a0,mhpmevent29h
+[ 	]+[0-9a-f]+:[ 	]+73d59073[ 	]+csrw[ 	]+mhpmevent29h,a1
+[ 	]+[0-9a-f]+:[ 	]+73e02573[ 	]+csrr[ 	]+a0,mhpmevent30h
+[ 	]+[0-9a-f]+:[ 	]+73e59073[ 	]+csrw[ 	]+mhpmevent30h,a1
+[ 	]+[0-9a-f]+:[ 	]+73f02573[ 	]+csrr[ 	]+a0,mhpmevent31h
+[ 	]+[0-9a-f]+:[ 	]+73f59073[ 	]+csrw[ 	]+mhpmevent31h,a1
 [ 	]+[0-9a-f]+:[ 	]+04302573[ 	]+csrr[ 	]+a0,0x43
 [ 	]+[0-9a-f]+:[ 	]+04359073[ 	]+csrw[ 	]+0x43,a1
 [ 	]+[0-9a-f]+:[ 	]+14302573[ 	]+csrr[ 	]+a0,stval
diff --git a/gas/testsuite/gas/riscv/csr-version-1p12.l b/gas/testsuite/gas/riscv/csr-version-1p12.l
index b23a705f88a..b88a20d7254 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p12.l
+++ b/gas/testsuite/gas/riscv/csr-version-1p12.l
@@ -277,6 +277,125 @@
 .*Warning: invalid CSR `hstateen3h', needs `smstateen' extension
 .*Warning: invalid CSR `hstateen3h', needs rv32i extension
 .*Warning: invalid CSR `hstateen3h', needs `smstateen' extension
+.*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
+.*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
+.*Warning: read-only CSR is written `csrw scountovf,a1'
+.*Warning: invalid CSR `mhpmevent3h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent3h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent3h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent3h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent4h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent4h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent4h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent4h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent5h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent5h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent5h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent5h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent6h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent6h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent6h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent6h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent7h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent7h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent7h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent7h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent8h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent8h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent8h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent8h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent9h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent9h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent9h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent9h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent10h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent10h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent10h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent10h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent11h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent11h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent11h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent11h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent12h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent12h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent12h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent12h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent13h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent13h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent13h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent13h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent14h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent14h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent14h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent14h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent15h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent15h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent15h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent15h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent16h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent16h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent16h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent16h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent17h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent17h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent17h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent17h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent18h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent18h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent18h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent18h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent19h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent19h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent19h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent19h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent20h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent20h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent20h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent20h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent21h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent21h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent21h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent21h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent22h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent22h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent22h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent22h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent23h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent23h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent23h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent23h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent24h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent24h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent24h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent24h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent25h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent25h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent25h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent25h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent26h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent26h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent26h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent26h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent27h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent27h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent27h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent27h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent28h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent28h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent28h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent28h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent29h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent29h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent29h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent29h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent30h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent30h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent30h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent30h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent31h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent31h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent31h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent31h', needs `sscofpmf' extension
 .*Warning: invalid CSR `ubadaddr' for the privileged spec `1.12'
 .*Warning: invalid CSR `ubadaddr' for the privileged spec `1.12'
 .*Warning: invalid CSR `sbadaddr' for the privileged spec `1.12'
diff --git a/gas/testsuite/gas/riscv/csr-version-1p9p1.d b/gas/testsuite/gas/riscv/csr-version-1p9p1.d
index a593182b168..7e1772c411a 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p9p1.d
+++ b/gas/testsuite/gas/riscv/csr-version-1p9p1.d
@@ -641,6 +641,66 @@ Disassembly of section .text:
 [ 	]+[0-9a-f]+:[ 	]+61e59073[ 	]+csrw[ 	]+0x61e,a1
 [ 	]+[0-9a-f]+:[ 	]+61f02573[ 	]+csrr[ 	]+a0,0x61f
 [ 	]+[0-9a-f]+:[ 	]+61f59073[ 	]+csrw[ 	]+0x61f,a1
+[ 	]+[0-9a-f]+:[ 	]+da002573[ 	]+csrr[ 	]+a0,0xda0
+[ 	]+[0-9a-f]+:[ 	]+da059073[ 	]+csrw[ 	]+0xda0,a1
+[ 	]+[0-9a-f]+:[ 	]+72302573[ 	]+csrr[ 	]+a0,0x723
+[ 	]+[0-9a-f]+:[ 	]+72359073[ 	]+csrw[ 	]+0x723,a1
+[ 	]+[0-9a-f]+:[ 	]+72402573[ 	]+csrr[ 	]+a0,0x724
+[ 	]+[0-9a-f]+:[ 	]+72459073[ 	]+csrw[ 	]+0x724,a1
+[ 	]+[0-9a-f]+:[ 	]+72502573[ 	]+csrr[ 	]+a0,0x725
+[ 	]+[0-9a-f]+:[ 	]+72559073[ 	]+csrw[ 	]+0x725,a1
+[ 	]+[0-9a-f]+:[ 	]+72602573[ 	]+csrr[ 	]+a0,0x726
+[ 	]+[0-9a-f]+:[ 	]+72659073[ 	]+csrw[ 	]+0x726,a1
+[ 	]+[0-9a-f]+:[ 	]+72702573[ 	]+csrr[ 	]+a0,0x727
+[ 	]+[0-9a-f]+:[ 	]+72759073[ 	]+csrw[ 	]+0x727,a1
+[ 	]+[0-9a-f]+:[ 	]+72802573[ 	]+csrr[ 	]+a0,0x728
+[ 	]+[0-9a-f]+:[ 	]+72859073[ 	]+csrw[ 	]+0x728,a1
+[ 	]+[0-9a-f]+:[ 	]+72902573[ 	]+csrr[ 	]+a0,0x729
+[ 	]+[0-9a-f]+:[ 	]+72959073[ 	]+csrw[ 	]+0x729,a1
+[ 	]+[0-9a-f]+:[ 	]+72a02573[ 	]+csrr[ 	]+a0,0x72a
+[ 	]+[0-9a-f]+:[ 	]+72a59073[ 	]+csrw[ 	]+0x72a,a1
+[ 	]+[0-9a-f]+:[ 	]+72b02573[ 	]+csrr[ 	]+a0,0x72b
+[ 	]+[0-9a-f]+:[ 	]+72b59073[ 	]+csrw[ 	]+0x72b,a1
+[ 	]+[0-9a-f]+:[ 	]+72c02573[ 	]+csrr[ 	]+a0,0x72c
+[ 	]+[0-9a-f]+:[ 	]+72c59073[ 	]+csrw[ 	]+0x72c,a1
+[ 	]+[0-9a-f]+:[ 	]+72d02573[ 	]+csrr[ 	]+a0,0x72d
+[ 	]+[0-9a-f]+:[ 	]+72d59073[ 	]+csrw[ 	]+0x72d,a1
+[ 	]+[0-9a-f]+:[ 	]+72e02573[ 	]+csrr[ 	]+a0,0x72e
+[ 	]+[0-9a-f]+:[ 	]+72e59073[ 	]+csrw[ 	]+0x72e,a1
+[ 	]+[0-9a-f]+:[ 	]+72f02573[ 	]+csrr[ 	]+a0,0x72f
+[ 	]+[0-9a-f]+:[ 	]+72f59073[ 	]+csrw[ 	]+0x72f,a1
+[ 	]+[0-9a-f]+:[ 	]+73002573[ 	]+csrr[ 	]+a0,0x730
+[ 	]+[0-9a-f]+:[ 	]+73059073[ 	]+csrw[ 	]+0x730,a1
+[ 	]+[0-9a-f]+:[ 	]+73102573[ 	]+csrr[ 	]+a0,0x731
+[ 	]+[0-9a-f]+:[ 	]+73159073[ 	]+csrw[ 	]+0x731,a1
+[ 	]+[0-9a-f]+:[ 	]+73202573[ 	]+csrr[ 	]+a0,0x732
+[ 	]+[0-9a-f]+:[ 	]+73259073[ 	]+csrw[ 	]+0x732,a1
+[ 	]+[0-9a-f]+:[ 	]+73302573[ 	]+csrr[ 	]+a0,0x733
+[ 	]+[0-9a-f]+:[ 	]+73359073[ 	]+csrw[ 	]+0x733,a1
+[ 	]+[0-9a-f]+:[ 	]+73402573[ 	]+csrr[ 	]+a0,0x734
+[ 	]+[0-9a-f]+:[ 	]+73459073[ 	]+csrw[ 	]+0x734,a1
+[ 	]+[0-9a-f]+:[ 	]+73502573[ 	]+csrr[ 	]+a0,0x735
+[ 	]+[0-9a-f]+:[ 	]+73559073[ 	]+csrw[ 	]+0x735,a1
+[ 	]+[0-9a-f]+:[ 	]+73602573[ 	]+csrr[ 	]+a0,0x736
+[ 	]+[0-9a-f]+:[ 	]+73659073[ 	]+csrw[ 	]+0x736,a1
+[ 	]+[0-9a-f]+:[ 	]+73702573[ 	]+csrr[ 	]+a0,0x737
+[ 	]+[0-9a-f]+:[ 	]+73759073[ 	]+csrw[ 	]+0x737,a1
+[ 	]+[0-9a-f]+:[ 	]+73802573[ 	]+csrr[ 	]+a0,0x738
+[ 	]+[0-9a-f]+:[ 	]+73859073[ 	]+csrw[ 	]+0x738,a1
+[ 	]+[0-9a-f]+:[ 	]+73902573[ 	]+csrr[ 	]+a0,0x739
+[ 	]+[0-9a-f]+:[ 	]+73959073[ 	]+csrw[ 	]+0x739,a1
+[ 	]+[0-9a-f]+:[ 	]+73a02573[ 	]+csrr[ 	]+a0,0x73a
+[ 	]+[0-9a-f]+:[ 	]+73a59073[ 	]+csrw[ 	]+0x73a,a1
+[ 	]+[0-9a-f]+:[ 	]+73b02573[ 	]+csrr[ 	]+a0,0x73b
+[ 	]+[0-9a-f]+:[ 	]+73b59073[ 	]+csrw[ 	]+0x73b,a1
+[ 	]+[0-9a-f]+:[ 	]+73c02573[ 	]+csrr[ 	]+a0,0x73c
+[ 	]+[0-9a-f]+:[ 	]+73c59073[ 	]+csrw[ 	]+0x73c,a1
+[ 	]+[0-9a-f]+:[ 	]+73d02573[ 	]+csrr[ 	]+a0,0x73d
+[ 	]+[0-9a-f]+:[ 	]+73d59073[ 	]+csrw[ 	]+0x73d,a1
+[ 	]+[0-9a-f]+:[ 	]+73e02573[ 	]+csrr[ 	]+a0,0x73e
+[ 	]+[0-9a-f]+:[ 	]+73e59073[ 	]+csrw[ 	]+0x73e,a1
+[ 	]+[0-9a-f]+:[ 	]+73f02573[ 	]+csrr[ 	]+a0,0x73f
+[ 	]+[0-9a-f]+:[ 	]+73f59073[ 	]+csrw[ 	]+0x73f,a1
 [ 	]+[0-9a-f]+:[ 	]+04302573[ 	]+csrr[ 	]+a0,ubadaddr
 [ 	]+[0-9a-f]+:[ 	]+04359073[ 	]+csrw[ 	]+ubadaddr,a1
 [ 	]+[0-9a-f]+:[ 	]+14302573[ 	]+csrr[ 	]+a0,sbadaddr
diff --git a/gas/testsuite/gas/riscv/csr-version-1p9p1.l b/gas/testsuite/gas/riscv/csr-version-1p9p1.l
index 75eda35d2ce..527af670bf7 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p9p1.l
+++ b/gas/testsuite/gas/riscv/csr-version-1p9p1.l
@@ -533,6 +533,185 @@
 .*Warning: invalid CSR `hstateen3h', needs rv32i extension
 .*Warning: invalid CSR `hstateen3h', needs `smstateen' extension
 .*Warning: invalid CSR `hstateen3h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
+.*Warning: invalid CSR `scountovf' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
+.*Warning: invalid CSR `scountovf' for the privileged spec `1.9.1'
+.*Warning: read-only CSR is written `csrw scountovf,a1'
+.*Warning: invalid CSR `mhpmevent3h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent3h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent3h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mhpmevent3h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent3h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent3h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mhpmevent4h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent4h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent4h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mhpmevent4h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent4h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent4h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mhpmevent5h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent5h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent5h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mhpmevent5h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent5h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent5h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mhpmevent6h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent6h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent6h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mhpmevent6h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent6h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent6h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mhpmevent7h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent7h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent7h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mhpmevent7h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent7h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent7h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mhpmevent8h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent8h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent8h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mhpmevent8h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent8h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent8h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mhpmevent9h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent9h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent9h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mhpmevent9h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent9h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent9h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mhpmevent10h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent10h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent10h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mhpmevent10h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent10h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent10h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mhpmevent11h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent11h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent11h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mhpmevent11h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent11h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent11h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mhpmevent12h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent12h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent12h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mhpmevent12h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent12h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent12h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mhpmevent13h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent13h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent13h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mhpmevent13h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent13h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent13h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mhpmevent14h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent14h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent14h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mhpmevent14h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent14h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent14h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mhpmevent15h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent15h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent15h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mhpmevent15h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent15h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent15h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mhpmevent16h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent16h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent16h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mhpmevent16h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent16h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent16h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mhpmevent17h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent17h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent17h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mhpmevent17h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent17h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent17h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mhpmevent18h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent18h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent18h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mhpmevent18h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent18h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent18h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mhpmevent19h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent19h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent19h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mhpmevent19h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent19h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent19h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mhpmevent20h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent20h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent20h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mhpmevent20h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent20h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent20h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mhpmevent21h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent21h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent21h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mhpmevent21h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent21h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent21h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mhpmevent22h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent22h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent22h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mhpmevent22h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent22h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent22h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mhpmevent23h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent23h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent23h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mhpmevent23h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent23h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent23h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mhpmevent24h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent24h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent24h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mhpmevent24h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent24h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent24h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mhpmevent25h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent25h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent25h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mhpmevent25h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent25h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent25h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mhpmevent26h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent26h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent26h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mhpmevent26h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent26h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent26h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mhpmevent27h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent27h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent27h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mhpmevent27h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent27h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent27h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mhpmevent28h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent28h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent28h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mhpmevent28h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent28h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent28h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mhpmevent29h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent29h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent29h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mhpmevent29h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent29h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent29h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mhpmevent30h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent30h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent30h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mhpmevent30h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent30h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent30h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mhpmevent31h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent31h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent31h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mhpmevent31h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent31h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent31h' for the privileged spec `1.9.1'
 .*Warning: invalid CSR `utval' for the privileged spec `1.9.1'
 .*Warning: invalid CSR `utval' for the privileged spec `1.9.1'
 .*Warning: invalid CSR `fflags', needs `f' extension
diff --git a/gas/testsuite/gas/riscv/csr.s b/gas/testsuite/gas/riscv/csr.s
index 1a4a2be2c0f..2a723123f1b 100644
--- a/gas/testsuite/gas/riscv/csr.s
+++ b/gas/testsuite/gas/riscv/csr.s
@@ -359,6 +359,38 @@
 	csr hstateen2h
 	csr hstateen3h
 
+	# Sscofpmf extension
+	csr scountovf
+	csr mhpmevent3h
+	csr mhpmevent4h
+	csr mhpmevent5h
+	csr mhpmevent6h
+	csr mhpmevent7h
+	csr mhpmevent8h
+	csr mhpmevent9h
+	csr mhpmevent10h
+	csr mhpmevent11h
+	csr mhpmevent12h
+	csr mhpmevent13h
+	csr mhpmevent14h
+	csr mhpmevent15h
+	csr mhpmevent16h
+	csr mhpmevent17h
+	csr mhpmevent18h
+	csr mhpmevent19h
+	csr mhpmevent20h
+	csr mhpmevent21h
+	csr mhpmevent22h
+	csr mhpmevent23h
+	csr mhpmevent24h
+	csr mhpmevent25h
+	csr mhpmevent26h
+	csr mhpmevent27h
+	csr mhpmevent28h
+	csr mhpmevent29h
+	csr mhpmevent30h
+	csr mhpmevent31h
+
 	# Supported in previous priv spec, but dropped now
 
 	csr ubadaddr		# 0x043 in 1.9.1, but the value is utval since 1.10
diff --git a/include/opcode/riscv-opc.h b/include/opcode/riscv-opc.h
index badfd48efdc..07ee832ec0f 100644
--- a/include/opcode/riscv-opc.h
+++ b/include/opcode/riscv-opc.h
@@ -2369,6 +2369,37 @@
 #define CSR_HSTATEEN1H 0x61d
 #define CSR_HSTATEEN2H 0x61e
 #define CSR_HSTATEEN3H 0x61f
+/* Sscofpmf extension */
+#define CSR_SCOUNTOVF 0xda0
+#define CSR_MHPMEVENT3H 0x723
+#define CSR_MHPMEVENT4H 0x724
+#define CSR_MHPMEVENT5H 0x725
+#define CSR_MHPMEVENT6H 0x726
+#define CSR_MHPMEVENT7H 0x727
+#define CSR_MHPMEVENT8H 0x728
+#define CSR_MHPMEVENT9H 0x729
+#define CSR_MHPMEVENT10H 0x72a
+#define CSR_MHPMEVENT11H 0x72b
+#define CSR_MHPMEVENT12H 0x72c
+#define CSR_MHPMEVENT13H 0x72d
+#define CSR_MHPMEVENT14H 0x72e
+#define CSR_MHPMEVENT15H 0x72f
+#define CSR_MHPMEVENT16H 0x730
+#define CSR_MHPMEVENT17H 0x731
+#define CSR_MHPMEVENT18H 0x732
+#define CSR_MHPMEVENT19H 0x733
+#define CSR_MHPMEVENT20H 0x734
+#define CSR_MHPMEVENT21H 0x735
+#define CSR_MHPMEVENT22H 0x736
+#define CSR_MHPMEVENT23H 0x737
+#define CSR_MHPMEVENT24H 0x738
+#define CSR_MHPMEVENT25H 0x739
+#define CSR_MHPMEVENT26H 0x73a
+#define CSR_MHPMEVENT27H 0x73b
+#define CSR_MHPMEVENT28H 0x73c
+#define CSR_MHPMEVENT29H 0x73d
+#define CSR_MHPMEVENT30H 0x73e
+#define CSR_MHPMEVENT31H 0x73f
 /* Unprivileged Floating-Point CSR addresses.  */
 #define CSR_FFLAGS 0x1
 #define CSR_FRM 0x2
@@ -3048,6 +3079,37 @@ DECLARE_CSR(hstateen0h, CSR_HSTATEEN0H, CSR_CLASS_SMSTATEEN_32, PRIV_SPEC_CLASS_
 DECLARE_CSR(hstateen1h, CSR_HSTATEEN1H, CSR_CLASS_SMSTATEEN_32, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
 DECLARE_CSR(hstateen2h, CSR_HSTATEEN2H, CSR_CLASS_SMSTATEEN_32, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
 DECLARE_CSR(hstateen3h, CSR_HSTATEEN3H, CSR_CLASS_SMSTATEEN_32, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
+/* Sscofpmf extension */
+DECLARE_CSR(scountovf, CSR_SCOUNTOVF, CSR_CLASS_SSCOFPMF, PRIV_SPEC_CLASS_1P11, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmevent3h, CSR_MHPMEVENT3H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_1P11, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmevent4h, CSR_MHPMEVENT4H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_1P11, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmevent5h, CSR_MHPMEVENT5H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_1P11, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmevent6h, CSR_MHPMEVENT6H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_1P11, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmevent7h, CSR_MHPMEVENT7H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_1P11, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmevent8h, CSR_MHPMEVENT8H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_1P11, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmevent9h, CSR_MHPMEVENT9H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_1P11, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmevent10h, CSR_MHPMEVENT10H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_1P11, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmevent11h, CSR_MHPMEVENT11H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_1P11, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmevent12h, CSR_MHPMEVENT12H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_1P11, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmevent13h, CSR_MHPMEVENT13H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_1P11, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmevent14h, CSR_MHPMEVENT14H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_1P11, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmevent15h, CSR_MHPMEVENT15H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_1P11, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmevent16h, CSR_MHPMEVENT16H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_1P11, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmevent17h, CSR_MHPMEVENT17H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_1P11, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmevent18h, CSR_MHPMEVENT18H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_1P11, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmevent19h, CSR_MHPMEVENT19H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_1P11, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmevent20h, CSR_MHPMEVENT20H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_1P11, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmevent21h, CSR_MHPMEVENT21H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_1P11, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmevent22h, CSR_MHPMEVENT22H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_1P11, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmevent23h, CSR_MHPMEVENT23H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_1P11, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmevent24h, CSR_MHPMEVENT24H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_1P11, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmevent25h, CSR_MHPMEVENT25H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_1P11, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmevent26h, CSR_MHPMEVENT26H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_1P11, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmevent27h, CSR_MHPMEVENT27H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_1P11, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmevent28h, CSR_MHPMEVENT28H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_1P11, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmevent29h, CSR_MHPMEVENT29H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_1P11, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmevent30h, CSR_MHPMEVENT30H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_1P11, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmevent31h, CSR_MHPMEVENT31H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_1P11, PRIV_SPEC_CLASS_DRAFT)
 /* Dropped CSRs.  */
 DECLARE_CSR(mbase, CSR_MBASE, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_1P10)
 DECLARE_CSR(mbound, CSR_MBOUND, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_1P10)
-- 
2.32.0


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

* [PATCH 3/3] RISC-V: Add 'Sstc' extension and its CSRs
  2022-02-24 12:10 ` [PATCH 0/3] RISC-V: Add CSRs for several supervisor extensions Tsukasa OI
  2022-02-24 12:10   ` [PATCH 1/3] RISC-V: Add 'Smstateen' extension and its CSRs Tsukasa OI
  2022-02-24 12:10   ` [PATCH 2/3] RISC-V: Add 'Sscofpmf' extension with " Tsukasa OI
@ 2022-02-24 12:10   ` Tsukasa OI
  2022-05-24  9:35   ` [PATCH v2 0/3] RISC-V: Add CSRs for several supervisor extensions Tsukasa OI
  3 siblings, 0 replies; 32+ messages in thread
From: Tsukasa OI @ 2022-02-24 12:10 UTC (permalink / raw)
  To: Tsukasa OI, Nelson Chu; +Cc: binutils

This commit adds "stimecmp / vstimecmp" Extension (Sstc) and its CSRs.

bfd/ChangeLog:

	* elfxx-riscv.c (riscv_supported_std_s_ext): Add 'Sstc'
	extension to valid 'S' extension list.

gas/ChangeLog:

	* config/tc-riscv.c (enum riscv_csr_class): Add CSR classes for
	'Sstc' extension. (riscv_csr_address): Add handling for new CSR
	classes.
	* testsuite/gas/riscv/csr-dw-regnums.s: Add new CSRs.
	* testsuite/gas/riscv/csr-dw-regnums.d: 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_STIMECMP, CSR_STIMECMPH,
	CSR_VSTIMECMP, CSR_VSTIMECMPH): New CSR macros.
---
 bfd/elfxx-riscv.c                           |  1 +
 gas/config/tc-riscv.c                       |  9 +++++++++
 gas/testsuite/gas/riscv/csr-dw-regnums.d    |  4 ++++
 gas/testsuite/gas/riscv/csr-dw-regnums.s    |  5 +++++
 gas/testsuite/gas/riscv/csr-version-1p10.d  |  8 ++++++++
 gas/testsuite/gas/riscv/csr-version-1p10.l  | 20 ++++++++++++++++++++
 gas/testsuite/gas/riscv/csr-version-1p11.d  |  8 ++++++++
 gas/testsuite/gas/riscv/csr-version-1p11.l  | 16 ++++++++++++++++
 gas/testsuite/gas/riscv/csr-version-1p12.d  |  8 ++++++++
 gas/testsuite/gas/riscv/csr-version-1p12.l  | 12 ++++++++++++
 gas/testsuite/gas/riscv/csr-version-1p9p1.d |  8 ++++++++
 gas/testsuite/gas/riscv/csr-version-1p9p1.l | 20 ++++++++++++++++++++
 gas/testsuite/gas/riscv/csr.s               |  6 ++++++
 include/opcode/riscv-opc.h                  | 10 ++++++++++
 14 files changed, 135 insertions(+)

diff --git a/bfd/elfxx-riscv.c b/bfd/elfxx-riscv.c
index fab30c700ba..92b12141a80 100644
--- a/bfd/elfxx-riscv.c
+++ b/bfd/elfxx-riscv.c
@@ -1222,6 +1222,7 @@ static struct riscv_supported_ext riscv_supported_std_s_ext[] =
 {
   {"smstateen",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
   {"sscofpmf",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
+  {"sstc",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
   {"svinval",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
   {NULL, 0, 0, 0, 0}
 };
diff --git a/gas/config/tc-riscv.c b/gas/config/tc-riscv.c
index 3600af64607..a64dcf49adc 100644
--- a/gas/config/tc-riscv.c
+++ b/gas/config/tc-riscv.c
@@ -69,6 +69,8 @@ enum riscv_csr_class
   CSR_CLASS_SMSTATEEN_32,	/* Smstateen RV32 only */
   CSR_CLASS_SSCOFPMF,		/* Sscofpmf only */
   CSR_CLASS_SSCOFPMF_32,	/* Sscofpmf RV32 only */
+  CSR_CLASS_SSTC,		/* Sstc only */
+  CSR_CLASS_SSTC_32,		/* Sstc RV32 only */
   CSR_CLASS_DEBUG	/* debug CSR */
 };
 
@@ -936,6 +938,13 @@ riscv_csr_address (const char *csr_name,
       need_check_version = true;
       extension = "sscofpmf";
       break;
+    case CSR_CLASS_SSTC_32:
+      rv32_only = (xlen == 32);
+      /* Fall through.  */
+    case CSR_CLASS_SSTC:
+      need_check_version = true;
+      extension = "sstc";
+      break;
     case CSR_CLASS_DEBUG:
       break;
     default:
diff --git a/gas/testsuite/gas/riscv/csr-dw-regnums.d b/gas/testsuite/gas/riscv/csr-dw-regnums.d
index 2f353293faa..b4b3806a085 100644
--- a/gas/testsuite/gas/riscv/csr-dw-regnums.d
+++ b/gas/testsuite/gas/riscv/csr-dw-regnums.d
@@ -363,6 +363,10 @@ 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: 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
+  DW_CFA_offset_extended_sf: r4701 \(vstimecmph\) at cfa\+2420
   DW_CFA_offset_extended_sf: r4163 \(utval\) at cfa\+268
   DW_CFA_offset_extended_sf: r4419 \(stval\) at cfa\+1292
   DW_CFA_offset_extended_sf: r4480 \(satp\) at cfa\+1536
diff --git a/gas/testsuite/gas/riscv/csr-dw-regnums.s b/gas/testsuite/gas/riscv/csr-dw-regnums.s
index caac321c6e2..6cfa415ebc2 100644
--- a/gas/testsuite/gas/riscv/csr-dw-regnums.s
+++ b/gas/testsuite/gas/riscv/csr-dw-regnums.s
@@ -359,6 +359,11 @@ _start:
 	.cfi_offset mhpmevent29h, 7412
 	.cfi_offset mhpmevent30h, 7416
 	.cfi_offset mhpmevent31h, 7420
+	# Sstc extension
+	.cfi_offset stimecmp, 1332
+	.cfi_offset stimecmph, 1396
+	.cfi_offset vstimecmp, 2356
+	.cfi_offset vstimecmph, 2420
 	# dropped
 	.cfi_offset ubadaddr, 268	# aliases
 	.cfi_offset sbadaddr, 1292	# aliases
diff --git a/gas/testsuite/gas/riscv/csr-version-1p10.d b/gas/testsuite/gas/riscv/csr-version-1p10.d
index 124ef73baa7..ea19043a49b 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p10.d
+++ b/gas/testsuite/gas/riscv/csr-version-1p10.d
@@ -701,6 +701,14 @@ Disassembly of section .text:
 [ 	]+[0-9a-f]+:[ 	]+73e59073[ 	]+csrw[ 	]+0x73e,a1
 [ 	]+[0-9a-f]+:[ 	]+73f02573[ 	]+csrr[ 	]+a0,0x73f
 [ 	]+[0-9a-f]+:[ 	]+73f59073[ 	]+csrw[ 	]+0x73f,a1
+[ 	]+[0-9a-f]+:[ 	]+14d02573[ 	]+csrr[ 	]+a0,0x14d
+[ 	]+[0-9a-f]+:[ 	]+14d59073[ 	]+csrw[ 	]+0x14d,a1
+[ 	]+[0-9a-f]+:[ 	]+15d02573[ 	]+csrr[ 	]+a0,0x15d
+[ 	]+[0-9a-f]+:[ 	]+15d59073[ 	]+csrw[ 	]+0x15d,a1
+[ 	]+[0-9a-f]+:[ 	]+24d02573[ 	]+csrr[ 	]+a0,0x24d
+[ 	]+[0-9a-f]+:[ 	]+24d59073[ 	]+csrw[ 	]+0x24d,a1
+[ 	]+[0-9a-f]+:[ 	]+25d02573[ 	]+csrr[ 	]+a0,0x25d
+[ 	]+[0-9a-f]+:[ 	]+25d59073[ 	]+csrw[ 	]+0x25d,a1
 [ 	]+[0-9a-f]+:[ 	]+04302573[ 	]+csrr[ 	]+a0,utval
 [ 	]+[0-9a-f]+:[ 	]+04359073[ 	]+csrw[ 	]+utval,a1
 [ 	]+[0-9a-f]+:[ 	]+14302573[ 	]+csrr[ 	]+a0,stval
diff --git a/gas/testsuite/gas/riscv/csr-version-1p10.l b/gas/testsuite/gas/riscv/csr-version-1p10.l
index e2d2cfef15a..d04643ac5c5 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p10.l
+++ b/gas/testsuite/gas/riscv/csr-version-1p10.l
@@ -662,6 +662,26 @@
 .*Warning: invalid CSR `mhpmevent31h', needs rv32i extension
 .*Warning: invalid CSR `mhpmevent31h', needs `sscofpmf' extension
 .*Warning: invalid CSR `mhpmevent31h' for the privileged spec `1.10'
+.*Warning: invalid CSR `stimecmp', needs `sstc' extension
+.*Warning: invalid CSR `stimecmp' for the privileged spec `1.10'
+.*Warning: invalid CSR `stimecmp', needs `sstc' extension
+.*Warning: invalid CSR `stimecmp' for the privileged spec `1.10'
+.*Warning: invalid CSR `stimecmph', needs rv32i extension
+.*Warning: invalid CSR `stimecmph', needs `sstc' extension
+.*Warning: invalid CSR `stimecmph' for the privileged spec `1.10'
+.*Warning: invalid CSR `stimecmph', needs rv32i extension
+.*Warning: invalid CSR `stimecmph', needs `sstc' extension
+.*Warning: invalid CSR `stimecmph' for the privileged spec `1.10'
+.*Warning: invalid CSR `vstimecmp', needs `sstc' extension
+.*Warning: invalid CSR `vstimecmp' for the privileged spec `1.10'
+.*Warning: invalid CSR `vstimecmp', needs `sstc' extension
+.*Warning: invalid CSR `vstimecmp' for the privileged spec `1.10'
+.*Warning: invalid CSR `vstimecmph', needs rv32i extension
+.*Warning: invalid CSR `vstimecmph', needs `sstc' extension
+.*Warning: invalid CSR `vstimecmph' for the privileged spec `1.10'
+.*Warning: invalid CSR `vstimecmph', needs rv32i extension
+.*Warning: invalid CSR `vstimecmph', needs `sstc' extension
+.*Warning: invalid CSR `vstimecmph' for the privileged spec `1.10'
 .*Warning: invalid CSR `ubadaddr' for the privileged spec `1.10'
 .*Warning: invalid CSR `ubadaddr' for the privileged spec `1.10'
 .*Warning: invalid CSR `sbadaddr' for the privileged spec `1.10'
diff --git a/gas/testsuite/gas/riscv/csr-version-1p11.d b/gas/testsuite/gas/riscv/csr-version-1p11.d
index 1d2640b540e..5190094d21c 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p11.d
+++ b/gas/testsuite/gas/riscv/csr-version-1p11.d
@@ -701,6 +701,14 @@ 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]+:[ 	]+14d02573[ 	]+csrr[ 	]+a0,stimecmp
+[ 	]+[0-9a-f]+:[ 	]+14d59073[ 	]+csrw[ 	]+stimecmp,a1
+[ 	]+[0-9a-f]+:[ 	]+15d02573[ 	]+csrr[ 	]+a0,stimecmph
+[ 	]+[0-9a-f]+:[ 	]+15d59073[ 	]+csrw[ 	]+stimecmph,a1
+[ 	]+[0-9a-f]+:[ 	]+24d02573[ 	]+csrr[ 	]+a0,0x24d
+[ 	]+[0-9a-f]+:[ 	]+24d59073[ 	]+csrw[ 	]+0x24d,a1
+[ 	]+[0-9a-f]+:[ 	]+25d02573[ 	]+csrr[ 	]+a0,0x25d
+[ 	]+[0-9a-f]+:[ 	]+25d59073[ 	]+csrw[ 	]+0x25d,a1
 [ 	]+[0-9a-f]+:[ 	]+04302573[ 	]+csrr[ 	]+a0,utval
 [ 	]+[0-9a-f]+:[ 	]+04359073[ 	]+csrw[ 	]+utval,a1
 [ 	]+[0-9a-f]+:[ 	]+14302573[ 	]+csrr[ 	]+a0,stval
diff --git a/gas/testsuite/gas/riscv/csr-version-1p11.l b/gas/testsuite/gas/riscv/csr-version-1p11.l
index 3d129511534..0aa7c49a613 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p11.l
+++ b/gas/testsuite/gas/riscv/csr-version-1p11.l
@@ -600,6 +600,22 @@
 .*Warning: invalid CSR `mhpmevent31h', needs `sscofpmf' extension
 .*Warning: invalid CSR `mhpmevent31h', needs rv32i extension
 .*Warning: invalid CSR `mhpmevent31h', needs `sscofpmf' extension
+.*Warning: invalid CSR `stimecmp', needs `sstc' extension
+.*Warning: invalid CSR `stimecmp', needs `sstc' extension
+.*Warning: invalid CSR `stimecmph', needs rv32i extension
+.*Warning: invalid CSR `stimecmph', needs `sstc' extension
+.*Warning: invalid CSR `stimecmph', needs rv32i extension
+.*Warning: invalid CSR `stimecmph', needs `sstc' extension
+.*Warning: invalid CSR `vstimecmp', needs `sstc' extension
+.*Warning: invalid CSR `vstimecmp' for the privileged spec `1.11'
+.*Warning: invalid CSR `vstimecmp', needs `sstc' extension
+.*Warning: invalid CSR `vstimecmp' for the privileged spec `1.11'
+.*Warning: invalid CSR `vstimecmph', needs rv32i extension
+.*Warning: invalid CSR `vstimecmph', needs `sstc' extension
+.*Warning: invalid CSR `vstimecmph' for the privileged spec `1.11'
+.*Warning: invalid CSR `vstimecmph', needs rv32i extension
+.*Warning: invalid CSR `vstimecmph', needs `sstc' extension
+.*Warning: invalid CSR `vstimecmph' for the privileged spec `1.11'
 .*Warning: invalid CSR `ubadaddr' for the privileged spec `1.11'
 .*Warning: invalid CSR `ubadaddr' for the privileged spec `1.11'
 .*Warning: invalid CSR `sbadaddr' for the privileged spec `1.11'
diff --git a/gas/testsuite/gas/riscv/csr-version-1p12.d b/gas/testsuite/gas/riscv/csr-version-1p12.d
index 60f19bff874..728e647c552 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p12.d
+++ b/gas/testsuite/gas/riscv/csr-version-1p12.d
@@ -701,6 +701,14 @@ 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]+:[ 	]+14d02573[ 	]+csrr[ 	]+a0,stimecmp
+[ 	]+[0-9a-f]+:[ 	]+14d59073[ 	]+csrw[ 	]+stimecmp,a1
+[ 	]+[0-9a-f]+:[ 	]+15d02573[ 	]+csrr[ 	]+a0,stimecmph
+[ 	]+[0-9a-f]+:[ 	]+15d59073[ 	]+csrw[ 	]+stimecmph,a1
+[ 	]+[0-9a-f]+:[ 	]+24d02573[ 	]+csrr[ 	]+a0,vstimecmp
+[ 	]+[0-9a-f]+:[ 	]+24d59073[ 	]+csrw[ 	]+vstimecmp,a1
+[ 	]+[0-9a-f]+:[ 	]+25d02573[ 	]+csrr[ 	]+a0,vstimecmph
+[ 	]+[0-9a-f]+:[ 	]+25d59073[ 	]+csrw[ 	]+vstimecmph,a1
 [ 	]+[0-9a-f]+:[ 	]+04302573[ 	]+csrr[ 	]+a0,0x43
 [ 	]+[0-9a-f]+:[ 	]+04359073[ 	]+csrw[ 	]+0x43,a1
 [ 	]+[0-9a-f]+:[ 	]+14302573[ 	]+csrr[ 	]+a0,stval
diff --git a/gas/testsuite/gas/riscv/csr-version-1p12.l b/gas/testsuite/gas/riscv/csr-version-1p12.l
index b88a20d7254..f27a83f6a88 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p12.l
+++ b/gas/testsuite/gas/riscv/csr-version-1p12.l
@@ -396,6 +396,18 @@
 .*Warning: invalid CSR `mhpmevent31h', needs `sscofpmf' extension
 .*Warning: invalid CSR `mhpmevent31h', needs rv32i extension
 .*Warning: invalid CSR `mhpmevent31h', needs `sscofpmf' extension
+.*Warning: invalid CSR `stimecmp', needs `sstc' extension
+.*Warning: invalid CSR `stimecmp', needs `sstc' extension
+.*Warning: invalid CSR `stimecmph', needs rv32i extension
+.*Warning: invalid CSR `stimecmph', needs `sstc' extension
+.*Warning: invalid CSR `stimecmph', needs rv32i extension
+.*Warning: invalid CSR `stimecmph', needs `sstc' extension
+.*Warning: invalid CSR `vstimecmp', needs `sstc' extension
+.*Warning: invalid CSR `vstimecmp', needs `sstc' extension
+.*Warning: invalid CSR `vstimecmph', needs rv32i extension
+.*Warning: invalid CSR `vstimecmph', needs `sstc' extension
+.*Warning: invalid CSR `vstimecmph', needs rv32i extension
+.*Warning: invalid CSR `vstimecmph', needs `sstc' extension
 .*Warning: invalid CSR `ubadaddr' for the privileged spec `1.12'
 .*Warning: invalid CSR `ubadaddr' for the privileged spec `1.12'
 .*Warning: invalid CSR `sbadaddr' for the privileged spec `1.12'
diff --git a/gas/testsuite/gas/riscv/csr-version-1p9p1.d b/gas/testsuite/gas/riscv/csr-version-1p9p1.d
index 7e1772c411a..efdd7f1a834 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p9p1.d
+++ b/gas/testsuite/gas/riscv/csr-version-1p9p1.d
@@ -701,6 +701,14 @@ Disassembly of section .text:
 [ 	]+[0-9a-f]+:[ 	]+73e59073[ 	]+csrw[ 	]+0x73e,a1
 [ 	]+[0-9a-f]+:[ 	]+73f02573[ 	]+csrr[ 	]+a0,0x73f
 [ 	]+[0-9a-f]+:[ 	]+73f59073[ 	]+csrw[ 	]+0x73f,a1
+[ 	]+[0-9a-f]+:[ 	]+14d02573[ 	]+csrr[ 	]+a0,0x14d
+[ 	]+[0-9a-f]+:[ 	]+14d59073[ 	]+csrw[ 	]+0x14d,a1
+[ 	]+[0-9a-f]+:[ 	]+15d02573[ 	]+csrr[ 	]+a0,0x15d
+[ 	]+[0-9a-f]+:[ 	]+15d59073[ 	]+csrw[ 	]+0x15d,a1
+[ 	]+[0-9a-f]+:[ 	]+24d02573[ 	]+csrr[ 	]+a0,0x24d
+[ 	]+[0-9a-f]+:[ 	]+24d59073[ 	]+csrw[ 	]+0x24d,a1
+[ 	]+[0-9a-f]+:[ 	]+25d02573[ 	]+csrr[ 	]+a0,0x25d
+[ 	]+[0-9a-f]+:[ 	]+25d59073[ 	]+csrw[ 	]+0x25d,a1
 [ 	]+[0-9a-f]+:[ 	]+04302573[ 	]+csrr[ 	]+a0,ubadaddr
 [ 	]+[0-9a-f]+:[ 	]+04359073[ 	]+csrw[ 	]+ubadaddr,a1
 [ 	]+[0-9a-f]+:[ 	]+14302573[ 	]+csrr[ 	]+a0,sbadaddr
diff --git a/gas/testsuite/gas/riscv/csr-version-1p9p1.l b/gas/testsuite/gas/riscv/csr-version-1p9p1.l
index 527af670bf7..73433dfdf2a 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p9p1.l
+++ b/gas/testsuite/gas/riscv/csr-version-1p9p1.l
@@ -712,6 +712,26 @@
 .*Warning: invalid CSR `mhpmevent31h', needs rv32i extension
 .*Warning: invalid CSR `mhpmevent31h', needs `sscofpmf' extension
 .*Warning: invalid CSR `mhpmevent31h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `stimecmp', needs `sstc' extension
+.*Warning: invalid CSR `stimecmp' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `stimecmp', needs `sstc' extension
+.*Warning: invalid CSR `stimecmp' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `stimecmph', needs rv32i extension
+.*Warning: invalid CSR `stimecmph', needs `sstc' extension
+.*Warning: invalid CSR `stimecmph' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `stimecmph', needs rv32i extension
+.*Warning: invalid CSR `stimecmph', needs `sstc' extension
+.*Warning: invalid CSR `stimecmph' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `vstimecmp', needs `sstc' extension
+.*Warning: invalid CSR `vstimecmp' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `vstimecmp', needs `sstc' extension
+.*Warning: invalid CSR `vstimecmp' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `vstimecmph', needs rv32i extension
+.*Warning: invalid CSR `vstimecmph', needs `sstc' extension
+.*Warning: invalid CSR `vstimecmph' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `vstimecmph', needs rv32i extension
+.*Warning: invalid CSR `vstimecmph', needs `sstc' extension
+.*Warning: invalid CSR `vstimecmph' for the privileged spec `1.9.1'
 .*Warning: invalid CSR `utval' for the privileged spec `1.9.1'
 .*Warning: invalid CSR `utval' for the privileged spec `1.9.1'
 .*Warning: invalid CSR `fflags', needs `f' extension
diff --git a/gas/testsuite/gas/riscv/csr.s b/gas/testsuite/gas/riscv/csr.s
index 2a723123f1b..128aeb83a04 100644
--- a/gas/testsuite/gas/riscv/csr.s
+++ b/gas/testsuite/gas/riscv/csr.s
@@ -391,6 +391,12 @@
 	csr mhpmevent30h
 	csr mhpmevent31h
 
+	# Sstc extension
+	csr stimecmp
+	csr stimecmph
+	csr vstimecmp
+	csr vstimecmph
+
 	# Supported in previous priv spec, but dropped now
 
 	csr ubadaddr		# 0x043 in 1.9.1, but the value is utval since 1.10
diff --git a/include/opcode/riscv-opc.h b/include/opcode/riscv-opc.h
index 07ee832ec0f..9e168d5ea13 100644
--- a/include/opcode/riscv-opc.h
+++ b/include/opcode/riscv-opc.h
@@ -2400,6 +2400,11 @@
 #define CSR_MHPMEVENT29H 0x73d
 #define CSR_MHPMEVENT30H 0x73e
 #define CSR_MHPMEVENT31H 0x73f
+/* Sstc extension */
+#define CSR_STIMECMP 0x14d
+#define CSR_STIMECMPH 0x15d
+#define CSR_VSTIMECMP 0x24d
+#define CSR_VSTIMECMPH 0x25d
 /* Unprivileged Floating-Point CSR addresses.  */
 #define CSR_FFLAGS 0x1
 #define CSR_FRM 0x2
@@ -3110,6 +3115,11 @@ DECLARE_CSR(mhpmevent28h, CSR_MHPMEVENT28H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLA
 DECLARE_CSR(mhpmevent29h, CSR_MHPMEVENT29H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_1P11, PRIV_SPEC_CLASS_DRAFT)
 DECLARE_CSR(mhpmevent30h, CSR_MHPMEVENT30H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_1P11, PRIV_SPEC_CLASS_DRAFT)
 DECLARE_CSR(mhpmevent31h, CSR_MHPMEVENT31H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_1P11, PRIV_SPEC_CLASS_DRAFT)
+/* Sstc extension */
+DECLARE_CSR(stimecmp, CSR_STIMECMP, CSR_CLASS_SSTC, PRIV_SPEC_CLASS_1P11, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(stimecmph, CSR_STIMECMPH, CSR_CLASS_SSTC_32, PRIV_SPEC_CLASS_1P11, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(vstimecmp, CSR_VSTIMECMP, CSR_CLASS_SSTC, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(vstimecmph, CSR_VSTIMECMPH, CSR_CLASS_SSTC_32, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
 /* Dropped CSRs.  */
 DECLARE_CSR(mbase, CSR_MBASE, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_1P10)
 DECLARE_CSR(mbound, CSR_MBOUND, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_1P10)
-- 
2.32.0


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

* Re: [PATCH 1/3] RISC-V: Add 'Smstateen' extension and its CSRs
  2022-02-24 12:10   ` [PATCH 1/3] RISC-V: Add 'Smstateen' extension and its CSRs Tsukasa OI
@ 2022-02-25  6:32     ` Nelson Chu
  2022-02-25  6:35       ` Tsukasa OI
  2022-02-25 10:51       ` Tsukasa OI
  0 siblings, 2 replies; 32+ messages in thread
From: Nelson Chu @ 2022-02-25  6:32 UTC (permalink / raw)
  To: Tsukasa OI; +Cc: Binutils

On Thu, Feb 24, 2022 at 8:11 PM Tsukasa OI <research_trasio@irq.a4lg.com> wrote:
>
> This commit adds State Enable Extension (Smstateen) and its CSRs.
>
> bfd/ChangeLog:
>
>         * elfxx-riscv.c (riscv_supported_std_s_ext): Add 'Smstateen'
>         extension to valid 'S' extension list.
>
> gas/ChangeLog:
>
>         * config/tc-riscv.c (enum riscv_csr_class): Add CSR classes for
>         'Smstateen' extension. (riscv_csr_address): Add handling for
>         new CSR classes.
>         * testsuite/gas/riscv/csr-dw-regnums.s: Add new CSRs.
>         * testsuite/gas/riscv/csr-dw-regnums.d: 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_MSTATEEN0, CSR_MSTATEEN1,
>         CSR_MSTATEEN2, CSR_MSTATEEN3, CSR_SSTATEEN0, CSR_SSTATEEN1,
>         CSR_SSTATEEN2, CSR_SSTATEEN3, CSR_HSTATEEN0, CSR_HSTATEEN1,
>         CSR_HSTATEEN2, CSR_HSTATEEN3, CSR_MSTATEEN0H, CSR_MSTATEEN1H,
>         CSR_MSTATEEN2H, CSR_MSTATEEN3H, CSR_HSTATEEN0H, CSR_HSTATEEN1H,
>         CSR_HSTATEEN2H, CSR_HSTATEEN3H): New CSR macros.
> ---
>  bfd/elfxx-riscv.c                           |  1 +
>  gas/config/tc-riscv.c                       |  9 +++
>  gas/testsuite/gas/riscv/csr-dw-regnums.d    | 20 ++++++
>  gas/testsuite/gas/riscv/csr-dw-regnums.s    | 21 ++++++
>  gas/testsuite/gas/riscv/csr-version-1p10.d  | 40 ++++++++++++
>  gas/testsuite/gas/riscv/csr-version-1p10.l  | 72 +++++++++++++++++++++
>  gas/testsuite/gas/riscv/csr-version-1p11.d  | 40 ++++++++++++
>  gas/testsuite/gas/riscv/csr-version-1p11.l  | 72 +++++++++++++++++++++
>  gas/testsuite/gas/riscv/csr-version-1p12.d  | 40 ++++++++++++
>  gas/testsuite/gas/riscv/csr-version-1p12.l  | 56 ++++++++++++++++
>  gas/testsuite/gas/riscv/csr-version-1p9p1.d | 40 ++++++++++++
>  gas/testsuite/gas/riscv/csr-version-1p9p1.l | 72 +++++++++++++++++++++
>  gas/testsuite/gas/riscv/csr.s               | 22 +++++++
>  include/opcode/riscv-opc.h                  | 42 ++++++++++++
>  14 files changed, 547 insertions(+)
>
> diff --git a/bfd/elfxx-riscv.c b/bfd/elfxx-riscv.c
> index d74e7a584eb..00767b53475 100644
> --- a/bfd/elfxx-riscv.c
> +++ b/bfd/elfxx-riscv.c
> @@ -1220,6 +1220,7 @@ static struct riscv_supported_ext riscv_supported_std_z_ext[] =
>
>  static struct riscv_supported_ext riscv_supported_std_s_ext[] =
>  {
> +  {"smstateen",                ISA_SPEC_CLASS_DRAFT,           1, 0, 0 },
>    {"svinval",          ISA_SPEC_CLASS_DRAFT,           1, 0, 0 },
>    {NULL, 0, 0, 0, 0}
>  };
> diff --git a/gas/config/tc-riscv.c b/gas/config/tc-riscv.c
> index 322e0f070ba..b640e7bf2f8 100644
> --- a/gas/config/tc-riscv.c
> +++ b/gas/config/tc-riscv.c
> @@ -65,6 +65,8 @@ enum riscv_csr_class
>    CSR_CLASS_F,         /* f-ext only */
>    CSR_CLASS_ZKR,       /* zkr only */
>    CSR_CLASS_V,         /* rvv only */
> +  CSR_CLASS_SMSTATEEN,         /* Smstateen only */
> +  CSR_CLASS_SMSTATEEN_32,      /* Smstateen RV32 only */
>    CSR_CLASS_DEBUG      /* debug CSR */
>  };
>
> @@ -918,6 +920,13 @@ riscv_csr_address (const char *csr_name,
>      case CSR_CLASS_V:
>        extension = "v";
>        break;
> +    case CSR_CLASS_SMSTATEEN_32:
> +      rv32_only = (xlen == 32);
> +      /* Fall through.  */
> +    case CSR_CLASS_SMSTATEEN:
> +      need_check_version = true;
> +      extension = "smstateen";
> +      break;
>      case CSR_CLASS_DEBUG:
>        break;
>      default:
> diff --git a/gas/testsuite/gas/riscv/csr-dw-regnums.d b/gas/testsuite/gas/riscv/csr-dw-regnums.d
> index 23ceba193ca..0c9ec6e4035 100644
> --- a/gas/testsuite/gas/riscv/csr-dw-regnums.d
> +++ b/gas/testsuite/gas/riscv/csr-dw-regnums.d
> @@ -313,6 +313,26 @@ Contents of the .* section:
>    DW_CFA_offset_extended_sf: r4675 \(vstval\) at cfa\+2316
>    DW_CFA_offset_extended_sf: r4676 \(vsip\) at cfa\+2320
>    DW_CFA_offset_extended_sf: r4736 \(vsatp\) at cfa\+2560
> +  DW_CFA_offset_extended_sf: r4876 \(mstateen0\) at cfa\+3120
> +  DW_CFA_offset_extended_sf: r4877 \(mstateen1\) at cfa\+3124
> +  DW_CFA_offset_extended_sf: r4878 \(mstateen2\) at cfa\+3128
> +  DW_CFA_offset_extended_sf: r4879 \(mstateen3\) at cfa\+3132
> +  DW_CFA_offset_extended_sf: r4364 \(sstateen0\) at cfa\+1072
> +  DW_CFA_offset_extended_sf: r4365 \(sstateen1\) at cfa\+1076
> +  DW_CFA_offset_extended_sf: r4366 \(sstateen2\) at cfa\+1080
> +  DW_CFA_offset_extended_sf: r4367 \(sstateen3\) at cfa\+1084
> +  DW_CFA_offset_extended_sf: r5644 \(hstateen0\) at cfa\+6192
> +  DW_CFA_offset_extended_sf: r5645 \(hstateen1\) at cfa\+6196
> +  DW_CFA_offset_extended_sf: r5646 \(hstateen2\) at cfa\+6200
> +  DW_CFA_offset_extended_sf: r5647 \(hstateen3\) at cfa\+6204
> +  DW_CFA_offset_extended_sf: r4892 \(mstateen0h\) at cfa\+3184
> +  DW_CFA_offset_extended_sf: r4893 \(mstateen1h\) at cfa\+3188
> +  DW_CFA_offset_extended_sf: r4894 \(mstateen2h\) at cfa\+3192
> +  DW_CFA_offset_extended_sf: r4895 \(mstateen3h\) at cfa\+3196
> +  DW_CFA_offset_extended_sf: r5660 \(hstateen0h\) at cfa\+6256
> +  DW_CFA_offset_extended_sf: r5661 \(hstateen1h\) at cfa\+6260
> +  DW_CFA_offset_extended_sf: r5662 \(hstateen2h\) at cfa\+6264
> +  DW_CFA_offset_extended_sf: r5663 \(hstateen3h\) at cfa\+6268
>    DW_CFA_offset_extended_sf: r4163 \(utval\) at cfa\+268
>    DW_CFA_offset_extended_sf: r4419 \(stval\) at cfa\+1292
>    DW_CFA_offset_extended_sf: r4480 \(satp\) at cfa\+1536
> diff --git a/gas/testsuite/gas/riscv/csr-dw-regnums.s b/gas/testsuite/gas/riscv/csr-dw-regnums.s
> index 4a243ad7b0f..2afadac49f6 100644
> --- a/gas/testsuite/gas/riscv/csr-dw-regnums.s
> +++ b/gas/testsuite/gas/riscv/csr-dw-regnums.s
> @@ -307,6 +307,27 @@ _start:
>         .cfi_offset vstval, 2316
>         .cfi_offset vsip, 2320
>         .cfi_offset vsatp, 2560
> +       # Smstateen extension
> +       .cfi_offset mstateen0, 3120
> +       .cfi_offset mstateen1, 3124
> +       .cfi_offset mstateen2, 3128
> +       .cfi_offset mstateen3, 3132
> +       .cfi_offset sstateen0, 1072
> +       .cfi_offset sstateen1, 1076
> +       .cfi_offset sstateen2, 1080
> +       .cfi_offset sstateen3, 1084
> +       .cfi_offset hstateen0, 6192
> +       .cfi_offset hstateen1, 6196
> +       .cfi_offset hstateen2, 6200
> +       .cfi_offset hstateen3, 6204
> +       .cfi_offset mstateen0h, 3184
> +       .cfi_offset mstateen1h, 3188
> +       .cfi_offset mstateen2h, 3192
> +       .cfi_offset mstateen3h, 3196
> +       .cfi_offset hstateen0h, 6256
> +       .cfi_offset hstateen1h, 6260
> +       .cfi_offset hstateen2h, 6264
> +       .cfi_offset hstateen3h, 6268
>         # dropped
>         .cfi_offset ubadaddr, 268       # aliases
>         .cfi_offset sbadaddr, 1292      # aliases
> diff --git a/gas/testsuite/gas/riscv/csr-version-1p10.d b/gas/testsuite/gas/riscv/csr-version-1p10.d
> index 6e0d1f6c66a..7f9f5497428 100644
> --- a/gas/testsuite/gas/riscv/csr-version-1p10.d
> +++ b/gas/testsuite/gas/riscv/csr-version-1p10.d
> @@ -601,6 +601,46 @@ Disassembly of section .text:
>  [      ]+[0-9a-f]+:[   ]+24459073[     ]+csrw[         ]+0x244,a1
>  [      ]+[0-9a-f]+:[   ]+28002573[     ]+csrr[         ]+a0,0x280
>  [      ]+[0-9a-f]+:[   ]+28059073[     ]+csrw[         ]+0x280,a1
> +[      ]+[0-9a-f]+:[   ]+30c02573[     ]+csrr[         ]+a0,mstateen0
> +[      ]+[0-9a-f]+:[   ]+30c59073[     ]+csrw[         ]+mstateen0,a1
> +[      ]+[0-9a-f]+:[   ]+30d02573[     ]+csrr[         ]+a0,mstateen1
> +[      ]+[0-9a-f]+:[   ]+30d59073[     ]+csrw[         ]+mstateen1,a1
> +[      ]+[0-9a-f]+:[   ]+30e02573[     ]+csrr[         ]+a0,mstateen2
> +[      ]+[0-9a-f]+:[   ]+30e59073[     ]+csrw[         ]+mstateen2,a1
> +[      ]+[0-9a-f]+:[   ]+30f02573[     ]+csrr[         ]+a0,mstateen3
> +[      ]+[0-9a-f]+:[   ]+30f59073[     ]+csrw[         ]+mstateen3,a1
> +[      ]+[0-9a-f]+:[   ]+10c02573[     ]+csrr[         ]+a0,sstateen0
> +[      ]+[0-9a-f]+:[   ]+10c59073[     ]+csrw[         ]+sstateen0,a1
> +[      ]+[0-9a-f]+:[   ]+10d02573[     ]+csrr[         ]+a0,sstateen1
> +[      ]+[0-9a-f]+:[   ]+10d59073[     ]+csrw[         ]+sstateen1,a1
> +[      ]+[0-9a-f]+:[   ]+10e02573[     ]+csrr[         ]+a0,sstateen2
> +[      ]+[0-9a-f]+:[   ]+10e59073[     ]+csrw[         ]+sstateen2,a1
> +[      ]+[0-9a-f]+:[   ]+10f02573[     ]+csrr[         ]+a0,sstateen3
> +[      ]+[0-9a-f]+:[   ]+10f59073[     ]+csrw[         ]+sstateen3,a1
> +[      ]+[0-9a-f]+:[   ]+60c02573[     ]+csrr[         ]+a0,0x60c
> +[      ]+[0-9a-f]+:[   ]+60c59073[     ]+csrw[         ]+0x60c,a1
> +[      ]+[0-9a-f]+:[   ]+60d02573[     ]+csrr[         ]+a0,0x60d
> +[      ]+[0-9a-f]+:[   ]+60d59073[     ]+csrw[         ]+0x60d,a1
> +[      ]+[0-9a-f]+:[   ]+60e02573[     ]+csrr[         ]+a0,0x60e
> +[      ]+[0-9a-f]+:[   ]+60e59073[     ]+csrw[         ]+0x60e,a1
> +[      ]+[0-9a-f]+:[   ]+60f02573[     ]+csrr[         ]+a0,0x60f
> +[      ]+[0-9a-f]+:[   ]+60f59073[     ]+csrw[         ]+0x60f,a1
> +[      ]+[0-9a-f]+:[   ]+31c02573[     ]+csrr[         ]+a0,mstateen0h
> +[      ]+[0-9a-f]+:[   ]+31c59073[     ]+csrw[         ]+mstateen0h,a1
> +[      ]+[0-9a-f]+:[   ]+31d02573[     ]+csrr[         ]+a0,mstateen1h
> +[      ]+[0-9a-f]+:[   ]+31d59073[     ]+csrw[         ]+mstateen1h,a1
> +[      ]+[0-9a-f]+:[   ]+31e02573[     ]+csrr[         ]+a0,mstateen2h
> +[      ]+[0-9a-f]+:[   ]+31e59073[     ]+csrw[         ]+mstateen2h,a1
> +[      ]+[0-9a-f]+:[   ]+31f02573[     ]+csrr[         ]+a0,mstateen3h
> +[      ]+[0-9a-f]+:[   ]+31f59073[     ]+csrw[         ]+mstateen3h,a1
> +[      ]+[0-9a-f]+:[   ]+61c02573[     ]+csrr[         ]+a0,0x61c
> +[      ]+[0-9a-f]+:[   ]+61c59073[     ]+csrw[         ]+0x61c,a1
> +[      ]+[0-9a-f]+:[   ]+61d02573[     ]+csrr[         ]+a0,0x61d
> +[      ]+[0-9a-f]+:[   ]+61d59073[     ]+csrw[         ]+0x61d,a1
> +[      ]+[0-9a-f]+:[   ]+61e02573[     ]+csrr[         ]+a0,0x61e
> +[      ]+[0-9a-f]+:[   ]+61e59073[     ]+csrw[         ]+0x61e,a1
> +[      ]+[0-9a-f]+:[   ]+61f02573[     ]+csrr[         ]+a0,0x61f
> +[      ]+[0-9a-f]+:[   ]+61f59073[     ]+csrw[         ]+0x61f,a1
>  [      ]+[0-9a-f]+:[   ]+04302573[     ]+csrr[         ]+a0,utval
>  [      ]+[0-9a-f]+:[   ]+04359073[     ]+csrw[         ]+utval,a1
>  [      ]+[0-9a-f]+:[   ]+14302573[     ]+csrr[         ]+a0,stval
> diff --git a/gas/testsuite/gas/riscv/csr-version-1p10.l b/gas/testsuite/gas/riscv/csr-version-1p10.l
> index 2511feeafc8..ff23c010d18 100644
> --- a/gas/testsuite/gas/riscv/csr-version-1p10.l
> +++ b/gas/testsuite/gas/riscv/csr-version-1p10.l
> @@ -411,6 +411,78 @@
>  .*Warning: invalid CSR `vsip' for the privileged spec `1.10'
>  .*Warning: invalid CSR `vsatp' for the privileged spec `1.10'
>  .*Warning: invalid CSR `vsatp' for the privileged spec `1.10'
> +.*Warning: invalid CSR `mstateen0', needs `smstateen' extension
> +.*Warning: invalid CSR `mstateen0', needs `smstateen' extension
> +.*Warning: invalid CSR `mstateen1', needs `smstateen' extension
> +.*Warning: invalid CSR `mstateen1', needs `smstateen' extension
> +.*Warning: invalid CSR `mstateen2', needs `smstateen' extension
> +.*Warning: invalid CSR `mstateen2', needs `smstateen' extension
> +.*Warning: invalid CSR `mstateen3', needs `smstateen' extension
> +.*Warning: invalid CSR `mstateen3', needs `smstateen' extension
> +.*Warning: invalid CSR `sstateen0', needs `smstateen' extension
> +.*Warning: invalid CSR `sstateen0', needs `smstateen' extension
> +.*Warning: invalid CSR `sstateen1', needs `smstateen' extension
> +.*Warning: invalid CSR `sstateen1', needs `smstateen' extension
> +.*Warning: invalid CSR `sstateen2', needs `smstateen' extension
> +.*Warning: invalid CSR `sstateen2', needs `smstateen' extension
> +.*Warning: invalid CSR `sstateen3', needs `smstateen' extension
> +.*Warning: invalid CSR `sstateen3', needs `smstateen' extension
> +.*Warning: invalid CSR `hstateen0', needs `smstateen' extension
> +.*Warning: invalid CSR `hstateen0' for the privileged spec `1.10'
> +.*Warning: invalid CSR `hstateen0', needs `smstateen' extension
> +.*Warning: invalid CSR `hstateen0' for the privileged spec `1.10'
> +.*Warning: invalid CSR `hstateen1', needs `smstateen' extension
> +.*Warning: invalid CSR `hstateen1' for the privileged spec `1.10'
> +.*Warning: invalid CSR `hstateen1', needs `smstateen' extension
> +.*Warning: invalid CSR `hstateen1' for the privileged spec `1.10'
> +.*Warning: invalid CSR `hstateen2', needs `smstateen' extension
> +.*Warning: invalid CSR `hstateen2' for the privileged spec `1.10'
> +.*Warning: invalid CSR `hstateen2', needs `smstateen' extension
> +.*Warning: invalid CSR `hstateen2' for the privileged spec `1.10'
> +.*Warning: invalid CSR `hstateen3', needs `smstateen' extension
> +.*Warning: invalid CSR `hstateen3' for the privileged spec `1.10'
> +.*Warning: invalid CSR `hstateen3', needs `smstateen' extension
> +.*Warning: invalid CSR `hstateen3' for the privileged spec `1.10'
> +.*Warning: invalid CSR `mstateen0h', needs rv32i extension
> +.*Warning: invalid CSR `mstateen0h', needs `smstateen' extension
> +.*Warning: invalid CSR `mstateen0h', needs rv32i extension
> +.*Warning: invalid CSR `mstateen0h', needs `smstateen' extension
> +.*Warning: invalid CSR `mstateen1h', needs rv32i extension
> +.*Warning: invalid CSR `mstateen1h', needs `smstateen' extension
> +.*Warning: invalid CSR `mstateen1h', needs rv32i extension
> +.*Warning: invalid CSR `mstateen1h', needs `smstateen' extension
> +.*Warning: invalid CSR `mstateen2h', needs rv32i extension
> +.*Warning: invalid CSR `mstateen2h', needs `smstateen' extension
> +.*Warning: invalid CSR `mstateen2h', needs rv32i extension
> +.*Warning: invalid CSR `mstateen2h', needs `smstateen' extension
> +.*Warning: invalid CSR `mstateen3h', needs rv32i extension
> +.*Warning: invalid CSR `mstateen3h', needs `smstateen' extension
> +.*Warning: invalid CSR `mstateen3h', needs rv32i extension
> +.*Warning: invalid CSR `mstateen3h', needs `smstateen' extension
> +.*Warning: invalid CSR `hstateen0h', needs rv32i extension
> +.*Warning: invalid CSR `hstateen0h', needs `smstateen' extension
> +.*Warning: invalid CSR `hstateen0h' for the privileged spec `1.10'
> +.*Warning: invalid CSR `hstateen0h', needs rv32i extension
> +.*Warning: invalid CSR `hstateen0h', needs `smstateen' extension
> +.*Warning: invalid CSR `hstateen0h' for the privileged spec `1.10'
> +.*Warning: invalid CSR `hstateen1h', needs rv32i extension
> +.*Warning: invalid CSR `hstateen1h', needs `smstateen' extension
> +.*Warning: invalid CSR `hstateen1h' for the privileged spec `1.10'
> +.*Warning: invalid CSR `hstateen1h', needs rv32i extension
> +.*Warning: invalid CSR `hstateen1h', needs `smstateen' extension
> +.*Warning: invalid CSR `hstateen1h' for the privileged spec `1.10'
> +.*Warning: invalid CSR `hstateen2h', needs rv32i extension
> +.*Warning: invalid CSR `hstateen2h', needs `smstateen' extension
> +.*Warning: invalid CSR `hstateen2h' for the privileged spec `1.10'
> +.*Warning: invalid CSR `hstateen2h', needs rv32i extension
> +.*Warning: invalid CSR `hstateen2h', needs `smstateen' extension
> +.*Warning: invalid CSR `hstateen2h' for the privileged spec `1.10'
> +.*Warning: invalid CSR `hstateen3h', needs rv32i extension
> +.*Warning: invalid CSR `hstateen3h', needs `smstateen' extension
> +.*Warning: invalid CSR `hstateen3h' for the privileged spec `1.10'
> +.*Warning: invalid CSR `hstateen3h', needs rv32i extension
> +.*Warning: invalid CSR `hstateen3h', needs `smstateen' extension
> +.*Warning: invalid CSR `hstateen3h' for the privileged spec `1.10'
>  .*Warning: invalid CSR `ubadaddr' for the privileged spec `1.10'
>  .*Warning: invalid CSR `ubadaddr' for the privileged spec `1.10'
>  .*Warning: invalid CSR `sbadaddr' for the privileged spec `1.10'
> diff --git a/gas/testsuite/gas/riscv/csr-version-1p11.d b/gas/testsuite/gas/riscv/csr-version-1p11.d
> index 0c9166555a4..6e85a7e2d4d 100644
> --- a/gas/testsuite/gas/riscv/csr-version-1p11.d
> +++ b/gas/testsuite/gas/riscv/csr-version-1p11.d
> @@ -601,6 +601,46 @@ Disassembly of section .text:
>  [      ]+[0-9a-f]+:[   ]+24459073[     ]+csrw[         ]+0x244,a1
>  [      ]+[0-9a-f]+:[   ]+28002573[     ]+csrr[         ]+a0,0x280
>  [      ]+[0-9a-f]+:[   ]+28059073[     ]+csrw[         ]+0x280,a1
> +[      ]+[0-9a-f]+:[   ]+30c02573[     ]+csrr[         ]+a0,mstateen0
> +[      ]+[0-9a-f]+:[   ]+30c59073[     ]+csrw[         ]+mstateen0,a1
> +[      ]+[0-9a-f]+:[   ]+30d02573[     ]+csrr[         ]+a0,mstateen1
> +[      ]+[0-9a-f]+:[   ]+30d59073[     ]+csrw[         ]+mstateen1,a1
> +[      ]+[0-9a-f]+:[   ]+30e02573[     ]+csrr[         ]+a0,mstateen2
> +[      ]+[0-9a-f]+:[   ]+30e59073[     ]+csrw[         ]+mstateen2,a1
> +[      ]+[0-9a-f]+:[   ]+30f02573[     ]+csrr[         ]+a0,mstateen3
> +[      ]+[0-9a-f]+:[   ]+30f59073[     ]+csrw[         ]+mstateen3,a1
> +[      ]+[0-9a-f]+:[   ]+10c02573[     ]+csrr[         ]+a0,sstateen0
> +[      ]+[0-9a-f]+:[   ]+10c59073[     ]+csrw[         ]+sstateen0,a1
> +[      ]+[0-9a-f]+:[   ]+10d02573[     ]+csrr[         ]+a0,sstateen1
> +[      ]+[0-9a-f]+:[   ]+10d59073[     ]+csrw[         ]+sstateen1,a1
> +[      ]+[0-9a-f]+:[   ]+10e02573[     ]+csrr[         ]+a0,sstateen2
> +[      ]+[0-9a-f]+:[   ]+10e59073[     ]+csrw[         ]+sstateen2,a1
> +[      ]+[0-9a-f]+:[   ]+10f02573[     ]+csrr[         ]+a0,sstateen3
> +[      ]+[0-9a-f]+:[   ]+10f59073[     ]+csrw[         ]+sstateen3,a1
> +[      ]+[0-9a-f]+:[   ]+60c02573[     ]+csrr[         ]+a0,0x60c
> +[      ]+[0-9a-f]+:[   ]+60c59073[     ]+csrw[         ]+0x60c,a1
> +[      ]+[0-9a-f]+:[   ]+60d02573[     ]+csrr[         ]+a0,0x60d
> +[      ]+[0-9a-f]+:[   ]+60d59073[     ]+csrw[         ]+0x60d,a1
> +[      ]+[0-9a-f]+:[   ]+60e02573[     ]+csrr[         ]+a0,0x60e
> +[      ]+[0-9a-f]+:[   ]+60e59073[     ]+csrw[         ]+0x60e,a1
> +[      ]+[0-9a-f]+:[   ]+60f02573[     ]+csrr[         ]+a0,0x60f
> +[      ]+[0-9a-f]+:[   ]+60f59073[     ]+csrw[         ]+0x60f,a1
> +[      ]+[0-9a-f]+:[   ]+31c02573[     ]+csrr[         ]+a0,mstateen0h
> +[      ]+[0-9a-f]+:[   ]+31c59073[     ]+csrw[         ]+mstateen0h,a1
> +[      ]+[0-9a-f]+:[   ]+31d02573[     ]+csrr[         ]+a0,mstateen1h
> +[      ]+[0-9a-f]+:[   ]+31d59073[     ]+csrw[         ]+mstateen1h,a1
> +[      ]+[0-9a-f]+:[   ]+31e02573[     ]+csrr[         ]+a0,mstateen2h
> +[      ]+[0-9a-f]+:[   ]+31e59073[     ]+csrw[         ]+mstateen2h,a1
> +[      ]+[0-9a-f]+:[   ]+31f02573[     ]+csrr[         ]+a0,mstateen3h
> +[      ]+[0-9a-f]+:[   ]+31f59073[     ]+csrw[         ]+mstateen3h,a1
> +[      ]+[0-9a-f]+:[   ]+61c02573[     ]+csrr[         ]+a0,0x61c
> +[      ]+[0-9a-f]+:[   ]+61c59073[     ]+csrw[         ]+0x61c,a1
> +[      ]+[0-9a-f]+:[   ]+61d02573[     ]+csrr[         ]+a0,0x61d
> +[      ]+[0-9a-f]+:[   ]+61d59073[     ]+csrw[         ]+0x61d,a1
> +[      ]+[0-9a-f]+:[   ]+61e02573[     ]+csrr[         ]+a0,0x61e
> +[      ]+[0-9a-f]+:[   ]+61e59073[     ]+csrw[         ]+0x61e,a1
> +[      ]+[0-9a-f]+:[   ]+61f02573[     ]+csrr[         ]+a0,0x61f
> +[      ]+[0-9a-f]+:[   ]+61f59073[     ]+csrw[         ]+0x61f,a1
>  [      ]+[0-9a-f]+:[   ]+04302573[     ]+csrr[         ]+a0,utval
>  [      ]+[0-9a-f]+:[   ]+04359073[     ]+csrw[         ]+utval,a1
>  [      ]+[0-9a-f]+:[   ]+14302573[     ]+csrr[         ]+a0,stval
> diff --git a/gas/testsuite/gas/riscv/csr-version-1p11.l b/gas/testsuite/gas/riscv/csr-version-1p11.l
> index 570efe25cb7..3a767cbcadf 100644
> --- a/gas/testsuite/gas/riscv/csr-version-1p11.l
> +++ b/gas/testsuite/gas/riscv/csr-version-1p11.l
> @@ -409,6 +409,78 @@
>  .*Warning: invalid CSR `vsip' for the privileged spec `1.11'
>  .*Warning: invalid CSR `vsatp' for the privileged spec `1.11'
>  .*Warning: invalid CSR `vsatp' for the privileged spec `1.11'
> +.*Warning: invalid CSR `mstateen0', needs `smstateen' extension
> +.*Warning: invalid CSR `mstateen0', needs `smstateen' extension
> +.*Warning: invalid CSR `mstateen1', needs `smstateen' extension
> +.*Warning: invalid CSR `mstateen1', needs `smstateen' extension
> +.*Warning: invalid CSR `mstateen2', needs `smstateen' extension
> +.*Warning: invalid CSR `mstateen2', needs `smstateen' extension
> +.*Warning: invalid CSR `mstateen3', needs `smstateen' extension
> +.*Warning: invalid CSR `mstateen3', needs `smstateen' extension
> +.*Warning: invalid CSR `sstateen0', needs `smstateen' extension
> +.*Warning: invalid CSR `sstateen0', needs `smstateen' extension
> +.*Warning: invalid CSR `sstateen1', needs `smstateen' extension
> +.*Warning: invalid CSR `sstateen1', needs `smstateen' extension
> +.*Warning: invalid CSR `sstateen2', needs `smstateen' extension
> +.*Warning: invalid CSR `sstateen2', needs `smstateen' extension
> +.*Warning: invalid CSR `sstateen3', needs `smstateen' extension
> +.*Warning: invalid CSR `sstateen3', needs `smstateen' extension
> +.*Warning: invalid CSR `hstateen0', needs `smstateen' extension
> +.*Warning: invalid CSR `hstateen0' for the privileged spec `1.11'
> +.*Warning: invalid CSR `hstateen0', needs `smstateen' extension
> +.*Warning: invalid CSR `hstateen0' for the privileged spec `1.11'
> +.*Warning: invalid CSR `hstateen1', needs `smstateen' extension
> +.*Warning: invalid CSR `hstateen1' for the privileged spec `1.11'
> +.*Warning: invalid CSR `hstateen1', needs `smstateen' extension
> +.*Warning: invalid CSR `hstateen1' for the privileged spec `1.11'
> +.*Warning: invalid CSR `hstateen2', needs `smstateen' extension
> +.*Warning: invalid CSR `hstateen2' for the privileged spec `1.11'
> +.*Warning: invalid CSR `hstateen2', needs `smstateen' extension
> +.*Warning: invalid CSR `hstateen2' for the privileged spec `1.11'
> +.*Warning: invalid CSR `hstateen3', needs `smstateen' extension
> +.*Warning: invalid CSR `hstateen3' for the privileged spec `1.11'
> +.*Warning: invalid CSR `hstateen3', needs `smstateen' extension
> +.*Warning: invalid CSR `hstateen3' for the privileged spec `1.11'
> +.*Warning: invalid CSR `mstateen0h', needs rv32i extension
> +.*Warning: invalid CSR `mstateen0h', needs `smstateen' extension
> +.*Warning: invalid CSR `mstateen0h', needs rv32i extension
> +.*Warning: invalid CSR `mstateen0h', needs `smstateen' extension
> +.*Warning: invalid CSR `mstateen1h', needs rv32i extension
> +.*Warning: invalid CSR `mstateen1h', needs `smstateen' extension
> +.*Warning: invalid CSR `mstateen1h', needs rv32i extension
> +.*Warning: invalid CSR `mstateen1h', needs `smstateen' extension
> +.*Warning: invalid CSR `mstateen2h', needs rv32i extension
> +.*Warning: invalid CSR `mstateen2h', needs `smstateen' extension
> +.*Warning: invalid CSR `mstateen2h', needs rv32i extension
> +.*Warning: invalid CSR `mstateen2h', needs `smstateen' extension
> +.*Warning: invalid CSR `mstateen3h', needs rv32i extension
> +.*Warning: invalid CSR `mstateen3h', needs `smstateen' extension
> +.*Warning: invalid CSR `mstateen3h', needs rv32i extension
> +.*Warning: invalid CSR `mstateen3h', needs `smstateen' extension
> +.*Warning: invalid CSR `hstateen0h', needs rv32i extension
> +.*Warning: invalid CSR `hstateen0h', needs `smstateen' extension
> +.*Warning: invalid CSR `hstateen0h' for the privileged spec `1.11'
> +.*Warning: invalid CSR `hstateen0h', needs rv32i extension
> +.*Warning: invalid CSR `hstateen0h', needs `smstateen' extension
> +.*Warning: invalid CSR `hstateen0h' for the privileged spec `1.11'
> +.*Warning: invalid CSR `hstateen1h', needs rv32i extension
> +.*Warning: invalid CSR `hstateen1h', needs `smstateen' extension
> +.*Warning: invalid CSR `hstateen1h' for the privileged spec `1.11'
> +.*Warning: invalid CSR `hstateen1h', needs rv32i extension
> +.*Warning: invalid CSR `hstateen1h', needs `smstateen' extension
> +.*Warning: invalid CSR `hstateen1h' for the privileged spec `1.11'
> +.*Warning: invalid CSR `hstateen2h', needs rv32i extension
> +.*Warning: invalid CSR `hstateen2h', needs `smstateen' extension
> +.*Warning: invalid CSR `hstateen2h' for the privileged spec `1.11'
> +.*Warning: invalid CSR `hstateen2h', needs rv32i extension
> +.*Warning: invalid CSR `hstateen2h', needs `smstateen' extension
> +.*Warning: invalid CSR `hstateen2h' for the privileged spec `1.11'
> +.*Warning: invalid CSR `hstateen3h', needs rv32i extension
> +.*Warning: invalid CSR `hstateen3h', needs `smstateen' extension
> +.*Warning: invalid CSR `hstateen3h' for the privileged spec `1.11'
> +.*Warning: invalid CSR `hstateen3h', needs rv32i extension
> +.*Warning: invalid CSR `hstateen3h', needs `smstateen' extension
> +.*Warning: invalid CSR `hstateen3h' for the privileged spec `1.11'
>  .*Warning: invalid CSR `ubadaddr' for the privileged spec `1.11'
>  .*Warning: invalid CSR `ubadaddr' for the privileged spec `1.11'
>  .*Warning: invalid CSR `sbadaddr' for the privileged spec `1.11'
> diff --git a/gas/testsuite/gas/riscv/csr-version-1p12.d b/gas/testsuite/gas/riscv/csr-version-1p12.d
> index 3c27ca2de20..46ca519b31e 100644
> --- a/gas/testsuite/gas/riscv/csr-version-1p12.d
> +++ b/gas/testsuite/gas/riscv/csr-version-1p12.d
> @@ -601,6 +601,46 @@ Disassembly of section .text:
>  [      ]+[0-9a-f]+:[   ]+24459073[     ]+csrw[         ]+vsip,a1
>  [      ]+[0-9a-f]+:[   ]+28002573[     ]+csrr[         ]+a0,vsatp
>  [      ]+[0-9a-f]+:[   ]+28059073[     ]+csrw[         ]+vsatp,a1
> +[      ]+[0-9a-f]+:[   ]+30c02573[     ]+csrr[         ]+a0,mstateen0
> +[      ]+[0-9a-f]+:[   ]+30c59073[     ]+csrw[         ]+mstateen0,a1
> +[      ]+[0-9a-f]+:[   ]+30d02573[     ]+csrr[         ]+a0,mstateen1
> +[      ]+[0-9a-f]+:[   ]+30d59073[     ]+csrw[         ]+mstateen1,a1
> +[      ]+[0-9a-f]+:[   ]+30e02573[     ]+csrr[         ]+a0,mstateen2
> +[      ]+[0-9a-f]+:[   ]+30e59073[     ]+csrw[         ]+mstateen2,a1
> +[      ]+[0-9a-f]+:[   ]+30f02573[     ]+csrr[         ]+a0,mstateen3
> +[      ]+[0-9a-f]+:[   ]+30f59073[     ]+csrw[         ]+mstateen3,a1
> +[      ]+[0-9a-f]+:[   ]+10c02573[     ]+csrr[         ]+a0,sstateen0
> +[      ]+[0-9a-f]+:[   ]+10c59073[     ]+csrw[         ]+sstateen0,a1
> +[      ]+[0-9a-f]+:[   ]+10d02573[     ]+csrr[         ]+a0,sstateen1
> +[      ]+[0-9a-f]+:[   ]+10d59073[     ]+csrw[         ]+sstateen1,a1
> +[      ]+[0-9a-f]+:[   ]+10e02573[     ]+csrr[         ]+a0,sstateen2
> +[      ]+[0-9a-f]+:[   ]+10e59073[     ]+csrw[         ]+sstateen2,a1
> +[      ]+[0-9a-f]+:[   ]+10f02573[     ]+csrr[         ]+a0,sstateen3
> +[      ]+[0-9a-f]+:[   ]+10f59073[     ]+csrw[         ]+sstateen3,a1
> +[      ]+[0-9a-f]+:[   ]+60c02573[     ]+csrr[         ]+a0,hstateen0
> +[      ]+[0-9a-f]+:[   ]+60c59073[     ]+csrw[         ]+hstateen0,a1
> +[      ]+[0-9a-f]+:[   ]+60d02573[     ]+csrr[         ]+a0,hstateen1
> +[      ]+[0-9a-f]+:[   ]+60d59073[     ]+csrw[         ]+hstateen1,a1
> +[      ]+[0-9a-f]+:[   ]+60e02573[     ]+csrr[         ]+a0,hstateen2
> +[      ]+[0-9a-f]+:[   ]+60e59073[     ]+csrw[         ]+hstateen2,a1
> +[      ]+[0-9a-f]+:[   ]+60f02573[     ]+csrr[         ]+a0,hstateen3
> +[      ]+[0-9a-f]+:[   ]+60f59073[     ]+csrw[         ]+hstateen3,a1
> +[      ]+[0-9a-f]+:[   ]+31c02573[     ]+csrr[         ]+a0,mstateen0h
> +[      ]+[0-9a-f]+:[   ]+31c59073[     ]+csrw[         ]+mstateen0h,a1
> +[      ]+[0-9a-f]+:[   ]+31d02573[     ]+csrr[         ]+a0,mstateen1h
> +[      ]+[0-9a-f]+:[   ]+31d59073[     ]+csrw[         ]+mstateen1h,a1
> +[      ]+[0-9a-f]+:[   ]+31e02573[     ]+csrr[         ]+a0,mstateen2h
> +[      ]+[0-9a-f]+:[   ]+31e59073[     ]+csrw[         ]+mstateen2h,a1
> +[      ]+[0-9a-f]+:[   ]+31f02573[     ]+csrr[         ]+a0,mstateen3h
> +[      ]+[0-9a-f]+:[   ]+31f59073[     ]+csrw[         ]+mstateen3h,a1
> +[      ]+[0-9a-f]+:[   ]+61c02573[     ]+csrr[         ]+a0,hstateen0h
> +[      ]+[0-9a-f]+:[   ]+61c59073[     ]+csrw[         ]+hstateen0h,a1
> +[      ]+[0-9a-f]+:[   ]+61d02573[     ]+csrr[         ]+a0,hstateen1h
> +[      ]+[0-9a-f]+:[   ]+61d59073[     ]+csrw[         ]+hstateen1h,a1
> +[      ]+[0-9a-f]+:[   ]+61e02573[     ]+csrr[         ]+a0,hstateen2h
> +[      ]+[0-9a-f]+:[   ]+61e59073[     ]+csrw[         ]+hstateen2h,a1
> +[      ]+[0-9a-f]+:[   ]+61f02573[     ]+csrr[         ]+a0,hstateen3h
> +[      ]+[0-9a-f]+:[   ]+61f59073[     ]+csrw[         ]+hstateen3h,a1
>  [      ]+[0-9a-f]+:[   ]+04302573[     ]+csrr[         ]+a0,0x43
>  [      ]+[0-9a-f]+:[   ]+04359073[     ]+csrw[         ]+0x43,a1
>  [      ]+[0-9a-f]+:[   ]+14302573[     ]+csrr[         ]+a0,stval
> diff --git a/gas/testsuite/gas/riscv/csr-version-1p12.l b/gas/testsuite/gas/riscv/csr-version-1p12.l
> index 03d193cd50e..b23a705f88a 100644
> --- a/gas/testsuite/gas/riscv/csr-version-1p12.l
> +++ b/gas/testsuite/gas/riscv/csr-version-1p12.l
> @@ -221,6 +221,62 @@
>  .*Warning: invalid CSR `henvcfgh', needs rv32i extension
>  .*Warning: invalid CSR `htimedeltah', needs rv32i extension
>  .*Warning: invalid CSR `htimedeltah', needs rv32i extension
> +.*Warning: invalid CSR `mstateen0', needs `smstateen' extension
> +.*Warning: invalid CSR `mstateen0', needs `smstateen' extension
> +.*Warning: invalid CSR `mstateen1', needs `smstateen' extension
> +.*Warning: invalid CSR `mstateen1', needs `smstateen' extension
> +.*Warning: invalid CSR `mstateen2', needs `smstateen' extension
> +.*Warning: invalid CSR `mstateen2', needs `smstateen' extension
> +.*Warning: invalid CSR `mstateen3', needs `smstateen' extension
> +.*Warning: invalid CSR `mstateen3', needs `smstateen' extension
> +.*Warning: invalid CSR `sstateen0', needs `smstateen' extension
> +.*Warning: invalid CSR `sstateen0', needs `smstateen' extension
> +.*Warning: invalid CSR `sstateen1', needs `smstateen' extension
> +.*Warning: invalid CSR `sstateen1', needs `smstateen' extension
> +.*Warning: invalid CSR `sstateen2', needs `smstateen' extension
> +.*Warning: invalid CSR `sstateen2', needs `smstateen' extension
> +.*Warning: invalid CSR `sstateen3', needs `smstateen' extension
> +.*Warning: invalid CSR `sstateen3', needs `smstateen' extension
> +.*Warning: invalid CSR `hstateen0', needs `smstateen' extension
> +.*Warning: invalid CSR `hstateen0', needs `smstateen' extension
> +.*Warning: invalid CSR `hstateen1', needs `smstateen' extension
> +.*Warning: invalid CSR `hstateen1', needs `smstateen' extension
> +.*Warning: invalid CSR `hstateen2', needs `smstateen' extension
> +.*Warning: invalid CSR `hstateen2', needs `smstateen' extension
> +.*Warning: invalid CSR `hstateen3', needs `smstateen' extension
> +.*Warning: invalid CSR `hstateen3', needs `smstateen' extension
> +.*Warning: invalid CSR `mstateen0h', needs rv32i extension
> +.*Warning: invalid CSR `mstateen0h', needs `smstateen' extension
> +.*Warning: invalid CSR `mstateen0h', needs rv32i extension
> +.*Warning: invalid CSR `mstateen0h', needs `smstateen' extension
> +.*Warning: invalid CSR `mstateen1h', needs rv32i extension
> +.*Warning: invalid CSR `mstateen1h', needs `smstateen' extension
> +.*Warning: invalid CSR `mstateen1h', needs rv32i extension
> +.*Warning: invalid CSR `mstateen1h', needs `smstateen' extension
> +.*Warning: invalid CSR `mstateen2h', needs rv32i extension
> +.*Warning: invalid CSR `mstateen2h', needs `smstateen' extension
> +.*Warning: invalid CSR `mstateen2h', needs rv32i extension
> +.*Warning: invalid CSR `mstateen2h', needs `smstateen' extension
> +.*Warning: invalid CSR `mstateen3h', needs rv32i extension
> +.*Warning: invalid CSR `mstateen3h', needs `smstateen' extension
> +.*Warning: invalid CSR `mstateen3h', needs rv32i extension
> +.*Warning: invalid CSR `mstateen3h', needs `smstateen' extension
> +.*Warning: invalid CSR `hstateen0h', needs rv32i extension
> +.*Warning: invalid CSR `hstateen0h', needs `smstateen' extension
> +.*Warning: invalid CSR `hstateen0h', needs rv32i extension
> +.*Warning: invalid CSR `hstateen0h', needs `smstateen' extension
> +.*Warning: invalid CSR `hstateen1h', needs rv32i extension
> +.*Warning: invalid CSR `hstateen1h', needs `smstateen' extension
> +.*Warning: invalid CSR `hstateen1h', needs rv32i extension
> +.*Warning: invalid CSR `hstateen1h', needs `smstateen' extension
> +.*Warning: invalid CSR `hstateen2h', needs rv32i extension
> +.*Warning: invalid CSR `hstateen2h', needs `smstateen' extension
> +.*Warning: invalid CSR `hstateen2h', needs rv32i extension
> +.*Warning: invalid CSR `hstateen2h', needs `smstateen' extension
> +.*Warning: invalid CSR `hstateen3h', needs rv32i extension
> +.*Warning: invalid CSR `hstateen3h', needs `smstateen' extension
> +.*Warning: invalid CSR `hstateen3h', needs rv32i extension
> +.*Warning: invalid CSR `hstateen3h', needs `smstateen' extension
>  .*Warning: invalid CSR `ubadaddr' for the privileged spec `1.12'
>  .*Warning: invalid CSR `ubadaddr' for the privileged spec `1.12'
>  .*Warning: invalid CSR `sbadaddr' for the privileged spec `1.12'
> diff --git a/gas/testsuite/gas/riscv/csr-version-1p9p1.d b/gas/testsuite/gas/riscv/csr-version-1p9p1.d
> index d0841df5aba..a593182b168 100644
> --- a/gas/testsuite/gas/riscv/csr-version-1p9p1.d
> +++ b/gas/testsuite/gas/riscv/csr-version-1p9p1.d
> @@ -601,6 +601,46 @@ Disassembly of section .text:
>  [      ]+[0-9a-f]+:[   ]+24459073[     ]+csrw[         ]+0x244,a1
>  [      ]+[0-9a-f]+:[   ]+28002573[     ]+csrr[         ]+a0,0x280
>  [      ]+[0-9a-f]+:[   ]+28059073[     ]+csrw[         ]+0x280,a1
> +[      ]+[0-9a-f]+:[   ]+30c02573[     ]+csrr[         ]+a0,mstateen0
> +[      ]+[0-9a-f]+:[   ]+30c59073[     ]+csrw[         ]+mstateen0,a1
> +[      ]+[0-9a-f]+:[   ]+30d02573[     ]+csrr[         ]+a0,mstateen1
> +[      ]+[0-9a-f]+:[   ]+30d59073[     ]+csrw[         ]+mstateen1,a1
> +[      ]+[0-9a-f]+:[   ]+30e02573[     ]+csrr[         ]+a0,mstateen2
> +[      ]+[0-9a-f]+:[   ]+30e59073[     ]+csrw[         ]+mstateen2,a1
> +[      ]+[0-9a-f]+:[   ]+30f02573[     ]+csrr[         ]+a0,mstateen3
> +[      ]+[0-9a-f]+:[   ]+30f59073[     ]+csrw[         ]+mstateen3,a1
> +[      ]+[0-9a-f]+:[   ]+10c02573[     ]+csrr[         ]+a0,sstateen0
> +[      ]+[0-9a-f]+:[   ]+10c59073[     ]+csrw[         ]+sstateen0,a1
> +[      ]+[0-9a-f]+:[   ]+10d02573[     ]+csrr[         ]+a0,sstateen1
> +[      ]+[0-9a-f]+:[   ]+10d59073[     ]+csrw[         ]+sstateen1,a1
> +[      ]+[0-9a-f]+:[   ]+10e02573[     ]+csrr[         ]+a0,sstateen2
> +[      ]+[0-9a-f]+:[   ]+10e59073[     ]+csrw[         ]+sstateen2,a1
> +[      ]+[0-9a-f]+:[   ]+10f02573[     ]+csrr[         ]+a0,sstateen3
> +[      ]+[0-9a-f]+:[   ]+10f59073[     ]+csrw[         ]+sstateen3,a1
> +[      ]+[0-9a-f]+:[   ]+60c02573[     ]+csrr[         ]+a0,0x60c
> +[      ]+[0-9a-f]+:[   ]+60c59073[     ]+csrw[         ]+0x60c,a1
> +[      ]+[0-9a-f]+:[   ]+60d02573[     ]+csrr[         ]+a0,0x60d
> +[      ]+[0-9a-f]+:[   ]+60d59073[     ]+csrw[         ]+0x60d,a1
> +[      ]+[0-9a-f]+:[   ]+60e02573[     ]+csrr[         ]+a0,0x60e
> +[      ]+[0-9a-f]+:[   ]+60e59073[     ]+csrw[         ]+0x60e,a1
> +[      ]+[0-9a-f]+:[   ]+60f02573[     ]+csrr[         ]+a0,0x60f
> +[      ]+[0-9a-f]+:[   ]+60f59073[     ]+csrw[         ]+0x60f,a1
> +[      ]+[0-9a-f]+:[   ]+31c02573[     ]+csrr[         ]+a0,mstateen0h
> +[      ]+[0-9a-f]+:[   ]+31c59073[     ]+csrw[         ]+mstateen0h,a1
> +[      ]+[0-9a-f]+:[   ]+31d02573[     ]+csrr[         ]+a0,mstateen1h
> +[      ]+[0-9a-f]+:[   ]+31d59073[     ]+csrw[         ]+mstateen1h,a1
> +[      ]+[0-9a-f]+:[   ]+31e02573[     ]+csrr[         ]+a0,mstateen2h
> +[      ]+[0-9a-f]+:[   ]+31e59073[     ]+csrw[         ]+mstateen2h,a1
> +[      ]+[0-9a-f]+:[   ]+31f02573[     ]+csrr[         ]+a0,mstateen3h
> +[      ]+[0-9a-f]+:[   ]+31f59073[     ]+csrw[         ]+mstateen3h,a1
> +[      ]+[0-9a-f]+:[   ]+61c02573[     ]+csrr[         ]+a0,0x61c
> +[      ]+[0-9a-f]+:[   ]+61c59073[     ]+csrw[         ]+0x61c,a1
> +[      ]+[0-9a-f]+:[   ]+61d02573[     ]+csrr[         ]+a0,0x61d
> +[      ]+[0-9a-f]+:[   ]+61d59073[     ]+csrw[         ]+0x61d,a1
> +[      ]+[0-9a-f]+:[   ]+61e02573[     ]+csrr[         ]+a0,0x61e
> +[      ]+[0-9a-f]+:[   ]+61e59073[     ]+csrw[         ]+0x61e,a1
> +[      ]+[0-9a-f]+:[   ]+61f02573[     ]+csrr[         ]+a0,0x61f
> +[      ]+[0-9a-f]+:[   ]+61f59073[     ]+csrw[         ]+0x61f,a1
>  [      ]+[0-9a-f]+:[   ]+04302573[     ]+csrr[         ]+a0,ubadaddr
>  [      ]+[0-9a-f]+:[   ]+04359073[     ]+csrw[         ]+ubadaddr,a1
>  [      ]+[0-9a-f]+:[   ]+14302573[     ]+csrr[         ]+a0,sbadaddr
> diff --git a/gas/testsuite/gas/riscv/csr-version-1p9p1.l b/gas/testsuite/gas/riscv/csr-version-1p9p1.l
> index 340216e5ca7..75eda35d2ce 100644
> --- a/gas/testsuite/gas/riscv/csr-version-1p9p1.l
> +++ b/gas/testsuite/gas/riscv/csr-version-1p9p1.l
> @@ -461,6 +461,78 @@
>  .*Warning: invalid CSR `vsip' for the privileged spec `1.9.1'
>  .*Warning: invalid CSR `vsatp' for the privileged spec `1.9.1'
>  .*Warning: invalid CSR `vsatp' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `mstateen0', needs `smstateen' extension
> +.*Warning: invalid CSR `mstateen0', needs `smstateen' extension
> +.*Warning: invalid CSR `mstateen1', needs `smstateen' extension
> +.*Warning: invalid CSR `mstateen1', needs `smstateen' extension
> +.*Warning: invalid CSR `mstateen2', needs `smstateen' extension
> +.*Warning: invalid CSR `mstateen2', needs `smstateen' extension
> +.*Warning: invalid CSR `mstateen3', needs `smstateen' extension
> +.*Warning: invalid CSR `mstateen3', needs `smstateen' extension
> +.*Warning: invalid CSR `sstateen0', needs `smstateen' extension
> +.*Warning: invalid CSR `sstateen0', needs `smstateen' extension
> +.*Warning: invalid CSR `sstateen1', needs `smstateen' extension
> +.*Warning: invalid CSR `sstateen1', needs `smstateen' extension
> +.*Warning: invalid CSR `sstateen2', needs `smstateen' extension
> +.*Warning: invalid CSR `sstateen2', needs `smstateen' extension
> +.*Warning: invalid CSR `sstateen3', needs `smstateen' extension
> +.*Warning: invalid CSR `sstateen3', needs `smstateen' extension
> +.*Warning: invalid CSR `hstateen0', needs `smstateen' extension
> +.*Warning: invalid CSR `hstateen0' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `hstateen0', needs `smstateen' extension
> +.*Warning: invalid CSR `hstateen0' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `hstateen1', needs `smstateen' extension
> +.*Warning: invalid CSR `hstateen1' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `hstateen1', needs `smstateen' extension
> +.*Warning: invalid CSR `hstateen1' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `hstateen2', needs `smstateen' extension
> +.*Warning: invalid CSR `hstateen2' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `hstateen2', needs `smstateen' extension
> +.*Warning: invalid CSR `hstateen2' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `hstateen3', needs `smstateen' extension
> +.*Warning: invalid CSR `hstateen3' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `hstateen3', needs `smstateen' extension
> +.*Warning: invalid CSR `hstateen3' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `mstateen0h', needs rv32i extension
> +.*Warning: invalid CSR `mstateen0h', needs `smstateen' extension
> +.*Warning: invalid CSR `mstateen0h', needs rv32i extension
> +.*Warning: invalid CSR `mstateen0h', needs `smstateen' extension
> +.*Warning: invalid CSR `mstateen1h', needs rv32i extension
> +.*Warning: invalid CSR `mstateen1h', needs `smstateen' extension
> +.*Warning: invalid CSR `mstateen1h', needs rv32i extension
> +.*Warning: invalid CSR `mstateen1h', needs `smstateen' extension
> +.*Warning: invalid CSR `mstateen2h', needs rv32i extension
> +.*Warning: invalid CSR `mstateen2h', needs `smstateen' extension
> +.*Warning: invalid CSR `mstateen2h', needs rv32i extension
> +.*Warning: invalid CSR `mstateen2h', needs `smstateen' extension
> +.*Warning: invalid CSR `mstateen3h', needs rv32i extension
> +.*Warning: invalid CSR `mstateen3h', needs `smstateen' extension
> +.*Warning: invalid CSR `mstateen3h', needs rv32i extension
> +.*Warning: invalid CSR `mstateen3h', needs `smstateen' extension
> +.*Warning: invalid CSR `hstateen0h', needs rv32i extension
> +.*Warning: invalid CSR `hstateen0h', needs `smstateen' extension
> +.*Warning: invalid CSR `hstateen0h' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `hstateen0h', needs rv32i extension
> +.*Warning: invalid CSR `hstateen0h', needs `smstateen' extension
> +.*Warning: invalid CSR `hstateen0h' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `hstateen1h', needs rv32i extension
> +.*Warning: invalid CSR `hstateen1h', needs `smstateen' extension
> +.*Warning: invalid CSR `hstateen1h' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `hstateen1h', needs rv32i extension
> +.*Warning: invalid CSR `hstateen1h', needs `smstateen' extension
> +.*Warning: invalid CSR `hstateen1h' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `hstateen2h', needs rv32i extension
> +.*Warning: invalid CSR `hstateen2h', needs `smstateen' extension
> +.*Warning: invalid CSR `hstateen2h' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `hstateen2h', needs rv32i extension
> +.*Warning: invalid CSR `hstateen2h', needs `smstateen' extension
> +.*Warning: invalid CSR `hstateen2h' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `hstateen3h', needs rv32i extension
> +.*Warning: invalid CSR `hstateen3h', needs `smstateen' extension
> +.*Warning: invalid CSR `hstateen3h' for the privileged spec `1.9.1'
> +.*Warning: invalid CSR `hstateen3h', needs rv32i extension
> +.*Warning: invalid CSR `hstateen3h', needs `smstateen' extension
> +.*Warning: invalid CSR `hstateen3h' for the privileged spec `1.9.1'
>  .*Warning: invalid CSR `utval' for the privileged spec `1.9.1'
>  .*Warning: invalid CSR `utval' for the privileged spec `1.9.1'
>  .*Warning: invalid CSR `fflags', needs `f' extension
> diff --git a/gas/testsuite/gas/riscv/csr.s b/gas/testsuite/gas/riscv/csr.s
> index 0d0ec712c15..1a4a2be2c0f 100644
> --- a/gas/testsuite/gas/riscv/csr.s
> +++ b/gas/testsuite/gas/riscv/csr.s
> @@ -337,6 +337,28 @@
>         csr vsip
>         csr vsatp
>
> +       # Smstateen extension
> +       csr mstateen0
> +       csr mstateen1
> +       csr mstateen2
> +       csr mstateen3
> +       csr sstateen0
> +       csr sstateen1
> +       csr sstateen2
> +       csr sstateen3
> +       csr hstateen0
> +       csr hstateen1
> +       csr hstateen2
> +       csr hstateen3
> +       csr mstateen0h
> +       csr mstateen1h
> +       csr mstateen2h
> +       csr mstateen3h
> +       csr hstateen0h
> +       csr hstateen1h
> +       csr hstateen2h
> +       csr hstateen3h
> +
>         # Supported in previous priv spec, but dropped now
>
>         csr ubadaddr            # 0x043 in 1.9.1, but the value is utval since 1.10
> diff --git a/include/opcode/riscv-opc.h b/include/opcode/riscv-opc.h
> index 01cd3a4e9dd..badfd48efdc 100644
> --- a/include/opcode/riscv-opc.h
> +++ b/include/opcode/riscv-opc.h
> @@ -2348,6 +2348,27 @@
>  #define CSR_UIP 0x44
>  #define CSR_SEDELEG 0x102
>  #define CSR_SIDELEG 0x103
> +/* Smstateen extension */
> +#define CSR_MSTATEEN0 0x30c
> +#define CSR_MSTATEEN1 0x30d
> +#define CSR_MSTATEEN2 0x30e
> +#define CSR_MSTATEEN3 0x30f
> +#define CSR_SSTATEEN0 0x10c
> +#define CSR_SSTATEEN1 0x10d
> +#define CSR_SSTATEEN2 0x10e
> +#define CSR_SSTATEEN3 0x10f
> +#define CSR_HSTATEEN0 0x60c
> +#define CSR_HSTATEEN1 0x60d
> +#define CSR_HSTATEEN2 0x60e
> +#define CSR_HSTATEEN3 0x60f
> +#define CSR_MSTATEEN0H 0x31c
> +#define CSR_MSTATEEN1H 0x31d
> +#define CSR_MSTATEEN2H 0x31e
> +#define CSR_MSTATEEN3H 0x31f
> +#define CSR_HSTATEEN0H 0x61c
> +#define CSR_HSTATEEN1H 0x61d
> +#define CSR_HSTATEEN2H 0x61e
> +#define CSR_HSTATEEN3H 0x61f
>  /* Unprivileged Floating-Point CSR addresses.  */
>  #define CSR_FFLAGS 0x1
>  #define CSR_FRM 0x2
> @@ -3006,6 +3027,27 @@ DECLARE_CSR(vscause, CSR_VSCAUSE, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_C
>  DECLARE_CSR(vstval, CSR_VSTVAL, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
>  DECLARE_CSR(vsip, CSR_VSIP, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
>  DECLARE_CSR(vsatp, CSR_VSATP, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
> +/* Smstateen extension */
> +DECLARE_CSR(mstateen0, CSR_MSTATEEN0, CSR_CLASS_SMSTATEEN, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
> +DECLARE_CSR(mstateen1, CSR_MSTATEEN1, CSR_CLASS_SMSTATEEN, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
> +DECLARE_CSR(mstateen2, CSR_MSTATEEN2, CSR_CLASS_SMSTATEEN, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
> +DECLARE_CSR(mstateen3, CSR_MSTATEEN3, CSR_CLASS_SMSTATEEN, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
> +DECLARE_CSR(sstateen0, CSR_SSTATEEN0, CSR_CLASS_SMSTATEEN, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
> +DECLARE_CSR(sstateen1, CSR_SSTATEEN1, CSR_CLASS_SMSTATEEN, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
> +DECLARE_CSR(sstateen2, CSR_SSTATEEN2, CSR_CLASS_SMSTATEEN, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
> +DECLARE_CSR(sstateen3, CSR_SSTATEEN3, CSR_CLASS_SMSTATEEN, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
> +DECLARE_CSR(hstateen0, CSR_HSTATEEN0, CSR_CLASS_SMSTATEEN, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
> +DECLARE_CSR(hstateen1, CSR_HSTATEEN1, CSR_CLASS_SMSTATEEN, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
> +DECLARE_CSR(hstateen2, CSR_HSTATEEN2, CSR_CLASS_SMSTATEEN, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
> +DECLARE_CSR(hstateen3, CSR_HSTATEEN3, CSR_CLASS_SMSTATEEN, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
> +DECLARE_CSR(mstateen0h, CSR_MSTATEEN0H, CSR_CLASS_SMSTATEEN_32, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
> +DECLARE_CSR(mstateen1h, CSR_MSTATEEN1H, CSR_CLASS_SMSTATEEN_32, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
> +DECLARE_CSR(mstateen2h, CSR_MSTATEEN2H, CSR_CLASS_SMSTATEEN_32, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
> +DECLARE_CSR(mstateen3h, CSR_MSTATEEN3H, CSR_CLASS_SMSTATEEN_32, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
> +DECLARE_CSR(hstateen0h, CSR_HSTATEEN0H, CSR_CLASS_SMSTATEEN_32, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
> +DECLARE_CSR(hstateen1h, CSR_HSTATEEN1H, CSR_CLASS_SMSTATEEN_32, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
> +DECLARE_CSR(hstateen2h, CSR_HSTATEEN2H, CSR_CLASS_SMSTATEEN_32, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
> +DECLARE_CSR(hstateen3h, CSR_HSTATEEN3H, CSR_CLASS_SMSTATEEN_32, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)

The privileged spec doesn't define these CSRs, they are defined and
controlled by smstaeen extension.  So I think the defined and aborted
versions of these DECLARE_CSR should be PRIV_SPEC_CLASS_NONE, just
like other unprivileged CSRs did.  In the future, they should be
controlled by smstaeen extension versions, but for now we don't need
to care about this.

Thanks
Nelson

>  /* Dropped CSRs.  */
>  DECLARE_CSR(mbase, CSR_MBASE, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_1P10)
>  DECLARE_CSR(mbound, CSR_MBOUND, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_1P10)
> --
> 2.32.0
>

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

* Re: [PATCH 1/3] RISC-V: Add 'Smstateen' extension and its CSRs
  2022-02-25  6:32     ` Nelson Chu
@ 2022-02-25  6:35       ` Tsukasa OI
  2022-02-25 10:51       ` Tsukasa OI
  1 sibling, 0 replies; 32+ messages in thread
From: Tsukasa OI @ 2022-02-25  6:35 UTC (permalink / raw)
  To: Nelson Chu; +Cc: Binutils

On 2022/02/25 15:32, Nelson Chu wrote:
> 
> The privileged spec doesn't define these CSRs, they are defined and
> controlled by smstaeen extension.  So I think the defined and aborted
> versions of these DECLARE_CSR should be PRIV_SPEC_CLASS_NONE, just
> like other unprivileged CSRs did.  In the future, they should be
> controlled by smstaeen extension versions, but for now we don't need
> to care about this.
> 
> Thanks
> Nelson

Understood.  I can fix that soon (including other patches).

Thanks,
Tsukasa

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

* Re: [PATCH 1/3] RISC-V: Add 'Smstateen' extension and its CSRs
  2022-02-25  6:32     ` Nelson Chu
  2022-02-25  6:35       ` Tsukasa OI
@ 2022-02-25 10:51       ` Tsukasa OI
  2022-03-02  4:34         ` Nelson Chu
  1 sibling, 1 reply; 32+ messages in thread
From: Tsukasa OI @ 2022-02-25 10:51 UTC (permalink / raw)
  To: Nelson Chu; +Cc: Binutils

On 2022/02/25 15:32, Nelson Chu wrote:
> 
> The privileged spec doesn't define these CSRs, they are defined and
> controlled by smstaeen extension.  So I think the defined and aborted
> versions of these DECLARE_CSR should be PRIV_SPEC_CLASS_NONE, just
> like other unprivileged CSRs did.  In the future, they should be
> controlled by smstaeen extension versions, but for now we don't need
> to care about this.
> 
> Thanks
> Nelson
> 
>>  /* Dropped CSRs.  */
>>  DECLARE_CSR(mbase, CSR_MBASE, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_1P10)
>>  DECLARE_CSR(mbound, CSR_MBOUND, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_1P10)
>> --
>> 2.32.0
>>
> 

'Sscofpmf' patch (PATCH 2/3) is modified as per your advise.

For the rest, I noticed that there are hypervisor-related CSRs.

For consistency with CSR_CLASS_I CSRs, I think hypervisor-related CSRs
should be masked with privileged architecture version 1.12.  However, if
need_check_version == true (gas/config/tc-riscv.c) for specific CSR
class, there's no option to set PRIV_SPEC_CLASS_NONE because it would
just mean "not supported in any version".

Separating CSR classes (H/non-H) might be an option.  However, I felt
this is "too much".


Option A: Set minimum privileged specification to 1.9.1 for non-H CSRs
Option B: Disable version checking on certain conditions

[Option A]

How about this?

-   For 'Sscofpmf' (with no hypervisor-related CSRs),
    use PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE
    with need_check_version = false (as you recommended).
-   For 'Smstateen' and 'Sstc' (with some hypervisor-related CSRs),
    need_check_version = true and...
    -   Use PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT
        for hypervisor-related CSRs
        (mask with both given extension and Privileged version 1.12)
    -   Use PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT
        for other CSRs
        (much like unprivileged counter CSRs like `cycle')

That means my 'Smstateen' patch (PATCH 1/3) will not be modified.
On the other hand, 'Sstc' patch (PATCH 3/3) will be (relax minimum
privileged version from 1.11 to 1.9.1 [minimum supported]).

[Option B]

Another option is to disable version checking if both define_version and
abort_version are PRIV_SPEC_CLASS_NONE (or more simply, if
define_version is PRIV_SPEC_CLASS_NONE).  With current design, that
would remove `need_check_version' variable too.


TBH, I see both options look equally good but have their cons.

I would like to hear everyone else's (including your) thoughts.


Thanks,
Tsukasa

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

* Re: [PATCH 1/3] RISC-V: Add 'Smstateen' extension and its CSRs
  2022-02-25 10:51       ` Tsukasa OI
@ 2022-03-02  4:34         ` Nelson Chu
  0 siblings, 0 replies; 32+ messages in thread
From: Nelson Chu @ 2022-03-02  4:34 UTC (permalink / raw)
  To: Tsukasa OI; +Cc: Binutils

On Fri, Feb 25, 2022 at 6:51 PM Tsukasa OI <research_trasio@irq.a4lg.com> wrote:
>
> On 2022/02/25 15:32, Nelson Chu wrote:
> >
> > The privileged spec doesn't define these CSRs, they are defined and
> > controlled by smstaeen extension.  So I think the defined and aborted
> > versions of these DECLARE_CSR should be PRIV_SPEC_CLASS_NONE, just
> > like other unprivileged CSRs did.  In the future, they should be
> > controlled by smstaeen extension versions, but for now we don't need
> > to care about this.
> >
> > Thanks
> > Nelson
> >
> >>  /* Dropped CSRs.  */
> >>  DECLARE_CSR(mbase, CSR_MBASE, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_1P10)
> >>  DECLARE_CSR(mbound, CSR_MBOUND, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_1P10)
> >> --
> >> 2.32.0
> >>
> >
>
> 'Sscofpmf' patch (PATCH 2/3) is modified as per your advise.
>
> For the rest, I noticed that there are hypervisor-related CSRs.
>
> For consistency with CSR_CLASS_I CSRs, I think hypervisor-related CSRs
> should be masked with privileged architecture version 1.12.  However, if
> need_check_version == true (gas/config/tc-riscv.c) for specific CSR
> class, there's no option to set PRIV_SPEC_CLASS_NONE because it would
> just mean "not supported in any version".
>
> Separating CSR classes (H/non-H) might be an option.  However, I felt
> this is "too much".
>
>
> Option A: Set minimum privileged specification to 1.9.1 for non-H CSRs
> Option B: Disable version checking on certain conditions
>
> [Option A]
>
> How about this?
>
> -   For 'Sscofpmf' (with no hypervisor-related CSRs),
>     use PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE
>     with need_check_version = false (as you recommended).
> -   For 'Smstateen' and 'Sstc' (with some hypervisor-related CSRs),
>     need_check_version = true and...
>     -   Use PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT
>         for hypervisor-related CSRs
>         (mask with both given extension and Privileged version 1.12)
>     -   Use PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT
>         for other CSRs
>         (much like unprivileged counter CSRs like `cycle')
>
> That means my 'Smstateen' patch (PATCH 1/3) will not be modified.
> On the other hand, 'Sstc' patch (PATCH 3/3) will be (relax minimum
> privileged version from 1.11 to 1.9.1 [minimum supported]).
>
> [Option B]
>
> Another option is to disable version checking if both define_version and
> abort_version are PRIV_SPEC_CLASS_NONE (or more simply, if
> define_version is PRIV_SPEC_CLASS_NONE).  With current design, that
> would remove `need_check_version' variable too.

I have heard that we will have extension names of supervisor, machine
and hypervisor mode in the future.  So the CSRs will be controlled by
the corresponding extension names with different versions.  The
PRIV_SPEC_CLASS_<versions> will be replaced with the version of
extensions, and the privileged spec versions will no longer be useful.
Therefore, I had suggested we just set both define_version and
abort_version to PRIV_SPEC_CLASS_NONE.  The hypervisor CSRs will be
controlled by the "h" extension if the ISA spec is updated, so it
isn't worth spending so much time to discuss these similar issues,
unless there are other new proposals in the future.

Thanks
Nelson

> TBH, I see both options look equally good but have their cons.
>
> I would like to hear everyone else's (including your) thoughts.
>
>
> Thanks,
> Tsukasa

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

* [PATCH v2 0/3] RISC-V: Add CSRs for several supervisor extensions
  2022-02-24 12:10 ` [PATCH 0/3] RISC-V: Add CSRs for several supervisor extensions Tsukasa OI
                     ` (2 preceding siblings ...)
  2022-02-24 12:10   ` [PATCH 3/3] RISC-V: Add 'Sstc' extension and " Tsukasa OI
@ 2022-05-24  9:35   ` Tsukasa OI
  2022-05-24  9:35     ` [PATCH v2 1/3] RISC-V: Add 'Smstateen' extension and its CSRs Tsukasa OI
                       ` (3 more replies)
  3 siblings, 4 replies; 32+ messages in thread
From: Tsukasa OI @ 2022-05-24  9:35 UTC (permalink / raw)
  To: Tsukasa OI, Kito Cheng, Nelson Chu, Palmer Dabbelt; +Cc: binutils

v1:
<https://sourceware.org/pipermail/binutils/2022-February/119858.html>

This patchset adds CSRs for following extensions:

-   Smstateen
-   Sscofpmf
-   Sstc

For consistency with CSR_CLASS_I hypervisor-related CSRs, minimum
privileged specification on hypervisor-related CSRs are 1.12 and non
hypervisor-related CSRs are 1.9.1 (minimum supported; Smstateen and
Sstc) or none (Sscofpmf; which has no hypervisor-related CSRs).

This decision corresponds Option A on:
<https://sourceware.org/pipermail/binutils/2022-February/119874.html>

I have been busy since submitting v1 and I completely forgot to submit
v2 (which is already completed on February).

Thanks,
Tsukasa




Tsukasa OI (3):
  RISC-V: Add 'Smstateen' extension and its CSRs
  RISC-V: Add 'Sscofpmf' extension with its CSRs
  RISC-V: Add 'Sstc' extension and its CSRs

 bfd/elfxx-riscv.c                           |   3 +
 gas/config/tc-riscv.c                       |  26 +++
 gas/testsuite/gas/riscv/csr-dw-regnums.d    |  54 +++++
 gas/testsuite/gas/riscv/csr-dw-regnums.s    |  57 ++++++
 gas/testsuite/gas/riscv/csr-version-1p10.d  | 108 ++++++++++
 gas/testsuite/gas/riscv/csr-version-1p10.l  | 207 ++++++++++++++++++++
 gas/testsuite/gas/riscv/csr-version-1p11.d  | 108 ++++++++++
 gas/testsuite/gas/riscv/csr-version-1p11.l  | 207 ++++++++++++++++++++
 gas/testsuite/gas/riscv/csr-version-1p12.d  | 108 ++++++++++
 gas/testsuite/gas/riscv/csr-version-1p12.l  | 187 ++++++++++++++++++
 gas/testsuite/gas/riscv/csr-version-1p9p1.d | 108 ++++++++++
 gas/testsuite/gas/riscv/csr-version-1p9p1.l | 207 ++++++++++++++++++++
 gas/testsuite/gas/riscv/csr.s               |  60 ++++++
 include/opcode/riscv-opc.h                  | 114 +++++++++++
 14 files changed, 1554 insertions(+)


base-commit: be38442ddacf1fd25c8868d0491ea9e98b0e9ca7
-- 
2.34.1


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

* [PATCH v2 1/3] RISC-V: Add 'Smstateen' extension and its CSRs
  2022-05-24  9:35   ` [PATCH v2 0/3] RISC-V: Add CSRs for several supervisor extensions Tsukasa OI
@ 2022-05-24  9:35     ` Tsukasa OI
  2022-05-24  9:35     ` [PATCH v2 2/3] RISC-V: Add 'Sscofpmf' extension with " Tsukasa OI
                       ` (2 subsequent siblings)
  3 siblings, 0 replies; 32+ messages in thread
From: Tsukasa OI @ 2022-05-24  9:35 UTC (permalink / raw)
  To: Tsukasa OI, Kito Cheng, Nelson Chu, Palmer Dabbelt; +Cc: binutils

This commit adds State Enable Extension (Smstateen) and its CSRs.

bfd/ChangeLog:

	* elfxx-riscv.c (riscv_supported_std_s_ext): Add 'Smstateen'
	extension to valid 'S' extension list.

gas/ChangeLog:

	* config/tc-riscv.c (enum riscv_csr_class): Add CSR classes for
	'Smstateen' extension. (riscv_csr_address): Add handling for
	new CSR classes.
	* testsuite/gas/riscv/csr-dw-regnums.s: Add new CSRs.
	* testsuite/gas/riscv/csr-dw-regnums.d: 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_MSTATEEN0, CSR_MSTATEEN1,
	CSR_MSTATEEN2, CSR_MSTATEEN3, CSR_SSTATEEN0, CSR_SSTATEEN1,
	CSR_SSTATEEN2, CSR_SSTATEEN3, CSR_HSTATEEN0, CSR_HSTATEEN1,
	CSR_HSTATEEN2, CSR_HSTATEEN3, CSR_MSTATEEN0H, CSR_MSTATEEN1H,
	CSR_MSTATEEN2H, CSR_MSTATEEN3H, CSR_HSTATEEN0H, CSR_HSTATEEN1H,
	CSR_HSTATEEN2H, CSR_HSTATEEN3H): New CSR macros.
---
 bfd/elfxx-riscv.c                           |  1 +
 gas/config/tc-riscv.c                       |  9 +++
 gas/testsuite/gas/riscv/csr-dw-regnums.d    | 20 ++++++
 gas/testsuite/gas/riscv/csr-dw-regnums.s    | 21 ++++++
 gas/testsuite/gas/riscv/csr-version-1p10.d  | 40 ++++++++++++
 gas/testsuite/gas/riscv/csr-version-1p10.l  | 72 +++++++++++++++++++++
 gas/testsuite/gas/riscv/csr-version-1p11.d  | 40 ++++++++++++
 gas/testsuite/gas/riscv/csr-version-1p11.l  | 72 +++++++++++++++++++++
 gas/testsuite/gas/riscv/csr-version-1p12.d  | 40 ++++++++++++
 gas/testsuite/gas/riscv/csr-version-1p12.l  | 56 ++++++++++++++++
 gas/testsuite/gas/riscv/csr-version-1p9p1.d | 40 ++++++++++++
 gas/testsuite/gas/riscv/csr-version-1p9p1.l | 72 +++++++++++++++++++++
 gas/testsuite/gas/riscv/csr.s               | 22 +++++++
 include/opcode/riscv-opc.h                  | 42 ++++++++++++
 14 files changed, 547 insertions(+)

diff --git a/bfd/elfxx-riscv.c b/bfd/elfxx-riscv.c
index b2806185fa8..39c7f04efdf 100644
--- a/bfd/elfxx-riscv.c
+++ b/bfd/elfxx-riscv.c
@@ -1227,6 +1227,7 @@ static struct riscv_supported_ext riscv_supported_std_z_ext[] =
 
 static struct riscv_supported_ext riscv_supported_std_s_ext[] =
 {
+  {"smstateen",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
   {"svinval",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
   {NULL, 0, 0, 0, 0}
 };
diff --git a/gas/config/tc-riscv.c b/gas/config/tc-riscv.c
index 1b730b4be36..7e8db81c03f 100644
--- a/gas/config/tc-riscv.c
+++ b/gas/config/tc-riscv.c
@@ -65,6 +65,8 @@ enum riscv_csr_class
   CSR_CLASS_F,		/* f-ext only */
   CSR_CLASS_ZKR,	/* zkr only */
   CSR_CLASS_V,		/* rvv only */
+  CSR_CLASS_SMSTATEEN,		/* Smstateen only */
+  CSR_CLASS_SMSTATEEN_32,	/* Smstateen RV32 only */
   CSR_CLASS_DEBUG	/* debug CSR */
 };
 
@@ -918,6 +920,13 @@ riscv_csr_address (const char *csr_name,
     case CSR_CLASS_V:
       extension = "v";
       break;
+    case CSR_CLASS_SMSTATEEN_32:
+      rv32_only = (xlen == 32);
+      /* Fall through.  */
+    case CSR_CLASS_SMSTATEEN:
+      need_check_version = true;
+      extension = "smstateen";
+      break;
     case CSR_CLASS_DEBUG:
       break;
     default:
diff --git a/gas/testsuite/gas/riscv/csr-dw-regnums.d b/gas/testsuite/gas/riscv/csr-dw-regnums.d
index 23ceba193ca..0c9ec6e4035 100644
--- a/gas/testsuite/gas/riscv/csr-dw-regnums.d
+++ b/gas/testsuite/gas/riscv/csr-dw-regnums.d
@@ -313,6 +313,26 @@ Contents of the .* section:
   DW_CFA_offset_extended_sf: r4675 \(vstval\) at cfa\+2316
   DW_CFA_offset_extended_sf: r4676 \(vsip\) at cfa\+2320
   DW_CFA_offset_extended_sf: r4736 \(vsatp\) at cfa\+2560
+  DW_CFA_offset_extended_sf: r4876 \(mstateen0\) at cfa\+3120
+  DW_CFA_offset_extended_sf: r4877 \(mstateen1\) at cfa\+3124
+  DW_CFA_offset_extended_sf: r4878 \(mstateen2\) at cfa\+3128
+  DW_CFA_offset_extended_sf: r4879 \(mstateen3\) at cfa\+3132
+  DW_CFA_offset_extended_sf: r4364 \(sstateen0\) at cfa\+1072
+  DW_CFA_offset_extended_sf: r4365 \(sstateen1\) at cfa\+1076
+  DW_CFA_offset_extended_sf: r4366 \(sstateen2\) at cfa\+1080
+  DW_CFA_offset_extended_sf: r4367 \(sstateen3\) at cfa\+1084
+  DW_CFA_offset_extended_sf: r5644 \(hstateen0\) at cfa\+6192
+  DW_CFA_offset_extended_sf: r5645 \(hstateen1\) at cfa\+6196
+  DW_CFA_offset_extended_sf: r5646 \(hstateen2\) at cfa\+6200
+  DW_CFA_offset_extended_sf: r5647 \(hstateen3\) at cfa\+6204
+  DW_CFA_offset_extended_sf: r4892 \(mstateen0h\) at cfa\+3184
+  DW_CFA_offset_extended_sf: r4893 \(mstateen1h\) at cfa\+3188
+  DW_CFA_offset_extended_sf: r4894 \(mstateen2h\) at cfa\+3192
+  DW_CFA_offset_extended_sf: r4895 \(mstateen3h\) at cfa\+3196
+  DW_CFA_offset_extended_sf: r5660 \(hstateen0h\) at cfa\+6256
+  DW_CFA_offset_extended_sf: r5661 \(hstateen1h\) at cfa\+6260
+  DW_CFA_offset_extended_sf: r5662 \(hstateen2h\) at cfa\+6264
+  DW_CFA_offset_extended_sf: r5663 \(hstateen3h\) at cfa\+6268
   DW_CFA_offset_extended_sf: r4163 \(utval\) at cfa\+268
   DW_CFA_offset_extended_sf: r4419 \(stval\) at cfa\+1292
   DW_CFA_offset_extended_sf: r4480 \(satp\) at cfa\+1536
diff --git a/gas/testsuite/gas/riscv/csr-dw-regnums.s b/gas/testsuite/gas/riscv/csr-dw-regnums.s
index 4a243ad7b0f..2afadac49f6 100644
--- a/gas/testsuite/gas/riscv/csr-dw-regnums.s
+++ b/gas/testsuite/gas/riscv/csr-dw-regnums.s
@@ -307,6 +307,27 @@ _start:
 	.cfi_offset vstval, 2316
 	.cfi_offset vsip, 2320
 	.cfi_offset vsatp, 2560
+	# Smstateen extension
+	.cfi_offset mstateen0, 3120
+	.cfi_offset mstateen1, 3124
+	.cfi_offset mstateen2, 3128
+	.cfi_offset mstateen3, 3132
+	.cfi_offset sstateen0, 1072
+	.cfi_offset sstateen1, 1076
+	.cfi_offset sstateen2, 1080
+	.cfi_offset sstateen3, 1084
+	.cfi_offset hstateen0, 6192
+	.cfi_offset hstateen1, 6196
+	.cfi_offset hstateen2, 6200
+	.cfi_offset hstateen3, 6204
+	.cfi_offset mstateen0h, 3184
+	.cfi_offset mstateen1h, 3188
+	.cfi_offset mstateen2h, 3192
+	.cfi_offset mstateen3h, 3196
+	.cfi_offset hstateen0h, 6256
+	.cfi_offset hstateen1h, 6260
+	.cfi_offset hstateen2h, 6264
+	.cfi_offset hstateen3h, 6268
 	# dropped
 	.cfi_offset ubadaddr, 268	# aliases
 	.cfi_offset sbadaddr, 1292	# aliases
diff --git a/gas/testsuite/gas/riscv/csr-version-1p10.d b/gas/testsuite/gas/riscv/csr-version-1p10.d
index 6e0d1f6c66a..7f9f5497428 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p10.d
+++ b/gas/testsuite/gas/riscv/csr-version-1p10.d
@@ -601,6 +601,46 @@ Disassembly of section .text:
 [ 	]+[0-9a-f]+:[ 	]+24459073[ 	]+csrw[ 	]+0x244,a1
 [ 	]+[0-9a-f]+:[ 	]+28002573[ 	]+csrr[ 	]+a0,0x280
 [ 	]+[0-9a-f]+:[ 	]+28059073[ 	]+csrw[ 	]+0x280,a1
+[ 	]+[0-9a-f]+:[ 	]+30c02573[ 	]+csrr[ 	]+a0,mstateen0
+[ 	]+[0-9a-f]+:[ 	]+30c59073[ 	]+csrw[ 	]+mstateen0,a1
+[ 	]+[0-9a-f]+:[ 	]+30d02573[ 	]+csrr[ 	]+a0,mstateen1
+[ 	]+[0-9a-f]+:[ 	]+30d59073[ 	]+csrw[ 	]+mstateen1,a1
+[ 	]+[0-9a-f]+:[ 	]+30e02573[ 	]+csrr[ 	]+a0,mstateen2
+[ 	]+[0-9a-f]+:[ 	]+30e59073[ 	]+csrw[ 	]+mstateen2,a1
+[ 	]+[0-9a-f]+:[ 	]+30f02573[ 	]+csrr[ 	]+a0,mstateen3
+[ 	]+[0-9a-f]+:[ 	]+30f59073[ 	]+csrw[ 	]+mstateen3,a1
+[ 	]+[0-9a-f]+:[ 	]+10c02573[ 	]+csrr[ 	]+a0,sstateen0
+[ 	]+[0-9a-f]+:[ 	]+10c59073[ 	]+csrw[ 	]+sstateen0,a1
+[ 	]+[0-9a-f]+:[ 	]+10d02573[ 	]+csrr[ 	]+a0,sstateen1
+[ 	]+[0-9a-f]+:[ 	]+10d59073[ 	]+csrw[ 	]+sstateen1,a1
+[ 	]+[0-9a-f]+:[ 	]+10e02573[ 	]+csrr[ 	]+a0,sstateen2
+[ 	]+[0-9a-f]+:[ 	]+10e59073[ 	]+csrw[ 	]+sstateen2,a1
+[ 	]+[0-9a-f]+:[ 	]+10f02573[ 	]+csrr[ 	]+a0,sstateen3
+[ 	]+[0-9a-f]+:[ 	]+10f59073[ 	]+csrw[ 	]+sstateen3,a1
+[ 	]+[0-9a-f]+:[ 	]+60c02573[ 	]+csrr[ 	]+a0,0x60c
+[ 	]+[0-9a-f]+:[ 	]+60c59073[ 	]+csrw[ 	]+0x60c,a1
+[ 	]+[0-9a-f]+:[ 	]+60d02573[ 	]+csrr[ 	]+a0,0x60d
+[ 	]+[0-9a-f]+:[ 	]+60d59073[ 	]+csrw[ 	]+0x60d,a1
+[ 	]+[0-9a-f]+:[ 	]+60e02573[ 	]+csrr[ 	]+a0,0x60e
+[ 	]+[0-9a-f]+:[ 	]+60e59073[ 	]+csrw[ 	]+0x60e,a1
+[ 	]+[0-9a-f]+:[ 	]+60f02573[ 	]+csrr[ 	]+a0,0x60f
+[ 	]+[0-9a-f]+:[ 	]+60f59073[ 	]+csrw[ 	]+0x60f,a1
+[ 	]+[0-9a-f]+:[ 	]+31c02573[ 	]+csrr[ 	]+a0,mstateen0h
+[ 	]+[0-9a-f]+:[ 	]+31c59073[ 	]+csrw[ 	]+mstateen0h,a1
+[ 	]+[0-9a-f]+:[ 	]+31d02573[ 	]+csrr[ 	]+a0,mstateen1h
+[ 	]+[0-9a-f]+:[ 	]+31d59073[ 	]+csrw[ 	]+mstateen1h,a1
+[ 	]+[0-9a-f]+:[ 	]+31e02573[ 	]+csrr[ 	]+a0,mstateen2h
+[ 	]+[0-9a-f]+:[ 	]+31e59073[ 	]+csrw[ 	]+mstateen2h,a1
+[ 	]+[0-9a-f]+:[ 	]+31f02573[ 	]+csrr[ 	]+a0,mstateen3h
+[ 	]+[0-9a-f]+:[ 	]+31f59073[ 	]+csrw[ 	]+mstateen3h,a1
+[ 	]+[0-9a-f]+:[ 	]+61c02573[ 	]+csrr[ 	]+a0,0x61c
+[ 	]+[0-9a-f]+:[ 	]+61c59073[ 	]+csrw[ 	]+0x61c,a1
+[ 	]+[0-9a-f]+:[ 	]+61d02573[ 	]+csrr[ 	]+a0,0x61d
+[ 	]+[0-9a-f]+:[ 	]+61d59073[ 	]+csrw[ 	]+0x61d,a1
+[ 	]+[0-9a-f]+:[ 	]+61e02573[ 	]+csrr[ 	]+a0,0x61e
+[ 	]+[0-9a-f]+:[ 	]+61e59073[ 	]+csrw[ 	]+0x61e,a1
+[ 	]+[0-9a-f]+:[ 	]+61f02573[ 	]+csrr[ 	]+a0,0x61f
+[ 	]+[0-9a-f]+:[ 	]+61f59073[ 	]+csrw[ 	]+0x61f,a1
 [ 	]+[0-9a-f]+:[ 	]+04302573[ 	]+csrr[ 	]+a0,utval
 [ 	]+[0-9a-f]+:[ 	]+04359073[ 	]+csrw[ 	]+utval,a1
 [ 	]+[0-9a-f]+:[ 	]+14302573[ 	]+csrr[ 	]+a0,stval
diff --git a/gas/testsuite/gas/riscv/csr-version-1p10.l b/gas/testsuite/gas/riscv/csr-version-1p10.l
index 2511feeafc8..ff23c010d18 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p10.l
+++ b/gas/testsuite/gas/riscv/csr-version-1p10.l
@@ -411,6 +411,78 @@
 .*Warning: invalid CSR `vsip' for the privileged spec `1.10'
 .*Warning: invalid CSR `vsatp' for the privileged spec `1.10'
 .*Warning: invalid CSR `vsatp' for the privileged spec `1.10'
+.*Warning: invalid CSR `mstateen0', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen0', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen1', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen1', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen2', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen2', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen3', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen3', needs `smstateen' extension
+.*Warning: invalid CSR `sstateen0', needs `smstateen' extension
+.*Warning: invalid CSR `sstateen0', needs `smstateen' extension
+.*Warning: invalid CSR `sstateen1', needs `smstateen' extension
+.*Warning: invalid CSR `sstateen1', needs `smstateen' extension
+.*Warning: invalid CSR `sstateen2', needs `smstateen' extension
+.*Warning: invalid CSR `sstateen2', needs `smstateen' extension
+.*Warning: invalid CSR `sstateen3', needs `smstateen' extension
+.*Warning: invalid CSR `sstateen3', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen0', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen0' for the privileged spec `1.10'
+.*Warning: invalid CSR `hstateen0', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen0' for the privileged spec `1.10'
+.*Warning: invalid CSR `hstateen1', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen1' for the privileged spec `1.10'
+.*Warning: invalid CSR `hstateen1', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen1' for the privileged spec `1.10'
+.*Warning: invalid CSR `hstateen2', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen2' for the privileged spec `1.10'
+.*Warning: invalid CSR `hstateen2', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen2' for the privileged spec `1.10'
+.*Warning: invalid CSR `hstateen3', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen3' for the privileged spec `1.10'
+.*Warning: invalid CSR `hstateen3', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen3' for the privileged spec `1.10'
+.*Warning: invalid CSR `mstateen0h', needs rv32i extension
+.*Warning: invalid CSR `mstateen0h', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen0h', needs rv32i extension
+.*Warning: invalid CSR `mstateen0h', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen1h', needs rv32i extension
+.*Warning: invalid CSR `mstateen1h', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen1h', needs rv32i extension
+.*Warning: invalid CSR `mstateen1h', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen2h', needs rv32i extension
+.*Warning: invalid CSR `mstateen2h', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen2h', needs rv32i extension
+.*Warning: invalid CSR `mstateen2h', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen3h', needs rv32i extension
+.*Warning: invalid CSR `mstateen3h', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen3h', needs rv32i extension
+.*Warning: invalid CSR `mstateen3h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen0h', needs rv32i extension
+.*Warning: invalid CSR `hstateen0h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen0h' for the privileged spec `1.10'
+.*Warning: invalid CSR `hstateen0h', needs rv32i extension
+.*Warning: invalid CSR `hstateen0h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen0h' for the privileged spec `1.10'
+.*Warning: invalid CSR `hstateen1h', needs rv32i extension
+.*Warning: invalid CSR `hstateen1h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen1h' for the privileged spec `1.10'
+.*Warning: invalid CSR `hstateen1h', needs rv32i extension
+.*Warning: invalid CSR `hstateen1h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen1h' for the privileged spec `1.10'
+.*Warning: invalid CSR `hstateen2h', needs rv32i extension
+.*Warning: invalid CSR `hstateen2h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen2h' for the privileged spec `1.10'
+.*Warning: invalid CSR `hstateen2h', needs rv32i extension
+.*Warning: invalid CSR `hstateen2h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen2h' for the privileged spec `1.10'
+.*Warning: invalid CSR `hstateen3h', needs rv32i extension
+.*Warning: invalid CSR `hstateen3h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen3h' for the privileged spec `1.10'
+.*Warning: invalid CSR `hstateen3h', needs rv32i extension
+.*Warning: invalid CSR `hstateen3h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen3h' for the privileged spec `1.10'
 .*Warning: invalid CSR `ubadaddr' for the privileged spec `1.10'
 .*Warning: invalid CSR `ubadaddr' for the privileged spec `1.10'
 .*Warning: invalid CSR `sbadaddr' for the privileged spec `1.10'
diff --git a/gas/testsuite/gas/riscv/csr-version-1p11.d b/gas/testsuite/gas/riscv/csr-version-1p11.d
index 0c9166555a4..6e85a7e2d4d 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p11.d
+++ b/gas/testsuite/gas/riscv/csr-version-1p11.d
@@ -601,6 +601,46 @@ Disassembly of section .text:
 [ 	]+[0-9a-f]+:[ 	]+24459073[ 	]+csrw[ 	]+0x244,a1
 [ 	]+[0-9a-f]+:[ 	]+28002573[ 	]+csrr[ 	]+a0,0x280
 [ 	]+[0-9a-f]+:[ 	]+28059073[ 	]+csrw[ 	]+0x280,a1
+[ 	]+[0-9a-f]+:[ 	]+30c02573[ 	]+csrr[ 	]+a0,mstateen0
+[ 	]+[0-9a-f]+:[ 	]+30c59073[ 	]+csrw[ 	]+mstateen0,a1
+[ 	]+[0-9a-f]+:[ 	]+30d02573[ 	]+csrr[ 	]+a0,mstateen1
+[ 	]+[0-9a-f]+:[ 	]+30d59073[ 	]+csrw[ 	]+mstateen1,a1
+[ 	]+[0-9a-f]+:[ 	]+30e02573[ 	]+csrr[ 	]+a0,mstateen2
+[ 	]+[0-9a-f]+:[ 	]+30e59073[ 	]+csrw[ 	]+mstateen2,a1
+[ 	]+[0-9a-f]+:[ 	]+30f02573[ 	]+csrr[ 	]+a0,mstateen3
+[ 	]+[0-9a-f]+:[ 	]+30f59073[ 	]+csrw[ 	]+mstateen3,a1
+[ 	]+[0-9a-f]+:[ 	]+10c02573[ 	]+csrr[ 	]+a0,sstateen0
+[ 	]+[0-9a-f]+:[ 	]+10c59073[ 	]+csrw[ 	]+sstateen0,a1
+[ 	]+[0-9a-f]+:[ 	]+10d02573[ 	]+csrr[ 	]+a0,sstateen1
+[ 	]+[0-9a-f]+:[ 	]+10d59073[ 	]+csrw[ 	]+sstateen1,a1
+[ 	]+[0-9a-f]+:[ 	]+10e02573[ 	]+csrr[ 	]+a0,sstateen2
+[ 	]+[0-9a-f]+:[ 	]+10e59073[ 	]+csrw[ 	]+sstateen2,a1
+[ 	]+[0-9a-f]+:[ 	]+10f02573[ 	]+csrr[ 	]+a0,sstateen3
+[ 	]+[0-9a-f]+:[ 	]+10f59073[ 	]+csrw[ 	]+sstateen3,a1
+[ 	]+[0-9a-f]+:[ 	]+60c02573[ 	]+csrr[ 	]+a0,0x60c
+[ 	]+[0-9a-f]+:[ 	]+60c59073[ 	]+csrw[ 	]+0x60c,a1
+[ 	]+[0-9a-f]+:[ 	]+60d02573[ 	]+csrr[ 	]+a0,0x60d
+[ 	]+[0-9a-f]+:[ 	]+60d59073[ 	]+csrw[ 	]+0x60d,a1
+[ 	]+[0-9a-f]+:[ 	]+60e02573[ 	]+csrr[ 	]+a0,0x60e
+[ 	]+[0-9a-f]+:[ 	]+60e59073[ 	]+csrw[ 	]+0x60e,a1
+[ 	]+[0-9a-f]+:[ 	]+60f02573[ 	]+csrr[ 	]+a0,0x60f
+[ 	]+[0-9a-f]+:[ 	]+60f59073[ 	]+csrw[ 	]+0x60f,a1
+[ 	]+[0-9a-f]+:[ 	]+31c02573[ 	]+csrr[ 	]+a0,mstateen0h
+[ 	]+[0-9a-f]+:[ 	]+31c59073[ 	]+csrw[ 	]+mstateen0h,a1
+[ 	]+[0-9a-f]+:[ 	]+31d02573[ 	]+csrr[ 	]+a0,mstateen1h
+[ 	]+[0-9a-f]+:[ 	]+31d59073[ 	]+csrw[ 	]+mstateen1h,a1
+[ 	]+[0-9a-f]+:[ 	]+31e02573[ 	]+csrr[ 	]+a0,mstateen2h
+[ 	]+[0-9a-f]+:[ 	]+31e59073[ 	]+csrw[ 	]+mstateen2h,a1
+[ 	]+[0-9a-f]+:[ 	]+31f02573[ 	]+csrr[ 	]+a0,mstateen3h
+[ 	]+[0-9a-f]+:[ 	]+31f59073[ 	]+csrw[ 	]+mstateen3h,a1
+[ 	]+[0-9a-f]+:[ 	]+61c02573[ 	]+csrr[ 	]+a0,0x61c
+[ 	]+[0-9a-f]+:[ 	]+61c59073[ 	]+csrw[ 	]+0x61c,a1
+[ 	]+[0-9a-f]+:[ 	]+61d02573[ 	]+csrr[ 	]+a0,0x61d
+[ 	]+[0-9a-f]+:[ 	]+61d59073[ 	]+csrw[ 	]+0x61d,a1
+[ 	]+[0-9a-f]+:[ 	]+61e02573[ 	]+csrr[ 	]+a0,0x61e
+[ 	]+[0-9a-f]+:[ 	]+61e59073[ 	]+csrw[ 	]+0x61e,a1
+[ 	]+[0-9a-f]+:[ 	]+61f02573[ 	]+csrr[ 	]+a0,0x61f
+[ 	]+[0-9a-f]+:[ 	]+61f59073[ 	]+csrw[ 	]+0x61f,a1
 [ 	]+[0-9a-f]+:[ 	]+04302573[ 	]+csrr[ 	]+a0,utval
 [ 	]+[0-9a-f]+:[ 	]+04359073[ 	]+csrw[ 	]+utval,a1
 [ 	]+[0-9a-f]+:[ 	]+14302573[ 	]+csrr[ 	]+a0,stval
diff --git a/gas/testsuite/gas/riscv/csr-version-1p11.l b/gas/testsuite/gas/riscv/csr-version-1p11.l
index 570efe25cb7..3a767cbcadf 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p11.l
+++ b/gas/testsuite/gas/riscv/csr-version-1p11.l
@@ -409,6 +409,78 @@
 .*Warning: invalid CSR `vsip' for the privileged spec `1.11'
 .*Warning: invalid CSR `vsatp' for the privileged spec `1.11'
 .*Warning: invalid CSR `vsatp' for the privileged spec `1.11'
+.*Warning: invalid CSR `mstateen0', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen0', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen1', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen1', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen2', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen2', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen3', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen3', needs `smstateen' extension
+.*Warning: invalid CSR `sstateen0', needs `smstateen' extension
+.*Warning: invalid CSR `sstateen0', needs `smstateen' extension
+.*Warning: invalid CSR `sstateen1', needs `smstateen' extension
+.*Warning: invalid CSR `sstateen1', needs `smstateen' extension
+.*Warning: invalid CSR `sstateen2', needs `smstateen' extension
+.*Warning: invalid CSR `sstateen2', needs `smstateen' extension
+.*Warning: invalid CSR `sstateen3', needs `smstateen' extension
+.*Warning: invalid CSR `sstateen3', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen0', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen0' for the privileged spec `1.11'
+.*Warning: invalid CSR `hstateen0', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen0' for the privileged spec `1.11'
+.*Warning: invalid CSR `hstateen1', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen1' for the privileged spec `1.11'
+.*Warning: invalid CSR `hstateen1', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen1' for the privileged spec `1.11'
+.*Warning: invalid CSR `hstateen2', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen2' for the privileged spec `1.11'
+.*Warning: invalid CSR `hstateen2', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen2' for the privileged spec `1.11'
+.*Warning: invalid CSR `hstateen3', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen3' for the privileged spec `1.11'
+.*Warning: invalid CSR `hstateen3', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen3' for the privileged spec `1.11'
+.*Warning: invalid CSR `mstateen0h', needs rv32i extension
+.*Warning: invalid CSR `mstateen0h', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen0h', needs rv32i extension
+.*Warning: invalid CSR `mstateen0h', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen1h', needs rv32i extension
+.*Warning: invalid CSR `mstateen1h', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen1h', needs rv32i extension
+.*Warning: invalid CSR `mstateen1h', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen2h', needs rv32i extension
+.*Warning: invalid CSR `mstateen2h', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen2h', needs rv32i extension
+.*Warning: invalid CSR `mstateen2h', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen3h', needs rv32i extension
+.*Warning: invalid CSR `mstateen3h', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen3h', needs rv32i extension
+.*Warning: invalid CSR `mstateen3h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen0h', needs rv32i extension
+.*Warning: invalid CSR `hstateen0h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen0h' for the privileged spec `1.11'
+.*Warning: invalid CSR `hstateen0h', needs rv32i extension
+.*Warning: invalid CSR `hstateen0h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen0h' for the privileged spec `1.11'
+.*Warning: invalid CSR `hstateen1h', needs rv32i extension
+.*Warning: invalid CSR `hstateen1h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen1h' for the privileged spec `1.11'
+.*Warning: invalid CSR `hstateen1h', needs rv32i extension
+.*Warning: invalid CSR `hstateen1h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen1h' for the privileged spec `1.11'
+.*Warning: invalid CSR `hstateen2h', needs rv32i extension
+.*Warning: invalid CSR `hstateen2h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen2h' for the privileged spec `1.11'
+.*Warning: invalid CSR `hstateen2h', needs rv32i extension
+.*Warning: invalid CSR `hstateen2h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen2h' for the privileged spec `1.11'
+.*Warning: invalid CSR `hstateen3h', needs rv32i extension
+.*Warning: invalid CSR `hstateen3h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen3h' for the privileged spec `1.11'
+.*Warning: invalid CSR `hstateen3h', needs rv32i extension
+.*Warning: invalid CSR `hstateen3h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen3h' for the privileged spec `1.11'
 .*Warning: invalid CSR `ubadaddr' for the privileged spec `1.11'
 .*Warning: invalid CSR `ubadaddr' for the privileged spec `1.11'
 .*Warning: invalid CSR `sbadaddr' for the privileged spec `1.11'
diff --git a/gas/testsuite/gas/riscv/csr-version-1p12.d b/gas/testsuite/gas/riscv/csr-version-1p12.d
index 3c27ca2de20..46ca519b31e 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p12.d
+++ b/gas/testsuite/gas/riscv/csr-version-1p12.d
@@ -601,6 +601,46 @@ Disassembly of section .text:
 [ 	]+[0-9a-f]+:[ 	]+24459073[ 	]+csrw[ 	]+vsip,a1
 [ 	]+[0-9a-f]+:[ 	]+28002573[ 	]+csrr[ 	]+a0,vsatp
 [ 	]+[0-9a-f]+:[ 	]+28059073[ 	]+csrw[ 	]+vsatp,a1
+[ 	]+[0-9a-f]+:[ 	]+30c02573[ 	]+csrr[ 	]+a0,mstateen0
+[ 	]+[0-9a-f]+:[ 	]+30c59073[ 	]+csrw[ 	]+mstateen0,a1
+[ 	]+[0-9a-f]+:[ 	]+30d02573[ 	]+csrr[ 	]+a0,mstateen1
+[ 	]+[0-9a-f]+:[ 	]+30d59073[ 	]+csrw[ 	]+mstateen1,a1
+[ 	]+[0-9a-f]+:[ 	]+30e02573[ 	]+csrr[ 	]+a0,mstateen2
+[ 	]+[0-9a-f]+:[ 	]+30e59073[ 	]+csrw[ 	]+mstateen2,a1
+[ 	]+[0-9a-f]+:[ 	]+30f02573[ 	]+csrr[ 	]+a0,mstateen3
+[ 	]+[0-9a-f]+:[ 	]+30f59073[ 	]+csrw[ 	]+mstateen3,a1
+[ 	]+[0-9a-f]+:[ 	]+10c02573[ 	]+csrr[ 	]+a0,sstateen0
+[ 	]+[0-9a-f]+:[ 	]+10c59073[ 	]+csrw[ 	]+sstateen0,a1
+[ 	]+[0-9a-f]+:[ 	]+10d02573[ 	]+csrr[ 	]+a0,sstateen1
+[ 	]+[0-9a-f]+:[ 	]+10d59073[ 	]+csrw[ 	]+sstateen1,a1
+[ 	]+[0-9a-f]+:[ 	]+10e02573[ 	]+csrr[ 	]+a0,sstateen2
+[ 	]+[0-9a-f]+:[ 	]+10e59073[ 	]+csrw[ 	]+sstateen2,a1
+[ 	]+[0-9a-f]+:[ 	]+10f02573[ 	]+csrr[ 	]+a0,sstateen3
+[ 	]+[0-9a-f]+:[ 	]+10f59073[ 	]+csrw[ 	]+sstateen3,a1
+[ 	]+[0-9a-f]+:[ 	]+60c02573[ 	]+csrr[ 	]+a0,hstateen0
+[ 	]+[0-9a-f]+:[ 	]+60c59073[ 	]+csrw[ 	]+hstateen0,a1
+[ 	]+[0-9a-f]+:[ 	]+60d02573[ 	]+csrr[ 	]+a0,hstateen1
+[ 	]+[0-9a-f]+:[ 	]+60d59073[ 	]+csrw[ 	]+hstateen1,a1
+[ 	]+[0-9a-f]+:[ 	]+60e02573[ 	]+csrr[ 	]+a0,hstateen2
+[ 	]+[0-9a-f]+:[ 	]+60e59073[ 	]+csrw[ 	]+hstateen2,a1
+[ 	]+[0-9a-f]+:[ 	]+60f02573[ 	]+csrr[ 	]+a0,hstateen3
+[ 	]+[0-9a-f]+:[ 	]+60f59073[ 	]+csrw[ 	]+hstateen3,a1
+[ 	]+[0-9a-f]+:[ 	]+31c02573[ 	]+csrr[ 	]+a0,mstateen0h
+[ 	]+[0-9a-f]+:[ 	]+31c59073[ 	]+csrw[ 	]+mstateen0h,a1
+[ 	]+[0-9a-f]+:[ 	]+31d02573[ 	]+csrr[ 	]+a0,mstateen1h
+[ 	]+[0-9a-f]+:[ 	]+31d59073[ 	]+csrw[ 	]+mstateen1h,a1
+[ 	]+[0-9a-f]+:[ 	]+31e02573[ 	]+csrr[ 	]+a0,mstateen2h
+[ 	]+[0-9a-f]+:[ 	]+31e59073[ 	]+csrw[ 	]+mstateen2h,a1
+[ 	]+[0-9a-f]+:[ 	]+31f02573[ 	]+csrr[ 	]+a0,mstateen3h
+[ 	]+[0-9a-f]+:[ 	]+31f59073[ 	]+csrw[ 	]+mstateen3h,a1
+[ 	]+[0-9a-f]+:[ 	]+61c02573[ 	]+csrr[ 	]+a0,hstateen0h
+[ 	]+[0-9a-f]+:[ 	]+61c59073[ 	]+csrw[ 	]+hstateen0h,a1
+[ 	]+[0-9a-f]+:[ 	]+61d02573[ 	]+csrr[ 	]+a0,hstateen1h
+[ 	]+[0-9a-f]+:[ 	]+61d59073[ 	]+csrw[ 	]+hstateen1h,a1
+[ 	]+[0-9a-f]+:[ 	]+61e02573[ 	]+csrr[ 	]+a0,hstateen2h
+[ 	]+[0-9a-f]+:[ 	]+61e59073[ 	]+csrw[ 	]+hstateen2h,a1
+[ 	]+[0-9a-f]+:[ 	]+61f02573[ 	]+csrr[ 	]+a0,hstateen3h
+[ 	]+[0-9a-f]+:[ 	]+61f59073[ 	]+csrw[ 	]+hstateen3h,a1
 [ 	]+[0-9a-f]+:[ 	]+04302573[ 	]+csrr[ 	]+a0,0x43
 [ 	]+[0-9a-f]+:[ 	]+04359073[ 	]+csrw[ 	]+0x43,a1
 [ 	]+[0-9a-f]+:[ 	]+14302573[ 	]+csrr[ 	]+a0,stval
diff --git a/gas/testsuite/gas/riscv/csr-version-1p12.l b/gas/testsuite/gas/riscv/csr-version-1p12.l
index 03d193cd50e..b23a705f88a 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p12.l
+++ b/gas/testsuite/gas/riscv/csr-version-1p12.l
@@ -221,6 +221,62 @@
 .*Warning: invalid CSR `henvcfgh', needs rv32i extension
 .*Warning: invalid CSR `htimedeltah', needs rv32i extension
 .*Warning: invalid CSR `htimedeltah', needs rv32i extension
+.*Warning: invalid CSR `mstateen0', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen0', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen1', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen1', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen2', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen2', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen3', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen3', needs `smstateen' extension
+.*Warning: invalid CSR `sstateen0', needs `smstateen' extension
+.*Warning: invalid CSR `sstateen0', needs `smstateen' extension
+.*Warning: invalid CSR `sstateen1', needs `smstateen' extension
+.*Warning: invalid CSR `sstateen1', needs `smstateen' extension
+.*Warning: invalid CSR `sstateen2', needs `smstateen' extension
+.*Warning: invalid CSR `sstateen2', needs `smstateen' extension
+.*Warning: invalid CSR `sstateen3', needs `smstateen' extension
+.*Warning: invalid CSR `sstateen3', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen0', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen0', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen1', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen1', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen2', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen2', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen3', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen3', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen0h', needs rv32i extension
+.*Warning: invalid CSR `mstateen0h', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen0h', needs rv32i extension
+.*Warning: invalid CSR `mstateen0h', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen1h', needs rv32i extension
+.*Warning: invalid CSR `mstateen1h', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen1h', needs rv32i extension
+.*Warning: invalid CSR `mstateen1h', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen2h', needs rv32i extension
+.*Warning: invalid CSR `mstateen2h', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen2h', needs rv32i extension
+.*Warning: invalid CSR `mstateen2h', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen3h', needs rv32i extension
+.*Warning: invalid CSR `mstateen3h', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen3h', needs rv32i extension
+.*Warning: invalid CSR `mstateen3h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen0h', needs rv32i extension
+.*Warning: invalid CSR `hstateen0h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen0h', needs rv32i extension
+.*Warning: invalid CSR `hstateen0h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen1h', needs rv32i extension
+.*Warning: invalid CSR `hstateen1h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen1h', needs rv32i extension
+.*Warning: invalid CSR `hstateen1h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen2h', needs rv32i extension
+.*Warning: invalid CSR `hstateen2h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen2h', needs rv32i extension
+.*Warning: invalid CSR `hstateen2h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen3h', needs rv32i extension
+.*Warning: invalid CSR `hstateen3h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen3h', needs rv32i extension
+.*Warning: invalid CSR `hstateen3h', needs `smstateen' extension
 .*Warning: invalid CSR `ubadaddr' for the privileged spec `1.12'
 .*Warning: invalid CSR `ubadaddr' for the privileged spec `1.12'
 .*Warning: invalid CSR `sbadaddr' for the privileged spec `1.12'
diff --git a/gas/testsuite/gas/riscv/csr-version-1p9p1.d b/gas/testsuite/gas/riscv/csr-version-1p9p1.d
index d0841df5aba..a593182b168 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p9p1.d
+++ b/gas/testsuite/gas/riscv/csr-version-1p9p1.d
@@ -601,6 +601,46 @@ Disassembly of section .text:
 [ 	]+[0-9a-f]+:[ 	]+24459073[ 	]+csrw[ 	]+0x244,a1
 [ 	]+[0-9a-f]+:[ 	]+28002573[ 	]+csrr[ 	]+a0,0x280
 [ 	]+[0-9a-f]+:[ 	]+28059073[ 	]+csrw[ 	]+0x280,a1
+[ 	]+[0-9a-f]+:[ 	]+30c02573[ 	]+csrr[ 	]+a0,mstateen0
+[ 	]+[0-9a-f]+:[ 	]+30c59073[ 	]+csrw[ 	]+mstateen0,a1
+[ 	]+[0-9a-f]+:[ 	]+30d02573[ 	]+csrr[ 	]+a0,mstateen1
+[ 	]+[0-9a-f]+:[ 	]+30d59073[ 	]+csrw[ 	]+mstateen1,a1
+[ 	]+[0-9a-f]+:[ 	]+30e02573[ 	]+csrr[ 	]+a0,mstateen2
+[ 	]+[0-9a-f]+:[ 	]+30e59073[ 	]+csrw[ 	]+mstateen2,a1
+[ 	]+[0-9a-f]+:[ 	]+30f02573[ 	]+csrr[ 	]+a0,mstateen3
+[ 	]+[0-9a-f]+:[ 	]+30f59073[ 	]+csrw[ 	]+mstateen3,a1
+[ 	]+[0-9a-f]+:[ 	]+10c02573[ 	]+csrr[ 	]+a0,sstateen0
+[ 	]+[0-9a-f]+:[ 	]+10c59073[ 	]+csrw[ 	]+sstateen0,a1
+[ 	]+[0-9a-f]+:[ 	]+10d02573[ 	]+csrr[ 	]+a0,sstateen1
+[ 	]+[0-9a-f]+:[ 	]+10d59073[ 	]+csrw[ 	]+sstateen1,a1
+[ 	]+[0-9a-f]+:[ 	]+10e02573[ 	]+csrr[ 	]+a0,sstateen2
+[ 	]+[0-9a-f]+:[ 	]+10e59073[ 	]+csrw[ 	]+sstateen2,a1
+[ 	]+[0-9a-f]+:[ 	]+10f02573[ 	]+csrr[ 	]+a0,sstateen3
+[ 	]+[0-9a-f]+:[ 	]+10f59073[ 	]+csrw[ 	]+sstateen3,a1
+[ 	]+[0-9a-f]+:[ 	]+60c02573[ 	]+csrr[ 	]+a0,0x60c
+[ 	]+[0-9a-f]+:[ 	]+60c59073[ 	]+csrw[ 	]+0x60c,a1
+[ 	]+[0-9a-f]+:[ 	]+60d02573[ 	]+csrr[ 	]+a0,0x60d
+[ 	]+[0-9a-f]+:[ 	]+60d59073[ 	]+csrw[ 	]+0x60d,a1
+[ 	]+[0-9a-f]+:[ 	]+60e02573[ 	]+csrr[ 	]+a0,0x60e
+[ 	]+[0-9a-f]+:[ 	]+60e59073[ 	]+csrw[ 	]+0x60e,a1
+[ 	]+[0-9a-f]+:[ 	]+60f02573[ 	]+csrr[ 	]+a0,0x60f
+[ 	]+[0-9a-f]+:[ 	]+60f59073[ 	]+csrw[ 	]+0x60f,a1
+[ 	]+[0-9a-f]+:[ 	]+31c02573[ 	]+csrr[ 	]+a0,mstateen0h
+[ 	]+[0-9a-f]+:[ 	]+31c59073[ 	]+csrw[ 	]+mstateen0h,a1
+[ 	]+[0-9a-f]+:[ 	]+31d02573[ 	]+csrr[ 	]+a0,mstateen1h
+[ 	]+[0-9a-f]+:[ 	]+31d59073[ 	]+csrw[ 	]+mstateen1h,a1
+[ 	]+[0-9a-f]+:[ 	]+31e02573[ 	]+csrr[ 	]+a0,mstateen2h
+[ 	]+[0-9a-f]+:[ 	]+31e59073[ 	]+csrw[ 	]+mstateen2h,a1
+[ 	]+[0-9a-f]+:[ 	]+31f02573[ 	]+csrr[ 	]+a0,mstateen3h
+[ 	]+[0-9a-f]+:[ 	]+31f59073[ 	]+csrw[ 	]+mstateen3h,a1
+[ 	]+[0-9a-f]+:[ 	]+61c02573[ 	]+csrr[ 	]+a0,0x61c
+[ 	]+[0-9a-f]+:[ 	]+61c59073[ 	]+csrw[ 	]+0x61c,a1
+[ 	]+[0-9a-f]+:[ 	]+61d02573[ 	]+csrr[ 	]+a0,0x61d
+[ 	]+[0-9a-f]+:[ 	]+61d59073[ 	]+csrw[ 	]+0x61d,a1
+[ 	]+[0-9a-f]+:[ 	]+61e02573[ 	]+csrr[ 	]+a0,0x61e
+[ 	]+[0-9a-f]+:[ 	]+61e59073[ 	]+csrw[ 	]+0x61e,a1
+[ 	]+[0-9a-f]+:[ 	]+61f02573[ 	]+csrr[ 	]+a0,0x61f
+[ 	]+[0-9a-f]+:[ 	]+61f59073[ 	]+csrw[ 	]+0x61f,a1
 [ 	]+[0-9a-f]+:[ 	]+04302573[ 	]+csrr[ 	]+a0,ubadaddr
 [ 	]+[0-9a-f]+:[ 	]+04359073[ 	]+csrw[ 	]+ubadaddr,a1
 [ 	]+[0-9a-f]+:[ 	]+14302573[ 	]+csrr[ 	]+a0,sbadaddr
diff --git a/gas/testsuite/gas/riscv/csr-version-1p9p1.l b/gas/testsuite/gas/riscv/csr-version-1p9p1.l
index 340216e5ca7..75eda35d2ce 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p9p1.l
+++ b/gas/testsuite/gas/riscv/csr-version-1p9p1.l
@@ -461,6 +461,78 @@
 .*Warning: invalid CSR `vsip' for the privileged spec `1.9.1'
 .*Warning: invalid CSR `vsatp' for the privileged spec `1.9.1'
 .*Warning: invalid CSR `vsatp' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mstateen0', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen0', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen1', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen1', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen2', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen2', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen3', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen3', needs `smstateen' extension
+.*Warning: invalid CSR `sstateen0', needs `smstateen' extension
+.*Warning: invalid CSR `sstateen0', needs `smstateen' extension
+.*Warning: invalid CSR `sstateen1', needs `smstateen' extension
+.*Warning: invalid CSR `sstateen1', needs `smstateen' extension
+.*Warning: invalid CSR `sstateen2', needs `smstateen' extension
+.*Warning: invalid CSR `sstateen2', needs `smstateen' extension
+.*Warning: invalid CSR `sstateen3', needs `smstateen' extension
+.*Warning: invalid CSR `sstateen3', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen0', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen0' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `hstateen0', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen0' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `hstateen1', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen1' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `hstateen1', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen1' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `hstateen2', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen2' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `hstateen2', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen2' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `hstateen3', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen3' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `hstateen3', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen3' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `mstateen0h', needs rv32i extension
+.*Warning: invalid CSR `mstateen0h', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen0h', needs rv32i extension
+.*Warning: invalid CSR `mstateen0h', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen1h', needs rv32i extension
+.*Warning: invalid CSR `mstateen1h', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen1h', needs rv32i extension
+.*Warning: invalid CSR `mstateen1h', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen2h', needs rv32i extension
+.*Warning: invalid CSR `mstateen2h', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen2h', needs rv32i extension
+.*Warning: invalid CSR `mstateen2h', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen3h', needs rv32i extension
+.*Warning: invalid CSR `mstateen3h', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen3h', needs rv32i extension
+.*Warning: invalid CSR `mstateen3h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen0h', needs rv32i extension
+.*Warning: invalid CSR `hstateen0h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen0h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `hstateen0h', needs rv32i extension
+.*Warning: invalid CSR `hstateen0h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen0h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `hstateen1h', needs rv32i extension
+.*Warning: invalid CSR `hstateen1h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen1h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `hstateen1h', needs rv32i extension
+.*Warning: invalid CSR `hstateen1h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen1h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `hstateen2h', needs rv32i extension
+.*Warning: invalid CSR `hstateen2h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen2h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `hstateen2h', needs rv32i extension
+.*Warning: invalid CSR `hstateen2h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen2h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `hstateen3h', needs rv32i extension
+.*Warning: invalid CSR `hstateen3h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen3h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `hstateen3h', needs rv32i extension
+.*Warning: invalid CSR `hstateen3h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen3h' for the privileged spec `1.9.1'
 .*Warning: invalid CSR `utval' for the privileged spec `1.9.1'
 .*Warning: invalid CSR `utval' for the privileged spec `1.9.1'
 .*Warning: invalid CSR `fflags', needs `f' extension
diff --git a/gas/testsuite/gas/riscv/csr.s b/gas/testsuite/gas/riscv/csr.s
index 0d0ec712c15..1a4a2be2c0f 100644
--- a/gas/testsuite/gas/riscv/csr.s
+++ b/gas/testsuite/gas/riscv/csr.s
@@ -337,6 +337,28 @@
 	csr vsip
 	csr vsatp
 
+	# Smstateen extension
+	csr mstateen0
+	csr mstateen1
+	csr mstateen2
+	csr mstateen3
+	csr sstateen0
+	csr sstateen1
+	csr sstateen2
+	csr sstateen3
+	csr hstateen0
+	csr hstateen1
+	csr hstateen2
+	csr hstateen3
+	csr mstateen0h
+	csr mstateen1h
+	csr mstateen2h
+	csr mstateen3h
+	csr hstateen0h
+	csr hstateen1h
+	csr hstateen2h
+	csr hstateen3h
+
 	# Supported in previous priv spec, but dropped now
 
 	csr ubadaddr		# 0x043 in 1.9.1, but the value is utval since 1.10
diff --git a/include/opcode/riscv-opc.h b/include/opcode/riscv-opc.h
index 2e867965e12..b731f353766 100644
--- a/include/opcode/riscv-opc.h
+++ b/include/opcode/riscv-opc.h
@@ -2432,6 +2432,27 @@
 #define CSR_UIP 0x44
 #define CSR_SEDELEG 0x102
 #define CSR_SIDELEG 0x103
+/* Smstateen extension */
+#define CSR_MSTATEEN0 0x30c
+#define CSR_MSTATEEN1 0x30d
+#define CSR_MSTATEEN2 0x30e
+#define CSR_MSTATEEN3 0x30f
+#define CSR_SSTATEEN0 0x10c
+#define CSR_SSTATEEN1 0x10d
+#define CSR_SSTATEEN2 0x10e
+#define CSR_SSTATEEN3 0x10f
+#define CSR_HSTATEEN0 0x60c
+#define CSR_HSTATEEN1 0x60d
+#define CSR_HSTATEEN2 0x60e
+#define CSR_HSTATEEN3 0x60f
+#define CSR_MSTATEEN0H 0x31c
+#define CSR_MSTATEEN1H 0x31d
+#define CSR_MSTATEEN2H 0x31e
+#define CSR_MSTATEEN3H 0x31f
+#define CSR_HSTATEEN0H 0x61c
+#define CSR_HSTATEEN1H 0x61d
+#define CSR_HSTATEEN2H 0x61e
+#define CSR_HSTATEEN3H 0x61f
 /* Unprivileged Floating-Point CSR addresses.  */
 #define CSR_FFLAGS 0x1
 #define CSR_FRM 0x2
@@ -3097,6 +3118,27 @@ DECLARE_CSR(vscause, CSR_VSCAUSE, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_C
 DECLARE_CSR(vstval, CSR_VSTVAL, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
 DECLARE_CSR(vsip, CSR_VSIP, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
 DECLARE_CSR(vsatp, CSR_VSATP, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
+/* Smstateen extension */
+DECLARE_CSR(mstateen0, CSR_MSTATEEN0, CSR_CLASS_SMSTATEEN, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mstateen1, CSR_MSTATEEN1, CSR_CLASS_SMSTATEEN, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mstateen2, CSR_MSTATEEN2, CSR_CLASS_SMSTATEEN, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mstateen3, CSR_MSTATEEN3, CSR_CLASS_SMSTATEEN, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(sstateen0, CSR_SSTATEEN0, CSR_CLASS_SMSTATEEN, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(sstateen1, CSR_SSTATEEN1, CSR_CLASS_SMSTATEEN, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(sstateen2, CSR_SSTATEEN2, CSR_CLASS_SMSTATEEN, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(sstateen3, CSR_SSTATEEN3, CSR_CLASS_SMSTATEEN, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(hstateen0, CSR_HSTATEEN0, CSR_CLASS_SMSTATEEN, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(hstateen1, CSR_HSTATEEN1, CSR_CLASS_SMSTATEEN, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(hstateen2, CSR_HSTATEEN2, CSR_CLASS_SMSTATEEN, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(hstateen3, CSR_HSTATEEN3, CSR_CLASS_SMSTATEEN, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mstateen0h, CSR_MSTATEEN0H, CSR_CLASS_SMSTATEEN_32, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mstateen1h, CSR_MSTATEEN1H, CSR_CLASS_SMSTATEEN_32, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mstateen2h, CSR_MSTATEEN2H, CSR_CLASS_SMSTATEEN_32, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mstateen3h, CSR_MSTATEEN3H, CSR_CLASS_SMSTATEEN_32, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(hstateen0h, CSR_HSTATEEN0H, CSR_CLASS_SMSTATEEN_32, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(hstateen1h, CSR_HSTATEEN1H, CSR_CLASS_SMSTATEEN_32, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(hstateen2h, CSR_HSTATEEN2H, CSR_CLASS_SMSTATEEN_32, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(hstateen3h, CSR_HSTATEEN3H, CSR_CLASS_SMSTATEEN_32, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
 /* Dropped CSRs.  */
 DECLARE_CSR(mbase, CSR_MBASE, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_1P10)
 DECLARE_CSR(mbound, CSR_MBOUND, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_1P10)
-- 
2.34.1


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

* [PATCH v2 2/3] RISC-V: Add 'Sscofpmf' extension with its CSRs
  2022-05-24  9:35   ` [PATCH v2 0/3] RISC-V: Add CSRs for several supervisor extensions Tsukasa OI
  2022-05-24  9:35     ` [PATCH v2 1/3] RISC-V: Add 'Smstateen' extension and its CSRs Tsukasa OI
@ 2022-05-24  9:35     ` Tsukasa OI
  2022-05-24  9:35     ` [PATCH v2 3/3] RISC-V: Add 'Sstc' extension and " Tsukasa OI
  2022-06-24  2:51     ` [PATCH v3 0/4] RISC-V: Add CSRs for several supervisor extensions Tsukasa OI
  3 siblings, 0 replies; 32+ messages in thread
From: Tsukasa OI @ 2022-05-24  9:35 UTC (permalink / raw)
  To: Tsukasa OI, Kito Cheng, Nelson Chu, Palmer Dabbelt; +Cc: binutils

This commit adds Count Overflow and Mode-Based Filtering Extension
(Sscofpmf) and its CSRs.

bfd/ChangeLog:

	* elfxx-riscv.c (riscv_supported_std_s_ext): Add 'Sscofpmf'
	extension to valid 'S' extension list.

gas/ChangeLog:

	* config/tc-riscv.c (enum riscv_csr_class): Add CSR classes for
	'Sscofpmf' extension. (riscv_csr_address): Add handling for new
	CSR classes.
	* testsuite/gas/riscv/csr-dw-regnums.s: Add new CSRs.
	* testsuite/gas/riscv/csr-dw-regnums.d: 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_SCOUNTOVF, CSR_MHPMEVENT3H,
	CSR_MHPMEVENT4H, CSR_MHPMEVENT5H, CSR_MHPMEVENT6H,
	CSR_MHPMEVENT7H, CSR_MHPMEVENT8H, CSR_MHPMEVENT9H,
	CSR_MHPMEVENT10H, CSR_MHPMEVENT11H, CSR_MHPMEVENT12H,
	CSR_MHPMEVENT13H, CSR_MHPMEVENT14H, CSR_MHPMEVENT15H,
	CSR_MHPMEVENT16H, CSR_MHPMEVENT17H, CSR_MHPMEVENT18H,
	CSR_MHPMEVENT19H, CSR_MHPMEVENT20H, CSR_MHPMEVENT21H,
	CSR_MHPMEVENT22H, CSR_MHPMEVENT23H, CSR_MHPMEVENT24H,
	CSR_MHPMEVENT25H, CSR_MHPMEVENT26H, CSR_MHPMEVENT27H,
	CSR_MHPMEVENT28H, CSR_MHPMEVENT29H, CSR_MHPMEVENT30H,
	CSR_MHPMEVENT31H): New CSR macros.
---
 bfd/elfxx-riscv.c                           |   1 +
 gas/config/tc-riscv.c                       |   8 ++
 gas/testsuite/gas/riscv/csr-dw-regnums.d    |  30 +++++
 gas/testsuite/gas/riscv/csr-dw-regnums.s    |  31 +++++
 gas/testsuite/gas/riscv/csr-version-1p10.d  |  60 ++++++++++
 gas/testsuite/gas/riscv/csr-version-1p10.l  | 119 ++++++++++++++++++++
 gas/testsuite/gas/riscv/csr-version-1p11.d  |  60 ++++++++++
 gas/testsuite/gas/riscv/csr-version-1p11.l  | 119 ++++++++++++++++++++
 gas/testsuite/gas/riscv/csr-version-1p12.d  |  60 ++++++++++
 gas/testsuite/gas/riscv/csr-version-1p12.l  | 119 ++++++++++++++++++++
 gas/testsuite/gas/riscv/csr-version-1p9p1.d |  60 ++++++++++
 gas/testsuite/gas/riscv/csr-version-1p9p1.l | 119 ++++++++++++++++++++
 gas/testsuite/gas/riscv/csr.s               |  32 ++++++
 include/opcode/riscv-opc.h                  |  62 ++++++++++
 14 files changed, 880 insertions(+)

diff --git a/bfd/elfxx-riscv.c b/bfd/elfxx-riscv.c
index 39c7f04efdf..32805e5ee58 100644
--- a/bfd/elfxx-riscv.c
+++ b/bfd/elfxx-riscv.c
@@ -1228,6 +1228,7 @@ static struct riscv_supported_ext riscv_supported_std_z_ext[] =
 static struct riscv_supported_ext riscv_supported_std_s_ext[] =
 {
   {"smstateen",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
+  {"sscofpmf",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
   {"svinval",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
   {NULL, 0, 0, 0, 0}
 };
diff --git a/gas/config/tc-riscv.c b/gas/config/tc-riscv.c
index 7e8db81c03f..0f664eb56c5 100644
--- a/gas/config/tc-riscv.c
+++ b/gas/config/tc-riscv.c
@@ -67,6 +67,8 @@ enum riscv_csr_class
   CSR_CLASS_V,		/* rvv only */
   CSR_CLASS_SMSTATEEN,		/* Smstateen only */
   CSR_CLASS_SMSTATEEN_32,	/* Smstateen RV32 only */
+  CSR_CLASS_SSCOFPMF,		/* Sscofpmf only */
+  CSR_CLASS_SSCOFPMF_32,	/* Sscofpmf RV32 only */
   CSR_CLASS_DEBUG	/* debug CSR */
 };
 
@@ -927,6 +929,12 @@ riscv_csr_address (const char *csr_name,
       need_check_version = true;
       extension = "smstateen";
       break;
+    case CSR_CLASS_SSCOFPMF_32:
+      rv32_only = (xlen == 32);
+      /* Fall through.  */
+    case CSR_CLASS_SSCOFPMF:
+      extension = "sscofpmf";
+      break;
     case CSR_CLASS_DEBUG:
       break;
     default:
diff --git a/gas/testsuite/gas/riscv/csr-dw-regnums.d b/gas/testsuite/gas/riscv/csr-dw-regnums.d
index 0c9ec6e4035..2f353293faa 100644
--- a/gas/testsuite/gas/riscv/csr-dw-regnums.d
+++ b/gas/testsuite/gas/riscv/csr-dw-regnums.d
@@ -333,6 +333,36 @@ Contents of the .* section:
   DW_CFA_offset_extended_sf: r5661 \(hstateen1h\) at cfa\+6260
   DW_CFA_offset_extended_sf: r5662 \(hstateen2h\) at cfa\+6264
   DW_CFA_offset_extended_sf: r5663 \(hstateen3h\) at cfa\+6268
+  DW_CFA_offset_extended_sf: r7584 \(scountovf\) at cfa\+13952
+  DW_CFA_offset_extended_sf: r5923 \(mhpmevent3h\) at cfa\+7308
+  DW_CFA_offset_extended_sf: r5924 \(mhpmevent4h\) at cfa\+7312
+  DW_CFA_offset_extended_sf: r5925 \(mhpmevent5h\) at cfa\+7316
+  DW_CFA_offset_extended_sf: r5926 \(mhpmevent6h\) at cfa\+7320
+  DW_CFA_offset_extended_sf: r5927 \(mhpmevent7h\) at cfa\+7324
+  DW_CFA_offset_extended_sf: r5928 \(mhpmevent8h\) at cfa\+7328
+  DW_CFA_offset_extended_sf: r5929 \(mhpmevent9h\) at cfa\+7332
+  DW_CFA_offset_extended_sf: r5930 \(mhpmevent10h\) at cfa\+7336
+  DW_CFA_offset_extended_sf: r5931 \(mhpmevent11h\) at cfa\+7340
+  DW_CFA_offset_extended_sf: r5932 \(mhpmevent12h\) at cfa\+7344
+  DW_CFA_offset_extended_sf: r5933 \(mhpmevent13h\) at cfa\+7348
+  DW_CFA_offset_extended_sf: r5934 \(mhpmevent14h\) at cfa\+7352
+  DW_CFA_offset_extended_sf: r5935 \(mhpmevent15h\) at cfa\+7356
+  DW_CFA_offset_extended_sf: r5936 \(mhpmevent16h\) at cfa\+7360
+  DW_CFA_offset_extended_sf: r5937 \(mhpmevent17h\) at cfa\+7364
+  DW_CFA_offset_extended_sf: r5938 \(mhpmevent18h\) at cfa\+7368
+  DW_CFA_offset_extended_sf: r5939 \(mhpmevent19h\) at cfa\+7372
+  DW_CFA_offset_extended_sf: r5940 \(mhpmevent20h\) at cfa\+7376
+  DW_CFA_offset_extended_sf: r5941 \(mhpmevent21h\) at cfa\+7380
+  DW_CFA_offset_extended_sf: r5942 \(mhpmevent22h\) at cfa\+7384
+  DW_CFA_offset_extended_sf: r5943 \(mhpmevent23h\) at cfa\+7388
+  DW_CFA_offset_extended_sf: r5944 \(mhpmevent24h\) at cfa\+7392
+  DW_CFA_offset_extended_sf: r5945 \(mhpmevent25h\) at cfa\+7396
+  DW_CFA_offset_extended_sf: r5946 \(mhpmevent26h\) at cfa\+7400
+  DW_CFA_offset_extended_sf: r5947 \(mhpmevent27h\) at cfa\+7404
+  DW_CFA_offset_extended_sf: r5948 \(mhpmevent28h\) at cfa\+7408
+  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: r4163 \(utval\) at cfa\+268
   DW_CFA_offset_extended_sf: r4419 \(stval\) at cfa\+1292
   DW_CFA_offset_extended_sf: r4480 \(satp\) at cfa\+1536
diff --git a/gas/testsuite/gas/riscv/csr-dw-regnums.s b/gas/testsuite/gas/riscv/csr-dw-regnums.s
index 2afadac49f6..caac321c6e2 100644
--- a/gas/testsuite/gas/riscv/csr-dw-regnums.s
+++ b/gas/testsuite/gas/riscv/csr-dw-regnums.s
@@ -328,6 +328,37 @@ _start:
 	.cfi_offset hstateen1h, 6260
 	.cfi_offset hstateen2h, 6264
 	.cfi_offset hstateen3h, 6268
+	# Sscofpmf extension
+	.cfi_offset scountovf, 13952
+	.cfi_offset mhpmevent3h, 7308
+	.cfi_offset mhpmevent4h, 7312
+	.cfi_offset mhpmevent5h, 7316
+	.cfi_offset mhpmevent6h, 7320
+	.cfi_offset mhpmevent7h, 7324
+	.cfi_offset mhpmevent8h, 7328
+	.cfi_offset mhpmevent9h, 7332
+	.cfi_offset mhpmevent10h, 7336
+	.cfi_offset mhpmevent11h, 7340
+	.cfi_offset mhpmevent12h, 7344
+	.cfi_offset mhpmevent13h, 7348
+	.cfi_offset mhpmevent14h, 7352
+	.cfi_offset mhpmevent15h, 7356
+	.cfi_offset mhpmevent16h, 7360
+	.cfi_offset mhpmevent17h, 7364
+	.cfi_offset mhpmevent18h, 7368
+	.cfi_offset mhpmevent19h, 7372
+	.cfi_offset mhpmevent20h, 7376
+	.cfi_offset mhpmevent21h, 7380
+	.cfi_offset mhpmevent22h, 7384
+	.cfi_offset mhpmevent23h, 7388
+	.cfi_offset mhpmevent24h, 7392
+	.cfi_offset mhpmevent25h, 7396
+	.cfi_offset mhpmevent26h, 7400
+	.cfi_offset mhpmevent27h, 7404
+	.cfi_offset mhpmevent28h, 7408
+	.cfi_offset mhpmevent29h, 7412
+	.cfi_offset mhpmevent30h, 7416
+	.cfi_offset mhpmevent31h, 7420
 	# dropped
 	.cfi_offset ubadaddr, 268	# aliases
 	.cfi_offset sbadaddr, 1292	# aliases
diff --git a/gas/testsuite/gas/riscv/csr-version-1p10.d b/gas/testsuite/gas/riscv/csr-version-1p10.d
index 7f9f5497428..17fa228a2b8 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p10.d
+++ b/gas/testsuite/gas/riscv/csr-version-1p10.d
@@ -641,6 +641,66 @@ Disassembly of section .text:
 [ 	]+[0-9a-f]+:[ 	]+61e59073[ 	]+csrw[ 	]+0x61e,a1
 [ 	]+[0-9a-f]+:[ 	]+61f02573[ 	]+csrr[ 	]+a0,0x61f
 [ 	]+[0-9a-f]+:[ 	]+61f59073[ 	]+csrw[ 	]+0x61f,a1
+[ 	]+[0-9a-f]+:[ 	]+da002573[ 	]+csrr[ 	]+a0,scountovf
+[ 	]+[0-9a-f]+:[ 	]+da059073[ 	]+csrw[ 	]+scountovf,a1
+[ 	]+[0-9a-f]+:[ 	]+72302573[ 	]+csrr[ 	]+a0,mhpmevent3h
+[ 	]+[0-9a-f]+:[ 	]+72359073[ 	]+csrw[ 	]+mhpmevent3h,a1
+[ 	]+[0-9a-f]+:[ 	]+72402573[ 	]+csrr[ 	]+a0,mhpmevent4h
+[ 	]+[0-9a-f]+:[ 	]+72459073[ 	]+csrw[ 	]+mhpmevent4h,a1
+[ 	]+[0-9a-f]+:[ 	]+72502573[ 	]+csrr[ 	]+a0,mhpmevent5h
+[ 	]+[0-9a-f]+:[ 	]+72559073[ 	]+csrw[ 	]+mhpmevent5h,a1
+[ 	]+[0-9a-f]+:[ 	]+72602573[ 	]+csrr[ 	]+a0,mhpmevent6h
+[ 	]+[0-9a-f]+:[ 	]+72659073[ 	]+csrw[ 	]+mhpmevent6h,a1
+[ 	]+[0-9a-f]+:[ 	]+72702573[ 	]+csrr[ 	]+a0,mhpmevent7h
+[ 	]+[0-9a-f]+:[ 	]+72759073[ 	]+csrw[ 	]+mhpmevent7h,a1
+[ 	]+[0-9a-f]+:[ 	]+72802573[ 	]+csrr[ 	]+a0,mhpmevent8h
+[ 	]+[0-9a-f]+:[ 	]+72859073[ 	]+csrw[ 	]+mhpmevent8h,a1
+[ 	]+[0-9a-f]+:[ 	]+72902573[ 	]+csrr[ 	]+a0,mhpmevent9h
+[ 	]+[0-9a-f]+:[ 	]+72959073[ 	]+csrw[ 	]+mhpmevent9h,a1
+[ 	]+[0-9a-f]+:[ 	]+72a02573[ 	]+csrr[ 	]+a0,mhpmevent10h
+[ 	]+[0-9a-f]+:[ 	]+72a59073[ 	]+csrw[ 	]+mhpmevent10h,a1
+[ 	]+[0-9a-f]+:[ 	]+72b02573[ 	]+csrr[ 	]+a0,mhpmevent11h
+[ 	]+[0-9a-f]+:[ 	]+72b59073[ 	]+csrw[ 	]+mhpmevent11h,a1
+[ 	]+[0-9a-f]+:[ 	]+72c02573[ 	]+csrr[ 	]+a0,mhpmevent12h
+[ 	]+[0-9a-f]+:[ 	]+72c59073[ 	]+csrw[ 	]+mhpmevent12h,a1
+[ 	]+[0-9a-f]+:[ 	]+72d02573[ 	]+csrr[ 	]+a0,mhpmevent13h
+[ 	]+[0-9a-f]+:[ 	]+72d59073[ 	]+csrw[ 	]+mhpmevent13h,a1
+[ 	]+[0-9a-f]+:[ 	]+72e02573[ 	]+csrr[ 	]+a0,mhpmevent14h
+[ 	]+[0-9a-f]+:[ 	]+72e59073[ 	]+csrw[ 	]+mhpmevent14h,a1
+[ 	]+[0-9a-f]+:[ 	]+72f02573[ 	]+csrr[ 	]+a0,mhpmevent15h
+[ 	]+[0-9a-f]+:[ 	]+72f59073[ 	]+csrw[ 	]+mhpmevent15h,a1
+[ 	]+[0-9a-f]+:[ 	]+73002573[ 	]+csrr[ 	]+a0,mhpmevent16h
+[ 	]+[0-9a-f]+:[ 	]+73059073[ 	]+csrw[ 	]+mhpmevent16h,a1
+[ 	]+[0-9a-f]+:[ 	]+73102573[ 	]+csrr[ 	]+a0,mhpmevent17h
+[ 	]+[0-9a-f]+:[ 	]+73159073[ 	]+csrw[ 	]+mhpmevent17h,a1
+[ 	]+[0-9a-f]+:[ 	]+73202573[ 	]+csrr[ 	]+a0,mhpmevent18h
+[ 	]+[0-9a-f]+:[ 	]+73259073[ 	]+csrw[ 	]+mhpmevent18h,a1
+[ 	]+[0-9a-f]+:[ 	]+73302573[ 	]+csrr[ 	]+a0,mhpmevent19h
+[ 	]+[0-9a-f]+:[ 	]+73359073[ 	]+csrw[ 	]+mhpmevent19h,a1
+[ 	]+[0-9a-f]+:[ 	]+73402573[ 	]+csrr[ 	]+a0,mhpmevent20h
+[ 	]+[0-9a-f]+:[ 	]+73459073[ 	]+csrw[ 	]+mhpmevent20h,a1
+[ 	]+[0-9a-f]+:[ 	]+73502573[ 	]+csrr[ 	]+a0,mhpmevent21h
+[ 	]+[0-9a-f]+:[ 	]+73559073[ 	]+csrw[ 	]+mhpmevent21h,a1
+[ 	]+[0-9a-f]+:[ 	]+73602573[ 	]+csrr[ 	]+a0,mhpmevent22h
+[ 	]+[0-9a-f]+:[ 	]+73659073[ 	]+csrw[ 	]+mhpmevent22h,a1
+[ 	]+[0-9a-f]+:[ 	]+73702573[ 	]+csrr[ 	]+a0,mhpmevent23h
+[ 	]+[0-9a-f]+:[ 	]+73759073[ 	]+csrw[ 	]+mhpmevent23h,a1
+[ 	]+[0-9a-f]+:[ 	]+73802573[ 	]+csrr[ 	]+a0,mhpmevent24h
+[ 	]+[0-9a-f]+:[ 	]+73859073[ 	]+csrw[ 	]+mhpmevent24h,a1
+[ 	]+[0-9a-f]+:[ 	]+73902573[ 	]+csrr[ 	]+a0,mhpmevent25h
+[ 	]+[0-9a-f]+:[ 	]+73959073[ 	]+csrw[ 	]+mhpmevent25h,a1
+[ 	]+[0-9a-f]+:[ 	]+73a02573[ 	]+csrr[ 	]+a0,mhpmevent26h
+[ 	]+[0-9a-f]+:[ 	]+73a59073[ 	]+csrw[ 	]+mhpmevent26h,a1
+[ 	]+[0-9a-f]+:[ 	]+73b02573[ 	]+csrr[ 	]+a0,mhpmevent27h
+[ 	]+[0-9a-f]+:[ 	]+73b59073[ 	]+csrw[ 	]+mhpmevent27h,a1
+[ 	]+[0-9a-f]+:[ 	]+73c02573[ 	]+csrr[ 	]+a0,mhpmevent28h
+[ 	]+[0-9a-f]+:[ 	]+73c59073[ 	]+csrw[ 	]+mhpmevent28h,a1
+[ 	]+[0-9a-f]+:[ 	]+73d02573[ 	]+csrr[ 	]+a0,mhpmevent29h
+[ 	]+[0-9a-f]+:[ 	]+73d59073[ 	]+csrw[ 	]+mhpmevent29h,a1
+[ 	]+[0-9a-f]+:[ 	]+73e02573[ 	]+csrr[ 	]+a0,mhpmevent30h
+[ 	]+[0-9a-f]+:[ 	]+73e59073[ 	]+csrw[ 	]+mhpmevent30h,a1
+[ 	]+[0-9a-f]+:[ 	]+73f02573[ 	]+csrr[ 	]+a0,mhpmevent31h
+[ 	]+[0-9a-f]+:[ 	]+73f59073[ 	]+csrw[ 	]+mhpmevent31h,a1
 [ 	]+[0-9a-f]+:[ 	]+04302573[ 	]+csrr[ 	]+a0,utval
 [ 	]+[0-9a-f]+:[ 	]+04359073[ 	]+csrw[ 	]+utval,a1
 [ 	]+[0-9a-f]+:[ 	]+14302573[ 	]+csrr[ 	]+a0,stval
diff --git a/gas/testsuite/gas/riscv/csr-version-1p10.l b/gas/testsuite/gas/riscv/csr-version-1p10.l
index ff23c010d18..b763c4b2232 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p10.l
+++ b/gas/testsuite/gas/riscv/csr-version-1p10.l
@@ -483,6 +483,125 @@
 .*Warning: invalid CSR `hstateen3h', needs rv32i extension
 .*Warning: invalid CSR `hstateen3h', needs `smstateen' extension
 .*Warning: invalid CSR `hstateen3h' for the privileged spec `1.10'
+.*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
+.*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
+.*Warning: read-only CSR is written `csrw scountovf,a1'
+.*Warning: invalid CSR `mhpmevent3h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent3h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent3h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent3h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent4h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent4h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent4h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent4h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent5h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent5h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent5h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent5h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent6h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent6h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent6h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent6h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent7h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent7h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent7h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent7h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent8h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent8h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent8h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent8h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent9h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent9h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent9h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent9h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent10h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent10h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent10h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent10h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent11h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent11h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent11h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent11h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent12h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent12h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent12h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent12h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent13h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent13h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent13h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent13h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent14h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent14h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent14h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent14h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent15h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent15h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent15h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent15h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent16h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent16h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent16h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent16h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent17h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent17h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent17h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent17h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent18h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent18h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent18h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent18h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent19h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent19h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent19h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent19h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent20h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent20h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent20h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent20h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent21h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent21h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent21h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent21h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent22h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent22h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent22h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent22h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent23h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent23h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent23h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent23h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent24h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent24h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent24h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent24h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent25h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent25h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent25h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent25h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent26h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent26h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent26h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent26h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent27h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent27h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent27h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent27h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent28h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent28h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent28h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent28h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent29h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent29h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent29h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent29h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent30h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent30h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent30h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent30h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent31h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent31h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent31h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent31h', needs `sscofpmf' extension
 .*Warning: invalid CSR `ubadaddr' for the privileged spec `1.10'
 .*Warning: invalid CSR `ubadaddr' for the privileged spec `1.10'
 .*Warning: invalid CSR `sbadaddr' for the privileged spec `1.10'
diff --git a/gas/testsuite/gas/riscv/csr-version-1p11.d b/gas/testsuite/gas/riscv/csr-version-1p11.d
index 6e85a7e2d4d..1d2640b540e 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p11.d
+++ b/gas/testsuite/gas/riscv/csr-version-1p11.d
@@ -641,6 +641,66 @@ Disassembly of section .text:
 [ 	]+[0-9a-f]+:[ 	]+61e59073[ 	]+csrw[ 	]+0x61e,a1
 [ 	]+[0-9a-f]+:[ 	]+61f02573[ 	]+csrr[ 	]+a0,0x61f
 [ 	]+[0-9a-f]+:[ 	]+61f59073[ 	]+csrw[ 	]+0x61f,a1
+[ 	]+[0-9a-f]+:[ 	]+da002573[ 	]+csrr[ 	]+a0,scountovf
+[ 	]+[0-9a-f]+:[ 	]+da059073[ 	]+csrw[ 	]+scountovf,a1
+[ 	]+[0-9a-f]+:[ 	]+72302573[ 	]+csrr[ 	]+a0,mhpmevent3h
+[ 	]+[0-9a-f]+:[ 	]+72359073[ 	]+csrw[ 	]+mhpmevent3h,a1
+[ 	]+[0-9a-f]+:[ 	]+72402573[ 	]+csrr[ 	]+a0,mhpmevent4h
+[ 	]+[0-9a-f]+:[ 	]+72459073[ 	]+csrw[ 	]+mhpmevent4h,a1
+[ 	]+[0-9a-f]+:[ 	]+72502573[ 	]+csrr[ 	]+a0,mhpmevent5h
+[ 	]+[0-9a-f]+:[ 	]+72559073[ 	]+csrw[ 	]+mhpmevent5h,a1
+[ 	]+[0-9a-f]+:[ 	]+72602573[ 	]+csrr[ 	]+a0,mhpmevent6h
+[ 	]+[0-9a-f]+:[ 	]+72659073[ 	]+csrw[ 	]+mhpmevent6h,a1
+[ 	]+[0-9a-f]+:[ 	]+72702573[ 	]+csrr[ 	]+a0,mhpmevent7h
+[ 	]+[0-9a-f]+:[ 	]+72759073[ 	]+csrw[ 	]+mhpmevent7h,a1
+[ 	]+[0-9a-f]+:[ 	]+72802573[ 	]+csrr[ 	]+a0,mhpmevent8h
+[ 	]+[0-9a-f]+:[ 	]+72859073[ 	]+csrw[ 	]+mhpmevent8h,a1
+[ 	]+[0-9a-f]+:[ 	]+72902573[ 	]+csrr[ 	]+a0,mhpmevent9h
+[ 	]+[0-9a-f]+:[ 	]+72959073[ 	]+csrw[ 	]+mhpmevent9h,a1
+[ 	]+[0-9a-f]+:[ 	]+72a02573[ 	]+csrr[ 	]+a0,mhpmevent10h
+[ 	]+[0-9a-f]+:[ 	]+72a59073[ 	]+csrw[ 	]+mhpmevent10h,a1
+[ 	]+[0-9a-f]+:[ 	]+72b02573[ 	]+csrr[ 	]+a0,mhpmevent11h
+[ 	]+[0-9a-f]+:[ 	]+72b59073[ 	]+csrw[ 	]+mhpmevent11h,a1
+[ 	]+[0-9a-f]+:[ 	]+72c02573[ 	]+csrr[ 	]+a0,mhpmevent12h
+[ 	]+[0-9a-f]+:[ 	]+72c59073[ 	]+csrw[ 	]+mhpmevent12h,a1
+[ 	]+[0-9a-f]+:[ 	]+72d02573[ 	]+csrr[ 	]+a0,mhpmevent13h
+[ 	]+[0-9a-f]+:[ 	]+72d59073[ 	]+csrw[ 	]+mhpmevent13h,a1
+[ 	]+[0-9a-f]+:[ 	]+72e02573[ 	]+csrr[ 	]+a0,mhpmevent14h
+[ 	]+[0-9a-f]+:[ 	]+72e59073[ 	]+csrw[ 	]+mhpmevent14h,a1
+[ 	]+[0-9a-f]+:[ 	]+72f02573[ 	]+csrr[ 	]+a0,mhpmevent15h
+[ 	]+[0-9a-f]+:[ 	]+72f59073[ 	]+csrw[ 	]+mhpmevent15h,a1
+[ 	]+[0-9a-f]+:[ 	]+73002573[ 	]+csrr[ 	]+a0,mhpmevent16h
+[ 	]+[0-9a-f]+:[ 	]+73059073[ 	]+csrw[ 	]+mhpmevent16h,a1
+[ 	]+[0-9a-f]+:[ 	]+73102573[ 	]+csrr[ 	]+a0,mhpmevent17h
+[ 	]+[0-9a-f]+:[ 	]+73159073[ 	]+csrw[ 	]+mhpmevent17h,a1
+[ 	]+[0-9a-f]+:[ 	]+73202573[ 	]+csrr[ 	]+a0,mhpmevent18h
+[ 	]+[0-9a-f]+:[ 	]+73259073[ 	]+csrw[ 	]+mhpmevent18h,a1
+[ 	]+[0-9a-f]+:[ 	]+73302573[ 	]+csrr[ 	]+a0,mhpmevent19h
+[ 	]+[0-9a-f]+:[ 	]+73359073[ 	]+csrw[ 	]+mhpmevent19h,a1
+[ 	]+[0-9a-f]+:[ 	]+73402573[ 	]+csrr[ 	]+a0,mhpmevent20h
+[ 	]+[0-9a-f]+:[ 	]+73459073[ 	]+csrw[ 	]+mhpmevent20h,a1
+[ 	]+[0-9a-f]+:[ 	]+73502573[ 	]+csrr[ 	]+a0,mhpmevent21h
+[ 	]+[0-9a-f]+:[ 	]+73559073[ 	]+csrw[ 	]+mhpmevent21h,a1
+[ 	]+[0-9a-f]+:[ 	]+73602573[ 	]+csrr[ 	]+a0,mhpmevent22h
+[ 	]+[0-9a-f]+:[ 	]+73659073[ 	]+csrw[ 	]+mhpmevent22h,a1
+[ 	]+[0-9a-f]+:[ 	]+73702573[ 	]+csrr[ 	]+a0,mhpmevent23h
+[ 	]+[0-9a-f]+:[ 	]+73759073[ 	]+csrw[ 	]+mhpmevent23h,a1
+[ 	]+[0-9a-f]+:[ 	]+73802573[ 	]+csrr[ 	]+a0,mhpmevent24h
+[ 	]+[0-9a-f]+:[ 	]+73859073[ 	]+csrw[ 	]+mhpmevent24h,a1
+[ 	]+[0-9a-f]+:[ 	]+73902573[ 	]+csrr[ 	]+a0,mhpmevent25h
+[ 	]+[0-9a-f]+:[ 	]+73959073[ 	]+csrw[ 	]+mhpmevent25h,a1
+[ 	]+[0-9a-f]+:[ 	]+73a02573[ 	]+csrr[ 	]+a0,mhpmevent26h
+[ 	]+[0-9a-f]+:[ 	]+73a59073[ 	]+csrw[ 	]+mhpmevent26h,a1
+[ 	]+[0-9a-f]+:[ 	]+73b02573[ 	]+csrr[ 	]+a0,mhpmevent27h
+[ 	]+[0-9a-f]+:[ 	]+73b59073[ 	]+csrw[ 	]+mhpmevent27h,a1
+[ 	]+[0-9a-f]+:[ 	]+73c02573[ 	]+csrr[ 	]+a0,mhpmevent28h
+[ 	]+[0-9a-f]+:[ 	]+73c59073[ 	]+csrw[ 	]+mhpmevent28h,a1
+[ 	]+[0-9a-f]+:[ 	]+73d02573[ 	]+csrr[ 	]+a0,mhpmevent29h
+[ 	]+[0-9a-f]+:[ 	]+73d59073[ 	]+csrw[ 	]+mhpmevent29h,a1
+[ 	]+[0-9a-f]+:[ 	]+73e02573[ 	]+csrr[ 	]+a0,mhpmevent30h
+[ 	]+[0-9a-f]+:[ 	]+73e59073[ 	]+csrw[ 	]+mhpmevent30h,a1
+[ 	]+[0-9a-f]+:[ 	]+73f02573[ 	]+csrr[ 	]+a0,mhpmevent31h
+[ 	]+[0-9a-f]+:[ 	]+73f59073[ 	]+csrw[ 	]+mhpmevent31h,a1
 [ 	]+[0-9a-f]+:[ 	]+04302573[ 	]+csrr[ 	]+a0,utval
 [ 	]+[0-9a-f]+:[ 	]+04359073[ 	]+csrw[ 	]+utval,a1
 [ 	]+[0-9a-f]+:[ 	]+14302573[ 	]+csrr[ 	]+a0,stval
diff --git a/gas/testsuite/gas/riscv/csr-version-1p11.l b/gas/testsuite/gas/riscv/csr-version-1p11.l
index 3a767cbcadf..3d129511534 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p11.l
+++ b/gas/testsuite/gas/riscv/csr-version-1p11.l
@@ -481,6 +481,125 @@
 .*Warning: invalid CSR `hstateen3h', needs rv32i extension
 .*Warning: invalid CSR `hstateen3h', needs `smstateen' extension
 .*Warning: invalid CSR `hstateen3h' for the privileged spec `1.11'
+.*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
+.*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
+.*Warning: read-only CSR is written `csrw scountovf,a1'
+.*Warning: invalid CSR `mhpmevent3h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent3h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent3h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent3h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent4h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent4h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent4h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent4h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent5h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent5h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent5h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent5h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent6h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent6h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent6h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent6h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent7h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent7h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent7h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent7h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent8h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent8h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent8h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent8h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent9h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent9h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent9h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent9h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent10h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent10h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent10h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent10h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent11h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent11h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent11h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent11h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent12h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent12h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent12h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent12h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent13h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent13h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent13h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent13h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent14h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent14h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent14h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent14h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent15h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent15h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent15h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent15h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent16h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent16h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent16h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent16h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent17h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent17h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent17h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent17h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent18h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent18h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent18h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent18h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent19h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent19h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent19h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent19h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent20h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent20h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent20h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent20h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent21h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent21h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent21h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent21h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent22h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent22h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent22h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent22h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent23h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent23h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent23h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent23h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent24h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent24h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent24h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent24h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent25h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent25h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent25h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent25h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent26h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent26h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent26h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent26h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent27h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent27h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent27h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent27h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent28h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent28h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent28h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent28h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent29h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent29h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent29h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent29h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent30h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent30h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent30h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent30h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent31h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent31h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent31h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent31h', needs `sscofpmf' extension
 .*Warning: invalid CSR `ubadaddr' for the privileged spec `1.11'
 .*Warning: invalid CSR `ubadaddr' for the privileged spec `1.11'
 .*Warning: invalid CSR `sbadaddr' for the privileged spec `1.11'
diff --git a/gas/testsuite/gas/riscv/csr-version-1p12.d b/gas/testsuite/gas/riscv/csr-version-1p12.d
index 46ca519b31e..60f19bff874 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p12.d
+++ b/gas/testsuite/gas/riscv/csr-version-1p12.d
@@ -641,6 +641,66 @@ Disassembly of section .text:
 [ 	]+[0-9a-f]+:[ 	]+61e59073[ 	]+csrw[ 	]+hstateen2h,a1
 [ 	]+[0-9a-f]+:[ 	]+61f02573[ 	]+csrr[ 	]+a0,hstateen3h
 [ 	]+[0-9a-f]+:[ 	]+61f59073[ 	]+csrw[ 	]+hstateen3h,a1
+[ 	]+[0-9a-f]+:[ 	]+da002573[ 	]+csrr[ 	]+a0,scountovf
+[ 	]+[0-9a-f]+:[ 	]+da059073[ 	]+csrw[ 	]+scountovf,a1
+[ 	]+[0-9a-f]+:[ 	]+72302573[ 	]+csrr[ 	]+a0,mhpmevent3h
+[ 	]+[0-9a-f]+:[ 	]+72359073[ 	]+csrw[ 	]+mhpmevent3h,a1
+[ 	]+[0-9a-f]+:[ 	]+72402573[ 	]+csrr[ 	]+a0,mhpmevent4h
+[ 	]+[0-9a-f]+:[ 	]+72459073[ 	]+csrw[ 	]+mhpmevent4h,a1
+[ 	]+[0-9a-f]+:[ 	]+72502573[ 	]+csrr[ 	]+a0,mhpmevent5h
+[ 	]+[0-9a-f]+:[ 	]+72559073[ 	]+csrw[ 	]+mhpmevent5h,a1
+[ 	]+[0-9a-f]+:[ 	]+72602573[ 	]+csrr[ 	]+a0,mhpmevent6h
+[ 	]+[0-9a-f]+:[ 	]+72659073[ 	]+csrw[ 	]+mhpmevent6h,a1
+[ 	]+[0-9a-f]+:[ 	]+72702573[ 	]+csrr[ 	]+a0,mhpmevent7h
+[ 	]+[0-9a-f]+:[ 	]+72759073[ 	]+csrw[ 	]+mhpmevent7h,a1
+[ 	]+[0-9a-f]+:[ 	]+72802573[ 	]+csrr[ 	]+a0,mhpmevent8h
+[ 	]+[0-9a-f]+:[ 	]+72859073[ 	]+csrw[ 	]+mhpmevent8h,a1
+[ 	]+[0-9a-f]+:[ 	]+72902573[ 	]+csrr[ 	]+a0,mhpmevent9h
+[ 	]+[0-9a-f]+:[ 	]+72959073[ 	]+csrw[ 	]+mhpmevent9h,a1
+[ 	]+[0-9a-f]+:[ 	]+72a02573[ 	]+csrr[ 	]+a0,mhpmevent10h
+[ 	]+[0-9a-f]+:[ 	]+72a59073[ 	]+csrw[ 	]+mhpmevent10h,a1
+[ 	]+[0-9a-f]+:[ 	]+72b02573[ 	]+csrr[ 	]+a0,mhpmevent11h
+[ 	]+[0-9a-f]+:[ 	]+72b59073[ 	]+csrw[ 	]+mhpmevent11h,a1
+[ 	]+[0-9a-f]+:[ 	]+72c02573[ 	]+csrr[ 	]+a0,mhpmevent12h
+[ 	]+[0-9a-f]+:[ 	]+72c59073[ 	]+csrw[ 	]+mhpmevent12h,a1
+[ 	]+[0-9a-f]+:[ 	]+72d02573[ 	]+csrr[ 	]+a0,mhpmevent13h
+[ 	]+[0-9a-f]+:[ 	]+72d59073[ 	]+csrw[ 	]+mhpmevent13h,a1
+[ 	]+[0-9a-f]+:[ 	]+72e02573[ 	]+csrr[ 	]+a0,mhpmevent14h
+[ 	]+[0-9a-f]+:[ 	]+72e59073[ 	]+csrw[ 	]+mhpmevent14h,a1
+[ 	]+[0-9a-f]+:[ 	]+72f02573[ 	]+csrr[ 	]+a0,mhpmevent15h
+[ 	]+[0-9a-f]+:[ 	]+72f59073[ 	]+csrw[ 	]+mhpmevent15h,a1
+[ 	]+[0-9a-f]+:[ 	]+73002573[ 	]+csrr[ 	]+a0,mhpmevent16h
+[ 	]+[0-9a-f]+:[ 	]+73059073[ 	]+csrw[ 	]+mhpmevent16h,a1
+[ 	]+[0-9a-f]+:[ 	]+73102573[ 	]+csrr[ 	]+a0,mhpmevent17h
+[ 	]+[0-9a-f]+:[ 	]+73159073[ 	]+csrw[ 	]+mhpmevent17h,a1
+[ 	]+[0-9a-f]+:[ 	]+73202573[ 	]+csrr[ 	]+a0,mhpmevent18h
+[ 	]+[0-9a-f]+:[ 	]+73259073[ 	]+csrw[ 	]+mhpmevent18h,a1
+[ 	]+[0-9a-f]+:[ 	]+73302573[ 	]+csrr[ 	]+a0,mhpmevent19h
+[ 	]+[0-9a-f]+:[ 	]+73359073[ 	]+csrw[ 	]+mhpmevent19h,a1
+[ 	]+[0-9a-f]+:[ 	]+73402573[ 	]+csrr[ 	]+a0,mhpmevent20h
+[ 	]+[0-9a-f]+:[ 	]+73459073[ 	]+csrw[ 	]+mhpmevent20h,a1
+[ 	]+[0-9a-f]+:[ 	]+73502573[ 	]+csrr[ 	]+a0,mhpmevent21h
+[ 	]+[0-9a-f]+:[ 	]+73559073[ 	]+csrw[ 	]+mhpmevent21h,a1
+[ 	]+[0-9a-f]+:[ 	]+73602573[ 	]+csrr[ 	]+a0,mhpmevent22h
+[ 	]+[0-9a-f]+:[ 	]+73659073[ 	]+csrw[ 	]+mhpmevent22h,a1
+[ 	]+[0-9a-f]+:[ 	]+73702573[ 	]+csrr[ 	]+a0,mhpmevent23h
+[ 	]+[0-9a-f]+:[ 	]+73759073[ 	]+csrw[ 	]+mhpmevent23h,a1
+[ 	]+[0-9a-f]+:[ 	]+73802573[ 	]+csrr[ 	]+a0,mhpmevent24h
+[ 	]+[0-9a-f]+:[ 	]+73859073[ 	]+csrw[ 	]+mhpmevent24h,a1
+[ 	]+[0-9a-f]+:[ 	]+73902573[ 	]+csrr[ 	]+a0,mhpmevent25h
+[ 	]+[0-9a-f]+:[ 	]+73959073[ 	]+csrw[ 	]+mhpmevent25h,a1
+[ 	]+[0-9a-f]+:[ 	]+73a02573[ 	]+csrr[ 	]+a0,mhpmevent26h
+[ 	]+[0-9a-f]+:[ 	]+73a59073[ 	]+csrw[ 	]+mhpmevent26h,a1
+[ 	]+[0-9a-f]+:[ 	]+73b02573[ 	]+csrr[ 	]+a0,mhpmevent27h
+[ 	]+[0-9a-f]+:[ 	]+73b59073[ 	]+csrw[ 	]+mhpmevent27h,a1
+[ 	]+[0-9a-f]+:[ 	]+73c02573[ 	]+csrr[ 	]+a0,mhpmevent28h
+[ 	]+[0-9a-f]+:[ 	]+73c59073[ 	]+csrw[ 	]+mhpmevent28h,a1
+[ 	]+[0-9a-f]+:[ 	]+73d02573[ 	]+csrr[ 	]+a0,mhpmevent29h
+[ 	]+[0-9a-f]+:[ 	]+73d59073[ 	]+csrw[ 	]+mhpmevent29h,a1
+[ 	]+[0-9a-f]+:[ 	]+73e02573[ 	]+csrr[ 	]+a0,mhpmevent30h
+[ 	]+[0-9a-f]+:[ 	]+73e59073[ 	]+csrw[ 	]+mhpmevent30h,a1
+[ 	]+[0-9a-f]+:[ 	]+73f02573[ 	]+csrr[ 	]+a0,mhpmevent31h
+[ 	]+[0-9a-f]+:[ 	]+73f59073[ 	]+csrw[ 	]+mhpmevent31h,a1
 [ 	]+[0-9a-f]+:[ 	]+04302573[ 	]+csrr[ 	]+a0,0x43
 [ 	]+[0-9a-f]+:[ 	]+04359073[ 	]+csrw[ 	]+0x43,a1
 [ 	]+[0-9a-f]+:[ 	]+14302573[ 	]+csrr[ 	]+a0,stval
diff --git a/gas/testsuite/gas/riscv/csr-version-1p12.l b/gas/testsuite/gas/riscv/csr-version-1p12.l
index b23a705f88a..b88a20d7254 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p12.l
+++ b/gas/testsuite/gas/riscv/csr-version-1p12.l
@@ -277,6 +277,125 @@
 .*Warning: invalid CSR `hstateen3h', needs `smstateen' extension
 .*Warning: invalid CSR `hstateen3h', needs rv32i extension
 .*Warning: invalid CSR `hstateen3h', needs `smstateen' extension
+.*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
+.*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
+.*Warning: read-only CSR is written `csrw scountovf,a1'
+.*Warning: invalid CSR `mhpmevent3h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent3h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent3h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent3h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent4h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent4h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent4h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent4h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent5h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent5h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent5h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent5h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent6h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent6h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent6h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent6h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent7h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent7h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent7h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent7h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent8h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent8h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent8h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent8h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent9h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent9h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent9h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent9h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent10h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent10h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent10h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent10h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent11h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent11h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent11h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent11h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent12h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent12h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent12h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent12h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent13h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent13h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent13h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent13h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent14h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent14h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent14h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent14h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent15h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent15h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent15h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent15h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent16h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent16h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent16h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent16h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent17h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent17h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent17h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent17h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent18h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent18h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent18h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent18h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent19h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent19h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent19h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent19h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent20h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent20h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent20h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent20h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent21h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent21h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent21h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent21h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent22h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent22h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent22h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent22h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent23h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent23h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent23h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent23h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent24h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent24h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent24h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent24h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent25h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent25h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent25h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent25h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent26h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent26h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent26h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent26h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent27h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent27h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent27h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent27h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent28h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent28h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent28h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent28h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent29h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent29h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent29h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent29h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent30h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent30h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent30h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent30h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent31h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent31h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent31h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent31h', needs `sscofpmf' extension
 .*Warning: invalid CSR `ubadaddr' for the privileged spec `1.12'
 .*Warning: invalid CSR `ubadaddr' for the privileged spec `1.12'
 .*Warning: invalid CSR `sbadaddr' for the privileged spec `1.12'
diff --git a/gas/testsuite/gas/riscv/csr-version-1p9p1.d b/gas/testsuite/gas/riscv/csr-version-1p9p1.d
index a593182b168..77b8c5cd3f5 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p9p1.d
+++ b/gas/testsuite/gas/riscv/csr-version-1p9p1.d
@@ -641,6 +641,66 @@ Disassembly of section .text:
 [ 	]+[0-9a-f]+:[ 	]+61e59073[ 	]+csrw[ 	]+0x61e,a1
 [ 	]+[0-9a-f]+:[ 	]+61f02573[ 	]+csrr[ 	]+a0,0x61f
 [ 	]+[0-9a-f]+:[ 	]+61f59073[ 	]+csrw[ 	]+0x61f,a1
+[ 	]+[0-9a-f]+:[ 	]+da002573[ 	]+csrr[ 	]+a0,scountovf
+[ 	]+[0-9a-f]+:[ 	]+da059073[ 	]+csrw[ 	]+scountovf,a1
+[ 	]+[0-9a-f]+:[ 	]+72302573[ 	]+csrr[ 	]+a0,mhpmevent3h
+[ 	]+[0-9a-f]+:[ 	]+72359073[ 	]+csrw[ 	]+mhpmevent3h,a1
+[ 	]+[0-9a-f]+:[ 	]+72402573[ 	]+csrr[ 	]+a0,mhpmevent4h
+[ 	]+[0-9a-f]+:[ 	]+72459073[ 	]+csrw[ 	]+mhpmevent4h,a1
+[ 	]+[0-9a-f]+:[ 	]+72502573[ 	]+csrr[ 	]+a0,mhpmevent5h
+[ 	]+[0-9a-f]+:[ 	]+72559073[ 	]+csrw[ 	]+mhpmevent5h,a1
+[ 	]+[0-9a-f]+:[ 	]+72602573[ 	]+csrr[ 	]+a0,mhpmevent6h
+[ 	]+[0-9a-f]+:[ 	]+72659073[ 	]+csrw[ 	]+mhpmevent6h,a1
+[ 	]+[0-9a-f]+:[ 	]+72702573[ 	]+csrr[ 	]+a0,mhpmevent7h
+[ 	]+[0-9a-f]+:[ 	]+72759073[ 	]+csrw[ 	]+mhpmevent7h,a1
+[ 	]+[0-9a-f]+:[ 	]+72802573[ 	]+csrr[ 	]+a0,mhpmevent8h
+[ 	]+[0-9a-f]+:[ 	]+72859073[ 	]+csrw[ 	]+mhpmevent8h,a1
+[ 	]+[0-9a-f]+:[ 	]+72902573[ 	]+csrr[ 	]+a0,mhpmevent9h
+[ 	]+[0-9a-f]+:[ 	]+72959073[ 	]+csrw[ 	]+mhpmevent9h,a1
+[ 	]+[0-9a-f]+:[ 	]+72a02573[ 	]+csrr[ 	]+a0,mhpmevent10h
+[ 	]+[0-9a-f]+:[ 	]+72a59073[ 	]+csrw[ 	]+mhpmevent10h,a1
+[ 	]+[0-9a-f]+:[ 	]+72b02573[ 	]+csrr[ 	]+a0,mhpmevent11h
+[ 	]+[0-9a-f]+:[ 	]+72b59073[ 	]+csrw[ 	]+mhpmevent11h,a1
+[ 	]+[0-9a-f]+:[ 	]+72c02573[ 	]+csrr[ 	]+a0,mhpmevent12h
+[ 	]+[0-9a-f]+:[ 	]+72c59073[ 	]+csrw[ 	]+mhpmevent12h,a1
+[ 	]+[0-9a-f]+:[ 	]+72d02573[ 	]+csrr[ 	]+a0,mhpmevent13h
+[ 	]+[0-9a-f]+:[ 	]+72d59073[ 	]+csrw[ 	]+mhpmevent13h,a1
+[ 	]+[0-9a-f]+:[ 	]+72e02573[ 	]+csrr[ 	]+a0,mhpmevent14h
+[ 	]+[0-9a-f]+:[ 	]+72e59073[ 	]+csrw[ 	]+mhpmevent14h,a1
+[ 	]+[0-9a-f]+:[ 	]+72f02573[ 	]+csrr[ 	]+a0,mhpmevent15h
+[ 	]+[0-9a-f]+:[ 	]+72f59073[ 	]+csrw[ 	]+mhpmevent15h,a1
+[ 	]+[0-9a-f]+:[ 	]+73002573[ 	]+csrr[ 	]+a0,mhpmevent16h
+[ 	]+[0-9a-f]+:[ 	]+73059073[ 	]+csrw[ 	]+mhpmevent16h,a1
+[ 	]+[0-9a-f]+:[ 	]+73102573[ 	]+csrr[ 	]+a0,mhpmevent17h
+[ 	]+[0-9a-f]+:[ 	]+73159073[ 	]+csrw[ 	]+mhpmevent17h,a1
+[ 	]+[0-9a-f]+:[ 	]+73202573[ 	]+csrr[ 	]+a0,mhpmevent18h
+[ 	]+[0-9a-f]+:[ 	]+73259073[ 	]+csrw[ 	]+mhpmevent18h,a1
+[ 	]+[0-9a-f]+:[ 	]+73302573[ 	]+csrr[ 	]+a0,mhpmevent19h
+[ 	]+[0-9a-f]+:[ 	]+73359073[ 	]+csrw[ 	]+mhpmevent19h,a1
+[ 	]+[0-9a-f]+:[ 	]+73402573[ 	]+csrr[ 	]+a0,mhpmevent20h
+[ 	]+[0-9a-f]+:[ 	]+73459073[ 	]+csrw[ 	]+mhpmevent20h,a1
+[ 	]+[0-9a-f]+:[ 	]+73502573[ 	]+csrr[ 	]+a0,mhpmevent21h
+[ 	]+[0-9a-f]+:[ 	]+73559073[ 	]+csrw[ 	]+mhpmevent21h,a1
+[ 	]+[0-9a-f]+:[ 	]+73602573[ 	]+csrr[ 	]+a0,mhpmevent22h
+[ 	]+[0-9a-f]+:[ 	]+73659073[ 	]+csrw[ 	]+mhpmevent22h,a1
+[ 	]+[0-9a-f]+:[ 	]+73702573[ 	]+csrr[ 	]+a0,mhpmevent23h
+[ 	]+[0-9a-f]+:[ 	]+73759073[ 	]+csrw[ 	]+mhpmevent23h,a1
+[ 	]+[0-9a-f]+:[ 	]+73802573[ 	]+csrr[ 	]+a0,mhpmevent24h
+[ 	]+[0-9a-f]+:[ 	]+73859073[ 	]+csrw[ 	]+mhpmevent24h,a1
+[ 	]+[0-9a-f]+:[ 	]+73902573[ 	]+csrr[ 	]+a0,mhpmevent25h
+[ 	]+[0-9a-f]+:[ 	]+73959073[ 	]+csrw[ 	]+mhpmevent25h,a1
+[ 	]+[0-9a-f]+:[ 	]+73a02573[ 	]+csrr[ 	]+a0,mhpmevent26h
+[ 	]+[0-9a-f]+:[ 	]+73a59073[ 	]+csrw[ 	]+mhpmevent26h,a1
+[ 	]+[0-9a-f]+:[ 	]+73b02573[ 	]+csrr[ 	]+a0,mhpmevent27h
+[ 	]+[0-9a-f]+:[ 	]+73b59073[ 	]+csrw[ 	]+mhpmevent27h,a1
+[ 	]+[0-9a-f]+:[ 	]+73c02573[ 	]+csrr[ 	]+a0,mhpmevent28h
+[ 	]+[0-9a-f]+:[ 	]+73c59073[ 	]+csrw[ 	]+mhpmevent28h,a1
+[ 	]+[0-9a-f]+:[ 	]+73d02573[ 	]+csrr[ 	]+a0,mhpmevent29h
+[ 	]+[0-9a-f]+:[ 	]+73d59073[ 	]+csrw[ 	]+mhpmevent29h,a1
+[ 	]+[0-9a-f]+:[ 	]+73e02573[ 	]+csrr[ 	]+a0,mhpmevent30h
+[ 	]+[0-9a-f]+:[ 	]+73e59073[ 	]+csrw[ 	]+mhpmevent30h,a1
+[ 	]+[0-9a-f]+:[ 	]+73f02573[ 	]+csrr[ 	]+a0,mhpmevent31h
+[ 	]+[0-9a-f]+:[ 	]+73f59073[ 	]+csrw[ 	]+mhpmevent31h,a1
 [ 	]+[0-9a-f]+:[ 	]+04302573[ 	]+csrr[ 	]+a0,ubadaddr
 [ 	]+[0-9a-f]+:[ 	]+04359073[ 	]+csrw[ 	]+ubadaddr,a1
 [ 	]+[0-9a-f]+:[ 	]+14302573[ 	]+csrr[ 	]+a0,sbadaddr
diff --git a/gas/testsuite/gas/riscv/csr-version-1p9p1.l b/gas/testsuite/gas/riscv/csr-version-1p9p1.l
index 75eda35d2ce..d69e0809eb3 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p9p1.l
+++ b/gas/testsuite/gas/riscv/csr-version-1p9p1.l
@@ -533,6 +533,125 @@
 .*Warning: invalid CSR `hstateen3h', needs rv32i extension
 .*Warning: invalid CSR `hstateen3h', needs `smstateen' extension
 .*Warning: invalid CSR `hstateen3h' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
+.*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
+.*Warning: read-only CSR is written `csrw scountovf,a1'
+.*Warning: invalid CSR `mhpmevent3h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent3h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent3h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent3h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent4h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent4h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent4h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent4h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent5h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent5h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent5h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent5h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent6h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent6h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent6h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent6h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent7h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent7h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent7h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent7h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent8h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent8h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent8h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent8h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent9h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent9h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent9h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent9h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent10h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent10h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent10h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent10h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent11h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent11h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent11h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent11h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent12h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent12h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent12h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent12h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent13h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent13h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent13h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent13h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent14h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent14h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent14h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent14h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent15h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent15h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent15h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent15h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent16h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent16h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent16h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent16h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent17h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent17h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent17h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent17h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent18h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent18h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent18h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent18h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent19h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent19h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent19h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent19h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent20h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent20h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent20h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent20h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent21h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent21h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent21h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent21h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent22h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent22h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent22h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent22h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent23h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent23h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent23h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent23h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent24h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent24h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent24h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent24h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent25h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent25h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent25h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent25h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent26h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent26h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent26h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent26h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent27h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent27h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent27h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent27h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent28h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent28h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent28h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent28h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent29h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent29h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent29h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent29h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent30h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent30h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent30h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent30h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent31h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent31h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent31h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent31h', needs `sscofpmf' extension
 .*Warning: invalid CSR `utval' for the privileged spec `1.9.1'
 .*Warning: invalid CSR `utval' for the privileged spec `1.9.1'
 .*Warning: invalid CSR `fflags', needs `f' extension
diff --git a/gas/testsuite/gas/riscv/csr.s b/gas/testsuite/gas/riscv/csr.s
index 1a4a2be2c0f..2a723123f1b 100644
--- a/gas/testsuite/gas/riscv/csr.s
+++ b/gas/testsuite/gas/riscv/csr.s
@@ -359,6 +359,38 @@
 	csr hstateen2h
 	csr hstateen3h
 
+	# Sscofpmf extension
+	csr scountovf
+	csr mhpmevent3h
+	csr mhpmevent4h
+	csr mhpmevent5h
+	csr mhpmevent6h
+	csr mhpmevent7h
+	csr mhpmevent8h
+	csr mhpmevent9h
+	csr mhpmevent10h
+	csr mhpmevent11h
+	csr mhpmevent12h
+	csr mhpmevent13h
+	csr mhpmevent14h
+	csr mhpmevent15h
+	csr mhpmevent16h
+	csr mhpmevent17h
+	csr mhpmevent18h
+	csr mhpmevent19h
+	csr mhpmevent20h
+	csr mhpmevent21h
+	csr mhpmevent22h
+	csr mhpmevent23h
+	csr mhpmevent24h
+	csr mhpmevent25h
+	csr mhpmevent26h
+	csr mhpmevent27h
+	csr mhpmevent28h
+	csr mhpmevent29h
+	csr mhpmevent30h
+	csr mhpmevent31h
+
 	# Supported in previous priv spec, but dropped now
 
 	csr ubadaddr		# 0x043 in 1.9.1, but the value is utval since 1.10
diff --git a/include/opcode/riscv-opc.h b/include/opcode/riscv-opc.h
index b731f353766..f91841d88c1 100644
--- a/include/opcode/riscv-opc.h
+++ b/include/opcode/riscv-opc.h
@@ -2453,6 +2453,37 @@
 #define CSR_HSTATEEN1H 0x61d
 #define CSR_HSTATEEN2H 0x61e
 #define CSR_HSTATEEN3H 0x61f
+/* Sscofpmf extension */
+#define CSR_SCOUNTOVF 0xda0
+#define CSR_MHPMEVENT3H 0x723
+#define CSR_MHPMEVENT4H 0x724
+#define CSR_MHPMEVENT5H 0x725
+#define CSR_MHPMEVENT6H 0x726
+#define CSR_MHPMEVENT7H 0x727
+#define CSR_MHPMEVENT8H 0x728
+#define CSR_MHPMEVENT9H 0x729
+#define CSR_MHPMEVENT10H 0x72a
+#define CSR_MHPMEVENT11H 0x72b
+#define CSR_MHPMEVENT12H 0x72c
+#define CSR_MHPMEVENT13H 0x72d
+#define CSR_MHPMEVENT14H 0x72e
+#define CSR_MHPMEVENT15H 0x72f
+#define CSR_MHPMEVENT16H 0x730
+#define CSR_MHPMEVENT17H 0x731
+#define CSR_MHPMEVENT18H 0x732
+#define CSR_MHPMEVENT19H 0x733
+#define CSR_MHPMEVENT20H 0x734
+#define CSR_MHPMEVENT21H 0x735
+#define CSR_MHPMEVENT22H 0x736
+#define CSR_MHPMEVENT23H 0x737
+#define CSR_MHPMEVENT24H 0x738
+#define CSR_MHPMEVENT25H 0x739
+#define CSR_MHPMEVENT26H 0x73a
+#define CSR_MHPMEVENT27H 0x73b
+#define CSR_MHPMEVENT28H 0x73c
+#define CSR_MHPMEVENT29H 0x73d
+#define CSR_MHPMEVENT30H 0x73e
+#define CSR_MHPMEVENT31H 0x73f
 /* Unprivileged Floating-Point CSR addresses.  */
 #define CSR_FFLAGS 0x1
 #define CSR_FRM 0x2
@@ -3139,6 +3170,37 @@ DECLARE_CSR(hstateen0h, CSR_HSTATEEN0H, CSR_CLASS_SMSTATEEN_32, PRIV_SPEC_CLASS_
 DECLARE_CSR(hstateen1h, CSR_HSTATEEN1H, CSR_CLASS_SMSTATEEN_32, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
 DECLARE_CSR(hstateen2h, CSR_HSTATEEN2H, CSR_CLASS_SMSTATEEN_32, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
 DECLARE_CSR(hstateen3h, CSR_HSTATEEN3H, CSR_CLASS_SMSTATEEN_32, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
+/* Sscofpmf extension */
+DECLARE_CSR(scountovf, CSR_SCOUNTOVF, CSR_CLASS_SSCOFPMF, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(mhpmevent3h, CSR_MHPMEVENT3H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(mhpmevent4h, CSR_MHPMEVENT4H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(mhpmevent5h, CSR_MHPMEVENT5H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(mhpmevent6h, CSR_MHPMEVENT6H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(mhpmevent7h, CSR_MHPMEVENT7H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(mhpmevent8h, CSR_MHPMEVENT8H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(mhpmevent9h, CSR_MHPMEVENT9H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(mhpmevent10h, CSR_MHPMEVENT10H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(mhpmevent11h, CSR_MHPMEVENT11H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(mhpmevent12h, CSR_MHPMEVENT12H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(mhpmevent13h, CSR_MHPMEVENT13H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(mhpmevent14h, CSR_MHPMEVENT14H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(mhpmevent15h, CSR_MHPMEVENT15H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(mhpmevent16h, CSR_MHPMEVENT16H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(mhpmevent17h, CSR_MHPMEVENT17H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(mhpmevent18h, CSR_MHPMEVENT18H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(mhpmevent19h, CSR_MHPMEVENT19H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(mhpmevent20h, CSR_MHPMEVENT20H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(mhpmevent21h, CSR_MHPMEVENT21H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(mhpmevent22h, CSR_MHPMEVENT22H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(mhpmevent23h, CSR_MHPMEVENT23H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(mhpmevent24h, CSR_MHPMEVENT24H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(mhpmevent25h, CSR_MHPMEVENT25H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(mhpmevent26h, CSR_MHPMEVENT26H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(mhpmevent27h, CSR_MHPMEVENT27H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(mhpmevent28h, CSR_MHPMEVENT28H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+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)
 /* Dropped CSRs.  */
 DECLARE_CSR(mbase, CSR_MBASE, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_1P10)
 DECLARE_CSR(mbound, CSR_MBOUND, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_1P10)
-- 
2.34.1


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

* [PATCH v2 3/3] RISC-V: Add 'Sstc' extension and its CSRs
  2022-05-24  9:35   ` [PATCH v2 0/3] RISC-V: Add CSRs for several supervisor extensions Tsukasa OI
  2022-05-24  9:35     ` [PATCH v2 1/3] RISC-V: Add 'Smstateen' extension and its CSRs Tsukasa OI
  2022-05-24  9:35     ` [PATCH v2 2/3] RISC-V: Add 'Sscofpmf' extension with " Tsukasa OI
@ 2022-05-24  9:35     ` Tsukasa OI
  2022-06-24  2:51     ` [PATCH v3 0/4] RISC-V: Add CSRs for several supervisor extensions Tsukasa OI
  3 siblings, 0 replies; 32+ messages in thread
From: Tsukasa OI @ 2022-05-24  9:35 UTC (permalink / raw)
  To: Tsukasa OI, Kito Cheng, Nelson Chu, Palmer Dabbelt; +Cc: binutils

This commit adds "stimecmp / vstimecmp" Extension (Sstc) and its CSRs.

bfd/ChangeLog:

	* elfxx-riscv.c (riscv_supported_std_s_ext): Add 'Sstc'
	extension to valid 'S' extension list.

gas/ChangeLog:

	* config/tc-riscv.c (enum riscv_csr_class): Add CSR classes for
	'Sstc' extension. (riscv_csr_address): Add handling for new CSR
	classes.
	* testsuite/gas/riscv/csr-dw-regnums.s: Add new CSRs.
	* testsuite/gas/riscv/csr-dw-regnums.d: 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_STIMECMP, CSR_STIMECMPH,
	CSR_VSTIMECMP, CSR_VSTIMECMPH): New CSR macros.
---
 bfd/elfxx-riscv.c                           |  1 +
 gas/config/tc-riscv.c                       |  9 +++++++++
 gas/testsuite/gas/riscv/csr-dw-regnums.d    |  4 ++++
 gas/testsuite/gas/riscv/csr-dw-regnums.s    |  5 +++++
 gas/testsuite/gas/riscv/csr-version-1p10.d  |  8 ++++++++
 gas/testsuite/gas/riscv/csr-version-1p10.l  | 16 ++++++++++++++++
 gas/testsuite/gas/riscv/csr-version-1p11.d  |  8 ++++++++
 gas/testsuite/gas/riscv/csr-version-1p11.l  | 16 ++++++++++++++++
 gas/testsuite/gas/riscv/csr-version-1p12.d  |  8 ++++++++
 gas/testsuite/gas/riscv/csr-version-1p12.l  | 12 ++++++++++++
 gas/testsuite/gas/riscv/csr-version-1p9p1.d |  8 ++++++++
 gas/testsuite/gas/riscv/csr-version-1p9p1.l | 16 ++++++++++++++++
 gas/testsuite/gas/riscv/csr.s               |  6 ++++++
 include/opcode/riscv-opc.h                  | 10 ++++++++++
 14 files changed, 127 insertions(+)

diff --git a/bfd/elfxx-riscv.c b/bfd/elfxx-riscv.c
index 32805e5ee58..bb5726600eb 100644
--- a/bfd/elfxx-riscv.c
+++ b/bfd/elfxx-riscv.c
@@ -1229,6 +1229,7 @@ static struct riscv_supported_ext riscv_supported_std_s_ext[] =
 {
   {"smstateen",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
   {"sscofpmf",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
+  {"sstc",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
   {"svinval",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
   {NULL, 0, 0, 0, 0}
 };
diff --git a/gas/config/tc-riscv.c b/gas/config/tc-riscv.c
index 0f664eb56c5..a987d8252a7 100644
--- a/gas/config/tc-riscv.c
+++ b/gas/config/tc-riscv.c
@@ -69,6 +69,8 @@ enum riscv_csr_class
   CSR_CLASS_SMSTATEEN_32,	/* Smstateen RV32 only */
   CSR_CLASS_SSCOFPMF,		/* Sscofpmf only */
   CSR_CLASS_SSCOFPMF_32,	/* Sscofpmf RV32 only */
+  CSR_CLASS_SSTC,		/* Sstc only */
+  CSR_CLASS_SSTC_32,		/* Sstc RV32 only */
   CSR_CLASS_DEBUG	/* debug CSR */
 };
 
@@ -935,6 +937,13 @@ riscv_csr_address (const char *csr_name,
     case CSR_CLASS_SSCOFPMF:
       extension = "sscofpmf";
       break;
+    case CSR_CLASS_SSTC_32:
+      rv32_only = (xlen == 32);
+      /* Fall through.  */
+    case CSR_CLASS_SSTC:
+      need_check_version = true;
+      extension = "sstc";
+      break;
     case CSR_CLASS_DEBUG:
       break;
     default:
diff --git a/gas/testsuite/gas/riscv/csr-dw-regnums.d b/gas/testsuite/gas/riscv/csr-dw-regnums.d
index 2f353293faa..b4b3806a085 100644
--- a/gas/testsuite/gas/riscv/csr-dw-regnums.d
+++ b/gas/testsuite/gas/riscv/csr-dw-regnums.d
@@ -363,6 +363,10 @@ 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: 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
+  DW_CFA_offset_extended_sf: r4701 \(vstimecmph\) at cfa\+2420
   DW_CFA_offset_extended_sf: r4163 \(utval\) at cfa\+268
   DW_CFA_offset_extended_sf: r4419 \(stval\) at cfa\+1292
   DW_CFA_offset_extended_sf: r4480 \(satp\) at cfa\+1536
diff --git a/gas/testsuite/gas/riscv/csr-dw-regnums.s b/gas/testsuite/gas/riscv/csr-dw-regnums.s
index caac321c6e2..6cfa415ebc2 100644
--- a/gas/testsuite/gas/riscv/csr-dw-regnums.s
+++ b/gas/testsuite/gas/riscv/csr-dw-regnums.s
@@ -359,6 +359,11 @@ _start:
 	.cfi_offset mhpmevent29h, 7412
 	.cfi_offset mhpmevent30h, 7416
 	.cfi_offset mhpmevent31h, 7420
+	# Sstc extension
+	.cfi_offset stimecmp, 1332
+	.cfi_offset stimecmph, 1396
+	.cfi_offset vstimecmp, 2356
+	.cfi_offset vstimecmph, 2420
 	# dropped
 	.cfi_offset ubadaddr, 268	# aliases
 	.cfi_offset sbadaddr, 1292	# aliases
diff --git a/gas/testsuite/gas/riscv/csr-version-1p10.d b/gas/testsuite/gas/riscv/csr-version-1p10.d
index 17fa228a2b8..9732fa3f917 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p10.d
+++ b/gas/testsuite/gas/riscv/csr-version-1p10.d
@@ -701,6 +701,14 @@ 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]+:[ 	]+14d02573[ 	]+csrr[ 	]+a0,stimecmp
+[ 	]+[0-9a-f]+:[ 	]+14d59073[ 	]+csrw[ 	]+stimecmp,a1
+[ 	]+[0-9a-f]+:[ 	]+15d02573[ 	]+csrr[ 	]+a0,stimecmph
+[ 	]+[0-9a-f]+:[ 	]+15d59073[ 	]+csrw[ 	]+stimecmph,a1
+[ 	]+[0-9a-f]+:[ 	]+24d02573[ 	]+csrr[ 	]+a0,0x24d
+[ 	]+[0-9a-f]+:[ 	]+24d59073[ 	]+csrw[ 	]+0x24d,a1
+[ 	]+[0-9a-f]+:[ 	]+25d02573[ 	]+csrr[ 	]+a0,0x25d
+[ 	]+[0-9a-f]+:[ 	]+25d59073[ 	]+csrw[ 	]+0x25d,a1
 [ 	]+[0-9a-f]+:[ 	]+04302573[ 	]+csrr[ 	]+a0,utval
 [ 	]+[0-9a-f]+:[ 	]+04359073[ 	]+csrw[ 	]+utval,a1
 [ 	]+[0-9a-f]+:[ 	]+14302573[ 	]+csrr[ 	]+a0,stval
diff --git a/gas/testsuite/gas/riscv/csr-version-1p10.l b/gas/testsuite/gas/riscv/csr-version-1p10.l
index b763c4b2232..97ed40fda4a 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p10.l
+++ b/gas/testsuite/gas/riscv/csr-version-1p10.l
@@ -602,6 +602,22 @@
 .*Warning: invalid CSR `mhpmevent31h', needs `sscofpmf' extension
 .*Warning: invalid CSR `mhpmevent31h', needs rv32i extension
 .*Warning: invalid CSR `mhpmevent31h', needs `sscofpmf' extension
+.*Warning: invalid CSR `stimecmp', needs `sstc' extension
+.*Warning: invalid CSR `stimecmp', needs `sstc' extension
+.*Warning: invalid CSR `stimecmph', needs rv32i extension
+.*Warning: invalid CSR `stimecmph', needs `sstc' extension
+.*Warning: invalid CSR `stimecmph', needs rv32i extension
+.*Warning: invalid CSR `stimecmph', needs `sstc' extension
+.*Warning: invalid CSR `vstimecmp', needs `sstc' extension
+.*Warning: invalid CSR `vstimecmp' for the privileged spec `1.10'
+.*Warning: invalid CSR `vstimecmp', needs `sstc' extension
+.*Warning: invalid CSR `vstimecmp' for the privileged spec `1.10'
+.*Warning: invalid CSR `vstimecmph', needs rv32i extension
+.*Warning: invalid CSR `vstimecmph', needs `sstc' extension
+.*Warning: invalid CSR `vstimecmph' for the privileged spec `1.10'
+.*Warning: invalid CSR `vstimecmph', needs rv32i extension
+.*Warning: invalid CSR `vstimecmph', needs `sstc' extension
+.*Warning: invalid CSR `vstimecmph' for the privileged spec `1.10'
 .*Warning: invalid CSR `ubadaddr' for the privileged spec `1.10'
 .*Warning: invalid CSR `ubadaddr' for the privileged spec `1.10'
 .*Warning: invalid CSR `sbadaddr' for the privileged spec `1.10'
diff --git a/gas/testsuite/gas/riscv/csr-version-1p11.d b/gas/testsuite/gas/riscv/csr-version-1p11.d
index 1d2640b540e..5190094d21c 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p11.d
+++ b/gas/testsuite/gas/riscv/csr-version-1p11.d
@@ -701,6 +701,14 @@ 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]+:[ 	]+14d02573[ 	]+csrr[ 	]+a0,stimecmp
+[ 	]+[0-9a-f]+:[ 	]+14d59073[ 	]+csrw[ 	]+stimecmp,a1
+[ 	]+[0-9a-f]+:[ 	]+15d02573[ 	]+csrr[ 	]+a0,stimecmph
+[ 	]+[0-9a-f]+:[ 	]+15d59073[ 	]+csrw[ 	]+stimecmph,a1
+[ 	]+[0-9a-f]+:[ 	]+24d02573[ 	]+csrr[ 	]+a0,0x24d
+[ 	]+[0-9a-f]+:[ 	]+24d59073[ 	]+csrw[ 	]+0x24d,a1
+[ 	]+[0-9a-f]+:[ 	]+25d02573[ 	]+csrr[ 	]+a0,0x25d
+[ 	]+[0-9a-f]+:[ 	]+25d59073[ 	]+csrw[ 	]+0x25d,a1
 [ 	]+[0-9a-f]+:[ 	]+04302573[ 	]+csrr[ 	]+a0,utval
 [ 	]+[0-9a-f]+:[ 	]+04359073[ 	]+csrw[ 	]+utval,a1
 [ 	]+[0-9a-f]+:[ 	]+14302573[ 	]+csrr[ 	]+a0,stval
diff --git a/gas/testsuite/gas/riscv/csr-version-1p11.l b/gas/testsuite/gas/riscv/csr-version-1p11.l
index 3d129511534..0aa7c49a613 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p11.l
+++ b/gas/testsuite/gas/riscv/csr-version-1p11.l
@@ -600,6 +600,22 @@
 .*Warning: invalid CSR `mhpmevent31h', needs `sscofpmf' extension
 .*Warning: invalid CSR `mhpmevent31h', needs rv32i extension
 .*Warning: invalid CSR `mhpmevent31h', needs `sscofpmf' extension
+.*Warning: invalid CSR `stimecmp', needs `sstc' extension
+.*Warning: invalid CSR `stimecmp', needs `sstc' extension
+.*Warning: invalid CSR `stimecmph', needs rv32i extension
+.*Warning: invalid CSR `stimecmph', needs `sstc' extension
+.*Warning: invalid CSR `stimecmph', needs rv32i extension
+.*Warning: invalid CSR `stimecmph', needs `sstc' extension
+.*Warning: invalid CSR `vstimecmp', needs `sstc' extension
+.*Warning: invalid CSR `vstimecmp' for the privileged spec `1.11'
+.*Warning: invalid CSR `vstimecmp', needs `sstc' extension
+.*Warning: invalid CSR `vstimecmp' for the privileged spec `1.11'
+.*Warning: invalid CSR `vstimecmph', needs rv32i extension
+.*Warning: invalid CSR `vstimecmph', needs `sstc' extension
+.*Warning: invalid CSR `vstimecmph' for the privileged spec `1.11'
+.*Warning: invalid CSR `vstimecmph', needs rv32i extension
+.*Warning: invalid CSR `vstimecmph', needs `sstc' extension
+.*Warning: invalid CSR `vstimecmph' for the privileged spec `1.11'
 .*Warning: invalid CSR `ubadaddr' for the privileged spec `1.11'
 .*Warning: invalid CSR `ubadaddr' for the privileged spec `1.11'
 .*Warning: invalid CSR `sbadaddr' for the privileged spec `1.11'
diff --git a/gas/testsuite/gas/riscv/csr-version-1p12.d b/gas/testsuite/gas/riscv/csr-version-1p12.d
index 60f19bff874..728e647c552 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p12.d
+++ b/gas/testsuite/gas/riscv/csr-version-1p12.d
@@ -701,6 +701,14 @@ 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]+:[ 	]+14d02573[ 	]+csrr[ 	]+a0,stimecmp
+[ 	]+[0-9a-f]+:[ 	]+14d59073[ 	]+csrw[ 	]+stimecmp,a1
+[ 	]+[0-9a-f]+:[ 	]+15d02573[ 	]+csrr[ 	]+a0,stimecmph
+[ 	]+[0-9a-f]+:[ 	]+15d59073[ 	]+csrw[ 	]+stimecmph,a1
+[ 	]+[0-9a-f]+:[ 	]+24d02573[ 	]+csrr[ 	]+a0,vstimecmp
+[ 	]+[0-9a-f]+:[ 	]+24d59073[ 	]+csrw[ 	]+vstimecmp,a1
+[ 	]+[0-9a-f]+:[ 	]+25d02573[ 	]+csrr[ 	]+a0,vstimecmph
+[ 	]+[0-9a-f]+:[ 	]+25d59073[ 	]+csrw[ 	]+vstimecmph,a1
 [ 	]+[0-9a-f]+:[ 	]+04302573[ 	]+csrr[ 	]+a0,0x43
 [ 	]+[0-9a-f]+:[ 	]+04359073[ 	]+csrw[ 	]+0x43,a1
 [ 	]+[0-9a-f]+:[ 	]+14302573[ 	]+csrr[ 	]+a0,stval
diff --git a/gas/testsuite/gas/riscv/csr-version-1p12.l b/gas/testsuite/gas/riscv/csr-version-1p12.l
index b88a20d7254..f27a83f6a88 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p12.l
+++ b/gas/testsuite/gas/riscv/csr-version-1p12.l
@@ -396,6 +396,18 @@
 .*Warning: invalid CSR `mhpmevent31h', needs `sscofpmf' extension
 .*Warning: invalid CSR `mhpmevent31h', needs rv32i extension
 .*Warning: invalid CSR `mhpmevent31h', needs `sscofpmf' extension
+.*Warning: invalid CSR `stimecmp', needs `sstc' extension
+.*Warning: invalid CSR `stimecmp', needs `sstc' extension
+.*Warning: invalid CSR `stimecmph', needs rv32i extension
+.*Warning: invalid CSR `stimecmph', needs `sstc' extension
+.*Warning: invalid CSR `stimecmph', needs rv32i extension
+.*Warning: invalid CSR `stimecmph', needs `sstc' extension
+.*Warning: invalid CSR `vstimecmp', needs `sstc' extension
+.*Warning: invalid CSR `vstimecmp', needs `sstc' extension
+.*Warning: invalid CSR `vstimecmph', needs rv32i extension
+.*Warning: invalid CSR `vstimecmph', needs `sstc' extension
+.*Warning: invalid CSR `vstimecmph', needs rv32i extension
+.*Warning: invalid CSR `vstimecmph', needs `sstc' extension
 .*Warning: invalid CSR `ubadaddr' for the privileged spec `1.12'
 .*Warning: invalid CSR `ubadaddr' for the privileged spec `1.12'
 .*Warning: invalid CSR `sbadaddr' for the privileged spec `1.12'
diff --git a/gas/testsuite/gas/riscv/csr-version-1p9p1.d b/gas/testsuite/gas/riscv/csr-version-1p9p1.d
index 77b8c5cd3f5..c8e2e95a6ed 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p9p1.d
+++ b/gas/testsuite/gas/riscv/csr-version-1p9p1.d
@@ -701,6 +701,14 @@ 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]+:[ 	]+14d02573[ 	]+csrr[ 	]+a0,stimecmp
+[ 	]+[0-9a-f]+:[ 	]+14d59073[ 	]+csrw[ 	]+stimecmp,a1
+[ 	]+[0-9a-f]+:[ 	]+15d02573[ 	]+csrr[ 	]+a0,stimecmph
+[ 	]+[0-9a-f]+:[ 	]+15d59073[ 	]+csrw[ 	]+stimecmph,a1
+[ 	]+[0-9a-f]+:[ 	]+24d02573[ 	]+csrr[ 	]+a0,0x24d
+[ 	]+[0-9a-f]+:[ 	]+24d59073[ 	]+csrw[ 	]+0x24d,a1
+[ 	]+[0-9a-f]+:[ 	]+25d02573[ 	]+csrr[ 	]+a0,0x25d
+[ 	]+[0-9a-f]+:[ 	]+25d59073[ 	]+csrw[ 	]+0x25d,a1
 [ 	]+[0-9a-f]+:[ 	]+04302573[ 	]+csrr[ 	]+a0,ubadaddr
 [ 	]+[0-9a-f]+:[ 	]+04359073[ 	]+csrw[ 	]+ubadaddr,a1
 [ 	]+[0-9a-f]+:[ 	]+14302573[ 	]+csrr[ 	]+a0,sbadaddr
diff --git a/gas/testsuite/gas/riscv/csr-version-1p9p1.l b/gas/testsuite/gas/riscv/csr-version-1p9p1.l
index d69e0809eb3..89a52486cc3 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p9p1.l
+++ b/gas/testsuite/gas/riscv/csr-version-1p9p1.l
@@ -652,6 +652,22 @@
 .*Warning: invalid CSR `mhpmevent31h', needs `sscofpmf' extension
 .*Warning: invalid CSR `mhpmevent31h', needs rv32i extension
 .*Warning: invalid CSR `mhpmevent31h', needs `sscofpmf' extension
+.*Warning: invalid CSR `stimecmp', needs `sstc' extension
+.*Warning: invalid CSR `stimecmp', needs `sstc' extension
+.*Warning: invalid CSR `stimecmph', needs rv32i extension
+.*Warning: invalid CSR `stimecmph', needs `sstc' extension
+.*Warning: invalid CSR `stimecmph', needs rv32i extension
+.*Warning: invalid CSR `stimecmph', needs `sstc' extension
+.*Warning: invalid CSR `vstimecmp', needs `sstc' extension
+.*Warning: invalid CSR `vstimecmp' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `vstimecmp', needs `sstc' extension
+.*Warning: invalid CSR `vstimecmp' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `vstimecmph', needs rv32i extension
+.*Warning: invalid CSR `vstimecmph', needs `sstc' extension
+.*Warning: invalid CSR `vstimecmph' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `vstimecmph', needs rv32i extension
+.*Warning: invalid CSR `vstimecmph', needs `sstc' extension
+.*Warning: invalid CSR `vstimecmph' for the privileged spec `1.9.1'
 .*Warning: invalid CSR `utval' for the privileged spec `1.9.1'
 .*Warning: invalid CSR `utval' for the privileged spec `1.9.1'
 .*Warning: invalid CSR `fflags', needs `f' extension
diff --git a/gas/testsuite/gas/riscv/csr.s b/gas/testsuite/gas/riscv/csr.s
index 2a723123f1b..128aeb83a04 100644
--- a/gas/testsuite/gas/riscv/csr.s
+++ b/gas/testsuite/gas/riscv/csr.s
@@ -391,6 +391,12 @@
 	csr mhpmevent30h
 	csr mhpmevent31h
 
+	# Sstc extension
+	csr stimecmp
+	csr stimecmph
+	csr vstimecmp
+	csr vstimecmph
+
 	# Supported in previous priv spec, but dropped now
 
 	csr ubadaddr		# 0x043 in 1.9.1, but the value is utval since 1.10
diff --git a/include/opcode/riscv-opc.h b/include/opcode/riscv-opc.h
index f91841d88c1..da695a58779 100644
--- a/include/opcode/riscv-opc.h
+++ b/include/opcode/riscv-opc.h
@@ -2484,6 +2484,11 @@
 #define CSR_MHPMEVENT29H 0x73d
 #define CSR_MHPMEVENT30H 0x73e
 #define CSR_MHPMEVENT31H 0x73f
+/* Sstc extension */
+#define CSR_STIMECMP 0x14d
+#define CSR_STIMECMPH 0x15d
+#define CSR_VSTIMECMP 0x24d
+#define CSR_VSTIMECMPH 0x25d
 /* Unprivileged Floating-Point CSR addresses.  */
 #define CSR_FFLAGS 0x1
 #define CSR_FRM 0x2
@@ -3201,6 +3206,11 @@ 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)
+/* Sstc extension */
+DECLARE_CSR(stimecmp, CSR_STIMECMP, CSR_CLASS_SSTC, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(stimecmph, CSR_STIMECMPH, CSR_CLASS_SSTC_32, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(vstimecmp, CSR_VSTIMECMP, CSR_CLASS_SSTC, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(vstimecmph, CSR_VSTIMECMPH, CSR_CLASS_SSTC_32, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
 /* Dropped CSRs.  */
 DECLARE_CSR(mbase, CSR_MBASE, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_1P10)
 DECLARE_CSR(mbound, CSR_MBOUND, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_1P10)
-- 
2.34.1


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

* [PATCH v3 0/4] RISC-V: Add CSRs for several supervisor extensions
  2022-05-24  9:35   ` [PATCH v2 0/3] RISC-V: Add CSRs for several supervisor extensions Tsukasa OI
                       ` (2 preceding siblings ...)
  2022-05-24  9:35     ` [PATCH v2 3/3] RISC-V: Add 'Sstc' extension and " Tsukasa OI
@ 2022-06-24  2:51     ` Tsukasa OI
  2022-06-24  2:51       ` [PATCH v3 1/4] RISC-V: Add new CSR feature gate handling (RV32,H) Tsukasa OI
                         ` (4 more replies)
  3 siblings, 5 replies; 32+ messages in thread
From: Tsukasa OI @ 2022-06-24  2:51 UTC (permalink / raw)
  To: Tsukasa OI, Kito Cheng, Nelson Chu, Palmer Dabbelt; +Cc: binutils

v1:
<https://sourceware.org/pipermail/binutils/2022-February/119858.html>
v2:
<https://sourceware.org/pipermail/binutils/2022-May/120974.html>
CURRENT (GitHub):
<https://github.com/a4lg/binutils-gdb/tree/riscv-s-exts-csrs>

This patchset adds CSRs for following extensions:

-   Smstateen
-   Sscofpmf
-   Sstc

Because 'H' extension and related CSR class is now implemented, we can
now safely and consistently implement hypervisor-related CSR feature
gate masking.

[CHANGES: v2 -> v3]
-   Follow up to now implemented 'H' extension support
-   Add (and refactor) complex CSR feature gate handling (on H and RV32)
-   Make new CSRs independent to privileged architecture
    (as initially suggested by Nelson Chu)

Thanks,
Tsukasa




Tsukasa OI (4):
  RISC-V: Add new CSR feature gate handling (RV32,H)
  RISC-V: Add 'Smstateen' extension and its CSRs
  RISC-V: Add 'Sscofpmf' extension with its CSRs
  RISC-V: Add 'Sstc' extension and its CSRs

 bfd/elfxx-riscv.c                           |   3 +
 gas/config/tc-riscv.c                       |  47 ++++-
 gas/testsuite/gas/riscv/csr-dw-regnums.d    |  54 +++++
 gas/testsuite/gas/riscv/csr-dw-regnums.s    |  57 ++++++
 gas/testsuite/gas/riscv/csr-version-1p10.d  | 108 ++++++++++
 gas/testsuite/gas/riscv/csr-version-1p10.l  | 207 ++++++++++++++++++++
 gas/testsuite/gas/riscv/csr-version-1p11.d  | 108 ++++++++++
 gas/testsuite/gas/riscv/csr-version-1p11.l  | 207 ++++++++++++++++++++
 gas/testsuite/gas/riscv/csr-version-1p12.d  | 108 ++++++++++
 gas/testsuite/gas/riscv/csr-version-1p12.l  | 207 ++++++++++++++++++++
 gas/testsuite/gas/riscv/csr-version-1p9p1.d | 108 ++++++++++
 gas/testsuite/gas/riscv/csr-version-1p9p1.l | 207 ++++++++++++++++++++
 gas/testsuite/gas/riscv/csr.s               |  60 ++++++
 include/opcode/riscv-opc.h                  | 114 +++++++++++
 14 files changed, 1591 insertions(+), 4 deletions(-)


base-commit: 54603ee2aeaf248220f0f440c322ff02e98cd403
-- 
2.34.1


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

* [PATCH v3 1/4] RISC-V: Add new CSR feature gate handling (RV32,H)
  2022-06-24  2:51     ` [PATCH v3 0/4] RISC-V: Add CSRs for several supervisor extensions Tsukasa OI
@ 2022-06-24  2:51       ` Tsukasa OI
  2022-06-24  2:51       ` [PATCH v3 2/4] RISC-V: Add 'Smstateen' extension and its CSRs Tsukasa OI
                         ` (3 subsequent siblings)
  4 siblings, 0 replies; 32+ messages in thread
From: Tsukasa OI @ 2022-06-24  2:51 UTC (permalink / raw)
  To: Tsukasa OI, Kito Cheng, Nelson Chu, Palmer Dabbelt; +Cc: binutils

To support feature gate like Smstateen && H, this commit adds certain
CSR feature gate handling.  It also changes how RV32-only CSRs are
handled for cleanliness.

gas/ChangeLog:

	* config/tc-riscv.c (riscv_csr_address): Add CSR feature gate
	handling for H.  Change handling on RV32.
---
 gas/config/tc-riscv.c | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/gas/config/tc-riscv.c b/gas/config/tc-riscv.c
index 6b04dc98b76..6c5938b5596 100644
--- a/gas/config/tc-riscv.c
+++ b/gas/config/tc-riscv.c
@@ -899,20 +899,21 @@ riscv_csr_address (const char *csr_name,
   struct riscv_csr_extra *saved_entry = entry;
   enum riscv_csr_class csr_class = entry->csr_class;
   bool need_check_version = false;
-  bool rv32_only = true;
+  bool is_rv32_only = false;
+  bool is_h_required = false;
   const char* extension = NULL;
 
   switch (csr_class)
     {
     case CSR_CLASS_I_32:
-      rv32_only = (xlen == 32);
+      is_rv32_only = true;
       /* Fall through.  */
     case CSR_CLASS_I:
       need_check_version = true;
       extension = "i";
       break;
     case CSR_CLASS_H_32:
-      rv32_only = (xlen == 32);
+      is_rv32_only = true;
       /* Fall through.  */
     case CSR_CLASS_H:
       extension = "h";
@@ -934,8 +935,10 @@ riscv_csr_address (const char *csr_name,
 
   if (riscv_opts.csr_check)
     {
-      if (!rv32_only)
+      if (is_rv32_only && xlen != 32)
 	as_warn (_("invalid CSR `%s', needs rv32i extension"), csr_name);
+      if (is_h_required && !riscv_subset_supports (&riscv_rps_as, "h"))
+	as_warn (_("invalid CSR `%s', needs `h' extension"), csr_name);
 
       if (extension != NULL
 	  && !riscv_subset_supports (&riscv_rps_as, extension))
-- 
2.34.1


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

* [PATCH v3 2/4] RISC-V: Add 'Smstateen' extension and its CSRs
  2022-06-24  2:51     ` [PATCH v3 0/4] RISC-V: Add CSRs for several supervisor extensions Tsukasa OI
  2022-06-24  2:51       ` [PATCH v3 1/4] RISC-V: Add new CSR feature gate handling (RV32,H) Tsukasa OI
@ 2022-06-24  2:51       ` Tsukasa OI
  2022-06-24  2:51       ` [PATCH v3 3/4] RISC-V: Add 'Sscofpmf' extension with " Tsukasa OI
                         ` (2 subsequent siblings)
  4 siblings, 0 replies; 32+ messages in thread
From: Tsukasa OI @ 2022-06-24  2:51 UTC (permalink / raw)
  To: Tsukasa OI, Kito Cheng, Nelson Chu, Palmer Dabbelt; +Cc: binutils

This commit adds State Enable Extension (Smstateen) and its CSRs.

bfd/ChangeLog:

	* elfxx-riscv.c (riscv_supported_std_s_ext): Add 'Smstateen'
	extension to valid 'S' extension list.

gas/ChangeLog:

	* config/tc-riscv.c (enum riscv_csr_class): Add CSR classes for
	'Smstateen' extension. (riscv_csr_address): Add handling for
	new CSR classes.
	* testsuite/gas/riscv/csr-dw-regnums.s: Add new CSRs.
	* testsuite/gas/riscv/csr-dw-regnums.d: 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_MSTATEEN0, CSR_MSTATEEN1,
	CSR_MSTATEEN2, CSR_MSTATEEN3, CSR_SSTATEEN0, CSR_SSTATEEN1,
	CSR_SSTATEEN2, CSR_SSTATEEN3, CSR_HSTATEEN0, CSR_HSTATEEN1,
	CSR_HSTATEEN2, CSR_HSTATEEN3, CSR_MSTATEEN0H, CSR_MSTATEEN1H,
	CSR_MSTATEEN2H, CSR_MSTATEEN3H, CSR_HSTATEEN0H, CSR_HSTATEEN1H,
	CSR_HSTATEEN2H, CSR_HSTATEEN3H): New CSR macros.
---
 bfd/elfxx-riscv.c                           |  1 +
 gas/config/tc-riscv.c                       | 14 ++++
 gas/testsuite/gas/riscv/csr-dw-regnums.d    | 20 ++++++
 gas/testsuite/gas/riscv/csr-dw-regnums.s    | 21 ++++++
 gas/testsuite/gas/riscv/csr-version-1p10.d  | 40 ++++++++++++
 gas/testsuite/gas/riscv/csr-version-1p10.l  | 72 +++++++++++++++++++++
 gas/testsuite/gas/riscv/csr-version-1p11.d  | 40 ++++++++++++
 gas/testsuite/gas/riscv/csr-version-1p11.l  | 72 +++++++++++++++++++++
 gas/testsuite/gas/riscv/csr-version-1p12.d  | 40 ++++++++++++
 gas/testsuite/gas/riscv/csr-version-1p12.l  | 72 +++++++++++++++++++++
 gas/testsuite/gas/riscv/csr-version-1p9p1.d | 40 ++++++++++++
 gas/testsuite/gas/riscv/csr-version-1p9p1.l | 72 +++++++++++++++++++++
 gas/testsuite/gas/riscv/csr.s               | 22 +++++++
 include/opcode/riscv-opc.h                  | 42 ++++++++++++
 14 files changed, 568 insertions(+)

diff --git a/bfd/elfxx-riscv.c b/bfd/elfxx-riscv.c
index f920e0ce9ff..f72b827651e 100644
--- a/bfd/elfxx-riscv.c
+++ b/bfd/elfxx-riscv.c
@@ -1231,6 +1231,7 @@ static struct riscv_supported_ext riscv_supported_std_z_ext[] =
 
 static struct riscv_supported_ext riscv_supported_std_s_ext[] =
 {
+  {"smstateen",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
   {"svinval",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
   {NULL, 0, 0, 0, 0}
 };
diff --git a/gas/config/tc-riscv.c b/gas/config/tc-riscv.c
index 6c5938b5596..660b2dd58bb 100644
--- a/gas/config/tc-riscv.c
+++ b/gas/config/tc-riscv.c
@@ -68,6 +68,10 @@ enum riscv_csr_class
   CSR_CLASS_DEBUG,	/* debug CSR */
   CSR_CLASS_H,		/* hypervisor */
   CSR_CLASS_H_32,	/* hypervisor, rv32 only */
+  CSR_CLASS_SMSTATEEN,		/* Smstateen only */
+  CSR_CLASS_SMSTATEEN_AND_H,	/* Smstateen only (with H) */
+  CSR_CLASS_SMSTATEEN_32,	/* Smstateen RV32 only */
+  CSR_CLASS_SMSTATEEN_AND_H_32,	/* Smstateen RV32 only (with H) */
 };
 
 /* This structure holds all restricted conditions for a CSR.  */
@@ -927,6 +931,16 @@ riscv_csr_address (const char *csr_name,
     case CSR_CLASS_V:
       extension = "v";
       break;
+    case CSR_CLASS_SMSTATEEN:
+    case CSR_CLASS_SMSTATEEN_AND_H:
+    case CSR_CLASS_SMSTATEEN_32:
+    case CSR_CLASS_SMSTATEEN_AND_H_32:
+      is_rv32_only = (csr_class == CSR_CLASS_SMSTATEEN_32
+		      || csr_class == CSR_CLASS_SMSTATEEN_AND_H_32);
+      is_h_required = (csr_class == CSR_CLASS_SMSTATEEN_AND_H
+		      || csr_class == CSR_CLASS_SMSTATEEN_AND_H_32);
+      extension = "smstateen";
+      break;
     case CSR_CLASS_DEBUG:
       break;
     default:
diff --git a/gas/testsuite/gas/riscv/csr-dw-regnums.d b/gas/testsuite/gas/riscv/csr-dw-regnums.d
index 23ceba193ca..0c9ec6e4035 100644
--- a/gas/testsuite/gas/riscv/csr-dw-regnums.d
+++ b/gas/testsuite/gas/riscv/csr-dw-regnums.d
@@ -313,6 +313,26 @@ Contents of the .* section:
   DW_CFA_offset_extended_sf: r4675 \(vstval\) at cfa\+2316
   DW_CFA_offset_extended_sf: r4676 \(vsip\) at cfa\+2320
   DW_CFA_offset_extended_sf: r4736 \(vsatp\) at cfa\+2560
+  DW_CFA_offset_extended_sf: r4876 \(mstateen0\) at cfa\+3120
+  DW_CFA_offset_extended_sf: r4877 \(mstateen1\) at cfa\+3124
+  DW_CFA_offset_extended_sf: r4878 \(mstateen2\) at cfa\+3128
+  DW_CFA_offset_extended_sf: r4879 \(mstateen3\) at cfa\+3132
+  DW_CFA_offset_extended_sf: r4364 \(sstateen0\) at cfa\+1072
+  DW_CFA_offset_extended_sf: r4365 \(sstateen1\) at cfa\+1076
+  DW_CFA_offset_extended_sf: r4366 \(sstateen2\) at cfa\+1080
+  DW_CFA_offset_extended_sf: r4367 \(sstateen3\) at cfa\+1084
+  DW_CFA_offset_extended_sf: r5644 \(hstateen0\) at cfa\+6192
+  DW_CFA_offset_extended_sf: r5645 \(hstateen1\) at cfa\+6196
+  DW_CFA_offset_extended_sf: r5646 \(hstateen2\) at cfa\+6200
+  DW_CFA_offset_extended_sf: r5647 \(hstateen3\) at cfa\+6204
+  DW_CFA_offset_extended_sf: r4892 \(mstateen0h\) at cfa\+3184
+  DW_CFA_offset_extended_sf: r4893 \(mstateen1h\) at cfa\+3188
+  DW_CFA_offset_extended_sf: r4894 \(mstateen2h\) at cfa\+3192
+  DW_CFA_offset_extended_sf: r4895 \(mstateen3h\) at cfa\+3196
+  DW_CFA_offset_extended_sf: r5660 \(hstateen0h\) at cfa\+6256
+  DW_CFA_offset_extended_sf: r5661 \(hstateen1h\) at cfa\+6260
+  DW_CFA_offset_extended_sf: r5662 \(hstateen2h\) at cfa\+6264
+  DW_CFA_offset_extended_sf: r5663 \(hstateen3h\) at cfa\+6268
   DW_CFA_offset_extended_sf: r4163 \(utval\) at cfa\+268
   DW_CFA_offset_extended_sf: r4419 \(stval\) at cfa\+1292
   DW_CFA_offset_extended_sf: r4480 \(satp\) at cfa\+1536
diff --git a/gas/testsuite/gas/riscv/csr-dw-regnums.s b/gas/testsuite/gas/riscv/csr-dw-regnums.s
index 4a243ad7b0f..2afadac49f6 100644
--- a/gas/testsuite/gas/riscv/csr-dw-regnums.s
+++ b/gas/testsuite/gas/riscv/csr-dw-regnums.s
@@ -307,6 +307,27 @@ _start:
 	.cfi_offset vstval, 2316
 	.cfi_offset vsip, 2320
 	.cfi_offset vsatp, 2560
+	# Smstateen extension
+	.cfi_offset mstateen0, 3120
+	.cfi_offset mstateen1, 3124
+	.cfi_offset mstateen2, 3128
+	.cfi_offset mstateen3, 3132
+	.cfi_offset sstateen0, 1072
+	.cfi_offset sstateen1, 1076
+	.cfi_offset sstateen2, 1080
+	.cfi_offset sstateen3, 1084
+	.cfi_offset hstateen0, 6192
+	.cfi_offset hstateen1, 6196
+	.cfi_offset hstateen2, 6200
+	.cfi_offset hstateen3, 6204
+	.cfi_offset mstateen0h, 3184
+	.cfi_offset mstateen1h, 3188
+	.cfi_offset mstateen2h, 3192
+	.cfi_offset mstateen3h, 3196
+	.cfi_offset hstateen0h, 6256
+	.cfi_offset hstateen1h, 6260
+	.cfi_offset hstateen2h, 6264
+	.cfi_offset hstateen3h, 6268
 	# dropped
 	.cfi_offset ubadaddr, 268	# aliases
 	.cfi_offset sbadaddr, 1292	# aliases
diff --git a/gas/testsuite/gas/riscv/csr-version-1p10.d b/gas/testsuite/gas/riscv/csr-version-1p10.d
index c39cbf3a223..65b370b5f77 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p10.d
+++ b/gas/testsuite/gas/riscv/csr-version-1p10.d
@@ -601,6 +601,46 @@ Disassembly of section .text:
 [ 	]+[0-9a-f]+:[ 	]+24459073[ 	]+csrw[ 	]+vsip,a1
 [ 	]+[0-9a-f]+:[ 	]+28002573[ 	]+csrr[ 	]+a0,vsatp
 [ 	]+[0-9a-f]+:[ 	]+28059073[ 	]+csrw[ 	]+vsatp,a1
+[ 	]+[0-9a-f]+:[ 	]+30c02573[ 	]+csrr[ 	]+a0,mstateen0
+[ 	]+[0-9a-f]+:[ 	]+30c59073[ 	]+csrw[ 	]+mstateen0,a1
+[ 	]+[0-9a-f]+:[ 	]+30d02573[ 	]+csrr[ 	]+a0,mstateen1
+[ 	]+[0-9a-f]+:[ 	]+30d59073[ 	]+csrw[ 	]+mstateen1,a1
+[ 	]+[0-9a-f]+:[ 	]+30e02573[ 	]+csrr[ 	]+a0,mstateen2
+[ 	]+[0-9a-f]+:[ 	]+30e59073[ 	]+csrw[ 	]+mstateen2,a1
+[ 	]+[0-9a-f]+:[ 	]+30f02573[ 	]+csrr[ 	]+a0,mstateen3
+[ 	]+[0-9a-f]+:[ 	]+30f59073[ 	]+csrw[ 	]+mstateen3,a1
+[ 	]+[0-9a-f]+:[ 	]+10c02573[ 	]+csrr[ 	]+a0,sstateen0
+[ 	]+[0-9a-f]+:[ 	]+10c59073[ 	]+csrw[ 	]+sstateen0,a1
+[ 	]+[0-9a-f]+:[ 	]+10d02573[ 	]+csrr[ 	]+a0,sstateen1
+[ 	]+[0-9a-f]+:[ 	]+10d59073[ 	]+csrw[ 	]+sstateen1,a1
+[ 	]+[0-9a-f]+:[ 	]+10e02573[ 	]+csrr[ 	]+a0,sstateen2
+[ 	]+[0-9a-f]+:[ 	]+10e59073[ 	]+csrw[ 	]+sstateen2,a1
+[ 	]+[0-9a-f]+:[ 	]+10f02573[ 	]+csrr[ 	]+a0,sstateen3
+[ 	]+[0-9a-f]+:[ 	]+10f59073[ 	]+csrw[ 	]+sstateen3,a1
+[ 	]+[0-9a-f]+:[ 	]+60c02573[ 	]+csrr[ 	]+a0,hstateen0
+[ 	]+[0-9a-f]+:[ 	]+60c59073[ 	]+csrw[ 	]+hstateen0,a1
+[ 	]+[0-9a-f]+:[ 	]+60d02573[ 	]+csrr[ 	]+a0,hstateen1
+[ 	]+[0-9a-f]+:[ 	]+60d59073[ 	]+csrw[ 	]+hstateen1,a1
+[ 	]+[0-9a-f]+:[ 	]+60e02573[ 	]+csrr[ 	]+a0,hstateen2
+[ 	]+[0-9a-f]+:[ 	]+60e59073[ 	]+csrw[ 	]+hstateen2,a1
+[ 	]+[0-9a-f]+:[ 	]+60f02573[ 	]+csrr[ 	]+a0,hstateen3
+[ 	]+[0-9a-f]+:[ 	]+60f59073[ 	]+csrw[ 	]+hstateen3,a1
+[ 	]+[0-9a-f]+:[ 	]+31c02573[ 	]+csrr[ 	]+a0,mstateen0h
+[ 	]+[0-9a-f]+:[ 	]+31c59073[ 	]+csrw[ 	]+mstateen0h,a1
+[ 	]+[0-9a-f]+:[ 	]+31d02573[ 	]+csrr[ 	]+a0,mstateen1h
+[ 	]+[0-9a-f]+:[ 	]+31d59073[ 	]+csrw[ 	]+mstateen1h,a1
+[ 	]+[0-9a-f]+:[ 	]+31e02573[ 	]+csrr[ 	]+a0,mstateen2h
+[ 	]+[0-9a-f]+:[ 	]+31e59073[ 	]+csrw[ 	]+mstateen2h,a1
+[ 	]+[0-9a-f]+:[ 	]+31f02573[ 	]+csrr[ 	]+a0,mstateen3h
+[ 	]+[0-9a-f]+:[ 	]+31f59073[ 	]+csrw[ 	]+mstateen3h,a1
+[ 	]+[0-9a-f]+:[ 	]+61c02573[ 	]+csrr[ 	]+a0,hstateen0h
+[ 	]+[0-9a-f]+:[ 	]+61c59073[ 	]+csrw[ 	]+hstateen0h,a1
+[ 	]+[0-9a-f]+:[ 	]+61d02573[ 	]+csrr[ 	]+a0,hstateen1h
+[ 	]+[0-9a-f]+:[ 	]+61d59073[ 	]+csrw[ 	]+hstateen1h,a1
+[ 	]+[0-9a-f]+:[ 	]+61e02573[ 	]+csrr[ 	]+a0,hstateen2h
+[ 	]+[0-9a-f]+:[ 	]+61e59073[ 	]+csrw[ 	]+hstateen2h,a1
+[ 	]+[0-9a-f]+:[ 	]+61f02573[ 	]+csrr[ 	]+a0,hstateen3h
+[ 	]+[0-9a-f]+:[ 	]+61f59073[ 	]+csrw[ 	]+hstateen3h,a1
 [ 	]+[0-9a-f]+:[ 	]+04302573[ 	]+csrr[ 	]+a0,utval
 [ 	]+[0-9a-f]+:[ 	]+04359073[ 	]+csrw[ 	]+utval,a1
 [ 	]+[0-9a-f]+:[ 	]+14302573[ 	]+csrr[ 	]+a0,stval
diff --git a/gas/testsuite/gas/riscv/csr-version-1p10.l b/gas/testsuite/gas/riscv/csr-version-1p10.l
index d00bce89f8d..b1e42268e92 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p10.l
+++ b/gas/testsuite/gas/riscv/csr-version-1p10.l
@@ -411,6 +411,78 @@
 .*Warning: invalid CSR `vsip', needs `h' extension
 .*Warning: invalid CSR `vsatp', needs `h' extension
 .*Warning: invalid CSR `vsatp', needs `h' extension
+.*Warning: invalid CSR `mstateen0', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen0', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen1', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen1', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen2', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen2', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen3', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen3', needs `smstateen' extension
+.*Warning: invalid CSR `sstateen0', needs `smstateen' extension
+.*Warning: invalid CSR `sstateen0', needs `smstateen' extension
+.*Warning: invalid CSR `sstateen1', needs `smstateen' extension
+.*Warning: invalid CSR `sstateen1', needs `smstateen' extension
+.*Warning: invalid CSR `sstateen2', needs `smstateen' extension
+.*Warning: invalid CSR `sstateen2', needs `smstateen' extension
+.*Warning: invalid CSR `sstateen3', needs `smstateen' extension
+.*Warning: invalid CSR `sstateen3', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen0', needs `h' extension
+.*Warning: invalid CSR `hstateen0', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen0', needs `h' extension
+.*Warning: invalid CSR `hstateen0', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen1', needs `h' extension
+.*Warning: invalid CSR `hstateen1', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen1', needs `h' extension
+.*Warning: invalid CSR `hstateen1', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen2', needs `h' extension
+.*Warning: invalid CSR `hstateen2', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen2', needs `h' extension
+.*Warning: invalid CSR `hstateen2', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen3', needs `h' extension
+.*Warning: invalid CSR `hstateen3', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen3', needs `h' extension
+.*Warning: invalid CSR `hstateen3', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen0h', needs rv32i extension
+.*Warning: invalid CSR `mstateen0h', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen0h', needs rv32i extension
+.*Warning: invalid CSR `mstateen0h', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen1h', needs rv32i extension
+.*Warning: invalid CSR `mstateen1h', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen1h', needs rv32i extension
+.*Warning: invalid CSR `mstateen1h', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen2h', needs rv32i extension
+.*Warning: invalid CSR `mstateen2h', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen2h', needs rv32i extension
+.*Warning: invalid CSR `mstateen2h', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen3h', needs rv32i extension
+.*Warning: invalid CSR `mstateen3h', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen3h', needs rv32i extension
+.*Warning: invalid CSR `mstateen3h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen0h', needs rv32i extension
+.*Warning: invalid CSR `hstateen0h', needs `h' extension
+.*Warning: invalid CSR `hstateen0h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen0h', needs rv32i extension
+.*Warning: invalid CSR `hstateen0h', needs `h' extension
+.*Warning: invalid CSR `hstateen0h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen1h', needs rv32i extension
+.*Warning: invalid CSR `hstateen1h', needs `h' extension
+.*Warning: invalid CSR `hstateen1h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen1h', needs rv32i extension
+.*Warning: invalid CSR `hstateen1h', needs `h' extension
+.*Warning: invalid CSR `hstateen1h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen2h', needs rv32i extension
+.*Warning: invalid CSR `hstateen2h', needs `h' extension
+.*Warning: invalid CSR `hstateen2h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen2h', needs rv32i extension
+.*Warning: invalid CSR `hstateen2h', needs `h' extension
+.*Warning: invalid CSR `hstateen2h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen3h', needs rv32i extension
+.*Warning: invalid CSR `hstateen3h', needs `h' extension
+.*Warning: invalid CSR `hstateen3h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen3h', needs rv32i extension
+.*Warning: invalid CSR `hstateen3h', needs `h' extension
+.*Warning: invalid CSR `hstateen3h', needs `smstateen' extension
 .*Warning: invalid CSR `ubadaddr' for the privileged spec `1.10'
 .*Warning: invalid CSR `ubadaddr' for the privileged spec `1.10'
 .*Warning: invalid CSR `sbadaddr' for the privileged spec `1.10'
diff --git a/gas/testsuite/gas/riscv/csr-version-1p11.d b/gas/testsuite/gas/riscv/csr-version-1p11.d
index cfcec35ebd8..29a659af592 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p11.d
+++ b/gas/testsuite/gas/riscv/csr-version-1p11.d
@@ -601,6 +601,46 @@ Disassembly of section .text:
 [ 	]+[0-9a-f]+:[ 	]+24459073[ 	]+csrw[ 	]+vsip,a1
 [ 	]+[0-9a-f]+:[ 	]+28002573[ 	]+csrr[ 	]+a0,vsatp
 [ 	]+[0-9a-f]+:[ 	]+28059073[ 	]+csrw[ 	]+vsatp,a1
+[ 	]+[0-9a-f]+:[ 	]+30c02573[ 	]+csrr[ 	]+a0,mstateen0
+[ 	]+[0-9a-f]+:[ 	]+30c59073[ 	]+csrw[ 	]+mstateen0,a1
+[ 	]+[0-9a-f]+:[ 	]+30d02573[ 	]+csrr[ 	]+a0,mstateen1
+[ 	]+[0-9a-f]+:[ 	]+30d59073[ 	]+csrw[ 	]+mstateen1,a1
+[ 	]+[0-9a-f]+:[ 	]+30e02573[ 	]+csrr[ 	]+a0,mstateen2
+[ 	]+[0-9a-f]+:[ 	]+30e59073[ 	]+csrw[ 	]+mstateen2,a1
+[ 	]+[0-9a-f]+:[ 	]+30f02573[ 	]+csrr[ 	]+a0,mstateen3
+[ 	]+[0-9a-f]+:[ 	]+30f59073[ 	]+csrw[ 	]+mstateen3,a1
+[ 	]+[0-9a-f]+:[ 	]+10c02573[ 	]+csrr[ 	]+a0,sstateen0
+[ 	]+[0-9a-f]+:[ 	]+10c59073[ 	]+csrw[ 	]+sstateen0,a1
+[ 	]+[0-9a-f]+:[ 	]+10d02573[ 	]+csrr[ 	]+a0,sstateen1
+[ 	]+[0-9a-f]+:[ 	]+10d59073[ 	]+csrw[ 	]+sstateen1,a1
+[ 	]+[0-9a-f]+:[ 	]+10e02573[ 	]+csrr[ 	]+a0,sstateen2
+[ 	]+[0-9a-f]+:[ 	]+10e59073[ 	]+csrw[ 	]+sstateen2,a1
+[ 	]+[0-9a-f]+:[ 	]+10f02573[ 	]+csrr[ 	]+a0,sstateen3
+[ 	]+[0-9a-f]+:[ 	]+10f59073[ 	]+csrw[ 	]+sstateen3,a1
+[ 	]+[0-9a-f]+:[ 	]+60c02573[ 	]+csrr[ 	]+a0,hstateen0
+[ 	]+[0-9a-f]+:[ 	]+60c59073[ 	]+csrw[ 	]+hstateen0,a1
+[ 	]+[0-9a-f]+:[ 	]+60d02573[ 	]+csrr[ 	]+a0,hstateen1
+[ 	]+[0-9a-f]+:[ 	]+60d59073[ 	]+csrw[ 	]+hstateen1,a1
+[ 	]+[0-9a-f]+:[ 	]+60e02573[ 	]+csrr[ 	]+a0,hstateen2
+[ 	]+[0-9a-f]+:[ 	]+60e59073[ 	]+csrw[ 	]+hstateen2,a1
+[ 	]+[0-9a-f]+:[ 	]+60f02573[ 	]+csrr[ 	]+a0,hstateen3
+[ 	]+[0-9a-f]+:[ 	]+60f59073[ 	]+csrw[ 	]+hstateen3,a1
+[ 	]+[0-9a-f]+:[ 	]+31c02573[ 	]+csrr[ 	]+a0,mstateen0h
+[ 	]+[0-9a-f]+:[ 	]+31c59073[ 	]+csrw[ 	]+mstateen0h,a1
+[ 	]+[0-9a-f]+:[ 	]+31d02573[ 	]+csrr[ 	]+a0,mstateen1h
+[ 	]+[0-9a-f]+:[ 	]+31d59073[ 	]+csrw[ 	]+mstateen1h,a1
+[ 	]+[0-9a-f]+:[ 	]+31e02573[ 	]+csrr[ 	]+a0,mstateen2h
+[ 	]+[0-9a-f]+:[ 	]+31e59073[ 	]+csrw[ 	]+mstateen2h,a1
+[ 	]+[0-9a-f]+:[ 	]+31f02573[ 	]+csrr[ 	]+a0,mstateen3h
+[ 	]+[0-9a-f]+:[ 	]+31f59073[ 	]+csrw[ 	]+mstateen3h,a1
+[ 	]+[0-9a-f]+:[ 	]+61c02573[ 	]+csrr[ 	]+a0,hstateen0h
+[ 	]+[0-9a-f]+:[ 	]+61c59073[ 	]+csrw[ 	]+hstateen0h,a1
+[ 	]+[0-9a-f]+:[ 	]+61d02573[ 	]+csrr[ 	]+a0,hstateen1h
+[ 	]+[0-9a-f]+:[ 	]+61d59073[ 	]+csrw[ 	]+hstateen1h,a1
+[ 	]+[0-9a-f]+:[ 	]+61e02573[ 	]+csrr[ 	]+a0,hstateen2h
+[ 	]+[0-9a-f]+:[ 	]+61e59073[ 	]+csrw[ 	]+hstateen2h,a1
+[ 	]+[0-9a-f]+:[ 	]+61f02573[ 	]+csrr[ 	]+a0,hstateen3h
+[ 	]+[0-9a-f]+:[ 	]+61f59073[ 	]+csrw[ 	]+hstateen3h,a1
 [ 	]+[0-9a-f]+:[ 	]+04302573[ 	]+csrr[ 	]+a0,utval
 [ 	]+[0-9a-f]+:[ 	]+04359073[ 	]+csrw[ 	]+utval,a1
 [ 	]+[0-9a-f]+:[ 	]+14302573[ 	]+csrr[ 	]+a0,stval
diff --git a/gas/testsuite/gas/riscv/csr-version-1p11.l b/gas/testsuite/gas/riscv/csr-version-1p11.l
index d4716a29669..1b66848aca1 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p11.l
+++ b/gas/testsuite/gas/riscv/csr-version-1p11.l
@@ -409,6 +409,78 @@
 .*Warning: invalid CSR `vsip', needs `h' extension
 .*Warning: invalid CSR `vsatp', needs `h' extension
 .*Warning: invalid CSR `vsatp', needs `h' extension
+.*Warning: invalid CSR `mstateen0', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen0', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen1', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen1', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen2', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen2', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen3', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen3', needs `smstateen' extension
+.*Warning: invalid CSR `sstateen0', needs `smstateen' extension
+.*Warning: invalid CSR `sstateen0', needs `smstateen' extension
+.*Warning: invalid CSR `sstateen1', needs `smstateen' extension
+.*Warning: invalid CSR `sstateen1', needs `smstateen' extension
+.*Warning: invalid CSR `sstateen2', needs `smstateen' extension
+.*Warning: invalid CSR `sstateen2', needs `smstateen' extension
+.*Warning: invalid CSR `sstateen3', needs `smstateen' extension
+.*Warning: invalid CSR `sstateen3', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen0', needs `h' extension
+.*Warning: invalid CSR `hstateen0', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen0', needs `h' extension
+.*Warning: invalid CSR `hstateen0', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen1', needs `h' extension
+.*Warning: invalid CSR `hstateen1', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen1', needs `h' extension
+.*Warning: invalid CSR `hstateen1', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen2', needs `h' extension
+.*Warning: invalid CSR `hstateen2', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen2', needs `h' extension
+.*Warning: invalid CSR `hstateen2', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen3', needs `h' extension
+.*Warning: invalid CSR `hstateen3', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen3', needs `h' extension
+.*Warning: invalid CSR `hstateen3', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen0h', needs rv32i extension
+.*Warning: invalid CSR `mstateen0h', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen0h', needs rv32i extension
+.*Warning: invalid CSR `mstateen0h', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen1h', needs rv32i extension
+.*Warning: invalid CSR `mstateen1h', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen1h', needs rv32i extension
+.*Warning: invalid CSR `mstateen1h', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen2h', needs rv32i extension
+.*Warning: invalid CSR `mstateen2h', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen2h', needs rv32i extension
+.*Warning: invalid CSR `mstateen2h', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen3h', needs rv32i extension
+.*Warning: invalid CSR `mstateen3h', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen3h', needs rv32i extension
+.*Warning: invalid CSR `mstateen3h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen0h', needs rv32i extension
+.*Warning: invalid CSR `hstateen0h', needs `h' extension
+.*Warning: invalid CSR `hstateen0h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen0h', needs rv32i extension
+.*Warning: invalid CSR `hstateen0h', needs `h' extension
+.*Warning: invalid CSR `hstateen0h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen1h', needs rv32i extension
+.*Warning: invalid CSR `hstateen1h', needs `h' extension
+.*Warning: invalid CSR `hstateen1h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen1h', needs rv32i extension
+.*Warning: invalid CSR `hstateen1h', needs `h' extension
+.*Warning: invalid CSR `hstateen1h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen2h', needs rv32i extension
+.*Warning: invalid CSR `hstateen2h', needs `h' extension
+.*Warning: invalid CSR `hstateen2h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen2h', needs rv32i extension
+.*Warning: invalid CSR `hstateen2h', needs `h' extension
+.*Warning: invalid CSR `hstateen2h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen3h', needs rv32i extension
+.*Warning: invalid CSR `hstateen3h', needs `h' extension
+.*Warning: invalid CSR `hstateen3h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen3h', needs rv32i extension
+.*Warning: invalid CSR `hstateen3h', needs `h' extension
+.*Warning: invalid CSR `hstateen3h', needs `smstateen' extension
 .*Warning: invalid CSR `ubadaddr' for the privileged spec `1.11'
 .*Warning: invalid CSR `ubadaddr' for the privileged spec `1.11'
 .*Warning: invalid CSR `sbadaddr' for the privileged spec `1.11'
diff --git a/gas/testsuite/gas/riscv/csr-version-1p12.d b/gas/testsuite/gas/riscv/csr-version-1p12.d
index 3c27ca2de20..46ca519b31e 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p12.d
+++ b/gas/testsuite/gas/riscv/csr-version-1p12.d
@@ -601,6 +601,46 @@ Disassembly of section .text:
 [ 	]+[0-9a-f]+:[ 	]+24459073[ 	]+csrw[ 	]+vsip,a1
 [ 	]+[0-9a-f]+:[ 	]+28002573[ 	]+csrr[ 	]+a0,vsatp
 [ 	]+[0-9a-f]+:[ 	]+28059073[ 	]+csrw[ 	]+vsatp,a1
+[ 	]+[0-9a-f]+:[ 	]+30c02573[ 	]+csrr[ 	]+a0,mstateen0
+[ 	]+[0-9a-f]+:[ 	]+30c59073[ 	]+csrw[ 	]+mstateen0,a1
+[ 	]+[0-9a-f]+:[ 	]+30d02573[ 	]+csrr[ 	]+a0,mstateen1
+[ 	]+[0-9a-f]+:[ 	]+30d59073[ 	]+csrw[ 	]+mstateen1,a1
+[ 	]+[0-9a-f]+:[ 	]+30e02573[ 	]+csrr[ 	]+a0,mstateen2
+[ 	]+[0-9a-f]+:[ 	]+30e59073[ 	]+csrw[ 	]+mstateen2,a1
+[ 	]+[0-9a-f]+:[ 	]+30f02573[ 	]+csrr[ 	]+a0,mstateen3
+[ 	]+[0-9a-f]+:[ 	]+30f59073[ 	]+csrw[ 	]+mstateen3,a1
+[ 	]+[0-9a-f]+:[ 	]+10c02573[ 	]+csrr[ 	]+a0,sstateen0
+[ 	]+[0-9a-f]+:[ 	]+10c59073[ 	]+csrw[ 	]+sstateen0,a1
+[ 	]+[0-9a-f]+:[ 	]+10d02573[ 	]+csrr[ 	]+a0,sstateen1
+[ 	]+[0-9a-f]+:[ 	]+10d59073[ 	]+csrw[ 	]+sstateen1,a1
+[ 	]+[0-9a-f]+:[ 	]+10e02573[ 	]+csrr[ 	]+a0,sstateen2
+[ 	]+[0-9a-f]+:[ 	]+10e59073[ 	]+csrw[ 	]+sstateen2,a1
+[ 	]+[0-9a-f]+:[ 	]+10f02573[ 	]+csrr[ 	]+a0,sstateen3
+[ 	]+[0-9a-f]+:[ 	]+10f59073[ 	]+csrw[ 	]+sstateen3,a1
+[ 	]+[0-9a-f]+:[ 	]+60c02573[ 	]+csrr[ 	]+a0,hstateen0
+[ 	]+[0-9a-f]+:[ 	]+60c59073[ 	]+csrw[ 	]+hstateen0,a1
+[ 	]+[0-9a-f]+:[ 	]+60d02573[ 	]+csrr[ 	]+a0,hstateen1
+[ 	]+[0-9a-f]+:[ 	]+60d59073[ 	]+csrw[ 	]+hstateen1,a1
+[ 	]+[0-9a-f]+:[ 	]+60e02573[ 	]+csrr[ 	]+a0,hstateen2
+[ 	]+[0-9a-f]+:[ 	]+60e59073[ 	]+csrw[ 	]+hstateen2,a1
+[ 	]+[0-9a-f]+:[ 	]+60f02573[ 	]+csrr[ 	]+a0,hstateen3
+[ 	]+[0-9a-f]+:[ 	]+60f59073[ 	]+csrw[ 	]+hstateen3,a1
+[ 	]+[0-9a-f]+:[ 	]+31c02573[ 	]+csrr[ 	]+a0,mstateen0h
+[ 	]+[0-9a-f]+:[ 	]+31c59073[ 	]+csrw[ 	]+mstateen0h,a1
+[ 	]+[0-9a-f]+:[ 	]+31d02573[ 	]+csrr[ 	]+a0,mstateen1h
+[ 	]+[0-9a-f]+:[ 	]+31d59073[ 	]+csrw[ 	]+mstateen1h,a1
+[ 	]+[0-9a-f]+:[ 	]+31e02573[ 	]+csrr[ 	]+a0,mstateen2h
+[ 	]+[0-9a-f]+:[ 	]+31e59073[ 	]+csrw[ 	]+mstateen2h,a1
+[ 	]+[0-9a-f]+:[ 	]+31f02573[ 	]+csrr[ 	]+a0,mstateen3h
+[ 	]+[0-9a-f]+:[ 	]+31f59073[ 	]+csrw[ 	]+mstateen3h,a1
+[ 	]+[0-9a-f]+:[ 	]+61c02573[ 	]+csrr[ 	]+a0,hstateen0h
+[ 	]+[0-9a-f]+:[ 	]+61c59073[ 	]+csrw[ 	]+hstateen0h,a1
+[ 	]+[0-9a-f]+:[ 	]+61d02573[ 	]+csrr[ 	]+a0,hstateen1h
+[ 	]+[0-9a-f]+:[ 	]+61d59073[ 	]+csrw[ 	]+hstateen1h,a1
+[ 	]+[0-9a-f]+:[ 	]+61e02573[ 	]+csrr[ 	]+a0,hstateen2h
+[ 	]+[0-9a-f]+:[ 	]+61e59073[ 	]+csrw[ 	]+hstateen2h,a1
+[ 	]+[0-9a-f]+:[ 	]+61f02573[ 	]+csrr[ 	]+a0,hstateen3h
+[ 	]+[0-9a-f]+:[ 	]+61f59073[ 	]+csrw[ 	]+hstateen3h,a1
 [ 	]+[0-9a-f]+:[ 	]+04302573[ 	]+csrr[ 	]+a0,0x43
 [ 	]+[0-9a-f]+:[ 	]+04359073[ 	]+csrw[ 	]+0x43,a1
 [ 	]+[0-9a-f]+:[ 	]+14302573[ 	]+csrr[ 	]+a0,stval
diff --git a/gas/testsuite/gas/riscv/csr-version-1p12.l b/gas/testsuite/gas/riscv/csr-version-1p12.l
index ab291c53eac..90a67f04c27 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p12.l
+++ b/gas/testsuite/gas/riscv/csr-version-1p12.l
@@ -271,6 +271,78 @@
 .*Warning: invalid CSR `vsip', needs `h' extension
 .*Warning: invalid CSR `vsatp', needs `h' extension
 .*Warning: invalid CSR `vsatp', needs `h' extension
+.*Warning: invalid CSR `mstateen0', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen0', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen1', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen1', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen2', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen2', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen3', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen3', needs `smstateen' extension
+.*Warning: invalid CSR `sstateen0', needs `smstateen' extension
+.*Warning: invalid CSR `sstateen0', needs `smstateen' extension
+.*Warning: invalid CSR `sstateen1', needs `smstateen' extension
+.*Warning: invalid CSR `sstateen1', needs `smstateen' extension
+.*Warning: invalid CSR `sstateen2', needs `smstateen' extension
+.*Warning: invalid CSR `sstateen2', needs `smstateen' extension
+.*Warning: invalid CSR `sstateen3', needs `smstateen' extension
+.*Warning: invalid CSR `sstateen3', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen0', needs `h' extension
+.*Warning: invalid CSR `hstateen0', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen0', needs `h' extension
+.*Warning: invalid CSR `hstateen0', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen1', needs `h' extension
+.*Warning: invalid CSR `hstateen1', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen1', needs `h' extension
+.*Warning: invalid CSR `hstateen1', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen2', needs `h' extension
+.*Warning: invalid CSR `hstateen2', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen2', needs `h' extension
+.*Warning: invalid CSR `hstateen2', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen3', needs `h' extension
+.*Warning: invalid CSR `hstateen3', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen3', needs `h' extension
+.*Warning: invalid CSR `hstateen3', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen0h', needs rv32i extension
+.*Warning: invalid CSR `mstateen0h', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen0h', needs rv32i extension
+.*Warning: invalid CSR `mstateen0h', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen1h', needs rv32i extension
+.*Warning: invalid CSR `mstateen1h', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen1h', needs rv32i extension
+.*Warning: invalid CSR `mstateen1h', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen2h', needs rv32i extension
+.*Warning: invalid CSR `mstateen2h', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen2h', needs rv32i extension
+.*Warning: invalid CSR `mstateen2h', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen3h', needs rv32i extension
+.*Warning: invalid CSR `mstateen3h', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen3h', needs rv32i extension
+.*Warning: invalid CSR `mstateen3h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen0h', needs rv32i extension
+.*Warning: invalid CSR `hstateen0h', needs `h' extension
+.*Warning: invalid CSR `hstateen0h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen0h', needs rv32i extension
+.*Warning: invalid CSR `hstateen0h', needs `h' extension
+.*Warning: invalid CSR `hstateen0h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen1h', needs rv32i extension
+.*Warning: invalid CSR `hstateen1h', needs `h' extension
+.*Warning: invalid CSR `hstateen1h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen1h', needs rv32i extension
+.*Warning: invalid CSR `hstateen1h', needs `h' extension
+.*Warning: invalid CSR `hstateen1h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen2h', needs rv32i extension
+.*Warning: invalid CSR `hstateen2h', needs `h' extension
+.*Warning: invalid CSR `hstateen2h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen2h', needs rv32i extension
+.*Warning: invalid CSR `hstateen2h', needs `h' extension
+.*Warning: invalid CSR `hstateen2h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen3h', needs rv32i extension
+.*Warning: invalid CSR `hstateen3h', needs `h' extension
+.*Warning: invalid CSR `hstateen3h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen3h', needs rv32i extension
+.*Warning: invalid CSR `hstateen3h', needs `h' extension
+.*Warning: invalid CSR `hstateen3h', needs `smstateen' extension
 .*Warning: invalid CSR `ubadaddr' for the privileged spec `1.12'
 .*Warning: invalid CSR `ubadaddr' for the privileged spec `1.12'
 .*Warning: invalid CSR `sbadaddr' for the privileged spec `1.12'
diff --git a/gas/testsuite/gas/riscv/csr-version-1p9p1.d b/gas/testsuite/gas/riscv/csr-version-1p9p1.d
index cf9479db654..da56a0b5668 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p9p1.d
+++ b/gas/testsuite/gas/riscv/csr-version-1p9p1.d
@@ -601,6 +601,46 @@ Disassembly of section .text:
 [ 	]+[0-9a-f]+:[ 	]+24459073[ 	]+csrw[ 	]+vsip,a1
 [ 	]+[0-9a-f]+:[ 	]+28002573[ 	]+csrr[ 	]+a0,vsatp
 [ 	]+[0-9a-f]+:[ 	]+28059073[ 	]+csrw[ 	]+vsatp,a1
+[ 	]+[0-9a-f]+:[ 	]+30c02573[ 	]+csrr[ 	]+a0,mstateen0
+[ 	]+[0-9a-f]+:[ 	]+30c59073[ 	]+csrw[ 	]+mstateen0,a1
+[ 	]+[0-9a-f]+:[ 	]+30d02573[ 	]+csrr[ 	]+a0,mstateen1
+[ 	]+[0-9a-f]+:[ 	]+30d59073[ 	]+csrw[ 	]+mstateen1,a1
+[ 	]+[0-9a-f]+:[ 	]+30e02573[ 	]+csrr[ 	]+a0,mstateen2
+[ 	]+[0-9a-f]+:[ 	]+30e59073[ 	]+csrw[ 	]+mstateen2,a1
+[ 	]+[0-9a-f]+:[ 	]+30f02573[ 	]+csrr[ 	]+a0,mstateen3
+[ 	]+[0-9a-f]+:[ 	]+30f59073[ 	]+csrw[ 	]+mstateen3,a1
+[ 	]+[0-9a-f]+:[ 	]+10c02573[ 	]+csrr[ 	]+a0,sstateen0
+[ 	]+[0-9a-f]+:[ 	]+10c59073[ 	]+csrw[ 	]+sstateen0,a1
+[ 	]+[0-9a-f]+:[ 	]+10d02573[ 	]+csrr[ 	]+a0,sstateen1
+[ 	]+[0-9a-f]+:[ 	]+10d59073[ 	]+csrw[ 	]+sstateen1,a1
+[ 	]+[0-9a-f]+:[ 	]+10e02573[ 	]+csrr[ 	]+a0,sstateen2
+[ 	]+[0-9a-f]+:[ 	]+10e59073[ 	]+csrw[ 	]+sstateen2,a1
+[ 	]+[0-9a-f]+:[ 	]+10f02573[ 	]+csrr[ 	]+a0,sstateen3
+[ 	]+[0-9a-f]+:[ 	]+10f59073[ 	]+csrw[ 	]+sstateen3,a1
+[ 	]+[0-9a-f]+:[ 	]+60c02573[ 	]+csrr[ 	]+a0,hstateen0
+[ 	]+[0-9a-f]+:[ 	]+60c59073[ 	]+csrw[ 	]+hstateen0,a1
+[ 	]+[0-9a-f]+:[ 	]+60d02573[ 	]+csrr[ 	]+a0,hstateen1
+[ 	]+[0-9a-f]+:[ 	]+60d59073[ 	]+csrw[ 	]+hstateen1,a1
+[ 	]+[0-9a-f]+:[ 	]+60e02573[ 	]+csrr[ 	]+a0,hstateen2
+[ 	]+[0-9a-f]+:[ 	]+60e59073[ 	]+csrw[ 	]+hstateen2,a1
+[ 	]+[0-9a-f]+:[ 	]+60f02573[ 	]+csrr[ 	]+a0,hstateen3
+[ 	]+[0-9a-f]+:[ 	]+60f59073[ 	]+csrw[ 	]+hstateen3,a1
+[ 	]+[0-9a-f]+:[ 	]+31c02573[ 	]+csrr[ 	]+a0,mstateen0h
+[ 	]+[0-9a-f]+:[ 	]+31c59073[ 	]+csrw[ 	]+mstateen0h,a1
+[ 	]+[0-9a-f]+:[ 	]+31d02573[ 	]+csrr[ 	]+a0,mstateen1h
+[ 	]+[0-9a-f]+:[ 	]+31d59073[ 	]+csrw[ 	]+mstateen1h,a1
+[ 	]+[0-9a-f]+:[ 	]+31e02573[ 	]+csrr[ 	]+a0,mstateen2h
+[ 	]+[0-9a-f]+:[ 	]+31e59073[ 	]+csrw[ 	]+mstateen2h,a1
+[ 	]+[0-9a-f]+:[ 	]+31f02573[ 	]+csrr[ 	]+a0,mstateen3h
+[ 	]+[0-9a-f]+:[ 	]+31f59073[ 	]+csrw[ 	]+mstateen3h,a1
+[ 	]+[0-9a-f]+:[ 	]+61c02573[ 	]+csrr[ 	]+a0,hstateen0h
+[ 	]+[0-9a-f]+:[ 	]+61c59073[ 	]+csrw[ 	]+hstateen0h,a1
+[ 	]+[0-9a-f]+:[ 	]+61d02573[ 	]+csrr[ 	]+a0,hstateen1h
+[ 	]+[0-9a-f]+:[ 	]+61d59073[ 	]+csrw[ 	]+hstateen1h,a1
+[ 	]+[0-9a-f]+:[ 	]+61e02573[ 	]+csrr[ 	]+a0,hstateen2h
+[ 	]+[0-9a-f]+:[ 	]+61e59073[ 	]+csrw[ 	]+hstateen2h,a1
+[ 	]+[0-9a-f]+:[ 	]+61f02573[ 	]+csrr[ 	]+a0,hstateen3h
+[ 	]+[0-9a-f]+:[ 	]+61f59073[ 	]+csrw[ 	]+hstateen3h,a1
 [ 	]+[0-9a-f]+:[ 	]+04302573[ 	]+csrr[ 	]+a0,ubadaddr
 [ 	]+[0-9a-f]+:[ 	]+04359073[ 	]+csrw[ 	]+ubadaddr,a1
 [ 	]+[0-9a-f]+:[ 	]+14302573[ 	]+csrr[ 	]+a0,sbadaddr
diff --git a/gas/testsuite/gas/riscv/csr-version-1p9p1.l b/gas/testsuite/gas/riscv/csr-version-1p9p1.l
index b43169719d1..7376c7c33ad 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p9p1.l
+++ b/gas/testsuite/gas/riscv/csr-version-1p9p1.l
@@ -461,6 +461,78 @@
 .*Warning: invalid CSR `vsip', needs `h' extension
 .*Warning: invalid CSR `vsatp', needs `h' extension
 .*Warning: invalid CSR `vsatp', needs `h' extension
+.*Warning: invalid CSR `mstateen0', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen0', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen1', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen1', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen2', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen2', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen3', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen3', needs `smstateen' extension
+.*Warning: invalid CSR `sstateen0', needs `smstateen' extension
+.*Warning: invalid CSR `sstateen0', needs `smstateen' extension
+.*Warning: invalid CSR `sstateen1', needs `smstateen' extension
+.*Warning: invalid CSR `sstateen1', needs `smstateen' extension
+.*Warning: invalid CSR `sstateen2', needs `smstateen' extension
+.*Warning: invalid CSR `sstateen2', needs `smstateen' extension
+.*Warning: invalid CSR `sstateen3', needs `smstateen' extension
+.*Warning: invalid CSR `sstateen3', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen0', needs `h' extension
+.*Warning: invalid CSR `hstateen0', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen0', needs `h' extension
+.*Warning: invalid CSR `hstateen0', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen1', needs `h' extension
+.*Warning: invalid CSR `hstateen1', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen1', needs `h' extension
+.*Warning: invalid CSR `hstateen1', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen2', needs `h' extension
+.*Warning: invalid CSR `hstateen2', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen2', needs `h' extension
+.*Warning: invalid CSR `hstateen2', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen3', needs `h' extension
+.*Warning: invalid CSR `hstateen3', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen3', needs `h' extension
+.*Warning: invalid CSR `hstateen3', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen0h', needs rv32i extension
+.*Warning: invalid CSR `mstateen0h', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen0h', needs rv32i extension
+.*Warning: invalid CSR `mstateen0h', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen1h', needs rv32i extension
+.*Warning: invalid CSR `mstateen1h', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen1h', needs rv32i extension
+.*Warning: invalid CSR `mstateen1h', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen2h', needs rv32i extension
+.*Warning: invalid CSR `mstateen2h', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen2h', needs rv32i extension
+.*Warning: invalid CSR `mstateen2h', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen3h', needs rv32i extension
+.*Warning: invalid CSR `mstateen3h', needs `smstateen' extension
+.*Warning: invalid CSR `mstateen3h', needs rv32i extension
+.*Warning: invalid CSR `mstateen3h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen0h', needs rv32i extension
+.*Warning: invalid CSR `hstateen0h', needs `h' extension
+.*Warning: invalid CSR `hstateen0h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen0h', needs rv32i extension
+.*Warning: invalid CSR `hstateen0h', needs `h' extension
+.*Warning: invalid CSR `hstateen0h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen1h', needs rv32i extension
+.*Warning: invalid CSR `hstateen1h', needs `h' extension
+.*Warning: invalid CSR `hstateen1h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen1h', needs rv32i extension
+.*Warning: invalid CSR `hstateen1h', needs `h' extension
+.*Warning: invalid CSR `hstateen1h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen2h', needs rv32i extension
+.*Warning: invalid CSR `hstateen2h', needs `h' extension
+.*Warning: invalid CSR `hstateen2h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen2h', needs rv32i extension
+.*Warning: invalid CSR `hstateen2h', needs `h' extension
+.*Warning: invalid CSR `hstateen2h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen3h', needs rv32i extension
+.*Warning: invalid CSR `hstateen3h', needs `h' extension
+.*Warning: invalid CSR `hstateen3h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen3h', needs rv32i extension
+.*Warning: invalid CSR `hstateen3h', needs `h' extension
+.*Warning: invalid CSR `hstateen3h', needs `smstateen' extension
 .*Warning: invalid CSR `utval' for the privileged spec `1.9.1'
 .*Warning: invalid CSR `utval' for the privileged spec `1.9.1'
 .*Warning: invalid CSR `fflags', needs `f' extension
diff --git a/gas/testsuite/gas/riscv/csr.s b/gas/testsuite/gas/riscv/csr.s
index 0d0ec712c15..1a4a2be2c0f 100644
--- a/gas/testsuite/gas/riscv/csr.s
+++ b/gas/testsuite/gas/riscv/csr.s
@@ -337,6 +337,28 @@
 	csr vsip
 	csr vsatp
 
+	# Smstateen extension
+	csr mstateen0
+	csr mstateen1
+	csr mstateen2
+	csr mstateen3
+	csr sstateen0
+	csr sstateen1
+	csr sstateen2
+	csr sstateen3
+	csr hstateen0
+	csr hstateen1
+	csr hstateen2
+	csr hstateen3
+	csr mstateen0h
+	csr mstateen1h
+	csr mstateen2h
+	csr mstateen3h
+	csr hstateen0h
+	csr hstateen1h
+	csr hstateen2h
+	csr hstateen3h
+
 	# Supported in previous priv spec, but dropped now
 
 	csr ubadaddr		# 0x043 in 1.9.1, but the value is utval since 1.10
diff --git a/include/opcode/riscv-opc.h b/include/opcode/riscv-opc.h
index 207215b79fc..97a37bae01c 100644
--- a/include/opcode/riscv-opc.h
+++ b/include/opcode/riscv-opc.h
@@ -2432,6 +2432,27 @@
 #define CSR_UIP 0x44
 #define CSR_SEDELEG 0x102
 #define CSR_SIDELEG 0x103
+/* Smstateen extension */
+#define CSR_MSTATEEN0 0x30c
+#define CSR_MSTATEEN1 0x30d
+#define CSR_MSTATEEN2 0x30e
+#define CSR_MSTATEEN3 0x30f
+#define CSR_SSTATEEN0 0x10c
+#define CSR_SSTATEEN1 0x10d
+#define CSR_SSTATEEN2 0x10e
+#define CSR_SSTATEEN3 0x10f
+#define CSR_HSTATEEN0 0x60c
+#define CSR_HSTATEEN1 0x60d
+#define CSR_HSTATEEN2 0x60e
+#define CSR_HSTATEEN3 0x60f
+#define CSR_MSTATEEN0H 0x31c
+#define CSR_MSTATEEN1H 0x31d
+#define CSR_MSTATEEN2H 0x31e
+#define CSR_MSTATEEN3H 0x31f
+#define CSR_HSTATEEN0H 0x61c
+#define CSR_HSTATEEN1H 0x61d
+#define CSR_HSTATEEN2H 0x61e
+#define CSR_HSTATEEN3H 0x61f
 /* Unprivileged Floating-Point CSR addresses.  */
 #define CSR_FFLAGS 0x1
 #define CSR_FRM 0x2
@@ -3097,6 +3118,27 @@ DECLARE_CSR(vscause, CSR_VSCAUSE, CSR_CLASS_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_C
 DECLARE_CSR(vstval, CSR_VSTVAL, CSR_CLASS_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
 DECLARE_CSR(vsip, CSR_VSIP, CSR_CLASS_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
 DECLARE_CSR(vsatp, CSR_VSATP, CSR_CLASS_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+/* Smstateen extension */
+DECLARE_CSR(mstateen0, CSR_MSTATEEN0, CSR_CLASS_SMSTATEEN, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(mstateen1, CSR_MSTATEEN1, CSR_CLASS_SMSTATEEN, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(mstateen2, CSR_MSTATEEN2, CSR_CLASS_SMSTATEEN, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(mstateen3, CSR_MSTATEEN3, CSR_CLASS_SMSTATEEN, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(sstateen0, CSR_SSTATEEN0, CSR_CLASS_SMSTATEEN, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(sstateen1, CSR_SSTATEEN1, CSR_CLASS_SMSTATEEN, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(sstateen2, CSR_SSTATEEN2, CSR_CLASS_SMSTATEEN, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(sstateen3, CSR_SSTATEEN3, CSR_CLASS_SMSTATEEN, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(hstateen0, CSR_HSTATEEN0, CSR_CLASS_SMSTATEEN_AND_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(hstateen1, CSR_HSTATEEN1, CSR_CLASS_SMSTATEEN_AND_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(hstateen2, CSR_HSTATEEN2, CSR_CLASS_SMSTATEEN_AND_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(hstateen3, CSR_HSTATEEN3, CSR_CLASS_SMSTATEEN_AND_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(mstateen0h, CSR_MSTATEEN0H, CSR_CLASS_SMSTATEEN_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(mstateen1h, CSR_MSTATEEN1H, CSR_CLASS_SMSTATEEN_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(mstateen2h, CSR_MSTATEEN2H, CSR_CLASS_SMSTATEEN_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(mstateen3h, CSR_MSTATEEN3H, CSR_CLASS_SMSTATEEN_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(hstateen0h, CSR_HSTATEEN0H, CSR_CLASS_SMSTATEEN_AND_H_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(hstateen1h, CSR_HSTATEEN1H, CSR_CLASS_SMSTATEEN_AND_H_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(hstateen2h, CSR_HSTATEEN2H, CSR_CLASS_SMSTATEEN_AND_H_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(hstateen3h, CSR_HSTATEEN3H, CSR_CLASS_SMSTATEEN_AND_H_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
 /* Dropped CSRs.  */
 DECLARE_CSR(mbase, CSR_MBASE, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_1P10)
 DECLARE_CSR(mbound, CSR_MBOUND, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_1P10)
-- 
2.34.1


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

* [PATCH v3 3/4] RISC-V: Add 'Sscofpmf' extension with its CSRs
  2022-06-24  2:51     ` [PATCH v3 0/4] RISC-V: Add CSRs for several supervisor extensions Tsukasa OI
  2022-06-24  2:51       ` [PATCH v3 1/4] RISC-V: Add new CSR feature gate handling (RV32,H) Tsukasa OI
  2022-06-24  2:51       ` [PATCH v3 2/4] RISC-V: Add 'Smstateen' extension and its CSRs Tsukasa OI
@ 2022-06-24  2:51       ` Tsukasa OI
  2022-06-24  2:51       ` [PATCH v3 4/4] RISC-V: Add 'Sstc' extension and " Tsukasa OI
  2022-06-28  1:40       ` [PATCH v3 0/4] RISC-V: Add CSRs for several supervisor extensions Nelson Chu
  4 siblings, 0 replies; 32+ messages in thread
From: Tsukasa OI @ 2022-06-24  2:51 UTC (permalink / raw)
  To: Tsukasa OI, Kito Cheng, Nelson Chu, Palmer Dabbelt; +Cc: binutils

This commit adds Count Overflow and Mode-Based Filtering Extension
(Sscofpmf) and its CSRs.

bfd/ChangeLog:

	* elfxx-riscv.c (riscv_supported_std_s_ext): Add 'Sscofpmf'
	extension to valid 'S' extension list.

gas/ChangeLog:

	* config/tc-riscv.c (enum riscv_csr_class): Add CSR classes for
	'Sscofpmf' extension. (riscv_csr_address): Add handling for new
	CSR classes.
	* testsuite/gas/riscv/csr-dw-regnums.s: Add new CSRs.
	* testsuite/gas/riscv/csr-dw-regnums.d: 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_SCOUNTOVF, CSR_MHPMEVENT3H,
	CSR_MHPMEVENT4H, CSR_MHPMEVENT5H, CSR_MHPMEVENT6H,
	CSR_MHPMEVENT7H, CSR_MHPMEVENT8H, CSR_MHPMEVENT9H,
	CSR_MHPMEVENT10H, CSR_MHPMEVENT11H, CSR_MHPMEVENT12H,
	CSR_MHPMEVENT13H, CSR_MHPMEVENT14H, CSR_MHPMEVENT15H,
	CSR_MHPMEVENT16H, CSR_MHPMEVENT17H, CSR_MHPMEVENT18H,
	CSR_MHPMEVENT19H, CSR_MHPMEVENT20H, CSR_MHPMEVENT21H,
	CSR_MHPMEVENT22H, CSR_MHPMEVENT23H, CSR_MHPMEVENT24H,
	CSR_MHPMEVENT25H, CSR_MHPMEVENT26H, CSR_MHPMEVENT27H,
	CSR_MHPMEVENT28H, CSR_MHPMEVENT29H, CSR_MHPMEVENT30H,
	CSR_MHPMEVENT31H): New CSR macros.
---
 bfd/elfxx-riscv.c                           |   1 +
 gas/config/tc-riscv.c                       |   8 ++
 gas/testsuite/gas/riscv/csr-dw-regnums.d    |  30 +++++
 gas/testsuite/gas/riscv/csr-dw-regnums.s    |  31 +++++
 gas/testsuite/gas/riscv/csr-version-1p10.d  |  60 ++++++++++
 gas/testsuite/gas/riscv/csr-version-1p10.l  | 119 ++++++++++++++++++++
 gas/testsuite/gas/riscv/csr-version-1p11.d  |  60 ++++++++++
 gas/testsuite/gas/riscv/csr-version-1p11.l  | 119 ++++++++++++++++++++
 gas/testsuite/gas/riscv/csr-version-1p12.d  |  60 ++++++++++
 gas/testsuite/gas/riscv/csr-version-1p12.l  | 119 ++++++++++++++++++++
 gas/testsuite/gas/riscv/csr-version-1p9p1.d |  60 ++++++++++
 gas/testsuite/gas/riscv/csr-version-1p9p1.l | 119 ++++++++++++++++++++
 gas/testsuite/gas/riscv/csr.s               |  32 ++++++
 include/opcode/riscv-opc.h                  |  62 ++++++++++
 14 files changed, 880 insertions(+)

diff --git a/bfd/elfxx-riscv.c b/bfd/elfxx-riscv.c
index f72b827651e..855501c8eeb 100644
--- a/bfd/elfxx-riscv.c
+++ b/bfd/elfxx-riscv.c
@@ -1232,6 +1232,7 @@ static struct riscv_supported_ext riscv_supported_std_z_ext[] =
 static struct riscv_supported_ext riscv_supported_std_s_ext[] =
 {
   {"smstateen",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
+  {"sscofpmf",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
   {"svinval",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
   {NULL, 0, 0, 0, 0}
 };
diff --git a/gas/config/tc-riscv.c b/gas/config/tc-riscv.c
index 660b2dd58bb..2f6180ea51e 100644
--- a/gas/config/tc-riscv.c
+++ b/gas/config/tc-riscv.c
@@ -72,6 +72,8 @@ enum riscv_csr_class
   CSR_CLASS_SMSTATEEN_AND_H,	/* Smstateen only (with H) */
   CSR_CLASS_SMSTATEEN_32,	/* Smstateen RV32 only */
   CSR_CLASS_SMSTATEEN_AND_H_32,	/* Smstateen RV32 only (with H) */
+  CSR_CLASS_SSCOFPMF,		/* Sscofpmf only */
+  CSR_CLASS_SSCOFPMF_32,	/* Sscofpmf RV32 only */
 };
 
 /* This structure holds all restricted conditions for a CSR.  */
@@ -941,6 +943,12 @@ riscv_csr_address (const char *csr_name,
 		      || csr_class == CSR_CLASS_SMSTATEEN_AND_H_32);
       extension = "smstateen";
       break;
+    case CSR_CLASS_SSCOFPMF_32:
+      is_rv32_only = true;
+      /* Fall through.  */
+    case CSR_CLASS_SSCOFPMF:
+      extension = "sscofpmf";
+      break;
     case CSR_CLASS_DEBUG:
       break;
     default:
diff --git a/gas/testsuite/gas/riscv/csr-dw-regnums.d b/gas/testsuite/gas/riscv/csr-dw-regnums.d
index 0c9ec6e4035..2f353293faa 100644
--- a/gas/testsuite/gas/riscv/csr-dw-regnums.d
+++ b/gas/testsuite/gas/riscv/csr-dw-regnums.d
@@ -333,6 +333,36 @@ Contents of the .* section:
   DW_CFA_offset_extended_sf: r5661 \(hstateen1h\) at cfa\+6260
   DW_CFA_offset_extended_sf: r5662 \(hstateen2h\) at cfa\+6264
   DW_CFA_offset_extended_sf: r5663 \(hstateen3h\) at cfa\+6268
+  DW_CFA_offset_extended_sf: r7584 \(scountovf\) at cfa\+13952
+  DW_CFA_offset_extended_sf: r5923 \(mhpmevent3h\) at cfa\+7308
+  DW_CFA_offset_extended_sf: r5924 \(mhpmevent4h\) at cfa\+7312
+  DW_CFA_offset_extended_sf: r5925 \(mhpmevent5h\) at cfa\+7316
+  DW_CFA_offset_extended_sf: r5926 \(mhpmevent6h\) at cfa\+7320
+  DW_CFA_offset_extended_sf: r5927 \(mhpmevent7h\) at cfa\+7324
+  DW_CFA_offset_extended_sf: r5928 \(mhpmevent8h\) at cfa\+7328
+  DW_CFA_offset_extended_sf: r5929 \(mhpmevent9h\) at cfa\+7332
+  DW_CFA_offset_extended_sf: r5930 \(mhpmevent10h\) at cfa\+7336
+  DW_CFA_offset_extended_sf: r5931 \(mhpmevent11h\) at cfa\+7340
+  DW_CFA_offset_extended_sf: r5932 \(mhpmevent12h\) at cfa\+7344
+  DW_CFA_offset_extended_sf: r5933 \(mhpmevent13h\) at cfa\+7348
+  DW_CFA_offset_extended_sf: r5934 \(mhpmevent14h\) at cfa\+7352
+  DW_CFA_offset_extended_sf: r5935 \(mhpmevent15h\) at cfa\+7356
+  DW_CFA_offset_extended_sf: r5936 \(mhpmevent16h\) at cfa\+7360
+  DW_CFA_offset_extended_sf: r5937 \(mhpmevent17h\) at cfa\+7364
+  DW_CFA_offset_extended_sf: r5938 \(mhpmevent18h\) at cfa\+7368
+  DW_CFA_offset_extended_sf: r5939 \(mhpmevent19h\) at cfa\+7372
+  DW_CFA_offset_extended_sf: r5940 \(mhpmevent20h\) at cfa\+7376
+  DW_CFA_offset_extended_sf: r5941 \(mhpmevent21h\) at cfa\+7380
+  DW_CFA_offset_extended_sf: r5942 \(mhpmevent22h\) at cfa\+7384
+  DW_CFA_offset_extended_sf: r5943 \(mhpmevent23h\) at cfa\+7388
+  DW_CFA_offset_extended_sf: r5944 \(mhpmevent24h\) at cfa\+7392
+  DW_CFA_offset_extended_sf: r5945 \(mhpmevent25h\) at cfa\+7396
+  DW_CFA_offset_extended_sf: r5946 \(mhpmevent26h\) at cfa\+7400
+  DW_CFA_offset_extended_sf: r5947 \(mhpmevent27h\) at cfa\+7404
+  DW_CFA_offset_extended_sf: r5948 \(mhpmevent28h\) at cfa\+7408
+  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: r4163 \(utval\) at cfa\+268
   DW_CFA_offset_extended_sf: r4419 \(stval\) at cfa\+1292
   DW_CFA_offset_extended_sf: r4480 \(satp\) at cfa\+1536
diff --git a/gas/testsuite/gas/riscv/csr-dw-regnums.s b/gas/testsuite/gas/riscv/csr-dw-regnums.s
index 2afadac49f6..caac321c6e2 100644
--- a/gas/testsuite/gas/riscv/csr-dw-regnums.s
+++ b/gas/testsuite/gas/riscv/csr-dw-regnums.s
@@ -328,6 +328,37 @@ _start:
 	.cfi_offset hstateen1h, 6260
 	.cfi_offset hstateen2h, 6264
 	.cfi_offset hstateen3h, 6268
+	# Sscofpmf extension
+	.cfi_offset scountovf, 13952
+	.cfi_offset mhpmevent3h, 7308
+	.cfi_offset mhpmevent4h, 7312
+	.cfi_offset mhpmevent5h, 7316
+	.cfi_offset mhpmevent6h, 7320
+	.cfi_offset mhpmevent7h, 7324
+	.cfi_offset mhpmevent8h, 7328
+	.cfi_offset mhpmevent9h, 7332
+	.cfi_offset mhpmevent10h, 7336
+	.cfi_offset mhpmevent11h, 7340
+	.cfi_offset mhpmevent12h, 7344
+	.cfi_offset mhpmevent13h, 7348
+	.cfi_offset mhpmevent14h, 7352
+	.cfi_offset mhpmevent15h, 7356
+	.cfi_offset mhpmevent16h, 7360
+	.cfi_offset mhpmevent17h, 7364
+	.cfi_offset mhpmevent18h, 7368
+	.cfi_offset mhpmevent19h, 7372
+	.cfi_offset mhpmevent20h, 7376
+	.cfi_offset mhpmevent21h, 7380
+	.cfi_offset mhpmevent22h, 7384
+	.cfi_offset mhpmevent23h, 7388
+	.cfi_offset mhpmevent24h, 7392
+	.cfi_offset mhpmevent25h, 7396
+	.cfi_offset mhpmevent26h, 7400
+	.cfi_offset mhpmevent27h, 7404
+	.cfi_offset mhpmevent28h, 7408
+	.cfi_offset mhpmevent29h, 7412
+	.cfi_offset mhpmevent30h, 7416
+	.cfi_offset mhpmevent31h, 7420
 	# dropped
 	.cfi_offset ubadaddr, 268	# aliases
 	.cfi_offset sbadaddr, 1292	# aliases
diff --git a/gas/testsuite/gas/riscv/csr-version-1p10.d b/gas/testsuite/gas/riscv/csr-version-1p10.d
index 65b370b5f77..90cc5dd3a1e 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p10.d
+++ b/gas/testsuite/gas/riscv/csr-version-1p10.d
@@ -641,6 +641,66 @@ Disassembly of section .text:
 [ 	]+[0-9a-f]+:[ 	]+61e59073[ 	]+csrw[ 	]+hstateen2h,a1
 [ 	]+[0-9a-f]+:[ 	]+61f02573[ 	]+csrr[ 	]+a0,hstateen3h
 [ 	]+[0-9a-f]+:[ 	]+61f59073[ 	]+csrw[ 	]+hstateen3h,a1
+[ 	]+[0-9a-f]+:[ 	]+da002573[ 	]+csrr[ 	]+a0,scountovf
+[ 	]+[0-9a-f]+:[ 	]+da059073[ 	]+csrw[ 	]+scountovf,a1
+[ 	]+[0-9a-f]+:[ 	]+72302573[ 	]+csrr[ 	]+a0,mhpmevent3h
+[ 	]+[0-9a-f]+:[ 	]+72359073[ 	]+csrw[ 	]+mhpmevent3h,a1
+[ 	]+[0-9a-f]+:[ 	]+72402573[ 	]+csrr[ 	]+a0,mhpmevent4h
+[ 	]+[0-9a-f]+:[ 	]+72459073[ 	]+csrw[ 	]+mhpmevent4h,a1
+[ 	]+[0-9a-f]+:[ 	]+72502573[ 	]+csrr[ 	]+a0,mhpmevent5h
+[ 	]+[0-9a-f]+:[ 	]+72559073[ 	]+csrw[ 	]+mhpmevent5h,a1
+[ 	]+[0-9a-f]+:[ 	]+72602573[ 	]+csrr[ 	]+a0,mhpmevent6h
+[ 	]+[0-9a-f]+:[ 	]+72659073[ 	]+csrw[ 	]+mhpmevent6h,a1
+[ 	]+[0-9a-f]+:[ 	]+72702573[ 	]+csrr[ 	]+a0,mhpmevent7h
+[ 	]+[0-9a-f]+:[ 	]+72759073[ 	]+csrw[ 	]+mhpmevent7h,a1
+[ 	]+[0-9a-f]+:[ 	]+72802573[ 	]+csrr[ 	]+a0,mhpmevent8h
+[ 	]+[0-9a-f]+:[ 	]+72859073[ 	]+csrw[ 	]+mhpmevent8h,a1
+[ 	]+[0-9a-f]+:[ 	]+72902573[ 	]+csrr[ 	]+a0,mhpmevent9h
+[ 	]+[0-9a-f]+:[ 	]+72959073[ 	]+csrw[ 	]+mhpmevent9h,a1
+[ 	]+[0-9a-f]+:[ 	]+72a02573[ 	]+csrr[ 	]+a0,mhpmevent10h
+[ 	]+[0-9a-f]+:[ 	]+72a59073[ 	]+csrw[ 	]+mhpmevent10h,a1
+[ 	]+[0-9a-f]+:[ 	]+72b02573[ 	]+csrr[ 	]+a0,mhpmevent11h
+[ 	]+[0-9a-f]+:[ 	]+72b59073[ 	]+csrw[ 	]+mhpmevent11h,a1
+[ 	]+[0-9a-f]+:[ 	]+72c02573[ 	]+csrr[ 	]+a0,mhpmevent12h
+[ 	]+[0-9a-f]+:[ 	]+72c59073[ 	]+csrw[ 	]+mhpmevent12h,a1
+[ 	]+[0-9a-f]+:[ 	]+72d02573[ 	]+csrr[ 	]+a0,mhpmevent13h
+[ 	]+[0-9a-f]+:[ 	]+72d59073[ 	]+csrw[ 	]+mhpmevent13h,a1
+[ 	]+[0-9a-f]+:[ 	]+72e02573[ 	]+csrr[ 	]+a0,mhpmevent14h
+[ 	]+[0-9a-f]+:[ 	]+72e59073[ 	]+csrw[ 	]+mhpmevent14h,a1
+[ 	]+[0-9a-f]+:[ 	]+72f02573[ 	]+csrr[ 	]+a0,mhpmevent15h
+[ 	]+[0-9a-f]+:[ 	]+72f59073[ 	]+csrw[ 	]+mhpmevent15h,a1
+[ 	]+[0-9a-f]+:[ 	]+73002573[ 	]+csrr[ 	]+a0,mhpmevent16h
+[ 	]+[0-9a-f]+:[ 	]+73059073[ 	]+csrw[ 	]+mhpmevent16h,a1
+[ 	]+[0-9a-f]+:[ 	]+73102573[ 	]+csrr[ 	]+a0,mhpmevent17h
+[ 	]+[0-9a-f]+:[ 	]+73159073[ 	]+csrw[ 	]+mhpmevent17h,a1
+[ 	]+[0-9a-f]+:[ 	]+73202573[ 	]+csrr[ 	]+a0,mhpmevent18h
+[ 	]+[0-9a-f]+:[ 	]+73259073[ 	]+csrw[ 	]+mhpmevent18h,a1
+[ 	]+[0-9a-f]+:[ 	]+73302573[ 	]+csrr[ 	]+a0,mhpmevent19h
+[ 	]+[0-9a-f]+:[ 	]+73359073[ 	]+csrw[ 	]+mhpmevent19h,a1
+[ 	]+[0-9a-f]+:[ 	]+73402573[ 	]+csrr[ 	]+a0,mhpmevent20h
+[ 	]+[0-9a-f]+:[ 	]+73459073[ 	]+csrw[ 	]+mhpmevent20h,a1
+[ 	]+[0-9a-f]+:[ 	]+73502573[ 	]+csrr[ 	]+a0,mhpmevent21h
+[ 	]+[0-9a-f]+:[ 	]+73559073[ 	]+csrw[ 	]+mhpmevent21h,a1
+[ 	]+[0-9a-f]+:[ 	]+73602573[ 	]+csrr[ 	]+a0,mhpmevent22h
+[ 	]+[0-9a-f]+:[ 	]+73659073[ 	]+csrw[ 	]+mhpmevent22h,a1
+[ 	]+[0-9a-f]+:[ 	]+73702573[ 	]+csrr[ 	]+a0,mhpmevent23h
+[ 	]+[0-9a-f]+:[ 	]+73759073[ 	]+csrw[ 	]+mhpmevent23h,a1
+[ 	]+[0-9a-f]+:[ 	]+73802573[ 	]+csrr[ 	]+a0,mhpmevent24h
+[ 	]+[0-9a-f]+:[ 	]+73859073[ 	]+csrw[ 	]+mhpmevent24h,a1
+[ 	]+[0-9a-f]+:[ 	]+73902573[ 	]+csrr[ 	]+a0,mhpmevent25h
+[ 	]+[0-9a-f]+:[ 	]+73959073[ 	]+csrw[ 	]+mhpmevent25h,a1
+[ 	]+[0-9a-f]+:[ 	]+73a02573[ 	]+csrr[ 	]+a0,mhpmevent26h
+[ 	]+[0-9a-f]+:[ 	]+73a59073[ 	]+csrw[ 	]+mhpmevent26h,a1
+[ 	]+[0-9a-f]+:[ 	]+73b02573[ 	]+csrr[ 	]+a0,mhpmevent27h
+[ 	]+[0-9a-f]+:[ 	]+73b59073[ 	]+csrw[ 	]+mhpmevent27h,a1
+[ 	]+[0-9a-f]+:[ 	]+73c02573[ 	]+csrr[ 	]+a0,mhpmevent28h
+[ 	]+[0-9a-f]+:[ 	]+73c59073[ 	]+csrw[ 	]+mhpmevent28h,a1
+[ 	]+[0-9a-f]+:[ 	]+73d02573[ 	]+csrr[ 	]+a0,mhpmevent29h
+[ 	]+[0-9a-f]+:[ 	]+73d59073[ 	]+csrw[ 	]+mhpmevent29h,a1
+[ 	]+[0-9a-f]+:[ 	]+73e02573[ 	]+csrr[ 	]+a0,mhpmevent30h
+[ 	]+[0-9a-f]+:[ 	]+73e59073[ 	]+csrw[ 	]+mhpmevent30h,a1
+[ 	]+[0-9a-f]+:[ 	]+73f02573[ 	]+csrr[ 	]+a0,mhpmevent31h
+[ 	]+[0-9a-f]+:[ 	]+73f59073[ 	]+csrw[ 	]+mhpmevent31h,a1
 [ 	]+[0-9a-f]+:[ 	]+04302573[ 	]+csrr[ 	]+a0,utval
 [ 	]+[0-9a-f]+:[ 	]+04359073[ 	]+csrw[ 	]+utval,a1
 [ 	]+[0-9a-f]+:[ 	]+14302573[ 	]+csrr[ 	]+a0,stval
diff --git a/gas/testsuite/gas/riscv/csr-version-1p10.l b/gas/testsuite/gas/riscv/csr-version-1p10.l
index b1e42268e92..e4144b6477a 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p10.l
+++ b/gas/testsuite/gas/riscv/csr-version-1p10.l
@@ -483,6 +483,125 @@
 .*Warning: invalid CSR `hstateen3h', needs rv32i extension
 .*Warning: invalid CSR `hstateen3h', needs `h' extension
 .*Warning: invalid CSR `hstateen3h', needs `smstateen' extension
+.*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
+.*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
+.*Warning: read-only CSR is written `csrw scountovf,a1'
+.*Warning: invalid CSR `mhpmevent3h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent3h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent3h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent3h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent4h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent4h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent4h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent4h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent5h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent5h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent5h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent5h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent6h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent6h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent6h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent6h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent7h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent7h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent7h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent7h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent8h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent8h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent8h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent8h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent9h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent9h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent9h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent9h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent10h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent10h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent10h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent10h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent11h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent11h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent11h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent11h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent12h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent12h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent12h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent12h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent13h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent13h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent13h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent13h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent14h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent14h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent14h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent14h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent15h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent15h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent15h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent15h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent16h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent16h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent16h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent16h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent17h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent17h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent17h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent17h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent18h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent18h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent18h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent18h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent19h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent19h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent19h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent19h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent20h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent20h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent20h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent20h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent21h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent21h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent21h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent21h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent22h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent22h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent22h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent22h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent23h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent23h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent23h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent23h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent24h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent24h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent24h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent24h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent25h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent25h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent25h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent25h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent26h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent26h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent26h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent26h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent27h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent27h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent27h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent27h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent28h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent28h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent28h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent28h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent29h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent29h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent29h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent29h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent30h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent30h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent30h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent30h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent31h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent31h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent31h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent31h', needs `sscofpmf' extension
 .*Warning: invalid CSR `ubadaddr' for the privileged spec `1.10'
 .*Warning: invalid CSR `ubadaddr' for the privileged spec `1.10'
 .*Warning: invalid CSR `sbadaddr' for the privileged spec `1.10'
diff --git a/gas/testsuite/gas/riscv/csr-version-1p11.d b/gas/testsuite/gas/riscv/csr-version-1p11.d
index 29a659af592..a85875acf08 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p11.d
+++ b/gas/testsuite/gas/riscv/csr-version-1p11.d
@@ -641,6 +641,66 @@ Disassembly of section .text:
 [ 	]+[0-9a-f]+:[ 	]+61e59073[ 	]+csrw[ 	]+hstateen2h,a1
 [ 	]+[0-9a-f]+:[ 	]+61f02573[ 	]+csrr[ 	]+a0,hstateen3h
 [ 	]+[0-9a-f]+:[ 	]+61f59073[ 	]+csrw[ 	]+hstateen3h,a1
+[ 	]+[0-9a-f]+:[ 	]+da002573[ 	]+csrr[ 	]+a0,scountovf
+[ 	]+[0-9a-f]+:[ 	]+da059073[ 	]+csrw[ 	]+scountovf,a1
+[ 	]+[0-9a-f]+:[ 	]+72302573[ 	]+csrr[ 	]+a0,mhpmevent3h
+[ 	]+[0-9a-f]+:[ 	]+72359073[ 	]+csrw[ 	]+mhpmevent3h,a1
+[ 	]+[0-9a-f]+:[ 	]+72402573[ 	]+csrr[ 	]+a0,mhpmevent4h
+[ 	]+[0-9a-f]+:[ 	]+72459073[ 	]+csrw[ 	]+mhpmevent4h,a1
+[ 	]+[0-9a-f]+:[ 	]+72502573[ 	]+csrr[ 	]+a0,mhpmevent5h
+[ 	]+[0-9a-f]+:[ 	]+72559073[ 	]+csrw[ 	]+mhpmevent5h,a1
+[ 	]+[0-9a-f]+:[ 	]+72602573[ 	]+csrr[ 	]+a0,mhpmevent6h
+[ 	]+[0-9a-f]+:[ 	]+72659073[ 	]+csrw[ 	]+mhpmevent6h,a1
+[ 	]+[0-9a-f]+:[ 	]+72702573[ 	]+csrr[ 	]+a0,mhpmevent7h
+[ 	]+[0-9a-f]+:[ 	]+72759073[ 	]+csrw[ 	]+mhpmevent7h,a1
+[ 	]+[0-9a-f]+:[ 	]+72802573[ 	]+csrr[ 	]+a0,mhpmevent8h
+[ 	]+[0-9a-f]+:[ 	]+72859073[ 	]+csrw[ 	]+mhpmevent8h,a1
+[ 	]+[0-9a-f]+:[ 	]+72902573[ 	]+csrr[ 	]+a0,mhpmevent9h
+[ 	]+[0-9a-f]+:[ 	]+72959073[ 	]+csrw[ 	]+mhpmevent9h,a1
+[ 	]+[0-9a-f]+:[ 	]+72a02573[ 	]+csrr[ 	]+a0,mhpmevent10h
+[ 	]+[0-9a-f]+:[ 	]+72a59073[ 	]+csrw[ 	]+mhpmevent10h,a1
+[ 	]+[0-9a-f]+:[ 	]+72b02573[ 	]+csrr[ 	]+a0,mhpmevent11h
+[ 	]+[0-9a-f]+:[ 	]+72b59073[ 	]+csrw[ 	]+mhpmevent11h,a1
+[ 	]+[0-9a-f]+:[ 	]+72c02573[ 	]+csrr[ 	]+a0,mhpmevent12h
+[ 	]+[0-9a-f]+:[ 	]+72c59073[ 	]+csrw[ 	]+mhpmevent12h,a1
+[ 	]+[0-9a-f]+:[ 	]+72d02573[ 	]+csrr[ 	]+a0,mhpmevent13h
+[ 	]+[0-9a-f]+:[ 	]+72d59073[ 	]+csrw[ 	]+mhpmevent13h,a1
+[ 	]+[0-9a-f]+:[ 	]+72e02573[ 	]+csrr[ 	]+a0,mhpmevent14h
+[ 	]+[0-9a-f]+:[ 	]+72e59073[ 	]+csrw[ 	]+mhpmevent14h,a1
+[ 	]+[0-9a-f]+:[ 	]+72f02573[ 	]+csrr[ 	]+a0,mhpmevent15h
+[ 	]+[0-9a-f]+:[ 	]+72f59073[ 	]+csrw[ 	]+mhpmevent15h,a1
+[ 	]+[0-9a-f]+:[ 	]+73002573[ 	]+csrr[ 	]+a0,mhpmevent16h
+[ 	]+[0-9a-f]+:[ 	]+73059073[ 	]+csrw[ 	]+mhpmevent16h,a1
+[ 	]+[0-9a-f]+:[ 	]+73102573[ 	]+csrr[ 	]+a0,mhpmevent17h
+[ 	]+[0-9a-f]+:[ 	]+73159073[ 	]+csrw[ 	]+mhpmevent17h,a1
+[ 	]+[0-9a-f]+:[ 	]+73202573[ 	]+csrr[ 	]+a0,mhpmevent18h
+[ 	]+[0-9a-f]+:[ 	]+73259073[ 	]+csrw[ 	]+mhpmevent18h,a1
+[ 	]+[0-9a-f]+:[ 	]+73302573[ 	]+csrr[ 	]+a0,mhpmevent19h
+[ 	]+[0-9a-f]+:[ 	]+73359073[ 	]+csrw[ 	]+mhpmevent19h,a1
+[ 	]+[0-9a-f]+:[ 	]+73402573[ 	]+csrr[ 	]+a0,mhpmevent20h
+[ 	]+[0-9a-f]+:[ 	]+73459073[ 	]+csrw[ 	]+mhpmevent20h,a1
+[ 	]+[0-9a-f]+:[ 	]+73502573[ 	]+csrr[ 	]+a0,mhpmevent21h
+[ 	]+[0-9a-f]+:[ 	]+73559073[ 	]+csrw[ 	]+mhpmevent21h,a1
+[ 	]+[0-9a-f]+:[ 	]+73602573[ 	]+csrr[ 	]+a0,mhpmevent22h
+[ 	]+[0-9a-f]+:[ 	]+73659073[ 	]+csrw[ 	]+mhpmevent22h,a1
+[ 	]+[0-9a-f]+:[ 	]+73702573[ 	]+csrr[ 	]+a0,mhpmevent23h
+[ 	]+[0-9a-f]+:[ 	]+73759073[ 	]+csrw[ 	]+mhpmevent23h,a1
+[ 	]+[0-9a-f]+:[ 	]+73802573[ 	]+csrr[ 	]+a0,mhpmevent24h
+[ 	]+[0-9a-f]+:[ 	]+73859073[ 	]+csrw[ 	]+mhpmevent24h,a1
+[ 	]+[0-9a-f]+:[ 	]+73902573[ 	]+csrr[ 	]+a0,mhpmevent25h
+[ 	]+[0-9a-f]+:[ 	]+73959073[ 	]+csrw[ 	]+mhpmevent25h,a1
+[ 	]+[0-9a-f]+:[ 	]+73a02573[ 	]+csrr[ 	]+a0,mhpmevent26h
+[ 	]+[0-9a-f]+:[ 	]+73a59073[ 	]+csrw[ 	]+mhpmevent26h,a1
+[ 	]+[0-9a-f]+:[ 	]+73b02573[ 	]+csrr[ 	]+a0,mhpmevent27h
+[ 	]+[0-9a-f]+:[ 	]+73b59073[ 	]+csrw[ 	]+mhpmevent27h,a1
+[ 	]+[0-9a-f]+:[ 	]+73c02573[ 	]+csrr[ 	]+a0,mhpmevent28h
+[ 	]+[0-9a-f]+:[ 	]+73c59073[ 	]+csrw[ 	]+mhpmevent28h,a1
+[ 	]+[0-9a-f]+:[ 	]+73d02573[ 	]+csrr[ 	]+a0,mhpmevent29h
+[ 	]+[0-9a-f]+:[ 	]+73d59073[ 	]+csrw[ 	]+mhpmevent29h,a1
+[ 	]+[0-9a-f]+:[ 	]+73e02573[ 	]+csrr[ 	]+a0,mhpmevent30h
+[ 	]+[0-9a-f]+:[ 	]+73e59073[ 	]+csrw[ 	]+mhpmevent30h,a1
+[ 	]+[0-9a-f]+:[ 	]+73f02573[ 	]+csrr[ 	]+a0,mhpmevent31h
+[ 	]+[0-9a-f]+:[ 	]+73f59073[ 	]+csrw[ 	]+mhpmevent31h,a1
 [ 	]+[0-9a-f]+:[ 	]+04302573[ 	]+csrr[ 	]+a0,utval
 [ 	]+[0-9a-f]+:[ 	]+04359073[ 	]+csrw[ 	]+utval,a1
 [ 	]+[0-9a-f]+:[ 	]+14302573[ 	]+csrr[ 	]+a0,stval
diff --git a/gas/testsuite/gas/riscv/csr-version-1p11.l b/gas/testsuite/gas/riscv/csr-version-1p11.l
index 1b66848aca1..f4a57f2c409 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p11.l
+++ b/gas/testsuite/gas/riscv/csr-version-1p11.l
@@ -481,6 +481,125 @@
 .*Warning: invalid CSR `hstateen3h', needs rv32i extension
 .*Warning: invalid CSR `hstateen3h', needs `h' extension
 .*Warning: invalid CSR `hstateen3h', needs `smstateen' extension
+.*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
+.*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
+.*Warning: read-only CSR is written `csrw scountovf,a1'
+.*Warning: invalid CSR `mhpmevent3h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent3h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent3h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent3h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent4h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent4h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent4h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent4h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent5h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent5h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent5h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent5h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent6h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent6h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent6h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent6h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent7h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent7h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent7h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent7h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent8h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent8h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent8h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent8h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent9h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent9h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent9h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent9h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent10h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent10h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent10h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent10h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent11h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent11h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent11h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent11h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent12h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent12h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent12h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent12h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent13h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent13h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent13h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent13h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent14h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent14h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent14h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent14h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent15h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent15h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent15h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent15h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent16h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent16h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent16h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent16h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent17h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent17h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent17h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent17h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent18h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent18h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent18h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent18h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent19h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent19h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent19h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent19h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent20h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent20h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent20h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent20h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent21h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent21h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent21h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent21h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent22h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent22h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent22h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent22h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent23h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent23h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent23h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent23h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent24h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent24h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent24h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent24h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent25h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent25h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent25h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent25h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent26h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent26h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent26h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent26h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent27h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent27h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent27h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent27h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent28h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent28h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent28h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent28h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent29h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent29h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent29h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent29h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent30h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent30h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent30h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent30h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent31h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent31h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent31h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent31h', needs `sscofpmf' extension
 .*Warning: invalid CSR `ubadaddr' for the privileged spec `1.11'
 .*Warning: invalid CSR `ubadaddr' for the privileged spec `1.11'
 .*Warning: invalid CSR `sbadaddr' for the privileged spec `1.11'
diff --git a/gas/testsuite/gas/riscv/csr-version-1p12.d b/gas/testsuite/gas/riscv/csr-version-1p12.d
index 46ca519b31e..60f19bff874 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p12.d
+++ b/gas/testsuite/gas/riscv/csr-version-1p12.d
@@ -641,6 +641,66 @@ Disassembly of section .text:
 [ 	]+[0-9a-f]+:[ 	]+61e59073[ 	]+csrw[ 	]+hstateen2h,a1
 [ 	]+[0-9a-f]+:[ 	]+61f02573[ 	]+csrr[ 	]+a0,hstateen3h
 [ 	]+[0-9a-f]+:[ 	]+61f59073[ 	]+csrw[ 	]+hstateen3h,a1
+[ 	]+[0-9a-f]+:[ 	]+da002573[ 	]+csrr[ 	]+a0,scountovf
+[ 	]+[0-9a-f]+:[ 	]+da059073[ 	]+csrw[ 	]+scountovf,a1
+[ 	]+[0-9a-f]+:[ 	]+72302573[ 	]+csrr[ 	]+a0,mhpmevent3h
+[ 	]+[0-9a-f]+:[ 	]+72359073[ 	]+csrw[ 	]+mhpmevent3h,a1
+[ 	]+[0-9a-f]+:[ 	]+72402573[ 	]+csrr[ 	]+a0,mhpmevent4h
+[ 	]+[0-9a-f]+:[ 	]+72459073[ 	]+csrw[ 	]+mhpmevent4h,a1
+[ 	]+[0-9a-f]+:[ 	]+72502573[ 	]+csrr[ 	]+a0,mhpmevent5h
+[ 	]+[0-9a-f]+:[ 	]+72559073[ 	]+csrw[ 	]+mhpmevent5h,a1
+[ 	]+[0-9a-f]+:[ 	]+72602573[ 	]+csrr[ 	]+a0,mhpmevent6h
+[ 	]+[0-9a-f]+:[ 	]+72659073[ 	]+csrw[ 	]+mhpmevent6h,a1
+[ 	]+[0-9a-f]+:[ 	]+72702573[ 	]+csrr[ 	]+a0,mhpmevent7h
+[ 	]+[0-9a-f]+:[ 	]+72759073[ 	]+csrw[ 	]+mhpmevent7h,a1
+[ 	]+[0-9a-f]+:[ 	]+72802573[ 	]+csrr[ 	]+a0,mhpmevent8h
+[ 	]+[0-9a-f]+:[ 	]+72859073[ 	]+csrw[ 	]+mhpmevent8h,a1
+[ 	]+[0-9a-f]+:[ 	]+72902573[ 	]+csrr[ 	]+a0,mhpmevent9h
+[ 	]+[0-9a-f]+:[ 	]+72959073[ 	]+csrw[ 	]+mhpmevent9h,a1
+[ 	]+[0-9a-f]+:[ 	]+72a02573[ 	]+csrr[ 	]+a0,mhpmevent10h
+[ 	]+[0-9a-f]+:[ 	]+72a59073[ 	]+csrw[ 	]+mhpmevent10h,a1
+[ 	]+[0-9a-f]+:[ 	]+72b02573[ 	]+csrr[ 	]+a0,mhpmevent11h
+[ 	]+[0-9a-f]+:[ 	]+72b59073[ 	]+csrw[ 	]+mhpmevent11h,a1
+[ 	]+[0-9a-f]+:[ 	]+72c02573[ 	]+csrr[ 	]+a0,mhpmevent12h
+[ 	]+[0-9a-f]+:[ 	]+72c59073[ 	]+csrw[ 	]+mhpmevent12h,a1
+[ 	]+[0-9a-f]+:[ 	]+72d02573[ 	]+csrr[ 	]+a0,mhpmevent13h
+[ 	]+[0-9a-f]+:[ 	]+72d59073[ 	]+csrw[ 	]+mhpmevent13h,a1
+[ 	]+[0-9a-f]+:[ 	]+72e02573[ 	]+csrr[ 	]+a0,mhpmevent14h
+[ 	]+[0-9a-f]+:[ 	]+72e59073[ 	]+csrw[ 	]+mhpmevent14h,a1
+[ 	]+[0-9a-f]+:[ 	]+72f02573[ 	]+csrr[ 	]+a0,mhpmevent15h
+[ 	]+[0-9a-f]+:[ 	]+72f59073[ 	]+csrw[ 	]+mhpmevent15h,a1
+[ 	]+[0-9a-f]+:[ 	]+73002573[ 	]+csrr[ 	]+a0,mhpmevent16h
+[ 	]+[0-9a-f]+:[ 	]+73059073[ 	]+csrw[ 	]+mhpmevent16h,a1
+[ 	]+[0-9a-f]+:[ 	]+73102573[ 	]+csrr[ 	]+a0,mhpmevent17h
+[ 	]+[0-9a-f]+:[ 	]+73159073[ 	]+csrw[ 	]+mhpmevent17h,a1
+[ 	]+[0-9a-f]+:[ 	]+73202573[ 	]+csrr[ 	]+a0,mhpmevent18h
+[ 	]+[0-9a-f]+:[ 	]+73259073[ 	]+csrw[ 	]+mhpmevent18h,a1
+[ 	]+[0-9a-f]+:[ 	]+73302573[ 	]+csrr[ 	]+a0,mhpmevent19h
+[ 	]+[0-9a-f]+:[ 	]+73359073[ 	]+csrw[ 	]+mhpmevent19h,a1
+[ 	]+[0-9a-f]+:[ 	]+73402573[ 	]+csrr[ 	]+a0,mhpmevent20h
+[ 	]+[0-9a-f]+:[ 	]+73459073[ 	]+csrw[ 	]+mhpmevent20h,a1
+[ 	]+[0-9a-f]+:[ 	]+73502573[ 	]+csrr[ 	]+a0,mhpmevent21h
+[ 	]+[0-9a-f]+:[ 	]+73559073[ 	]+csrw[ 	]+mhpmevent21h,a1
+[ 	]+[0-9a-f]+:[ 	]+73602573[ 	]+csrr[ 	]+a0,mhpmevent22h
+[ 	]+[0-9a-f]+:[ 	]+73659073[ 	]+csrw[ 	]+mhpmevent22h,a1
+[ 	]+[0-9a-f]+:[ 	]+73702573[ 	]+csrr[ 	]+a0,mhpmevent23h
+[ 	]+[0-9a-f]+:[ 	]+73759073[ 	]+csrw[ 	]+mhpmevent23h,a1
+[ 	]+[0-9a-f]+:[ 	]+73802573[ 	]+csrr[ 	]+a0,mhpmevent24h
+[ 	]+[0-9a-f]+:[ 	]+73859073[ 	]+csrw[ 	]+mhpmevent24h,a1
+[ 	]+[0-9a-f]+:[ 	]+73902573[ 	]+csrr[ 	]+a0,mhpmevent25h
+[ 	]+[0-9a-f]+:[ 	]+73959073[ 	]+csrw[ 	]+mhpmevent25h,a1
+[ 	]+[0-9a-f]+:[ 	]+73a02573[ 	]+csrr[ 	]+a0,mhpmevent26h
+[ 	]+[0-9a-f]+:[ 	]+73a59073[ 	]+csrw[ 	]+mhpmevent26h,a1
+[ 	]+[0-9a-f]+:[ 	]+73b02573[ 	]+csrr[ 	]+a0,mhpmevent27h
+[ 	]+[0-9a-f]+:[ 	]+73b59073[ 	]+csrw[ 	]+mhpmevent27h,a1
+[ 	]+[0-9a-f]+:[ 	]+73c02573[ 	]+csrr[ 	]+a0,mhpmevent28h
+[ 	]+[0-9a-f]+:[ 	]+73c59073[ 	]+csrw[ 	]+mhpmevent28h,a1
+[ 	]+[0-9a-f]+:[ 	]+73d02573[ 	]+csrr[ 	]+a0,mhpmevent29h
+[ 	]+[0-9a-f]+:[ 	]+73d59073[ 	]+csrw[ 	]+mhpmevent29h,a1
+[ 	]+[0-9a-f]+:[ 	]+73e02573[ 	]+csrr[ 	]+a0,mhpmevent30h
+[ 	]+[0-9a-f]+:[ 	]+73e59073[ 	]+csrw[ 	]+mhpmevent30h,a1
+[ 	]+[0-9a-f]+:[ 	]+73f02573[ 	]+csrr[ 	]+a0,mhpmevent31h
+[ 	]+[0-9a-f]+:[ 	]+73f59073[ 	]+csrw[ 	]+mhpmevent31h,a1
 [ 	]+[0-9a-f]+:[ 	]+04302573[ 	]+csrr[ 	]+a0,0x43
 [ 	]+[0-9a-f]+:[ 	]+04359073[ 	]+csrw[ 	]+0x43,a1
 [ 	]+[0-9a-f]+:[ 	]+14302573[ 	]+csrr[ 	]+a0,stval
diff --git a/gas/testsuite/gas/riscv/csr-version-1p12.l b/gas/testsuite/gas/riscv/csr-version-1p12.l
index 90a67f04c27..37522fadbf4 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p12.l
+++ b/gas/testsuite/gas/riscv/csr-version-1p12.l
@@ -343,6 +343,125 @@
 .*Warning: invalid CSR `hstateen3h', needs rv32i extension
 .*Warning: invalid CSR `hstateen3h', needs `h' extension
 .*Warning: invalid CSR `hstateen3h', needs `smstateen' extension
+.*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
+.*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
+.*Warning: read-only CSR is written `csrw scountovf,a1'
+.*Warning: invalid CSR `mhpmevent3h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent3h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent3h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent3h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent4h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent4h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent4h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent4h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent5h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent5h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent5h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent5h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent6h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent6h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent6h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent6h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent7h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent7h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent7h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent7h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent8h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent8h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent8h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent8h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent9h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent9h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent9h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent9h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent10h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent10h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent10h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent10h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent11h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent11h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent11h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent11h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent12h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent12h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent12h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent12h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent13h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent13h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent13h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent13h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent14h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent14h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent14h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent14h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent15h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent15h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent15h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent15h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent16h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent16h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent16h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent16h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent17h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent17h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent17h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent17h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent18h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent18h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent18h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent18h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent19h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent19h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent19h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent19h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent20h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent20h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent20h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent20h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent21h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent21h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent21h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent21h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent22h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent22h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent22h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent22h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent23h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent23h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent23h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent23h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent24h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent24h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent24h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent24h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent25h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent25h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent25h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent25h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent26h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent26h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent26h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent26h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent27h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent27h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent27h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent27h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent28h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent28h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent28h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent28h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent29h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent29h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent29h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent29h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent30h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent30h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent30h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent30h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent31h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent31h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent31h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent31h', needs `sscofpmf' extension
 .*Warning: invalid CSR `ubadaddr' for the privileged spec `1.12'
 .*Warning: invalid CSR `ubadaddr' for the privileged spec `1.12'
 .*Warning: invalid CSR `sbadaddr' for the privileged spec `1.12'
diff --git a/gas/testsuite/gas/riscv/csr-version-1p9p1.d b/gas/testsuite/gas/riscv/csr-version-1p9p1.d
index da56a0b5668..e9eb8c031fb 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p9p1.d
+++ b/gas/testsuite/gas/riscv/csr-version-1p9p1.d
@@ -641,6 +641,66 @@ Disassembly of section .text:
 [ 	]+[0-9a-f]+:[ 	]+61e59073[ 	]+csrw[ 	]+hstateen2h,a1
 [ 	]+[0-9a-f]+:[ 	]+61f02573[ 	]+csrr[ 	]+a0,hstateen3h
 [ 	]+[0-9a-f]+:[ 	]+61f59073[ 	]+csrw[ 	]+hstateen3h,a1
+[ 	]+[0-9a-f]+:[ 	]+da002573[ 	]+csrr[ 	]+a0,scountovf
+[ 	]+[0-9a-f]+:[ 	]+da059073[ 	]+csrw[ 	]+scountovf,a1
+[ 	]+[0-9a-f]+:[ 	]+72302573[ 	]+csrr[ 	]+a0,mhpmevent3h
+[ 	]+[0-9a-f]+:[ 	]+72359073[ 	]+csrw[ 	]+mhpmevent3h,a1
+[ 	]+[0-9a-f]+:[ 	]+72402573[ 	]+csrr[ 	]+a0,mhpmevent4h
+[ 	]+[0-9a-f]+:[ 	]+72459073[ 	]+csrw[ 	]+mhpmevent4h,a1
+[ 	]+[0-9a-f]+:[ 	]+72502573[ 	]+csrr[ 	]+a0,mhpmevent5h
+[ 	]+[0-9a-f]+:[ 	]+72559073[ 	]+csrw[ 	]+mhpmevent5h,a1
+[ 	]+[0-9a-f]+:[ 	]+72602573[ 	]+csrr[ 	]+a0,mhpmevent6h
+[ 	]+[0-9a-f]+:[ 	]+72659073[ 	]+csrw[ 	]+mhpmevent6h,a1
+[ 	]+[0-9a-f]+:[ 	]+72702573[ 	]+csrr[ 	]+a0,mhpmevent7h
+[ 	]+[0-9a-f]+:[ 	]+72759073[ 	]+csrw[ 	]+mhpmevent7h,a1
+[ 	]+[0-9a-f]+:[ 	]+72802573[ 	]+csrr[ 	]+a0,mhpmevent8h
+[ 	]+[0-9a-f]+:[ 	]+72859073[ 	]+csrw[ 	]+mhpmevent8h,a1
+[ 	]+[0-9a-f]+:[ 	]+72902573[ 	]+csrr[ 	]+a0,mhpmevent9h
+[ 	]+[0-9a-f]+:[ 	]+72959073[ 	]+csrw[ 	]+mhpmevent9h,a1
+[ 	]+[0-9a-f]+:[ 	]+72a02573[ 	]+csrr[ 	]+a0,mhpmevent10h
+[ 	]+[0-9a-f]+:[ 	]+72a59073[ 	]+csrw[ 	]+mhpmevent10h,a1
+[ 	]+[0-9a-f]+:[ 	]+72b02573[ 	]+csrr[ 	]+a0,mhpmevent11h
+[ 	]+[0-9a-f]+:[ 	]+72b59073[ 	]+csrw[ 	]+mhpmevent11h,a1
+[ 	]+[0-9a-f]+:[ 	]+72c02573[ 	]+csrr[ 	]+a0,mhpmevent12h
+[ 	]+[0-9a-f]+:[ 	]+72c59073[ 	]+csrw[ 	]+mhpmevent12h,a1
+[ 	]+[0-9a-f]+:[ 	]+72d02573[ 	]+csrr[ 	]+a0,mhpmevent13h
+[ 	]+[0-9a-f]+:[ 	]+72d59073[ 	]+csrw[ 	]+mhpmevent13h,a1
+[ 	]+[0-9a-f]+:[ 	]+72e02573[ 	]+csrr[ 	]+a0,mhpmevent14h
+[ 	]+[0-9a-f]+:[ 	]+72e59073[ 	]+csrw[ 	]+mhpmevent14h,a1
+[ 	]+[0-9a-f]+:[ 	]+72f02573[ 	]+csrr[ 	]+a0,mhpmevent15h
+[ 	]+[0-9a-f]+:[ 	]+72f59073[ 	]+csrw[ 	]+mhpmevent15h,a1
+[ 	]+[0-9a-f]+:[ 	]+73002573[ 	]+csrr[ 	]+a0,mhpmevent16h
+[ 	]+[0-9a-f]+:[ 	]+73059073[ 	]+csrw[ 	]+mhpmevent16h,a1
+[ 	]+[0-9a-f]+:[ 	]+73102573[ 	]+csrr[ 	]+a0,mhpmevent17h
+[ 	]+[0-9a-f]+:[ 	]+73159073[ 	]+csrw[ 	]+mhpmevent17h,a1
+[ 	]+[0-9a-f]+:[ 	]+73202573[ 	]+csrr[ 	]+a0,mhpmevent18h
+[ 	]+[0-9a-f]+:[ 	]+73259073[ 	]+csrw[ 	]+mhpmevent18h,a1
+[ 	]+[0-9a-f]+:[ 	]+73302573[ 	]+csrr[ 	]+a0,mhpmevent19h
+[ 	]+[0-9a-f]+:[ 	]+73359073[ 	]+csrw[ 	]+mhpmevent19h,a1
+[ 	]+[0-9a-f]+:[ 	]+73402573[ 	]+csrr[ 	]+a0,mhpmevent20h
+[ 	]+[0-9a-f]+:[ 	]+73459073[ 	]+csrw[ 	]+mhpmevent20h,a1
+[ 	]+[0-9a-f]+:[ 	]+73502573[ 	]+csrr[ 	]+a0,mhpmevent21h
+[ 	]+[0-9a-f]+:[ 	]+73559073[ 	]+csrw[ 	]+mhpmevent21h,a1
+[ 	]+[0-9a-f]+:[ 	]+73602573[ 	]+csrr[ 	]+a0,mhpmevent22h
+[ 	]+[0-9a-f]+:[ 	]+73659073[ 	]+csrw[ 	]+mhpmevent22h,a1
+[ 	]+[0-9a-f]+:[ 	]+73702573[ 	]+csrr[ 	]+a0,mhpmevent23h
+[ 	]+[0-9a-f]+:[ 	]+73759073[ 	]+csrw[ 	]+mhpmevent23h,a1
+[ 	]+[0-9a-f]+:[ 	]+73802573[ 	]+csrr[ 	]+a0,mhpmevent24h
+[ 	]+[0-9a-f]+:[ 	]+73859073[ 	]+csrw[ 	]+mhpmevent24h,a1
+[ 	]+[0-9a-f]+:[ 	]+73902573[ 	]+csrr[ 	]+a0,mhpmevent25h
+[ 	]+[0-9a-f]+:[ 	]+73959073[ 	]+csrw[ 	]+mhpmevent25h,a1
+[ 	]+[0-9a-f]+:[ 	]+73a02573[ 	]+csrr[ 	]+a0,mhpmevent26h
+[ 	]+[0-9a-f]+:[ 	]+73a59073[ 	]+csrw[ 	]+mhpmevent26h,a1
+[ 	]+[0-9a-f]+:[ 	]+73b02573[ 	]+csrr[ 	]+a0,mhpmevent27h
+[ 	]+[0-9a-f]+:[ 	]+73b59073[ 	]+csrw[ 	]+mhpmevent27h,a1
+[ 	]+[0-9a-f]+:[ 	]+73c02573[ 	]+csrr[ 	]+a0,mhpmevent28h
+[ 	]+[0-9a-f]+:[ 	]+73c59073[ 	]+csrw[ 	]+mhpmevent28h,a1
+[ 	]+[0-9a-f]+:[ 	]+73d02573[ 	]+csrr[ 	]+a0,mhpmevent29h
+[ 	]+[0-9a-f]+:[ 	]+73d59073[ 	]+csrw[ 	]+mhpmevent29h,a1
+[ 	]+[0-9a-f]+:[ 	]+73e02573[ 	]+csrr[ 	]+a0,mhpmevent30h
+[ 	]+[0-9a-f]+:[ 	]+73e59073[ 	]+csrw[ 	]+mhpmevent30h,a1
+[ 	]+[0-9a-f]+:[ 	]+73f02573[ 	]+csrr[ 	]+a0,mhpmevent31h
+[ 	]+[0-9a-f]+:[ 	]+73f59073[ 	]+csrw[ 	]+mhpmevent31h,a1
 [ 	]+[0-9a-f]+:[ 	]+04302573[ 	]+csrr[ 	]+a0,ubadaddr
 [ 	]+[0-9a-f]+:[ 	]+04359073[ 	]+csrw[ 	]+ubadaddr,a1
 [ 	]+[0-9a-f]+:[ 	]+14302573[ 	]+csrr[ 	]+a0,sbadaddr
diff --git a/gas/testsuite/gas/riscv/csr-version-1p9p1.l b/gas/testsuite/gas/riscv/csr-version-1p9p1.l
index 7376c7c33ad..893f8c8ba56 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p9p1.l
+++ b/gas/testsuite/gas/riscv/csr-version-1p9p1.l
@@ -533,6 +533,125 @@
 .*Warning: invalid CSR `hstateen3h', needs rv32i extension
 .*Warning: invalid CSR `hstateen3h', needs `h' extension
 .*Warning: invalid CSR `hstateen3h', needs `smstateen' extension
+.*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
+.*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
+.*Warning: read-only CSR is written `csrw scountovf,a1'
+.*Warning: invalid CSR `mhpmevent3h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent3h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent3h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent3h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent4h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent4h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent4h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent4h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent5h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent5h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent5h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent5h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent6h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent6h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent6h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent6h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent7h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent7h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent7h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent7h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent8h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent8h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent8h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent8h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent9h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent9h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent9h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent9h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent10h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent10h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent10h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent10h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent11h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent11h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent11h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent11h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent12h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent12h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent12h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent12h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent13h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent13h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent13h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent13h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent14h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent14h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent14h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent14h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent15h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent15h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent15h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent15h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent16h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent16h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent16h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent16h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent17h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent17h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent17h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent17h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent18h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent18h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent18h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent18h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent19h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent19h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent19h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent19h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent20h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent20h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent20h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent20h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent21h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent21h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent21h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent21h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent22h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent22h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent22h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent22h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent23h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent23h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent23h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent23h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent24h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent24h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent24h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent24h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent25h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent25h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent25h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent25h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent26h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent26h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent26h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent26h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent27h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent27h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent27h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent27h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent28h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent28h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent28h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent28h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent29h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent29h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent29h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent29h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent30h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent30h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent30h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent30h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent31h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent31h', needs `sscofpmf' extension
+.*Warning: invalid CSR `mhpmevent31h', needs rv32i extension
+.*Warning: invalid CSR `mhpmevent31h', needs `sscofpmf' extension
 .*Warning: invalid CSR `utval' for the privileged spec `1.9.1'
 .*Warning: invalid CSR `utval' for the privileged spec `1.9.1'
 .*Warning: invalid CSR `fflags', needs `f' extension
diff --git a/gas/testsuite/gas/riscv/csr.s b/gas/testsuite/gas/riscv/csr.s
index 1a4a2be2c0f..2a723123f1b 100644
--- a/gas/testsuite/gas/riscv/csr.s
+++ b/gas/testsuite/gas/riscv/csr.s
@@ -359,6 +359,38 @@
 	csr hstateen2h
 	csr hstateen3h
 
+	# Sscofpmf extension
+	csr scountovf
+	csr mhpmevent3h
+	csr mhpmevent4h
+	csr mhpmevent5h
+	csr mhpmevent6h
+	csr mhpmevent7h
+	csr mhpmevent8h
+	csr mhpmevent9h
+	csr mhpmevent10h
+	csr mhpmevent11h
+	csr mhpmevent12h
+	csr mhpmevent13h
+	csr mhpmevent14h
+	csr mhpmevent15h
+	csr mhpmevent16h
+	csr mhpmevent17h
+	csr mhpmevent18h
+	csr mhpmevent19h
+	csr mhpmevent20h
+	csr mhpmevent21h
+	csr mhpmevent22h
+	csr mhpmevent23h
+	csr mhpmevent24h
+	csr mhpmevent25h
+	csr mhpmevent26h
+	csr mhpmevent27h
+	csr mhpmevent28h
+	csr mhpmevent29h
+	csr mhpmevent30h
+	csr mhpmevent31h
+
 	# Supported in previous priv spec, but dropped now
 
 	csr ubadaddr		# 0x043 in 1.9.1, but the value is utval since 1.10
diff --git a/include/opcode/riscv-opc.h b/include/opcode/riscv-opc.h
index 97a37bae01c..8546a6e7172 100644
--- a/include/opcode/riscv-opc.h
+++ b/include/opcode/riscv-opc.h
@@ -2453,6 +2453,37 @@
 #define CSR_HSTATEEN1H 0x61d
 #define CSR_HSTATEEN2H 0x61e
 #define CSR_HSTATEEN3H 0x61f
+/* Sscofpmf extension */
+#define CSR_SCOUNTOVF 0xda0
+#define CSR_MHPMEVENT3H 0x723
+#define CSR_MHPMEVENT4H 0x724
+#define CSR_MHPMEVENT5H 0x725
+#define CSR_MHPMEVENT6H 0x726
+#define CSR_MHPMEVENT7H 0x727
+#define CSR_MHPMEVENT8H 0x728
+#define CSR_MHPMEVENT9H 0x729
+#define CSR_MHPMEVENT10H 0x72a
+#define CSR_MHPMEVENT11H 0x72b
+#define CSR_MHPMEVENT12H 0x72c
+#define CSR_MHPMEVENT13H 0x72d
+#define CSR_MHPMEVENT14H 0x72e
+#define CSR_MHPMEVENT15H 0x72f
+#define CSR_MHPMEVENT16H 0x730
+#define CSR_MHPMEVENT17H 0x731
+#define CSR_MHPMEVENT18H 0x732
+#define CSR_MHPMEVENT19H 0x733
+#define CSR_MHPMEVENT20H 0x734
+#define CSR_MHPMEVENT21H 0x735
+#define CSR_MHPMEVENT22H 0x736
+#define CSR_MHPMEVENT23H 0x737
+#define CSR_MHPMEVENT24H 0x738
+#define CSR_MHPMEVENT25H 0x739
+#define CSR_MHPMEVENT26H 0x73a
+#define CSR_MHPMEVENT27H 0x73b
+#define CSR_MHPMEVENT28H 0x73c
+#define CSR_MHPMEVENT29H 0x73d
+#define CSR_MHPMEVENT30H 0x73e
+#define CSR_MHPMEVENT31H 0x73f
 /* Unprivileged Floating-Point CSR addresses.  */
 #define CSR_FFLAGS 0x1
 #define CSR_FRM 0x2
@@ -3139,6 +3170,37 @@ DECLARE_CSR(hstateen0h, CSR_HSTATEEN0H, CSR_CLASS_SMSTATEEN_AND_H_32, PRIV_SPEC_
 DECLARE_CSR(hstateen1h, CSR_HSTATEEN1H, CSR_CLASS_SMSTATEEN_AND_H_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
 DECLARE_CSR(hstateen2h, CSR_HSTATEEN2H, CSR_CLASS_SMSTATEEN_AND_H_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
 DECLARE_CSR(hstateen3h, CSR_HSTATEEN3H, CSR_CLASS_SMSTATEEN_AND_H_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+/* Sscofpmf extension */
+DECLARE_CSR(scountovf, CSR_SCOUNTOVF, CSR_CLASS_SSCOFPMF, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(mhpmevent3h, CSR_MHPMEVENT3H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(mhpmevent4h, CSR_MHPMEVENT4H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(mhpmevent5h, CSR_MHPMEVENT5H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(mhpmevent6h, CSR_MHPMEVENT6H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(mhpmevent7h, CSR_MHPMEVENT7H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(mhpmevent8h, CSR_MHPMEVENT8H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(mhpmevent9h, CSR_MHPMEVENT9H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(mhpmevent10h, CSR_MHPMEVENT10H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(mhpmevent11h, CSR_MHPMEVENT11H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(mhpmevent12h, CSR_MHPMEVENT12H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(mhpmevent13h, CSR_MHPMEVENT13H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(mhpmevent14h, CSR_MHPMEVENT14H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(mhpmevent15h, CSR_MHPMEVENT15H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(mhpmevent16h, CSR_MHPMEVENT16H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(mhpmevent17h, CSR_MHPMEVENT17H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(mhpmevent18h, CSR_MHPMEVENT18H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(mhpmevent19h, CSR_MHPMEVENT19H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(mhpmevent20h, CSR_MHPMEVENT20H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(mhpmevent21h, CSR_MHPMEVENT21H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(mhpmevent22h, CSR_MHPMEVENT22H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(mhpmevent23h, CSR_MHPMEVENT23H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(mhpmevent24h, CSR_MHPMEVENT24H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(mhpmevent25h, CSR_MHPMEVENT25H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(mhpmevent26h, CSR_MHPMEVENT26H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(mhpmevent27h, CSR_MHPMEVENT27H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(mhpmevent28h, CSR_MHPMEVENT28H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+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)
 /* Dropped CSRs.  */
 DECLARE_CSR(mbase, CSR_MBASE, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_1P10)
 DECLARE_CSR(mbound, CSR_MBOUND, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_1P10)
-- 
2.34.1


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

* [PATCH v3 4/4] RISC-V: Add 'Sstc' extension and its CSRs
  2022-06-24  2:51     ` [PATCH v3 0/4] RISC-V: Add CSRs for several supervisor extensions Tsukasa OI
                         ` (2 preceding siblings ...)
  2022-06-24  2:51       ` [PATCH v3 3/4] RISC-V: Add 'Sscofpmf' extension with " Tsukasa OI
@ 2022-06-24  2:51       ` Tsukasa OI
  2022-06-28  1:40       ` [PATCH v3 0/4] RISC-V: Add CSRs for several supervisor extensions Nelson Chu
  4 siblings, 0 replies; 32+ messages in thread
From: Tsukasa OI @ 2022-06-24  2:51 UTC (permalink / raw)
  To: Tsukasa OI, Kito Cheng, Nelson Chu, Palmer Dabbelt; +Cc: binutils

This commit adds "stimecmp / vstimecmp" Extension (Sstc) and its CSRs.

bfd/ChangeLog:

	* elfxx-riscv.c (riscv_supported_std_s_ext): Add 'Sstc'
	extension to valid 'S' extension list.

gas/ChangeLog:

	* config/tc-riscv.c (enum riscv_csr_class): Add CSR classes for
	'Sstc' extension. (riscv_csr_address): Add handling for new CSR
	classes.
	* testsuite/gas/riscv/csr-dw-regnums.s: Add new CSRs.
	* testsuite/gas/riscv/csr-dw-regnums.d: 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_STIMECMP, CSR_STIMECMPH,
	CSR_VSTIMECMP, CSR_VSTIMECMPH): New CSR macros.
---
 bfd/elfxx-riscv.c                           |  1 +
 gas/config/tc-riscv.c                       | 14 ++++++++++++++
 gas/testsuite/gas/riscv/csr-dw-regnums.d    |  4 ++++
 gas/testsuite/gas/riscv/csr-dw-regnums.s    |  5 +++++
 gas/testsuite/gas/riscv/csr-version-1p10.d  |  8 ++++++++
 gas/testsuite/gas/riscv/csr-version-1p10.l  | 16 ++++++++++++++++
 gas/testsuite/gas/riscv/csr-version-1p11.d  |  8 ++++++++
 gas/testsuite/gas/riscv/csr-version-1p11.l  | 16 ++++++++++++++++
 gas/testsuite/gas/riscv/csr-version-1p12.d  |  8 ++++++++
 gas/testsuite/gas/riscv/csr-version-1p12.l  | 16 ++++++++++++++++
 gas/testsuite/gas/riscv/csr-version-1p9p1.d |  8 ++++++++
 gas/testsuite/gas/riscv/csr-version-1p9p1.l | 16 ++++++++++++++++
 gas/testsuite/gas/riscv/csr.s               |  6 ++++++
 include/opcode/riscv-opc.h                  | 10 ++++++++++
 14 files changed, 136 insertions(+)

diff --git a/bfd/elfxx-riscv.c b/bfd/elfxx-riscv.c
index 855501c8eeb..bf7dc20e892 100644
--- a/bfd/elfxx-riscv.c
+++ b/bfd/elfxx-riscv.c
@@ -1233,6 +1233,7 @@ static struct riscv_supported_ext riscv_supported_std_s_ext[] =
 {
   {"smstateen",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
   {"sscofpmf",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
+  {"sstc",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
   {"svinval",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
   {NULL, 0, 0, 0, 0}
 };
diff --git a/gas/config/tc-riscv.c b/gas/config/tc-riscv.c
index 2f6180ea51e..a0e8456a0d1 100644
--- a/gas/config/tc-riscv.c
+++ b/gas/config/tc-riscv.c
@@ -74,6 +74,10 @@ enum riscv_csr_class
   CSR_CLASS_SMSTATEEN_AND_H_32,	/* Smstateen RV32 only (with H) */
   CSR_CLASS_SSCOFPMF,		/* Sscofpmf only */
   CSR_CLASS_SSCOFPMF_32,	/* Sscofpmf RV32 only */
+  CSR_CLASS_SSTC,		/* Sstc only */
+  CSR_CLASS_SSTC_AND_H,		/* Sstc only (with H) */
+  CSR_CLASS_SSTC_32,		/* Sstc RV32 only */
+  CSR_CLASS_SSTC_AND_H_32,	/* Sstc RV32 only (with H) */
 };
 
 /* This structure holds all restricted conditions for a CSR.  */
@@ -949,6 +953,16 @@ riscv_csr_address (const char *csr_name,
     case CSR_CLASS_SSCOFPMF:
       extension = "sscofpmf";
       break;
+    case CSR_CLASS_SSTC:
+    case CSR_CLASS_SSTC_AND_H:
+    case CSR_CLASS_SSTC_32:
+    case CSR_CLASS_SSTC_AND_H_32:
+      is_rv32_only = (csr_class == CSR_CLASS_SSTC_32
+		      || csr_class == CSR_CLASS_SSTC_AND_H_32);
+      is_h_required = (csr_class == CSR_CLASS_SSTC_AND_H
+		      || csr_class == CSR_CLASS_SSTC_AND_H_32);
+      extension = "sstc";
+      break;
     case CSR_CLASS_DEBUG:
       break;
     default:
diff --git a/gas/testsuite/gas/riscv/csr-dw-regnums.d b/gas/testsuite/gas/riscv/csr-dw-regnums.d
index 2f353293faa..b4b3806a085 100644
--- a/gas/testsuite/gas/riscv/csr-dw-regnums.d
+++ b/gas/testsuite/gas/riscv/csr-dw-regnums.d
@@ -363,6 +363,10 @@ 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: 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
+  DW_CFA_offset_extended_sf: r4701 \(vstimecmph\) at cfa\+2420
   DW_CFA_offset_extended_sf: r4163 \(utval\) at cfa\+268
   DW_CFA_offset_extended_sf: r4419 \(stval\) at cfa\+1292
   DW_CFA_offset_extended_sf: r4480 \(satp\) at cfa\+1536
diff --git a/gas/testsuite/gas/riscv/csr-dw-regnums.s b/gas/testsuite/gas/riscv/csr-dw-regnums.s
index caac321c6e2..6cfa415ebc2 100644
--- a/gas/testsuite/gas/riscv/csr-dw-regnums.s
+++ b/gas/testsuite/gas/riscv/csr-dw-regnums.s
@@ -359,6 +359,11 @@ _start:
 	.cfi_offset mhpmevent29h, 7412
 	.cfi_offset mhpmevent30h, 7416
 	.cfi_offset mhpmevent31h, 7420
+	# Sstc extension
+	.cfi_offset stimecmp, 1332
+	.cfi_offset stimecmph, 1396
+	.cfi_offset vstimecmp, 2356
+	.cfi_offset vstimecmph, 2420
 	# dropped
 	.cfi_offset ubadaddr, 268	# aliases
 	.cfi_offset sbadaddr, 1292	# aliases
diff --git a/gas/testsuite/gas/riscv/csr-version-1p10.d b/gas/testsuite/gas/riscv/csr-version-1p10.d
index 90cc5dd3a1e..bd8b10302e3 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p10.d
+++ b/gas/testsuite/gas/riscv/csr-version-1p10.d
@@ -701,6 +701,14 @@ 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]+:[ 	]+14d02573[ 	]+csrr[ 	]+a0,stimecmp
+[ 	]+[0-9a-f]+:[ 	]+14d59073[ 	]+csrw[ 	]+stimecmp,a1
+[ 	]+[0-9a-f]+:[ 	]+15d02573[ 	]+csrr[ 	]+a0,stimecmph
+[ 	]+[0-9a-f]+:[ 	]+15d59073[ 	]+csrw[ 	]+stimecmph,a1
+[ 	]+[0-9a-f]+:[ 	]+24d02573[ 	]+csrr[ 	]+a0,vstimecmp
+[ 	]+[0-9a-f]+:[ 	]+24d59073[ 	]+csrw[ 	]+vstimecmp,a1
+[ 	]+[0-9a-f]+:[ 	]+25d02573[ 	]+csrr[ 	]+a0,vstimecmph
+[ 	]+[0-9a-f]+:[ 	]+25d59073[ 	]+csrw[ 	]+vstimecmph,a1
 [ 	]+[0-9a-f]+:[ 	]+04302573[ 	]+csrr[ 	]+a0,utval
 [ 	]+[0-9a-f]+:[ 	]+04359073[ 	]+csrw[ 	]+utval,a1
 [ 	]+[0-9a-f]+:[ 	]+14302573[ 	]+csrr[ 	]+a0,stval
diff --git a/gas/testsuite/gas/riscv/csr-version-1p10.l b/gas/testsuite/gas/riscv/csr-version-1p10.l
index e4144b6477a..b778453b556 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p10.l
+++ b/gas/testsuite/gas/riscv/csr-version-1p10.l
@@ -602,6 +602,22 @@
 .*Warning: invalid CSR `mhpmevent31h', needs `sscofpmf' extension
 .*Warning: invalid CSR `mhpmevent31h', needs rv32i extension
 .*Warning: invalid CSR `mhpmevent31h', needs `sscofpmf' extension
+.*Warning: invalid CSR `stimecmp', needs `sstc' extension
+.*Warning: invalid CSR `stimecmp', needs `sstc' extension
+.*Warning: invalid CSR `stimecmph', needs rv32i extension
+.*Warning: invalid CSR `stimecmph', needs `sstc' extension
+.*Warning: invalid CSR `stimecmph', needs rv32i extension
+.*Warning: invalid CSR `stimecmph', needs `sstc' extension
+.*Warning: invalid CSR `vstimecmp', needs `h' extension
+.*Warning: invalid CSR `vstimecmp', needs `sstc' extension
+.*Warning: invalid CSR `vstimecmp', needs `h' extension
+.*Warning: invalid CSR `vstimecmp', needs `sstc' extension
+.*Warning: invalid CSR `vstimecmph', needs rv32i extension
+.*Warning: invalid CSR `vstimecmph', needs `h' extension
+.*Warning: invalid CSR `vstimecmph', needs `sstc' extension
+.*Warning: invalid CSR `vstimecmph', needs rv32i extension
+.*Warning: invalid CSR `vstimecmph', needs `h' extension
+.*Warning: invalid CSR `vstimecmph', needs `sstc' extension
 .*Warning: invalid CSR `ubadaddr' for the privileged spec `1.10'
 .*Warning: invalid CSR `ubadaddr' for the privileged spec `1.10'
 .*Warning: invalid CSR `sbadaddr' for the privileged spec `1.10'
diff --git a/gas/testsuite/gas/riscv/csr-version-1p11.d b/gas/testsuite/gas/riscv/csr-version-1p11.d
index a85875acf08..5d6333884f1 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p11.d
+++ b/gas/testsuite/gas/riscv/csr-version-1p11.d
@@ -701,6 +701,14 @@ 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]+:[ 	]+14d02573[ 	]+csrr[ 	]+a0,stimecmp
+[ 	]+[0-9a-f]+:[ 	]+14d59073[ 	]+csrw[ 	]+stimecmp,a1
+[ 	]+[0-9a-f]+:[ 	]+15d02573[ 	]+csrr[ 	]+a0,stimecmph
+[ 	]+[0-9a-f]+:[ 	]+15d59073[ 	]+csrw[ 	]+stimecmph,a1
+[ 	]+[0-9a-f]+:[ 	]+24d02573[ 	]+csrr[ 	]+a0,vstimecmp
+[ 	]+[0-9a-f]+:[ 	]+24d59073[ 	]+csrw[ 	]+vstimecmp,a1
+[ 	]+[0-9a-f]+:[ 	]+25d02573[ 	]+csrr[ 	]+a0,vstimecmph
+[ 	]+[0-9a-f]+:[ 	]+25d59073[ 	]+csrw[ 	]+vstimecmph,a1
 [ 	]+[0-9a-f]+:[ 	]+04302573[ 	]+csrr[ 	]+a0,utval
 [ 	]+[0-9a-f]+:[ 	]+04359073[ 	]+csrw[ 	]+utval,a1
 [ 	]+[0-9a-f]+:[ 	]+14302573[ 	]+csrr[ 	]+a0,stval
diff --git a/gas/testsuite/gas/riscv/csr-version-1p11.l b/gas/testsuite/gas/riscv/csr-version-1p11.l
index f4a57f2c409..78bae817470 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p11.l
+++ b/gas/testsuite/gas/riscv/csr-version-1p11.l
@@ -600,6 +600,22 @@
 .*Warning: invalid CSR `mhpmevent31h', needs `sscofpmf' extension
 .*Warning: invalid CSR `mhpmevent31h', needs rv32i extension
 .*Warning: invalid CSR `mhpmevent31h', needs `sscofpmf' extension
+.*Warning: invalid CSR `stimecmp', needs `sstc' extension
+.*Warning: invalid CSR `stimecmp', needs `sstc' extension
+.*Warning: invalid CSR `stimecmph', needs rv32i extension
+.*Warning: invalid CSR `stimecmph', needs `sstc' extension
+.*Warning: invalid CSR `stimecmph', needs rv32i extension
+.*Warning: invalid CSR `stimecmph', needs `sstc' extension
+.*Warning: invalid CSR `vstimecmp', needs `h' extension
+.*Warning: invalid CSR `vstimecmp', needs `sstc' extension
+.*Warning: invalid CSR `vstimecmp', needs `h' extension
+.*Warning: invalid CSR `vstimecmp', needs `sstc' extension
+.*Warning: invalid CSR `vstimecmph', needs rv32i extension
+.*Warning: invalid CSR `vstimecmph', needs `h' extension
+.*Warning: invalid CSR `vstimecmph', needs `sstc' extension
+.*Warning: invalid CSR `vstimecmph', needs rv32i extension
+.*Warning: invalid CSR `vstimecmph', needs `h' extension
+.*Warning: invalid CSR `vstimecmph', needs `sstc' extension
 .*Warning: invalid CSR `ubadaddr' for the privileged spec `1.11'
 .*Warning: invalid CSR `ubadaddr' for the privileged spec `1.11'
 .*Warning: invalid CSR `sbadaddr' for the privileged spec `1.11'
diff --git a/gas/testsuite/gas/riscv/csr-version-1p12.d b/gas/testsuite/gas/riscv/csr-version-1p12.d
index 60f19bff874..728e647c552 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p12.d
+++ b/gas/testsuite/gas/riscv/csr-version-1p12.d
@@ -701,6 +701,14 @@ 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]+:[ 	]+14d02573[ 	]+csrr[ 	]+a0,stimecmp
+[ 	]+[0-9a-f]+:[ 	]+14d59073[ 	]+csrw[ 	]+stimecmp,a1
+[ 	]+[0-9a-f]+:[ 	]+15d02573[ 	]+csrr[ 	]+a0,stimecmph
+[ 	]+[0-9a-f]+:[ 	]+15d59073[ 	]+csrw[ 	]+stimecmph,a1
+[ 	]+[0-9a-f]+:[ 	]+24d02573[ 	]+csrr[ 	]+a0,vstimecmp
+[ 	]+[0-9a-f]+:[ 	]+24d59073[ 	]+csrw[ 	]+vstimecmp,a1
+[ 	]+[0-9a-f]+:[ 	]+25d02573[ 	]+csrr[ 	]+a0,vstimecmph
+[ 	]+[0-9a-f]+:[ 	]+25d59073[ 	]+csrw[ 	]+vstimecmph,a1
 [ 	]+[0-9a-f]+:[ 	]+04302573[ 	]+csrr[ 	]+a0,0x43
 [ 	]+[0-9a-f]+:[ 	]+04359073[ 	]+csrw[ 	]+0x43,a1
 [ 	]+[0-9a-f]+:[ 	]+14302573[ 	]+csrr[ 	]+a0,stval
diff --git a/gas/testsuite/gas/riscv/csr-version-1p12.l b/gas/testsuite/gas/riscv/csr-version-1p12.l
index 37522fadbf4..cb026bb55e0 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p12.l
+++ b/gas/testsuite/gas/riscv/csr-version-1p12.l
@@ -462,6 +462,22 @@
 .*Warning: invalid CSR `mhpmevent31h', needs `sscofpmf' extension
 .*Warning: invalid CSR `mhpmevent31h', needs rv32i extension
 .*Warning: invalid CSR `mhpmevent31h', needs `sscofpmf' extension
+.*Warning: invalid CSR `stimecmp', needs `sstc' extension
+.*Warning: invalid CSR `stimecmp', needs `sstc' extension
+.*Warning: invalid CSR `stimecmph', needs rv32i extension
+.*Warning: invalid CSR `stimecmph', needs `sstc' extension
+.*Warning: invalid CSR `stimecmph', needs rv32i extension
+.*Warning: invalid CSR `stimecmph', needs `sstc' extension
+.*Warning: invalid CSR `vstimecmp', needs `h' extension
+.*Warning: invalid CSR `vstimecmp', needs `sstc' extension
+.*Warning: invalid CSR `vstimecmp', needs `h' extension
+.*Warning: invalid CSR `vstimecmp', needs `sstc' extension
+.*Warning: invalid CSR `vstimecmph', needs rv32i extension
+.*Warning: invalid CSR `vstimecmph', needs `h' extension
+.*Warning: invalid CSR `vstimecmph', needs `sstc' extension
+.*Warning: invalid CSR `vstimecmph', needs rv32i extension
+.*Warning: invalid CSR `vstimecmph', needs `h' extension
+.*Warning: invalid CSR `vstimecmph', needs `sstc' extension
 .*Warning: invalid CSR `ubadaddr' for the privileged spec `1.12'
 .*Warning: invalid CSR `ubadaddr' for the privileged spec `1.12'
 .*Warning: invalid CSR `sbadaddr' for the privileged spec `1.12'
diff --git a/gas/testsuite/gas/riscv/csr-version-1p9p1.d b/gas/testsuite/gas/riscv/csr-version-1p9p1.d
index e9eb8c031fb..a34b99f4632 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p9p1.d
+++ b/gas/testsuite/gas/riscv/csr-version-1p9p1.d
@@ -701,6 +701,14 @@ 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]+:[ 	]+14d02573[ 	]+csrr[ 	]+a0,stimecmp
+[ 	]+[0-9a-f]+:[ 	]+14d59073[ 	]+csrw[ 	]+stimecmp,a1
+[ 	]+[0-9a-f]+:[ 	]+15d02573[ 	]+csrr[ 	]+a0,stimecmph
+[ 	]+[0-9a-f]+:[ 	]+15d59073[ 	]+csrw[ 	]+stimecmph,a1
+[ 	]+[0-9a-f]+:[ 	]+24d02573[ 	]+csrr[ 	]+a0,vstimecmp
+[ 	]+[0-9a-f]+:[ 	]+24d59073[ 	]+csrw[ 	]+vstimecmp,a1
+[ 	]+[0-9a-f]+:[ 	]+25d02573[ 	]+csrr[ 	]+a0,vstimecmph
+[ 	]+[0-9a-f]+:[ 	]+25d59073[ 	]+csrw[ 	]+vstimecmph,a1
 [ 	]+[0-9a-f]+:[ 	]+04302573[ 	]+csrr[ 	]+a0,ubadaddr
 [ 	]+[0-9a-f]+:[ 	]+04359073[ 	]+csrw[ 	]+ubadaddr,a1
 [ 	]+[0-9a-f]+:[ 	]+14302573[ 	]+csrr[ 	]+a0,sbadaddr
diff --git a/gas/testsuite/gas/riscv/csr-version-1p9p1.l b/gas/testsuite/gas/riscv/csr-version-1p9p1.l
index 893f8c8ba56..4fac40fb589 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p9p1.l
+++ b/gas/testsuite/gas/riscv/csr-version-1p9p1.l
@@ -652,6 +652,22 @@
 .*Warning: invalid CSR `mhpmevent31h', needs `sscofpmf' extension
 .*Warning: invalid CSR `mhpmevent31h', needs rv32i extension
 .*Warning: invalid CSR `mhpmevent31h', needs `sscofpmf' extension
+.*Warning: invalid CSR `stimecmp', needs `sstc' extension
+.*Warning: invalid CSR `stimecmp', needs `sstc' extension
+.*Warning: invalid CSR `stimecmph', needs rv32i extension
+.*Warning: invalid CSR `stimecmph', needs `sstc' extension
+.*Warning: invalid CSR `stimecmph', needs rv32i extension
+.*Warning: invalid CSR `stimecmph', needs `sstc' extension
+.*Warning: invalid CSR `vstimecmp', needs `h' extension
+.*Warning: invalid CSR `vstimecmp', needs `sstc' extension
+.*Warning: invalid CSR `vstimecmp', needs `h' extension
+.*Warning: invalid CSR `vstimecmp', needs `sstc' extension
+.*Warning: invalid CSR `vstimecmph', needs rv32i extension
+.*Warning: invalid CSR `vstimecmph', needs `h' extension
+.*Warning: invalid CSR `vstimecmph', needs `sstc' extension
+.*Warning: invalid CSR `vstimecmph', needs rv32i extension
+.*Warning: invalid CSR `vstimecmph', needs `h' extension
+.*Warning: invalid CSR `vstimecmph', needs `sstc' extension
 .*Warning: invalid CSR `utval' for the privileged spec `1.9.1'
 .*Warning: invalid CSR `utval' for the privileged spec `1.9.1'
 .*Warning: invalid CSR `fflags', needs `f' extension
diff --git a/gas/testsuite/gas/riscv/csr.s b/gas/testsuite/gas/riscv/csr.s
index 2a723123f1b..128aeb83a04 100644
--- a/gas/testsuite/gas/riscv/csr.s
+++ b/gas/testsuite/gas/riscv/csr.s
@@ -391,6 +391,12 @@
 	csr mhpmevent30h
 	csr mhpmevent31h
 
+	# Sstc extension
+	csr stimecmp
+	csr stimecmph
+	csr vstimecmp
+	csr vstimecmph
+
 	# Supported in previous priv spec, but dropped now
 
 	csr ubadaddr		# 0x043 in 1.9.1, but the value is utval since 1.10
diff --git a/include/opcode/riscv-opc.h b/include/opcode/riscv-opc.h
index 8546a6e7172..88b8d7ff595 100644
--- a/include/opcode/riscv-opc.h
+++ b/include/opcode/riscv-opc.h
@@ -2484,6 +2484,11 @@
 #define CSR_MHPMEVENT29H 0x73d
 #define CSR_MHPMEVENT30H 0x73e
 #define CSR_MHPMEVENT31H 0x73f
+/* Sstc extension */
+#define CSR_STIMECMP 0x14d
+#define CSR_STIMECMPH 0x15d
+#define CSR_VSTIMECMP 0x24d
+#define CSR_VSTIMECMPH 0x25d
 /* Unprivileged Floating-Point CSR addresses.  */
 #define CSR_FFLAGS 0x1
 #define CSR_FRM 0x2
@@ -3201,6 +3206,11 @@ 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)
+/* 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)
+DECLARE_CSR(vstimecmp, CSR_VSTIMECMP, CSR_CLASS_SSTC_AND_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(vstimecmph, CSR_VSTIMECMPH, CSR_CLASS_SSTC_AND_H_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
 /* Dropped CSRs.  */
 DECLARE_CSR(mbase, CSR_MBASE, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_1P10)
 DECLARE_CSR(mbound, CSR_MBOUND, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_1P10)
-- 
2.34.1


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

* Re: [PATCH v3 0/4] RISC-V: Add CSRs for several supervisor extensions
  2022-06-24  2:51     ` [PATCH v3 0/4] RISC-V: Add CSRs for several supervisor extensions Tsukasa OI
                         ` (3 preceding siblings ...)
  2022-06-24  2:51       ` [PATCH v3 4/4] RISC-V: Add 'Sstc' extension and " Tsukasa OI
@ 2022-06-28  1:40       ` Nelson Chu
  2022-06-28  5:33         ` Tsukasa OI
  4 siblings, 1 reply; 32+ messages in thread
From: Nelson Chu @ 2022-06-28  1:40 UTC (permalink / raw)
  To: Tsukasa OI; +Cc: Kito Cheng, Palmer Dabbelt, Binutils

Thanks, passed toolchain regressions, so all committed.

On Fri, Jun 24, 2022 at 10:52 AM Tsukasa OI
<research_trasio@irq.a4lg.com> wrote:
>
> v1:
> <https://sourceware.org/pipermail/binutils/2022-February/119858.html>
> v2:
> <https://sourceware.org/pipermail/binutils/2022-May/120974.html>
> CURRENT (GitHub):
> <https://github.com/a4lg/binutils-gdb/tree/riscv-s-exts-csrs>
>
> This patchset adds CSRs for following extensions:
>
> -   Smstateen
> -   Sscofpmf
> -   Sstc
>
> Because 'H' extension and related CSR class is now implemented, we can
> now safely and consistently implement hypervisor-related CSR feature
> gate masking.
>
> [CHANGES: v2 -> v3]
> -   Follow up to now implemented 'H' extension support
> -   Add (and refactor) complex CSR feature gate handling (on H and RV32)
> -   Make new CSRs independent to privileged architecture
>     (as initially suggested by Nelson Chu)
>
> Thanks,
> Tsukasa
>
>
>
>
> Tsukasa OI (4):
>   RISC-V: Add new CSR feature gate handling (RV32,H)

I think this one is a workaround since we may have more complicate
macros like INSN_CLASS in the future (or, and, ...).  Maybe we should
have the function similar to riscv_multi_subset_supports_ext for CSRs.
Or maybe we could combine the riscv_multi_subset_supports and
riscv_multi_subset_supports_ext functions into one, just return NULL
if everything went well, otherwise return the error msg directly, and
so does the CSR_CLASS.  Anyway, the fix is fine for now, since we will
get wrong error message without it.  We could have a better fix in the
future patches.

Thanks
Nelson

>   RISC-V: Add 'Smstateen' extension and its CSRs
>   RISC-V: Add 'Sscofpmf' extension with its CSRs
>   RISC-V: Add 'Sstc' extension and its CSRs
>
>  bfd/elfxx-riscv.c                           |   3 +
>  gas/config/tc-riscv.c                       |  47 ++++-
>  gas/testsuite/gas/riscv/csr-dw-regnums.d    |  54 +++++
>  gas/testsuite/gas/riscv/csr-dw-regnums.s    |  57 ++++++
>  gas/testsuite/gas/riscv/csr-version-1p10.d  | 108 ++++++++++
>  gas/testsuite/gas/riscv/csr-version-1p10.l  | 207 ++++++++++++++++++++
>  gas/testsuite/gas/riscv/csr-version-1p11.d  | 108 ++++++++++
>  gas/testsuite/gas/riscv/csr-version-1p11.l  | 207 ++++++++++++++++++++
>  gas/testsuite/gas/riscv/csr-version-1p12.d  | 108 ++++++++++
>  gas/testsuite/gas/riscv/csr-version-1p12.l  | 207 ++++++++++++++++++++
>  gas/testsuite/gas/riscv/csr-version-1p9p1.d | 108 ++++++++++
>  gas/testsuite/gas/riscv/csr-version-1p9p1.l | 207 ++++++++++++++++++++
>  gas/testsuite/gas/riscv/csr.s               |  60 ++++++
>  include/opcode/riscv-opc.h                  | 114 +++++++++++
>  14 files changed, 1591 insertions(+), 4 deletions(-)
>
>
> base-commit: 54603ee2aeaf248220f0f440c322ff02e98cd403
> --
> 2.34.1
>

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

* Re: [PATCH v3 0/4] RISC-V: Add CSRs for several supervisor extensions
  2022-06-28  1:40       ` [PATCH v3 0/4] RISC-V: Add CSRs for several supervisor extensions Nelson Chu
@ 2022-06-28  5:33         ` Tsukasa OI
  2022-06-28  6:56           ` Nelson Chu
  0 siblings, 1 reply; 32+ messages in thread
From: Tsukasa OI @ 2022-06-28  5:33 UTC (permalink / raw)
  To: Nelson Chu; +Cc: Kito Cheng, Palmer Dabbelt, Binutils

Thanks for your opinion!

On 2022/06/28 10:40, Nelson Chu wrote:
> Thanks, passed toolchain regressions, so all committed.
> 
> On Fri, Jun 24, 2022 at 10:52 AM Tsukasa OI
> <research_trasio@irq.a4lg.com> wrote:
>>
>> v1:
>> <https://sourceware.org/pipermail/binutils/2022-February/119858.html>
>> v2:
>> <https://sourceware.org/pipermail/binutils/2022-May/120974.html>
>> CURRENT (GitHub):
>> <https://github.com/a4lg/binutils-gdb/tree/riscv-s-exts-csrs>
>>
>> This patchset adds CSRs for following extensions:
>>
>> -   Smstateen
>> -   Sscofpmf
>> -   Sstc
>>
>> Because 'H' extension and related CSR class is now implemented, we can
>> now safely and consistently implement hypervisor-related CSR feature
>> gate masking.
>>
>> [CHANGES: v2 -> v3]
>> -   Follow up to now implemented 'H' extension support
>> -   Add (and refactor) complex CSR feature gate handling (on H and RV32)
>> -   Make new CSRs independent to privileged architecture
>>     (as initially suggested by Nelson Chu)
>>
>> Thanks,
>> Tsukasa
>>
>>
>>
>>
>> Tsukasa OI (4):
>>   RISC-V: Add new CSR feature gate handling (RV32,H)
> 
> I think this one is a workaround since we may have more complicate
> macros like INSN_CLASS in the future (or, and, ...).  Maybe we should
> have the function similar to riscv_multi_subset_supports_ext for CSRs.
> Or maybe we could combine the riscv_multi_subset_supports and
> riscv_multi_subset_supports_ext functions into one, just return NULL
> if everything went well, otherwise return the error msg directly, and
> so does the CSR_CLASS.  Anyway, the fix is fine for now, since we will
> get wrong error message without it.  We could have a better fix in the
> future patches.

Yes, definitely a workaround.  Making something like INSN_CLASS_* 
handling is LGTM but I have some other thoughts.

Unlike INSN_CLASS_*, CSR_CLASS_* will have simpler and comon
"additional" requirements like RV32 and H.  Then, how about splitting 
base CSR class and additional requirements?

Current DECLARE_CSR design:
DECLARE_CSR(mstateen0, CSR_MSTATEEN0, CSR_CLASS_SMSTATEEN,...
DECLARE_CSR(hstateen0, CSR_HSTATEEN0, CSR_CLASS_SMSTATEEN_AND_H,...
DECLARE_CSR(mstateen0h, CSR_MSTATEEN0H, CSR_CLASS_SMSTATEEN_32,...
DECLARE_CSR(hstateen0h, CSR_HSTATEEN0H, CSR_CLASS_SMSTATEEN_AND_H_32,...

My idea:
DECLARE_CSR(mstateen0, CSR_MSTATEEN0, CSR_CLASS_SMSTATEEN, 0,...
DECLARE_CSR(hstateen0, CSR_HSTATEEN0, CSR_CLASS_SMSTATEEN, CSR_REQ_H,...
DECLARE_CSR(mstateen0h, CSR_MSTATEEN0H, CSR_CLASS_SMSTATEEN, CSR_REQ_RV32,...
DECLARE_CSR(hstateen0h, CSR_HSTATEEN0H, CSR_CLASS_SMSTATEEN, CSR_REQ_H | CSR_REQ_RV32,...

Of course, this can be used together with your idea.
I would like to hear everyone's thoughts.

Thanks,
Tsukasa

> 
> Thanks
> Nelson
> 
>>   RISC-V: Add 'Smstateen' extension and its CSRs
>>   RISC-V: Add 'Sscofpmf' extension with its CSRs
>>   RISC-V: Add 'Sstc' extension and its CSRs
>>
>>  bfd/elfxx-riscv.c                           |   3 +
>>  gas/config/tc-riscv.c                       |  47 ++++-
>>  gas/testsuite/gas/riscv/csr-dw-regnums.d    |  54 +++++
>>  gas/testsuite/gas/riscv/csr-dw-regnums.s    |  57 ++++++
>>  gas/testsuite/gas/riscv/csr-version-1p10.d  | 108 ++++++++++
>>  gas/testsuite/gas/riscv/csr-version-1p10.l  | 207 ++++++++++++++++++++
>>  gas/testsuite/gas/riscv/csr-version-1p11.d  | 108 ++++++++++
>>  gas/testsuite/gas/riscv/csr-version-1p11.l  | 207 ++++++++++++++++++++
>>  gas/testsuite/gas/riscv/csr-version-1p12.d  | 108 ++++++++++
>>  gas/testsuite/gas/riscv/csr-version-1p12.l  | 207 ++++++++++++++++++++
>>  gas/testsuite/gas/riscv/csr-version-1p9p1.d | 108 ++++++++++
>>  gas/testsuite/gas/riscv/csr-version-1p9p1.l | 207 ++++++++++++++++++++
>>  gas/testsuite/gas/riscv/csr.s               |  60 ++++++
>>  include/opcode/riscv-opc.h                  | 114 +++++++++++
>>  14 files changed, 1591 insertions(+), 4 deletions(-)
>>
>>
>> base-commit: 54603ee2aeaf248220f0f440c322ff02e98cd403
>> --
>> 2.34.1
>>
> 

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

* Re: [PATCH v3 0/4] RISC-V: Add CSRs for several supervisor extensions
  2022-06-28  5:33         ` Tsukasa OI
@ 2022-06-28  6:56           ` Nelson Chu
  0 siblings, 0 replies; 32+ messages in thread
From: Nelson Chu @ 2022-06-28  6:56 UTC (permalink / raw)
  To: Tsukasa OI; +Cc: Kito Cheng, Palmer Dabbelt, Binutils

On Tue, Jun 28, 2022 at 1:33 PM Tsukasa OI <research_trasio@irq.a4lg.com> wrote:
>
> Thanks for your opinion!
>
> On 2022/06/28 10:40, Nelson Chu wrote:
> > Thanks, passed toolchain regressions, so all committed.
> >
> > On Fri, Jun 24, 2022 at 10:52 AM Tsukasa OI
> > <research_trasio@irq.a4lg.com> wrote:
> >>
> >> v1:
> >> <https://sourceware.org/pipermail/binutils/2022-February/119858.html>
> >> v2:
> >> <https://sourceware.org/pipermail/binutils/2022-May/120974.html>
> >> CURRENT (GitHub):
> >> <https://github.com/a4lg/binutils-gdb/tree/riscv-s-exts-csrs>
> >>
> >> This patchset adds CSRs for following extensions:
> >>
> >> -   Smstateen
> >> -   Sscofpmf
> >> -   Sstc
> >>
> >> Because 'H' extension and related CSR class is now implemented, we can
> >> now safely and consistently implement hypervisor-related CSR feature
> >> gate masking.
> >>
> >> [CHANGES: v2 -> v3]
> >> -   Follow up to now implemented 'H' extension support
> >> -   Add (and refactor) complex CSR feature gate handling (on H and RV32)
> >> -   Make new CSRs independent to privileged architecture
> >>     (as initially suggested by Nelson Chu)
> >>
> >> Thanks,
> >> Tsukasa
> >>
> >>
> >>
> >>
> >> Tsukasa OI (4):
> >>   RISC-V: Add new CSR feature gate handling (RV32,H)
> >
> > I think this one is a workaround since we may have more complicate
> > macros like INSN_CLASS in the future (or, and, ...).  Maybe we should
> > have the function similar to riscv_multi_subset_supports_ext for CSRs.
> > Or maybe we could combine the riscv_multi_subset_supports and
> > riscv_multi_subset_supports_ext functions into one, just return NULL
> > if everything went well, otherwise return the error msg directly, and
> > so does the CSR_CLASS.  Anyway, the fix is fine for now, since we will
> > get wrong error message without it.  We could have a better fix in the
> > future patches.
>
> Yes, definitely a workaround.  Making something like INSN_CLASS_*
> handling is LGTM but I have some other thoughts.
>
> Unlike INSN_CLASS_*, CSR_CLASS_* will have simpler and comon
> "additional" requirements like RV32 and H.  Then, how about splitting
> base CSR class and additional requirements?

Regarding the H as a common additional requirement is OK to me for
now.  We need at least two common requirements as you mentioned: RV32
and H.  And we probably will have two more common requirements: M and
S, which separate the machine/supervisor/hypervisor from the
extensions.  But we cannot be sure if we may have something like
CSR_CLASS_A_OR_B in the future, or we have to consider both "and" and
"or" situations at the same time.  We already have the
INSN_CLASS_F_OR_ZFINX enum for instructions, so maybe we will have
similar ones in the future for CSRs.  Therefore, in the short-term,
since we don't have any "or" situation for CSRs, the additional common
requirement field in the DECLARE_CSR can be acceptable and work as
expected.  But in the long-term, we probably will need another
solution to consider the more complicated situations.  Or we can wait
and think about it when we actually meet the complicated situations.

Thanks
Nelson

> Current DECLARE_CSR design:
> DECLARE_CSR(mstateen0, CSR_MSTATEEN0, CSR_CLASS_SMSTATEEN,...
> DECLARE_CSR(hstateen0, CSR_HSTATEEN0, CSR_CLASS_SMSTATEEN_AND_H,...
> DECLARE_CSR(mstateen0h, CSR_MSTATEEN0H, CSR_CLASS_SMSTATEEN_32,...
> DECLARE_CSR(hstateen0h, CSR_HSTATEEN0H, CSR_CLASS_SMSTATEEN_AND_H_32,...
>
> My idea:
> DECLARE_CSR(mstateen0, CSR_MSTATEEN0, CSR_CLASS_SMSTATEEN, 0,...
> DECLARE_CSR(hstateen0, CSR_HSTATEEN0, CSR_CLASS_SMSTATEEN, CSR_REQ_H,...
> DECLARE_CSR(mstateen0h, CSR_MSTATEEN0H, CSR_CLASS_SMSTATEEN, CSR_REQ_RV32,...
> DECLARE_CSR(hstateen0h, CSR_HSTATEEN0H, CSR_CLASS_SMSTATEEN, CSR_REQ_H | CSR_REQ_RV32,...
>
> Of course, this can be used together with your idea.
> I would like to hear everyone's thoughts.
>
> Thanks,
> Tsukasa
>
> >
> > Thanks
> > Nelson
> >
> >>   RISC-V: Add 'Smstateen' extension and its CSRs
> >>   RISC-V: Add 'Sscofpmf' extension with its CSRs
> >>   RISC-V: Add 'Sstc' extension and its CSRs
> >>
> >>  bfd/elfxx-riscv.c                           |   3 +
> >>  gas/config/tc-riscv.c                       |  47 ++++-
> >>  gas/testsuite/gas/riscv/csr-dw-regnums.d    |  54 +++++
> >>  gas/testsuite/gas/riscv/csr-dw-regnums.s    |  57 ++++++
> >>  gas/testsuite/gas/riscv/csr-version-1p10.d  | 108 ++++++++++
> >>  gas/testsuite/gas/riscv/csr-version-1p10.l  | 207 ++++++++++++++++++++
> >>  gas/testsuite/gas/riscv/csr-version-1p11.d  | 108 ++++++++++
> >>  gas/testsuite/gas/riscv/csr-version-1p11.l  | 207 ++++++++++++++++++++
> >>  gas/testsuite/gas/riscv/csr-version-1p12.d  | 108 ++++++++++
> >>  gas/testsuite/gas/riscv/csr-version-1p12.l  | 207 ++++++++++++++++++++
> >>  gas/testsuite/gas/riscv/csr-version-1p9p1.d | 108 ++++++++++
> >>  gas/testsuite/gas/riscv/csr-version-1p9p1.l | 207 ++++++++++++++++++++
> >>  gas/testsuite/gas/riscv/csr.s               |  60 ++++++
> >>  include/opcode/riscv-opc.h                  | 114 +++++++++++
> >>  14 files changed, 1591 insertions(+), 4 deletions(-)
> >>
> >>
> >> base-commit: 54603ee2aeaf248220f0f440c322ff02e98cd403
> >> --
> >> 2.34.1
> >>
> >

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

end of thread, other threads:[~2022-06-28  6:56 UTC | newest]

Thread overview: 32+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-01-11 10:59 [PATCH 0/6] RISC-V: Add Privileged Arch 1.12 and More CSRs Tsukasa OI
2022-01-11 10:59 ` [PATCH 1/6] RISC-V: Reorganize testcases for CFI directives Tsukasa OI
2022-02-23  6:58   ` Nelson Chu
2022-01-11 10:59 ` [PATCH 2/6] RISC-V: Add Privileged Architecture 1.12 CSRs Tsukasa OI
2022-02-23  6:58   ` Nelson Chu
2022-02-24  2:35     ` Tsukasa OI
2022-02-24  6:05       ` Nelson Chu
2022-01-11 10:59 ` [PATCH 3/6] RISC-V: Add Privileged Arch 1.12 CSR testcases Tsukasa OI
2022-02-23  6:58   ` Nelson Chu
2022-01-11 10:59 ` [PATCH 4/6] RISC-V: Add 'Smstateen' extension and its CSRs Tsukasa OI
2022-01-11 10:59 ` [PATCH 5/6] RISC-V: Add 'Sscofpmf' extension with " Tsukasa OI
2022-01-11 10:59 ` [PATCH 6/6] RISC-V: Add 'Sstc' extension and " Tsukasa OI
2022-02-24 12:10 ` [PATCH 0/3] RISC-V: Add CSRs for several supervisor extensions Tsukasa OI
2022-02-24 12:10   ` [PATCH 1/3] RISC-V: Add 'Smstateen' extension and its CSRs Tsukasa OI
2022-02-25  6:32     ` Nelson Chu
2022-02-25  6:35       ` Tsukasa OI
2022-02-25 10:51       ` Tsukasa OI
2022-03-02  4:34         ` Nelson Chu
2022-02-24 12:10   ` [PATCH 2/3] RISC-V: Add 'Sscofpmf' extension with " Tsukasa OI
2022-02-24 12:10   ` [PATCH 3/3] RISC-V: Add 'Sstc' extension and " Tsukasa OI
2022-05-24  9:35   ` [PATCH v2 0/3] RISC-V: Add CSRs for several supervisor extensions Tsukasa OI
2022-05-24  9:35     ` [PATCH v2 1/3] RISC-V: Add 'Smstateen' extension and its CSRs Tsukasa OI
2022-05-24  9:35     ` [PATCH v2 2/3] RISC-V: Add 'Sscofpmf' extension with " Tsukasa OI
2022-05-24  9:35     ` [PATCH v2 3/3] RISC-V: Add 'Sstc' extension and " Tsukasa OI
2022-06-24  2:51     ` [PATCH v3 0/4] RISC-V: Add CSRs for several supervisor extensions Tsukasa OI
2022-06-24  2:51       ` [PATCH v3 1/4] RISC-V: Add new CSR feature gate handling (RV32,H) Tsukasa OI
2022-06-24  2:51       ` [PATCH v3 2/4] RISC-V: Add 'Smstateen' extension and its CSRs Tsukasa OI
2022-06-24  2:51       ` [PATCH v3 3/4] RISC-V: Add 'Sscofpmf' extension with " Tsukasa OI
2022-06-24  2:51       ` [PATCH v3 4/4] RISC-V: Add 'Sstc' extension and " Tsukasa OI
2022-06-28  1:40       ` [PATCH v3 0/4] RISC-V: Add CSRs for several supervisor extensions Nelson Chu
2022-06-28  5:33         ` Tsukasa OI
2022-06-28  6:56           ` Nelson Chu

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).