public inbox for binutils@sourceware.org
 help / color / mirror / Atom feed
From: Tsukasa OI <research_trasio@irq.a4lg.com>
To: Palmer Dabbelt <palmer@dabbelt.com>, binutils@sourceware.org
Subject: Re: [REVIEW ONLY 1/1] UNRATIFIED RISC-V: Add 'Smclic' extension and its CSRs
Date: Tue, 29 Nov 2022 11:16:21 +0900	[thread overview]
Message-ID: <19959ea1-70de-c13b-9682-271ac070bb2c@irq.a4lg.com> (raw)
In-Reply-To: <mhng-199569f0-e0e5-4315-959d-383d0a563d68@palmer-ri-x1c9a>

On 2022/11/29 11:03, Palmer Dabbelt wrote:
> On Mon, 28 Nov 2022 17:19:53 PST (-0800), binutils@sourceware.org wrote:
>> From: Tsukasa OI <research_trasio@irq.a4lg.com>
>>
>> [DO NOT MERGE]
>> Until 'Smclic' extension is frozen/ratified and final version number is
>> determined, this patch should not be merged upstream.  This commit uses
>> unratified version 0.9 as in the documentation (instead of possible 1.0
>> after ratification).
>>
>> [RFC]
>> It implements u* CSRs as supported in all privileged architectures.
>> Since user-mode interrupt is dropped, we might need to mask or remove them.
> 
> Looks like there's some issues related to these, though it's not super 
> clear what the plan is 
> <https://github.com/riscv/riscv-fast-interrupt/issues/160>.  Probably 
> best to just wait until it's frozen to sort that out?

Yes, that's probably the best idea.  This is based on a document in the
"Development" state but even "Stable" documents have a difference: the
one very likely to change before ratification and the one not so likely
to change.

For instance, I consider that "RISC-V Profiles" documentation likely to
change before ratification [including extension names that we toolchain
developers consider important].  That's why I'm not committing RISC-V
Profiles-related changes except 'Ssstateen' (this is discussed even
outside the profiles).

Additional reference:
<https://github.com/riscv/riscv-fast-interrupt/issues/200>

Tsukasa

> 
>>
>> This commit adds CSR support for the 'Smclic' extension, a part of Core-
>> Local Interrupt Controller (CLIC) extension.
>>
>> This is based on the latest Core-Local Interrupt Controller (CLIC)
>> extension draft (version 0.9-draft):
>> <https://github.com/riscv/riscv-fast-interrupt/blob/e601b94bf43af0e9842b20134814404e488511e3/clic.pdf>
>>
>> bfd/ChangeLog:
>>
>> 	* elfxx-riscv.c (riscv_implicit_subsets): Add implication from
>> 	'Smclic' to 'Zicsr'.  (riscv_supported_std_s_ext) Add 'Smclic'.
>>
>> gas/ChangeLog:
>>
>> 	* config/tc-riscv.c (enum riscv_csr_class): Add new CSR class.
>> 	(riscv_csr_address): Add new CSR class handling.
>> 	* testsuite/gas/riscv/csr.s: Add new CSR test.
>> 	* testsuite/gas/riscv/csr-dw-regnums.s: Likewise.
>> 	* testsuite/gas/riscv/csr-dw-regnums.d: Likewise.
>> 	* 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_MTVT, CSR_MNXTI, CSR_MINTSTATUS,
>> 	CSR_MINTTHRESH, CSR_MSCRATCHCSW, CSR_MSCRATCHCSWL, CSR_STVT,
>> 	CSR_SNXTI, CSR_SINTSTATUS, CSR_SINTTHRESH, CSR_SSCRATCHCSW,
>> 	CSR_SSCRATCHCSWL, CSR_UTVT, CSR_UNXTI, CSR_UINTSTATUS,
>> 	CSR_UINTTHRESH, CSR_USCRATCHCSW, CSR_USCRATCHCSWL): New.
>> ---
>>  bfd/elfxx-riscv.c                           |  2 ++
>>  gas/config/tc-riscv.c                       |  4 +++
>>  gas/testsuite/gas/riscv/csr-dw-regnums.d    | 18 ++++++++++
>>  gas/testsuite/gas/riscv/csr-dw-regnums.s    | 19 ++++++++++
>>  gas/testsuite/gas/riscv/csr-version-1p10.d  | 36 +++++++++++++++++++
>>  gas/testsuite/gas/riscv/csr-version-1p10.l  | 39 +++++++++++++++++++++
>>  gas/testsuite/gas/riscv/csr-version-1p11.d  | 36 +++++++++++++++++++
>>  gas/testsuite/gas/riscv/csr-version-1p11.l  | 39 +++++++++++++++++++++
>>  gas/testsuite/gas/riscv/csr-version-1p12.d  | 36 +++++++++++++++++++
>>  gas/testsuite/gas/riscv/csr-version-1p12.l  | 39 +++++++++++++++++++++
>>  gas/testsuite/gas/riscv/csr-version-1p9p1.d | 36 +++++++++++++++++++
>>  gas/testsuite/gas/riscv/csr-version-1p9p1.l | 39 +++++++++++++++++++++
>>  gas/testsuite/gas/riscv/csr.s               | 20 +++++++++++
>>  include/opcode/riscv-opc.h                  | 38 ++++++++++++++++++++
>>  14 files changed, 401 insertions(+)
>>
>> diff --git a/bfd/elfxx-riscv.c b/bfd/elfxx-riscv.c
>> index 0bcf2fdcfa34..6c60cf7c888e 100644
>> --- a/bfd/elfxx-riscv.c
>> +++ b/bfd/elfxx-riscv.c
>> @@ -1103,6 +1103,7 @@ static struct riscv_implicit_subset riscv_implicit_subsets[] =
>>    {"zks", "zksh",	check_implicit_always},
>>    {"smaia", "ssaia",		check_implicit_always},
>>    {"smstateen", "ssstateen",	check_implicit_always},
>> +  {"smclic", "zicsr",		check_implicit_always},
>>    {"smepmp", "zicsr",		check_implicit_always},
>>    {"ssaia", "zicsr",		check_implicit_always},
>>    {"sscofpmf", "zicsr",		check_implicit_always},
>> @@ -1224,6 +1225,7 @@ static struct riscv_supported_ext riscv_supported_std_z_ext[] =
>>  static struct riscv_supported_ext riscv_supported_std_s_ext[] =
>>  {
>>    {"smaia",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
>> +  {"smclic",		ISA_SPEC_CLASS_DRAFT,		0, 9, 0 },
>>    {"smepmp",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
>>    {"smstateen",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
>>    {"ssaia",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
>> diff --git a/gas/config/tc-riscv.c b/gas/config/tc-riscv.c
>> index 0682eb355241..e90e0ba53987 100644
>> --- a/gas/config/tc-riscv.c
>> +++ b/gas/config/tc-riscv.c
>> @@ -74,6 +74,7 @@ enum riscv_csr_class
>>    CSR_CLASS_H_32,	/* hypervisor, rv32 only */
>>    CSR_CLASS_SMAIA,		/* Smaia */
>>    CSR_CLASS_SMAIA_32,		/* Smaia, rv32 only */
>> +  CSR_CLASS_SMCLIC,		/* Smclic only */
>>    CSR_CLASS_SMSTATEEN,		/* Smstateen only */
>>    CSR_CLASS_SMSTATEEN_32,	/* Smstateen RV32 only */
>>    CSR_CLASS_SSAIA,		/* Ssaia */
>> @@ -1049,6 +1050,9 @@ riscv_csr_address (const char *csr_name,
>>      case CSR_CLASS_SMAIA:
>>        extension = "smaia";
>>        break;
>> +    case CSR_CLASS_SMCLIC:
>> +      extension = "smclic";
>> +      break;
>>      case CSR_CLASS_SMSTATEEN:
>>      case CSR_CLASS_SMSTATEEN_32:
>>        is_rv32_only = (csr_class == CSR_CLASS_SMSTATEEN_32);
>> diff --git a/gas/testsuite/gas/riscv/csr-dw-regnums.d b/gas/testsuite/gas/riscv/csr-dw-regnums.d
>> index fd830666ab89..2b58c6a955b1 100644
>> --- a/gas/testsuite/gas/riscv/csr-dw-regnums.d
>> +++ b/gas/testsuite/gas/riscv/csr-dw-regnums.d
>> @@ -324,6 +324,24 @@ Contents of the .* section:
>>    DW_CFA_offset_extended_sf: r4888 \(mvienh\) at cfa\+3168
>>    DW_CFA_offset_extended_sf: r4889 \(mviph\) at cfa\+3172
>>    DW_CFA_offset_extended_sf: r4948 \(miph\) at cfa\+3408
>> +  DW_CFA_offset_extended_sf: r4871 \(mtvt\) at cfa\+3100
>> +  DW_CFA_offset_extended_sf: r4933 \(mnxti\) at cfa\+3348
>> +  DW_CFA_offset_extended_sf: r8006 \(mintstatus\) at cfa\+15640
>> +  DW_CFA_offset_extended_sf: r4935 \(mintthresh\) at cfa\+3356
>> +  DW_CFA_offset_extended_sf: r4936 \(mscratchcsw\) at cfa\+3360
>> +  DW_CFA_offset_extended_sf: r4937 \(mscratchcswl\) at cfa\+3364
>> +  DW_CFA_offset_extended_sf: r4359 \(stvt\) at cfa\+1052
>> +  DW_CFA_offset_extended_sf: r4421 \(snxti\) at cfa\+1300
>> +  DW_CFA_offset_extended_sf: r7494 \(sintstatus\) at cfa\+13592
>> +  DW_CFA_offset_extended_sf: r4423 \(sintthresh\) at cfa\+1308
>> +  DW_CFA_offset_extended_sf: r4424 \(sscratchcsw\) at cfa\+1312
>> +  DW_CFA_offset_extended_sf: r4425 \(sscratchcswl\) at cfa\+1316
>> +  DW_CFA_offset_extended_sf: r4103 \(utvt\) at cfa\+28
>> +  DW_CFA_offset_extended_sf: r4165 \(unxti\) at cfa\+276
>> +  DW_CFA_offset_extended_sf: r7238 \(uintstatus\) at cfa\+12568
>> +  DW_CFA_offset_extended_sf: r4167 \(uintthresh\) at cfa\+284
>> +  DW_CFA_offset_extended_sf: r4168 \(uscratchcsw\) at cfa\+288
>> +  DW_CFA_offset_extended_sf: r4169 \(uscratchcswl\) at cfa\+292
>>    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
>> diff --git a/gas/testsuite/gas/riscv/csr-dw-regnums.s b/gas/testsuite/gas/riscv/csr-dw-regnums.s
>> index b8b0f7902297..af1158eb0089 100644
>> --- a/gas/testsuite/gas/riscv/csr-dw-regnums.s
>> +++ b/gas/testsuite/gas/riscv/csr-dw-regnums.s
>> @@ -321,6 +321,25 @@ _start:
>>  	.cfi_offset mvienh, 3168
>>  	.cfi_offset mviph, 3172
>>  	.cfi_offset miph, 3408
>> +	# Smclic extension
>> +	.cfi_offset mtvt, 3100
>> +	.cfi_offset mnxti, 3348
>> +	.cfi_offset mintstatus, 15640
>> +	.cfi_offset mintthresh, 3356
>> +	.cfi_offset mscratchcsw, 3360
>> +	.cfi_offset mscratchcswl, 3364
>> +	.cfi_offset stvt, 1052
>> +	.cfi_offset snxti, 1300
>> +	.cfi_offset sintstatus, 13592
>> +	.cfi_offset sintthresh, 1308
>> +	.cfi_offset sscratchcsw, 1312
>> +	.cfi_offset sscratchcswl, 1316
>> +	.cfi_offset utvt, 28
>> +	.cfi_offset unxti, 276
>> +	.cfi_offset uintstatus, 12568
>> +	.cfi_offset uintthresh, 284
>> +	.cfi_offset uscratchcsw, 288
>> +	.cfi_offset uscratchcswl, 292
>>  	# Smstateen extension
>>  	.cfi_offset mstateen0, 3120
>>  	.cfi_offset mstateen1, 3124
>> diff --git a/gas/testsuite/gas/riscv/csr-version-1p10.d b/gas/testsuite/gas/riscv/csr-version-1p10.d
>> index ee41e1025cce..aa116a75fadd 100644
>> --- a/gas/testsuite/gas/riscv/csr-version-1p10.d
>> +++ b/gas/testsuite/gas/riscv/csr-version-1p10.d
>> @@ -623,6 +623,42 @@ Disassembly of section .text:
>>  [ 	]+[0-9a-f]+:[ 	]+31959073[ 	]+csrw[ 	]+mviph,a1
>>  [ 	]+[0-9a-f]+:[ 	]+35402573[ 	]+csrr[ 	]+a0,miph
>>  [ 	]+[0-9a-f]+:[ 	]+35459073[ 	]+csrw[ 	]+miph,a1
>> +[ 	]+[0-9a-f]+:[ 	]+30702573[ 	]+csrr[ 	]+a0,mtvt
>> +[ 	]+[0-9a-f]+:[ 	]+30759073[ 	]+csrw[ 	]+mtvt,a1
>> +[ 	]+[0-9a-f]+:[ 	]+34502573[ 	]+csrr[ 	]+a0,mnxti
>> +[ 	]+[0-9a-f]+:[ 	]+34559073[ 	]+csrw[ 	]+mnxti,a1
>> +[ 	]+[0-9a-f]+:[ 	]+f4602573[ 	]+csrr[ 	]+a0,mintstatus
>> +[ 	]+[0-9a-f]+:[ 	]+f4659073[ 	]+csrw[ 	]+mintstatus,a1
>> +[ 	]+[0-9a-f]+:[ 	]+34702573[ 	]+csrr[ 	]+a0,mintthresh
>> +[ 	]+[0-9a-f]+:[ 	]+34759073[ 	]+csrw[ 	]+mintthresh,a1
>> +[ 	]+[0-9a-f]+:[ 	]+34802573[ 	]+csrr[ 	]+a0,mscratchcsw
>> +[ 	]+[0-9a-f]+:[ 	]+34859073[ 	]+csrw[ 	]+mscratchcsw,a1
>> +[ 	]+[0-9a-f]+:[ 	]+34902573[ 	]+csrr[ 	]+a0,mscratchcswl
>> +[ 	]+[0-9a-f]+:[ 	]+34959073[ 	]+csrw[ 	]+mscratchcswl,a1
>> +[ 	]+[0-9a-f]+:[ 	]+10702573[ 	]+csrr[ 	]+a0,stvt
>> +[ 	]+[0-9a-f]+:[ 	]+10759073[ 	]+csrw[ 	]+stvt,a1
>> +[ 	]+[0-9a-f]+:[ 	]+14502573[ 	]+csrr[ 	]+a0,snxti
>> +[ 	]+[0-9a-f]+:[ 	]+14559073[ 	]+csrw[ 	]+snxti,a1
>> +[ 	]+[0-9a-f]+:[ 	]+d4602573[ 	]+csrr[ 	]+a0,sintstatus
>> +[ 	]+[0-9a-f]+:[ 	]+d4659073[ 	]+csrw[ 	]+sintstatus,a1
>> +[ 	]+[0-9a-f]+:[ 	]+14702573[ 	]+csrr[ 	]+a0,sintthresh
>> +[ 	]+[0-9a-f]+:[ 	]+14759073[ 	]+csrw[ 	]+sintthresh,a1
>> +[ 	]+[0-9a-f]+:[ 	]+14802573[ 	]+csrr[ 	]+a0,sscratchcsw
>> +[ 	]+[0-9a-f]+:[ 	]+14859073[ 	]+csrw[ 	]+sscratchcsw,a1
>> +[ 	]+[0-9a-f]+:[ 	]+14902573[ 	]+csrr[ 	]+a0,sscratchcswl
>> +[ 	]+[0-9a-f]+:[ 	]+14959073[ 	]+csrw[ 	]+sscratchcswl,a1
>> +[ 	]+[0-9a-f]+:[ 	]+00702573[ 	]+csrr[ 	]+a0,utvt
>> +[ 	]+[0-9a-f]+:[ 	]+00759073[ 	]+csrw[ 	]+utvt,a1
>> +[ 	]+[0-9a-f]+:[ 	]+04502573[ 	]+csrr[ 	]+a0,unxti
>> +[ 	]+[0-9a-f]+:[ 	]+04559073[ 	]+csrw[ 	]+unxti,a1
>> +[ 	]+[0-9a-f]+:[ 	]+c4602573[ 	]+csrr[ 	]+a0,uintstatus
>> +[ 	]+[0-9a-f]+:[ 	]+c4659073[ 	]+csrw[ 	]+uintstatus,a1
>> +[ 	]+[0-9a-f]+:[ 	]+04702573[ 	]+csrr[ 	]+a0,uintthresh
>> +[ 	]+[0-9a-f]+:[ 	]+04759073[ 	]+csrw[ 	]+uintthresh,a1
>> +[ 	]+[0-9a-f]+:[ 	]+04802573[ 	]+csrr[ 	]+a0,uscratchcsw
>> +[ 	]+[0-9a-f]+:[ 	]+04859073[ 	]+csrw[ 	]+uscratchcsw,a1
>> +[ 	]+[0-9a-f]+:[ 	]+04902573[ 	]+csrr[ 	]+a0,uscratchcswl
>> +[ 	]+[0-9a-f]+:[ 	]+04959073[ 	]+csrw[ 	]+uscratchcswl,a1
>>  [ 	]+[0-9a-f]+:[ 	]+30c02573[ 	]+csrr[ 	]+a0,mstateen0
>>  [ 	]+[0-9a-f]+:[ 	]+30c59073[ 	]+csrw[ 	]+mstateen0,a1
>>  [ 	]+[0-9a-f]+:[ 	]+30d02573[ 	]+csrr[ 	]+a0,mstateen1
>> diff --git a/gas/testsuite/gas/riscv/csr-version-1p10.l b/gas/testsuite/gas/riscv/csr-version-1p10.l
>> index e677b78b8bb8..15431cef4590 100644
>> --- a/gas/testsuite/gas/riscv/csr-version-1p10.l
>> +++ b/gas/testsuite/gas/riscv/csr-version-1p10.l
>> @@ -444,6 +444,45 @@
>>  .*Warning: invalid CSR `miph', needs `smaia' extension
>>  .*Warning: invalid CSR `miph', needs rv32i extension
>>  .*Warning: invalid CSR `miph', needs `smaia' extension
>> +.*Warning: invalid CSR `mtvt', needs `smclic' extension
>> +.*Warning: invalid CSR `mtvt', needs `smclic' extension
>> +.*Warning: invalid CSR `mnxti', needs `smclic' extension
>> +.*Warning: invalid CSR `mnxti', needs `smclic' extension
>> +.*Warning: invalid CSR `mintstatus', needs `smclic' extension
>> +.*Warning: invalid CSR `mintstatus', needs `smclic' extension
>> +.*Warning: read-only CSR is written `csrw mintstatus,a1'
>> +.*Warning: invalid CSR `mintthresh', needs `smclic' extension
>> +.*Warning: invalid CSR `mintthresh', needs `smclic' extension
>> +.*Warning: invalid CSR `mscratchcsw', needs `smclic' extension
>> +.*Warning: invalid CSR `mscratchcsw', needs `smclic' extension
>> +.*Warning: invalid CSR `mscratchcswl', needs `smclic' extension
>> +.*Warning: invalid CSR `mscratchcswl', needs `smclic' extension
>> +.*Warning: invalid CSR `stvt', needs `smclic' extension
>> +.*Warning: invalid CSR `stvt', needs `smclic' extension
>> +.*Warning: invalid CSR `snxti', needs `smclic' extension
>> +.*Warning: invalid CSR `snxti', needs `smclic' extension
>> +.*Warning: invalid CSR `sintstatus', needs `smclic' extension
>> +.*Warning: invalid CSR `sintstatus', needs `smclic' extension
>> +.*Warning: read-only CSR is written `csrw sintstatus,a1'
>> +.*Warning: invalid CSR `sintthresh', needs `smclic' extension
>> +.*Warning: invalid CSR `sintthresh', needs `smclic' extension
>> +.*Warning: invalid CSR `sscratchcsw', needs `smclic' extension
>> +.*Warning: invalid CSR `sscratchcsw', needs `smclic' extension
>> +.*Warning: invalid CSR `sscratchcswl', needs `smclic' extension
>> +.*Warning: invalid CSR `sscratchcswl', needs `smclic' extension
>> +.*Warning: invalid CSR `utvt', needs `smclic' extension
>> +.*Warning: invalid CSR `utvt', needs `smclic' extension
>> +.*Warning: invalid CSR `unxti', needs `smclic' extension
>> +.*Warning: invalid CSR `unxti', needs `smclic' extension
>> +.*Warning: invalid CSR `uintstatus', needs `smclic' extension
>> +.*Warning: invalid CSR `uintstatus', needs `smclic' extension
>> +.*Warning: read-only CSR is written `csrw uintstatus,a1'
>> +.*Warning: invalid CSR `uintthresh', needs `smclic' extension
>> +.*Warning: invalid CSR `uintthresh', needs `smclic' extension
>> +.*Warning: invalid CSR `uscratchcsw', needs `smclic' extension
>> +.*Warning: invalid CSR `uscratchcsw', needs `smclic' extension
>> +.*Warning: invalid CSR `uscratchcswl', needs `smclic' extension
>> +.*Warning: invalid CSR `uscratchcswl', needs `smclic' extension
>>  .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
>>  .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
>>  .*Warning: invalid CSR `mstateen1', needs `smstateen' extension
>> diff --git a/gas/testsuite/gas/riscv/csr-version-1p11.d b/gas/testsuite/gas/riscv/csr-version-1p11.d
>> index a83b1bf68f98..c7af6b7cafac 100644
>> --- a/gas/testsuite/gas/riscv/csr-version-1p11.d
>> +++ b/gas/testsuite/gas/riscv/csr-version-1p11.d
>> @@ -623,6 +623,42 @@ Disassembly of section .text:
>>  [ 	]+[0-9a-f]+:[ 	]+31959073[ 	]+csrw[ 	]+mviph,a1
>>  [ 	]+[0-9a-f]+:[ 	]+35402573[ 	]+csrr[ 	]+a0,miph
>>  [ 	]+[0-9a-f]+:[ 	]+35459073[ 	]+csrw[ 	]+miph,a1
>> +[ 	]+[0-9a-f]+:[ 	]+30702573[ 	]+csrr[ 	]+a0,mtvt
>> +[ 	]+[0-9a-f]+:[ 	]+30759073[ 	]+csrw[ 	]+mtvt,a1
>> +[ 	]+[0-9a-f]+:[ 	]+34502573[ 	]+csrr[ 	]+a0,mnxti
>> +[ 	]+[0-9a-f]+:[ 	]+34559073[ 	]+csrw[ 	]+mnxti,a1
>> +[ 	]+[0-9a-f]+:[ 	]+f4602573[ 	]+csrr[ 	]+a0,mintstatus
>> +[ 	]+[0-9a-f]+:[ 	]+f4659073[ 	]+csrw[ 	]+mintstatus,a1
>> +[ 	]+[0-9a-f]+:[ 	]+34702573[ 	]+csrr[ 	]+a0,mintthresh
>> +[ 	]+[0-9a-f]+:[ 	]+34759073[ 	]+csrw[ 	]+mintthresh,a1
>> +[ 	]+[0-9a-f]+:[ 	]+34802573[ 	]+csrr[ 	]+a0,mscratchcsw
>> +[ 	]+[0-9a-f]+:[ 	]+34859073[ 	]+csrw[ 	]+mscratchcsw,a1
>> +[ 	]+[0-9a-f]+:[ 	]+34902573[ 	]+csrr[ 	]+a0,mscratchcswl
>> +[ 	]+[0-9a-f]+:[ 	]+34959073[ 	]+csrw[ 	]+mscratchcswl,a1
>> +[ 	]+[0-9a-f]+:[ 	]+10702573[ 	]+csrr[ 	]+a0,stvt
>> +[ 	]+[0-9a-f]+:[ 	]+10759073[ 	]+csrw[ 	]+stvt,a1
>> +[ 	]+[0-9a-f]+:[ 	]+14502573[ 	]+csrr[ 	]+a0,snxti
>> +[ 	]+[0-9a-f]+:[ 	]+14559073[ 	]+csrw[ 	]+snxti,a1
>> +[ 	]+[0-9a-f]+:[ 	]+d4602573[ 	]+csrr[ 	]+a0,sintstatus
>> +[ 	]+[0-9a-f]+:[ 	]+d4659073[ 	]+csrw[ 	]+sintstatus,a1
>> +[ 	]+[0-9a-f]+:[ 	]+14702573[ 	]+csrr[ 	]+a0,sintthresh
>> +[ 	]+[0-9a-f]+:[ 	]+14759073[ 	]+csrw[ 	]+sintthresh,a1
>> +[ 	]+[0-9a-f]+:[ 	]+14802573[ 	]+csrr[ 	]+a0,sscratchcsw
>> +[ 	]+[0-9a-f]+:[ 	]+14859073[ 	]+csrw[ 	]+sscratchcsw,a1
>> +[ 	]+[0-9a-f]+:[ 	]+14902573[ 	]+csrr[ 	]+a0,sscratchcswl
>> +[ 	]+[0-9a-f]+:[ 	]+14959073[ 	]+csrw[ 	]+sscratchcswl,a1
>> +[ 	]+[0-9a-f]+:[ 	]+00702573[ 	]+csrr[ 	]+a0,utvt
>> +[ 	]+[0-9a-f]+:[ 	]+00759073[ 	]+csrw[ 	]+utvt,a1
>> +[ 	]+[0-9a-f]+:[ 	]+04502573[ 	]+csrr[ 	]+a0,unxti
>> +[ 	]+[0-9a-f]+:[ 	]+04559073[ 	]+csrw[ 	]+unxti,a1
>> +[ 	]+[0-9a-f]+:[ 	]+c4602573[ 	]+csrr[ 	]+a0,uintstatus
>> +[ 	]+[0-9a-f]+:[ 	]+c4659073[ 	]+csrw[ 	]+uintstatus,a1
>> +[ 	]+[0-9a-f]+:[ 	]+04702573[ 	]+csrr[ 	]+a0,uintthresh
>> +[ 	]+[0-9a-f]+:[ 	]+04759073[ 	]+csrw[ 	]+uintthresh,a1
>> +[ 	]+[0-9a-f]+:[ 	]+04802573[ 	]+csrr[ 	]+a0,uscratchcsw
>> +[ 	]+[0-9a-f]+:[ 	]+04859073[ 	]+csrw[ 	]+uscratchcsw,a1
>> +[ 	]+[0-9a-f]+:[ 	]+04902573[ 	]+csrr[ 	]+a0,uscratchcswl
>> +[ 	]+[0-9a-f]+:[ 	]+04959073[ 	]+csrw[ 	]+uscratchcswl,a1
>>  [ 	]+[0-9a-f]+:[ 	]+30c02573[ 	]+csrr[ 	]+a0,mstateen0
>>  [ 	]+[0-9a-f]+:[ 	]+30c59073[ 	]+csrw[ 	]+mstateen0,a1
>>  [ 	]+[0-9a-f]+:[ 	]+30d02573[ 	]+csrr[ 	]+a0,mstateen1
>> diff --git a/gas/testsuite/gas/riscv/csr-version-1p11.l b/gas/testsuite/gas/riscv/csr-version-1p11.l
>> index 81ca86ca7bcc..94c3142c07ff 100644
>> --- a/gas/testsuite/gas/riscv/csr-version-1p11.l
>> +++ b/gas/testsuite/gas/riscv/csr-version-1p11.l
>> @@ -442,6 +442,45 @@
>>  .*Warning: invalid CSR `miph', needs `smaia' extension
>>  .*Warning: invalid CSR `miph', needs rv32i extension
>>  .*Warning: invalid CSR `miph', needs `smaia' extension
>> +.*Warning: invalid CSR `mtvt', needs `smclic' extension
>> +.*Warning: invalid CSR `mtvt', needs `smclic' extension
>> +.*Warning: invalid CSR `mnxti', needs `smclic' extension
>> +.*Warning: invalid CSR `mnxti', needs `smclic' extension
>> +.*Warning: invalid CSR `mintstatus', needs `smclic' extension
>> +.*Warning: invalid CSR `mintstatus', needs `smclic' extension
>> +.*Warning: read-only CSR is written `csrw mintstatus,a1'
>> +.*Warning: invalid CSR `mintthresh', needs `smclic' extension
>> +.*Warning: invalid CSR `mintthresh', needs `smclic' extension
>> +.*Warning: invalid CSR `mscratchcsw', needs `smclic' extension
>> +.*Warning: invalid CSR `mscratchcsw', needs `smclic' extension
>> +.*Warning: invalid CSR `mscratchcswl', needs `smclic' extension
>> +.*Warning: invalid CSR `mscratchcswl', needs `smclic' extension
>> +.*Warning: invalid CSR `stvt', needs `smclic' extension
>> +.*Warning: invalid CSR `stvt', needs `smclic' extension
>> +.*Warning: invalid CSR `snxti', needs `smclic' extension
>> +.*Warning: invalid CSR `snxti', needs `smclic' extension
>> +.*Warning: invalid CSR `sintstatus', needs `smclic' extension
>> +.*Warning: invalid CSR `sintstatus', needs `smclic' extension
>> +.*Warning: read-only CSR is written `csrw sintstatus,a1'
>> +.*Warning: invalid CSR `sintthresh', needs `smclic' extension
>> +.*Warning: invalid CSR `sintthresh', needs `smclic' extension
>> +.*Warning: invalid CSR `sscratchcsw', needs `smclic' extension
>> +.*Warning: invalid CSR `sscratchcsw', needs `smclic' extension
>> +.*Warning: invalid CSR `sscratchcswl', needs `smclic' extension
>> +.*Warning: invalid CSR `sscratchcswl', needs `smclic' extension
>> +.*Warning: invalid CSR `utvt', needs `smclic' extension
>> +.*Warning: invalid CSR `utvt', needs `smclic' extension
>> +.*Warning: invalid CSR `unxti', needs `smclic' extension
>> +.*Warning: invalid CSR `unxti', needs `smclic' extension
>> +.*Warning: invalid CSR `uintstatus', needs `smclic' extension
>> +.*Warning: invalid CSR `uintstatus', needs `smclic' extension
>> +.*Warning: read-only CSR is written `csrw uintstatus,a1'
>> +.*Warning: invalid CSR `uintthresh', needs `smclic' extension
>> +.*Warning: invalid CSR `uintthresh', needs `smclic' extension
>> +.*Warning: invalid CSR `uscratchcsw', needs `smclic' extension
>> +.*Warning: invalid CSR `uscratchcsw', needs `smclic' extension
>> +.*Warning: invalid CSR `uscratchcswl', needs `smclic' extension
>> +.*Warning: invalid CSR `uscratchcswl', needs `smclic' extension
>>  .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
>>  .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
>>  .*Warning: invalid CSR `mstateen1', needs `smstateen' extension
>> diff --git a/gas/testsuite/gas/riscv/csr-version-1p12.d b/gas/testsuite/gas/riscv/csr-version-1p12.d
>> index 612aac280768..357f9ae1a626 100644
>> --- a/gas/testsuite/gas/riscv/csr-version-1p12.d
>> +++ b/gas/testsuite/gas/riscv/csr-version-1p12.d
>> @@ -623,6 +623,42 @@ Disassembly of section .text:
>>  [ 	]+[0-9a-f]+:[ 	]+31959073[ 	]+csrw[ 	]+mviph,a1
>>  [ 	]+[0-9a-f]+:[ 	]+35402573[ 	]+csrr[ 	]+a0,miph
>>  [ 	]+[0-9a-f]+:[ 	]+35459073[ 	]+csrw[ 	]+miph,a1
>> +[ 	]+[0-9a-f]+:[ 	]+30702573[ 	]+csrr[ 	]+a0,mtvt
>> +[ 	]+[0-9a-f]+:[ 	]+30759073[ 	]+csrw[ 	]+mtvt,a1
>> +[ 	]+[0-9a-f]+:[ 	]+34502573[ 	]+csrr[ 	]+a0,mnxti
>> +[ 	]+[0-9a-f]+:[ 	]+34559073[ 	]+csrw[ 	]+mnxti,a1
>> +[ 	]+[0-9a-f]+:[ 	]+f4602573[ 	]+csrr[ 	]+a0,mintstatus
>> +[ 	]+[0-9a-f]+:[ 	]+f4659073[ 	]+csrw[ 	]+mintstatus,a1
>> +[ 	]+[0-9a-f]+:[ 	]+34702573[ 	]+csrr[ 	]+a0,mintthresh
>> +[ 	]+[0-9a-f]+:[ 	]+34759073[ 	]+csrw[ 	]+mintthresh,a1
>> +[ 	]+[0-9a-f]+:[ 	]+34802573[ 	]+csrr[ 	]+a0,mscratchcsw
>> +[ 	]+[0-9a-f]+:[ 	]+34859073[ 	]+csrw[ 	]+mscratchcsw,a1
>> +[ 	]+[0-9a-f]+:[ 	]+34902573[ 	]+csrr[ 	]+a0,mscratchcswl
>> +[ 	]+[0-9a-f]+:[ 	]+34959073[ 	]+csrw[ 	]+mscratchcswl,a1
>> +[ 	]+[0-9a-f]+:[ 	]+10702573[ 	]+csrr[ 	]+a0,stvt
>> +[ 	]+[0-9a-f]+:[ 	]+10759073[ 	]+csrw[ 	]+stvt,a1
>> +[ 	]+[0-9a-f]+:[ 	]+14502573[ 	]+csrr[ 	]+a0,snxti
>> +[ 	]+[0-9a-f]+:[ 	]+14559073[ 	]+csrw[ 	]+snxti,a1
>> +[ 	]+[0-9a-f]+:[ 	]+d4602573[ 	]+csrr[ 	]+a0,sintstatus
>> +[ 	]+[0-9a-f]+:[ 	]+d4659073[ 	]+csrw[ 	]+sintstatus,a1
>> +[ 	]+[0-9a-f]+:[ 	]+14702573[ 	]+csrr[ 	]+a0,sintthresh
>> +[ 	]+[0-9a-f]+:[ 	]+14759073[ 	]+csrw[ 	]+sintthresh,a1
>> +[ 	]+[0-9a-f]+:[ 	]+14802573[ 	]+csrr[ 	]+a0,sscratchcsw
>> +[ 	]+[0-9a-f]+:[ 	]+14859073[ 	]+csrw[ 	]+sscratchcsw,a1
>> +[ 	]+[0-9a-f]+:[ 	]+14902573[ 	]+csrr[ 	]+a0,sscratchcswl
>> +[ 	]+[0-9a-f]+:[ 	]+14959073[ 	]+csrw[ 	]+sscratchcswl,a1
>> +[ 	]+[0-9a-f]+:[ 	]+00702573[ 	]+csrr[ 	]+a0,utvt
>> +[ 	]+[0-9a-f]+:[ 	]+00759073[ 	]+csrw[ 	]+utvt,a1
>> +[ 	]+[0-9a-f]+:[ 	]+04502573[ 	]+csrr[ 	]+a0,unxti
>> +[ 	]+[0-9a-f]+:[ 	]+04559073[ 	]+csrw[ 	]+unxti,a1
>> +[ 	]+[0-9a-f]+:[ 	]+c4602573[ 	]+csrr[ 	]+a0,uintstatus
>> +[ 	]+[0-9a-f]+:[ 	]+c4659073[ 	]+csrw[ 	]+uintstatus,a1
>> +[ 	]+[0-9a-f]+:[ 	]+04702573[ 	]+csrr[ 	]+a0,uintthresh
>> +[ 	]+[0-9a-f]+:[ 	]+04759073[ 	]+csrw[ 	]+uintthresh,a1
>> +[ 	]+[0-9a-f]+:[ 	]+04802573[ 	]+csrr[ 	]+a0,uscratchcsw
>> +[ 	]+[0-9a-f]+:[ 	]+04859073[ 	]+csrw[ 	]+uscratchcsw,a1
>> +[ 	]+[0-9a-f]+:[ 	]+04902573[ 	]+csrr[ 	]+a0,uscratchcswl
>> +[ 	]+[0-9a-f]+:[ 	]+04959073[ 	]+csrw[ 	]+uscratchcswl,a1
>>  [ 	]+[0-9a-f]+:[ 	]+30c02573[ 	]+csrr[ 	]+a0,mstateen0
>>  [ 	]+[0-9a-f]+:[ 	]+30c59073[ 	]+csrw[ 	]+mstateen0,a1
>>  [ 	]+[0-9a-f]+:[ 	]+30d02573[ 	]+csrr[ 	]+a0,mstateen1
>> diff --git a/gas/testsuite/gas/riscv/csr-version-1p12.l b/gas/testsuite/gas/riscv/csr-version-1p12.l
>> index 1c0bb4ef2d8f..1655fe4ce833 100644
>> --- a/gas/testsuite/gas/riscv/csr-version-1p12.l
>> +++ b/gas/testsuite/gas/riscv/csr-version-1p12.l
>> @@ -304,6 +304,45 @@
>>  .*Warning: invalid CSR `miph', needs `smaia' extension
>>  .*Warning: invalid CSR `miph', needs rv32i extension
>>  .*Warning: invalid CSR `miph', needs `smaia' extension
>> +.*Warning: invalid CSR `mtvt', needs `smclic' extension
>> +.*Warning: invalid CSR `mtvt', needs `smclic' extension
>> +.*Warning: invalid CSR `mnxti', needs `smclic' extension
>> +.*Warning: invalid CSR `mnxti', needs `smclic' extension
>> +.*Warning: invalid CSR `mintstatus', needs `smclic' extension
>> +.*Warning: invalid CSR `mintstatus', needs `smclic' extension
>> +.*Warning: read-only CSR is written `csrw mintstatus,a1'
>> +.*Warning: invalid CSR `mintthresh', needs `smclic' extension
>> +.*Warning: invalid CSR `mintthresh', needs `smclic' extension
>> +.*Warning: invalid CSR `mscratchcsw', needs `smclic' extension
>> +.*Warning: invalid CSR `mscratchcsw', needs `smclic' extension
>> +.*Warning: invalid CSR `mscratchcswl', needs `smclic' extension
>> +.*Warning: invalid CSR `mscratchcswl', needs `smclic' extension
>> +.*Warning: invalid CSR `stvt', needs `smclic' extension
>> +.*Warning: invalid CSR `stvt', needs `smclic' extension
>> +.*Warning: invalid CSR `snxti', needs `smclic' extension
>> +.*Warning: invalid CSR `snxti', needs `smclic' extension
>> +.*Warning: invalid CSR `sintstatus', needs `smclic' extension
>> +.*Warning: invalid CSR `sintstatus', needs `smclic' extension
>> +.*Warning: read-only CSR is written `csrw sintstatus,a1'
>> +.*Warning: invalid CSR `sintthresh', needs `smclic' extension
>> +.*Warning: invalid CSR `sintthresh', needs `smclic' extension
>> +.*Warning: invalid CSR `sscratchcsw', needs `smclic' extension
>> +.*Warning: invalid CSR `sscratchcsw', needs `smclic' extension
>> +.*Warning: invalid CSR `sscratchcswl', needs `smclic' extension
>> +.*Warning: invalid CSR `sscratchcswl', needs `smclic' extension
>> +.*Warning: invalid CSR `utvt', needs `smclic' extension
>> +.*Warning: invalid CSR `utvt', needs `smclic' extension
>> +.*Warning: invalid CSR `unxti', needs `smclic' extension
>> +.*Warning: invalid CSR `unxti', needs `smclic' extension
>> +.*Warning: invalid CSR `uintstatus', needs `smclic' extension
>> +.*Warning: invalid CSR `uintstatus', needs `smclic' extension
>> +.*Warning: read-only CSR is written `csrw uintstatus,a1'
>> +.*Warning: invalid CSR `uintthresh', needs `smclic' extension
>> +.*Warning: invalid CSR `uintthresh', needs `smclic' extension
>> +.*Warning: invalid CSR `uscratchcsw', needs `smclic' extension
>> +.*Warning: invalid CSR `uscratchcsw', needs `smclic' extension
>> +.*Warning: invalid CSR `uscratchcswl', needs `smclic' extension
>> +.*Warning: invalid CSR `uscratchcswl', needs `smclic' extension
>>  .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
>>  .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
>>  .*Warning: invalid CSR `mstateen1', needs `smstateen' extension
>> diff --git a/gas/testsuite/gas/riscv/csr-version-1p9p1.d b/gas/testsuite/gas/riscv/csr-version-1p9p1.d
>> index 0fe849c269c2..8688fa6ecb7e 100644
>> --- a/gas/testsuite/gas/riscv/csr-version-1p9p1.d
>> +++ b/gas/testsuite/gas/riscv/csr-version-1p9p1.d
>> @@ -623,6 +623,42 @@ Disassembly of section .text:
>>  [ 	]+[0-9a-f]+:[ 	]+31959073[ 	]+csrw[ 	]+mviph,a1
>>  [ 	]+[0-9a-f]+:[ 	]+35402573[ 	]+csrr[ 	]+a0,miph
>>  [ 	]+[0-9a-f]+:[ 	]+35459073[ 	]+csrw[ 	]+miph,a1
>> +[ 	]+[0-9a-f]+:[ 	]+30702573[ 	]+csrr[ 	]+a0,mtvt
>> +[ 	]+[0-9a-f]+:[ 	]+30759073[ 	]+csrw[ 	]+mtvt,a1
>> +[ 	]+[0-9a-f]+:[ 	]+34502573[ 	]+csrr[ 	]+a0,mnxti
>> +[ 	]+[0-9a-f]+:[ 	]+34559073[ 	]+csrw[ 	]+mnxti,a1
>> +[ 	]+[0-9a-f]+:[ 	]+f4602573[ 	]+csrr[ 	]+a0,mintstatus
>> +[ 	]+[0-9a-f]+:[ 	]+f4659073[ 	]+csrw[ 	]+mintstatus,a1
>> +[ 	]+[0-9a-f]+:[ 	]+34702573[ 	]+csrr[ 	]+a0,mintthresh
>> +[ 	]+[0-9a-f]+:[ 	]+34759073[ 	]+csrw[ 	]+mintthresh,a1
>> +[ 	]+[0-9a-f]+:[ 	]+34802573[ 	]+csrr[ 	]+a0,mscratchcsw
>> +[ 	]+[0-9a-f]+:[ 	]+34859073[ 	]+csrw[ 	]+mscratchcsw,a1
>> +[ 	]+[0-9a-f]+:[ 	]+34902573[ 	]+csrr[ 	]+a0,mscratchcswl
>> +[ 	]+[0-9a-f]+:[ 	]+34959073[ 	]+csrw[ 	]+mscratchcswl,a1
>> +[ 	]+[0-9a-f]+:[ 	]+10702573[ 	]+csrr[ 	]+a0,stvt
>> +[ 	]+[0-9a-f]+:[ 	]+10759073[ 	]+csrw[ 	]+stvt,a1
>> +[ 	]+[0-9a-f]+:[ 	]+14502573[ 	]+csrr[ 	]+a0,snxti
>> +[ 	]+[0-9a-f]+:[ 	]+14559073[ 	]+csrw[ 	]+snxti,a1
>> +[ 	]+[0-9a-f]+:[ 	]+d4602573[ 	]+csrr[ 	]+a0,sintstatus
>> +[ 	]+[0-9a-f]+:[ 	]+d4659073[ 	]+csrw[ 	]+sintstatus,a1
>> +[ 	]+[0-9a-f]+:[ 	]+14702573[ 	]+csrr[ 	]+a0,sintthresh
>> +[ 	]+[0-9a-f]+:[ 	]+14759073[ 	]+csrw[ 	]+sintthresh,a1
>> +[ 	]+[0-9a-f]+:[ 	]+14802573[ 	]+csrr[ 	]+a0,sscratchcsw
>> +[ 	]+[0-9a-f]+:[ 	]+14859073[ 	]+csrw[ 	]+sscratchcsw,a1
>> +[ 	]+[0-9a-f]+:[ 	]+14902573[ 	]+csrr[ 	]+a0,sscratchcswl
>> +[ 	]+[0-9a-f]+:[ 	]+14959073[ 	]+csrw[ 	]+sscratchcswl,a1
>> +[ 	]+[0-9a-f]+:[ 	]+00702573[ 	]+csrr[ 	]+a0,utvt
>> +[ 	]+[0-9a-f]+:[ 	]+00759073[ 	]+csrw[ 	]+utvt,a1
>> +[ 	]+[0-9a-f]+:[ 	]+04502573[ 	]+csrr[ 	]+a0,unxti
>> +[ 	]+[0-9a-f]+:[ 	]+04559073[ 	]+csrw[ 	]+unxti,a1
>> +[ 	]+[0-9a-f]+:[ 	]+c4602573[ 	]+csrr[ 	]+a0,uintstatus
>> +[ 	]+[0-9a-f]+:[ 	]+c4659073[ 	]+csrw[ 	]+uintstatus,a1
>> +[ 	]+[0-9a-f]+:[ 	]+04702573[ 	]+csrr[ 	]+a0,uintthresh
>> +[ 	]+[0-9a-f]+:[ 	]+04759073[ 	]+csrw[ 	]+uintthresh,a1
>> +[ 	]+[0-9a-f]+:[ 	]+04802573[ 	]+csrr[ 	]+a0,uscratchcsw
>> +[ 	]+[0-9a-f]+:[ 	]+04859073[ 	]+csrw[ 	]+uscratchcsw,a1
>> +[ 	]+[0-9a-f]+:[ 	]+04902573[ 	]+csrr[ 	]+a0,uscratchcswl
>> +[ 	]+[0-9a-f]+:[ 	]+04959073[ 	]+csrw[ 	]+uscratchcswl,a1
>>  [ 	]+[0-9a-f]+:[ 	]+30c02573[ 	]+csrr[ 	]+a0,mstateen0
>>  [ 	]+[0-9a-f]+:[ 	]+30c59073[ 	]+csrw[ 	]+mstateen0,a1
>>  [ 	]+[0-9a-f]+:[ 	]+30d02573[ 	]+csrr[ 	]+a0,mstateen1
>> diff --git a/gas/testsuite/gas/riscv/csr-version-1p9p1.l b/gas/testsuite/gas/riscv/csr-version-1p9p1.l
>> index c65d0b48e414..22bed0aecfd0 100644
>> --- a/gas/testsuite/gas/riscv/csr-version-1p9p1.l
>> +++ b/gas/testsuite/gas/riscv/csr-version-1p9p1.l
>> @@ -494,6 +494,45 @@
>>  .*Warning: invalid CSR `miph', needs `smaia' extension
>>  .*Warning: invalid CSR `miph', needs rv32i extension
>>  .*Warning: invalid CSR `miph', needs `smaia' extension
>> +.*Warning: invalid CSR `mtvt', needs `smclic' extension
>> +.*Warning: invalid CSR `mtvt', needs `smclic' extension
>> +.*Warning: invalid CSR `mnxti', needs `smclic' extension
>> +.*Warning: invalid CSR `mnxti', needs `smclic' extension
>> +.*Warning: invalid CSR `mintstatus', needs `smclic' extension
>> +.*Warning: invalid CSR `mintstatus', needs `smclic' extension
>> +.*Warning: read-only CSR is written `csrw mintstatus,a1'
>> +.*Warning: invalid CSR `mintthresh', needs `smclic' extension
>> +.*Warning: invalid CSR `mintthresh', needs `smclic' extension
>> +.*Warning: invalid CSR `mscratchcsw', needs `smclic' extension
>> +.*Warning: invalid CSR `mscratchcsw', needs `smclic' extension
>> +.*Warning: invalid CSR `mscratchcswl', needs `smclic' extension
>> +.*Warning: invalid CSR `mscratchcswl', needs `smclic' extension
>> +.*Warning: invalid CSR `stvt', needs `smclic' extension
>> +.*Warning: invalid CSR `stvt', needs `smclic' extension
>> +.*Warning: invalid CSR `snxti', needs `smclic' extension
>> +.*Warning: invalid CSR `snxti', needs `smclic' extension
>> +.*Warning: invalid CSR `sintstatus', needs `smclic' extension
>> +.*Warning: invalid CSR `sintstatus', needs `smclic' extension
>> +.*Warning: read-only CSR is written `csrw sintstatus,a1'
>> +.*Warning: invalid CSR `sintthresh', needs `smclic' extension
>> +.*Warning: invalid CSR `sintthresh', needs `smclic' extension
>> +.*Warning: invalid CSR `sscratchcsw', needs `smclic' extension
>> +.*Warning: invalid CSR `sscratchcsw', needs `smclic' extension
>> +.*Warning: invalid CSR `sscratchcswl', needs `smclic' extension
>> +.*Warning: invalid CSR `sscratchcswl', needs `smclic' extension
>> +.*Warning: invalid CSR `utvt', needs `smclic' extension
>> +.*Warning: invalid CSR `utvt', needs `smclic' extension
>> +.*Warning: invalid CSR `unxti', needs `smclic' extension
>> +.*Warning: invalid CSR `unxti', needs `smclic' extension
>> +.*Warning: invalid CSR `uintstatus', needs `smclic' extension
>> +.*Warning: invalid CSR `uintstatus', needs `smclic' extension
>> +.*Warning: read-only CSR is written `csrw uintstatus,a1'
>> +.*Warning: invalid CSR `uintthresh', needs `smclic' extension
>> +.*Warning: invalid CSR `uintthresh', needs `smclic' extension
>> +.*Warning: invalid CSR `uscratchcsw', needs `smclic' extension
>> +.*Warning: invalid CSR `uscratchcsw', needs `smclic' extension
>> +.*Warning: invalid CSR `uscratchcswl', needs `smclic' extension
>> +.*Warning: invalid CSR `uscratchcswl', needs `smclic' extension
>>  .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
>>  .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
>>  .*Warning: invalid CSR `mstateen1', needs `smstateen' extension
>> diff --git a/gas/testsuite/gas/riscv/csr.s b/gas/testsuite/gas/riscv/csr.s
>> index c7406ce34c2e..29a0710df812 100644
>> --- a/gas/testsuite/gas/riscv/csr.s
>> +++ b/gas/testsuite/gas/riscv/csr.s
>> @@ -350,6 +350,26 @@
>>  	csr mviph
>>  	csr miph
>>
>> +	# Smclic extension
>> +	csr mtvt
>> +	csr mnxti
>> +	csr mintstatus
>> +	csr mintthresh
>> +	csr mscratchcsw
>> +	csr mscratchcswl
>> +	csr stvt
>> +	csr snxti
>> +	csr sintstatus
>> +	csr sintthresh
>> +	csr sscratchcsw
>> +	csr sscratchcswl
>> +	csr utvt
>> +	csr unxti
>> +	csr uintstatus
>> +	csr uintthresh
>> +	csr uscratchcsw
>> +	csr uscratchcswl
>> +
>>  	# Smstateen/Ssstateen extensions
>>  	csr mstateen0
>>  	csr mstateen1
>> diff --git a/include/opcode/riscv-opc.h b/include/opcode/riscv-opc.h
>> index 06e3df0f5a63..3f072bf01b3c 100644
>> --- a/include/opcode/riscv-opc.h
>> +++ b/include/opcode/riscv-opc.h
>> @@ -2673,6 +2673,25 @@
>>  #define CSR_MVIENH   0x318
>>  #define CSR_MVIPH    0x319
>>  #define CSR_MIPH     0x354
>> +/* Smclic extension CSR addresses (including user interrupts).  */
>> +#define CSR_MTVT 0x307
>> +#define CSR_MNXTI 0x345
>> +#define CSR_MINTSTATUS 0xf46
>> +#define CSR_MINTTHRESH 0x347
>> +#define CSR_MSCRATCHCSW 0x348
>> +#define CSR_MSCRATCHCSWL 0x349
>> +#define CSR_STVT 0x107
>> +#define CSR_SNXTI 0x145
>> +#define CSR_SINTSTATUS 0xd46
>> +#define CSR_SINTTHRESH 0x147
>> +#define CSR_SSCRATCHCSW 0x148
>> +#define CSR_SSCRATCHCSWL 0x149
>> +#define CSR_UTVT 0x7
>> +#define CSR_UNXTI 0x45
>> +#define CSR_UINTSTATUS 0xc46
>> +#define CSR_UINTTHRESH 0x47
>> +#define CSR_USCRATCHCSW 0x48
>> +#define CSR_USCRATCHCSWL 0x49
>>  /* Smstateen extension */
>>  #define CSR_MSTATEEN0 0x30c
>>  #define CSR_MSTATEEN1 0x30d
>> @@ -3550,6 +3569,25 @@ DECLARE_CSR(mieh, CSR_MIEH, CSR_CLASS_SMAIA_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_
>>  DECLARE_CSR(mvienh, CSR_MVIENH, CSR_CLASS_SMAIA_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>>  DECLARE_CSR(mviph, CSR_MVIPH, CSR_CLASS_SMAIA_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>>  DECLARE_CSR(miph, CSR_MIPH, CSR_CLASS_SMAIA_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>> +/* Smclic extension CSRs (including user interrupts).  */
>> +DECLARE_CSR(mtvt, CSR_MTVT, CSR_CLASS_SMCLIC, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>> +DECLARE_CSR(mnxti, CSR_MNXTI, CSR_CLASS_SMCLIC, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>> +DECLARE_CSR(mintstatus, CSR_MINTSTATUS, CSR_CLASS_SMCLIC, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>> +DECLARE_CSR(mintthresh, CSR_MINTTHRESH, CSR_CLASS_SMCLIC, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>> +DECLARE_CSR(mscratchcsw, CSR_MSCRATCHCSW, CSR_CLASS_SMCLIC, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>> +DECLARE_CSR(mscratchcswl, CSR_MSCRATCHCSWL, CSR_CLASS_SMCLIC, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>> +DECLARE_CSR(stvt, CSR_STVT, CSR_CLASS_SMCLIC, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>> +DECLARE_CSR(snxti, CSR_SNXTI, CSR_CLASS_SMCLIC, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>> +DECLARE_CSR(sintstatus, CSR_SINTSTATUS, CSR_CLASS_SMCLIC, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>> +DECLARE_CSR(sintthresh, CSR_SINTTHRESH, CSR_CLASS_SMCLIC, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>> +DECLARE_CSR(sscratchcsw, CSR_SSCRATCHCSW, CSR_CLASS_SMCLIC, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>> +DECLARE_CSR(sscratchcswl, CSR_SSCRATCHCSWL, CSR_CLASS_SMCLIC, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>> +DECLARE_CSR(utvt, CSR_UTVT, CSR_CLASS_SMCLIC, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>> +DECLARE_CSR(unxti, CSR_UNXTI, CSR_CLASS_SMCLIC, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>> +DECLARE_CSR(uintstatus, CSR_UINTSTATUS, CSR_CLASS_SMCLIC, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>> +DECLARE_CSR(uintthresh, CSR_UINTTHRESH, CSR_CLASS_SMCLIC, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>> +DECLARE_CSR(uscratchcsw, CSR_USCRATCHCSW, CSR_CLASS_SMCLIC, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>> +DECLARE_CSR(uscratchcswl, CSR_USCRATCHCSWL, CSR_CLASS_SMCLIC, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>>  /* Smstateen/Ssstateen extensions.  */
>>  DECLARE_CSR(mstateen0, CSR_MSTATEEN0, CSR_CLASS_SMSTATEEN, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>>  DECLARE_CSR(mstateen1, CSR_MSTATEEN1, CSR_CLASS_SMSTATEEN, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> 

  reply	other threads:[~2022-11-29  2:16 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-11-29  1:19 [REVIEW ONLY 0/1] " Tsukasa OI
2022-11-29  1:19 ` [REVIEW ONLY 1/1] " Tsukasa OI
2022-11-29  2:03   ` Palmer Dabbelt
2022-11-29  2:16     ` Tsukasa OI [this message]
2022-11-29  2:43       ` Palmer Dabbelt
2023-09-12  1:39 ` [REVIEW ONLY v2 0/1] UNRATIFIED RISC-V: Add support for Core-Local Interrupt Controller (CLIC) extensions and their CSRs Tsukasa OI
2023-09-12  1:39   ` [REVIEW ONLY v2 1/1] UNRATIFIED RISC-V: Add CLIC extensions with CSRs Tsukasa OI

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=19959ea1-70de-c13b-9682-271ac070bb2c@irq.a4lg.com \
    --to=research_trasio@irq.a4lg.com \
    --cc=binutils@sourceware.org \
    --cc=palmer@dabbelt.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).