From: Palmer Dabbelt <palmer@dabbelt.com>
To: binutils@sourceware.org
Cc: research_trasio@irq.a4lg.com, binutils@sourceware.org
Subject: Re: [REVIEW ONLY 1/1] UNRATIFIED RISC-V: Add 'Smclic' extension and its CSRs
Date: Mon, 28 Nov 2022 18:03:10 -0800 (PST) [thread overview]
Message-ID: <mhng-199569f0-e0e5-4315-959d-383d0a563d68@palmer-ri-x1c9a> (raw)
In-Reply-To: <d32f305c187892c2a97fef6eebca220c90eac3b7.1669684774.git.research_trasio@irq.a4lg.com>
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?
>
> 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)
next prev parent reply other threads:[~2022-11-29 2:03 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 [this message]
2022-11-29 2:16 ` Tsukasa OI
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=mhng-199569f0-e0e5-4315-959d-383d0a563d68@palmer-ri-x1c9a \
--to=palmer@dabbelt.com \
--cc=binutils@sourceware.org \
--cc=research_trasio@irq.a4lg.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).