From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pj1-x102e.google.com (mail-pj1-x102e.google.com [IPv6:2607:f8b0:4864:20::102e]) by sourceware.org (Postfix) with ESMTPS id 0071E3858D28 for ; Tue, 29 Nov 2022 02:43:41 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 0071E3858D28 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=dabbelt.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=dabbelt.com Received: by mail-pj1-x102e.google.com with SMTP id o5-20020a17090a678500b00218cd5a21c9so11997680pjj.4 for ; Mon, 28 Nov 2022 18:43:41 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=dabbelt-com.20210112.gappssmtp.com; s=20210112; h=content-transfer-encoding:mime-version:message-id:to:from:cc :in-reply-to:subject:date:from:to:cc:subject:date:message-id :reply-to; bh=CjnTgStk8a/JHL+0FNuCykQjwqlZr12Rtau1mQDsD70=; b=64JzRopGExt6gpMxXT9UtxNVlkj5bwT7IKHzTJB0rbrGU1dXAeXMAoEVqfq66pvg9K 0A1RJXCLSuX36lPG8+GXtZ9nsYLgod0VvywSMl9nsKVtunCu3WSY9pZJ4wtFSAbQsnJP +EfsioWAK7/xFB+m6IvPASIbwmcoATECTMFYt51Im7QTfeB7xpACvD9q/p+d6gl+JsEU iLg1iWzY7Zsmy+geslOh+NMCY587MDz+69blr7cemH27RDjxCPSQezIgLj9iUFMaj/bS ktb0au8Ob/f/Uxp0l8rGX4ZX+vKkyfYw/Z7j/vKAmXdrSrvSimFuoy3GsRFMPyEVNfzH Y3+w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:message-id:to:from:cc :in-reply-to:subject:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=CjnTgStk8a/JHL+0FNuCykQjwqlZr12Rtau1mQDsD70=; b=a7Lp0bXAnaRVyi/Q4vaNZl3lSLk5mofvto4sQaSsOuL39K/1oDea66GxgsoOw9uQ/R XKaDFh7XLIERQbfatIwvLUyvXG7WJwtpYqc3wWUyVLUSQZfwkT9Ekz+FTf+ooB+fJ7kU usLt0Tnn9Gc3pWMP6Ykc0/vrwYzkl+e0l4/vRfnkFCYjP3eOHglP6rMw2QnzyG75+CcT WCNH9JwV1f41qmTMyuLeNjvXW039lL+F3cJPZRRcfAHAfRNL0SNsQUrWo77dQuGVYKDQ 9o7hVUP6wQ1lm2nP2c7NpqTZWrN0tzvzCBhI8/OfRpmTojQ/KB8UtBGnCG6FW9EsJTF0 Sqiw== X-Gm-Message-State: ANoB5pks81p6KRo7u+aFsp5X5k7Z7UdqDCE1hG5E/bp0+UUUsuCMCman BnK1s9Ua/Iy3FGxpO+lWBVU4ckAT5HhDPg== X-Google-Smtp-Source: AA0mqf5mHlEinxz0yNlnYPjcd2yrUCeNcGkGWTpMKNcVKwohHwdeyEJ9LDfQ2iEvL/xFnZoZmOSUOQ== X-Received: by 2002:a17:902:c206:b0:189:9b3c:eb99 with SMTP id 6-20020a170902c20600b001899b3ceb99mr1400522pll.146.1669689820170; Mon, 28 Nov 2022 18:43:40 -0800 (PST) Received: from localhost ([50.221.140.188]) by smtp.gmail.com with ESMTPSA id 140-20020a621992000000b005745eb7eccasm8702670pfz.112.2022.11.28.18.43.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 28 Nov 2022 18:43:39 -0800 (PST) Date: Mon, 28 Nov 2022 18:43:39 -0800 (PST) X-Google-Original-Date: Mon, 28 Nov 2022 18:43:30 PST (-0800) Subject: Re: [REVIEW ONLY 1/1] UNRATIFIED RISC-V: Add 'Smclic' extension and its CSRs In-Reply-To: <19959ea1-70de-c13b-9682-271ac070bb2c@irq.a4lg.com> CC: binutils@sourceware.org From: Palmer Dabbelt To: research_trasio@irq.a4lg.com Message-ID: Mime-Version: 1.0 (MHng) Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-11.0 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,GIT_PATCH_0,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: On Mon, 28 Nov 2022 18:16:21 PST (-0800), research_trasio@irq.a4lg.com wrote: > 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 >>> >>> [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 >> . 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). I agree that "frozen" is kind of arbitrary, but it's what we all agreed to and IMO it's best to stick with it. There's no real hard guarantee of compatibility in RISC-V land, even ratified stuff changes. We've got to draw the line somewhere. > Additional reference: > > > 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): >>> >>> >>> 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) >>