From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-vs1-xe35.google.com (mail-vs1-xe35.google.com [IPv6:2607:f8b0:4864:20::e35]) by sourceware.org (Postfix) with ESMTPS id 6661F3858402 for ; Fri, 25 Feb 2022 06:32:54 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 6661F3858402 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=sifive.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=sifive.com Received: by mail-vs1-xe35.google.com with SMTP id g21so4563680vsp.6 for ; Thu, 24 Feb 2022 22:32:54 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sifive.com; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=tH5hhtxIqqmr9judqLHBsXT5dnCRxw2fcizyJWt9Gsg=; b=eSk3JKrylfemDwsrRj59IjRdX6j3/5GT1ldfTFo0m2MR0UJXd1z0Sm4Gm+F1ozSLAl zcNI1cXRuRunPGAe8mEmy0BScGRS+RjN9zPts0zFTlt14zhcZjoBJLwzLov0bsI4sY7F L41E6ejgcPFbCVlQPJbxzULvPjVSr7DXFm+W0xfl1EO38kaah0Vi89yp7HfrkiARtYSU gmX25sMqbbDajRBM2+aH3JlKxGVQWqDCTBb6eR2b5c5AregfuyDkXyRyUPZZDShnqKVV sNFP6Kee85qZEvDsBiArs9HM3zylawFfxL0Tsg7rqknT0HefC3VJuN0lCIRcO+3bzcLp h2fQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=tH5hhtxIqqmr9judqLHBsXT5dnCRxw2fcizyJWt9Gsg=; b=TFpUYAiGz5ESnxOkQUtea4b3vUK9R0DUIXg2ePA7xrIpoUZvSmaOKGqiKFCVIkJWa5 GJ2RYBITcP7BCu3ADgjdsu93g8gNmnNJ+meVzQleodOVdhgmGztF3vTzq8H89Vp49QZY CmZBl1GlJVauLxY0W3dE01krM0Mo5Jrx+2E8RXE/ssfKgHYESaGB24Nz8RxvUq7MoQRZ OzNKA2FJQK1M/ln/h72aFTHSAUu4C7QZCnDPweHLPXxPuFZGv4QHFxd965E7v/gWvszU PK/6yF+Q87BfR9pOd3aXOVFUmA6OIV4QZMM/xXc9/+4Coz5RcG3AFRmB2Fjbma5jOkj0 YTIw== X-Gm-Message-State: AOAM532KJO0zbMlAKCW8OrU26kbbkKBNS6NTfrWZsk9ujU3lI5VVyLs/ knchlRE4ywyIQT1V2jrEMvAxPbKOmebrMex+vaGnSSNm8DSz/A== X-Google-Smtp-Source: ABdhPJy9ZjD0hhEa8lm40mem+jThszXnWIkZsSAwSQstuKR650lfmG42+ri5gvyQjECiVXE67JIVEh7vnYJh09EEXYs= X-Received: by 2002:a67:2d81:0:b0:31c:16d8:dcff with SMTP id t123-20020a672d81000000b0031c16d8dcffmr2874033vst.2.1645770773539; Thu, 24 Feb 2022 22:32:53 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Nelson Chu Date: Fri, 25 Feb 2022 14:32:42 +0800 Message-ID: Subject: Re: [PATCH 1/3] RISC-V: Add 'Smstateen' extension and its CSRs To: Tsukasa OI Cc: Binutils Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-10.0 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: binutils@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Binutils mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 25 Feb 2022 06:33:00 -0000 On Thu, Feb 24, 2022 at 8:11 PM Tsukasa OI wrote: > > This commit adds State Enable Extension (Smstateen) and its CSRs. > > bfd/ChangeLog: > > * elfxx-riscv.c (riscv_supported_std_s_ext): Add 'Smstateen' > extension to valid 'S' extension list. > > gas/ChangeLog: > > * config/tc-riscv.c (enum riscv_csr_class): Add CSR classes for > 'Smstateen' extension. (riscv_csr_address): Add handling for > new CSR classes. > * testsuite/gas/riscv/csr-dw-regnums.s: Add new CSRs. > * testsuite/gas/riscv/csr-dw-regnums.d: Likewise. > * testsuite/gas/riscv/csr.s: Add new CSRs. > * testsuite/gas/riscv/csr-version-1p9p1.d: Likewise. > * testsuite/gas/riscv/csr-version-1p9p1.l: Likewise. > * testsuite/gas/riscv/csr-version-1p10.d: Likewise. > * testsuite/gas/riscv/csr-version-1p10.l: Likewise. > * testsuite/gas/riscv/csr-version-1p11.d: Likewise. > * testsuite/gas/riscv/csr-version-1p11.l: Likewise. > * testsuite/gas/riscv/csr-version-1p12.d: Likewise. > * testsuite/gas/riscv/csr-version-1p12.l: Likewise. > > include/ChangeLog: > > * opcode/riscv-opc.h (CSR_MSTATEEN0, CSR_MSTATEEN1, > CSR_MSTATEEN2, CSR_MSTATEEN3, CSR_SSTATEEN0, CSR_SSTATEEN1, > CSR_SSTATEEN2, CSR_SSTATEEN3, CSR_HSTATEEN0, CSR_HSTATEEN1, > CSR_HSTATEEN2, CSR_HSTATEEN3, CSR_MSTATEEN0H, CSR_MSTATEEN1H, > CSR_MSTATEEN2H, CSR_MSTATEEN3H, CSR_HSTATEEN0H, CSR_HSTATEEN1H, > CSR_HSTATEEN2H, CSR_HSTATEEN3H): New CSR macros. > --- > bfd/elfxx-riscv.c | 1 + > gas/config/tc-riscv.c | 9 +++ > gas/testsuite/gas/riscv/csr-dw-regnums.d | 20 ++++++ > gas/testsuite/gas/riscv/csr-dw-regnums.s | 21 ++++++ > gas/testsuite/gas/riscv/csr-version-1p10.d | 40 ++++++++++++ > gas/testsuite/gas/riscv/csr-version-1p10.l | 72 +++++++++++++++++++++ > gas/testsuite/gas/riscv/csr-version-1p11.d | 40 ++++++++++++ > gas/testsuite/gas/riscv/csr-version-1p11.l | 72 +++++++++++++++++++++ > gas/testsuite/gas/riscv/csr-version-1p12.d | 40 ++++++++++++ > gas/testsuite/gas/riscv/csr-version-1p12.l | 56 ++++++++++++++++ > gas/testsuite/gas/riscv/csr-version-1p9p1.d | 40 ++++++++++++ > gas/testsuite/gas/riscv/csr-version-1p9p1.l | 72 +++++++++++++++++++++ > gas/testsuite/gas/riscv/csr.s | 22 +++++++ > include/opcode/riscv-opc.h | 42 ++++++++++++ > 14 files changed, 547 insertions(+) > > diff --git a/bfd/elfxx-riscv.c b/bfd/elfxx-riscv.c > index d74e7a584eb..00767b53475 100644 > --- a/bfd/elfxx-riscv.c > +++ b/bfd/elfxx-riscv.c > @@ -1220,6 +1220,7 @@ static struct riscv_supported_ext riscv_supported_std_z_ext[] = > > static struct riscv_supported_ext riscv_supported_std_s_ext[] = > { > + {"smstateen", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 }, > {"svinval", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 }, > {NULL, 0, 0, 0, 0} > }; > diff --git a/gas/config/tc-riscv.c b/gas/config/tc-riscv.c > index 322e0f070ba..b640e7bf2f8 100644 > --- a/gas/config/tc-riscv.c > +++ b/gas/config/tc-riscv.c > @@ -65,6 +65,8 @@ enum riscv_csr_class > CSR_CLASS_F, /* f-ext only */ > CSR_CLASS_ZKR, /* zkr only */ > CSR_CLASS_V, /* rvv only */ > + CSR_CLASS_SMSTATEEN, /* Smstateen only */ > + CSR_CLASS_SMSTATEEN_32, /* Smstateen RV32 only */ > CSR_CLASS_DEBUG /* debug CSR */ > }; > > @@ -918,6 +920,13 @@ riscv_csr_address (const char *csr_name, > case CSR_CLASS_V: > extension = "v"; > break; > + case CSR_CLASS_SMSTATEEN_32: > + rv32_only = (xlen == 32); > + /* Fall through. */ > + case CSR_CLASS_SMSTATEEN: > + need_check_version = true; > + extension = "smstateen"; > + break; > case CSR_CLASS_DEBUG: > break; > default: > diff --git a/gas/testsuite/gas/riscv/csr-dw-regnums.d b/gas/testsuite/gas/riscv/csr-dw-regnums.d > index 23ceba193ca..0c9ec6e4035 100644 > --- a/gas/testsuite/gas/riscv/csr-dw-regnums.d > +++ b/gas/testsuite/gas/riscv/csr-dw-regnums.d > @@ -313,6 +313,26 @@ Contents of the .* section: > DW_CFA_offset_extended_sf: r4675 \(vstval\) at cfa\+2316 > DW_CFA_offset_extended_sf: r4676 \(vsip\) at cfa\+2320 > DW_CFA_offset_extended_sf: r4736 \(vsatp\) at cfa\+2560 > + DW_CFA_offset_extended_sf: r4876 \(mstateen0\) at cfa\+3120 > + DW_CFA_offset_extended_sf: r4877 \(mstateen1\) at cfa\+3124 > + DW_CFA_offset_extended_sf: r4878 \(mstateen2\) at cfa\+3128 > + DW_CFA_offset_extended_sf: r4879 \(mstateen3\) at cfa\+3132 > + DW_CFA_offset_extended_sf: r4364 \(sstateen0\) at cfa\+1072 > + DW_CFA_offset_extended_sf: r4365 \(sstateen1\) at cfa\+1076 > + DW_CFA_offset_extended_sf: r4366 \(sstateen2\) at cfa\+1080 > + DW_CFA_offset_extended_sf: r4367 \(sstateen3\) at cfa\+1084 > + DW_CFA_offset_extended_sf: r5644 \(hstateen0\) at cfa\+6192 > + DW_CFA_offset_extended_sf: r5645 \(hstateen1\) at cfa\+6196 > + DW_CFA_offset_extended_sf: r5646 \(hstateen2\) at cfa\+6200 > + DW_CFA_offset_extended_sf: r5647 \(hstateen3\) at cfa\+6204 > + DW_CFA_offset_extended_sf: r4892 \(mstateen0h\) at cfa\+3184 > + DW_CFA_offset_extended_sf: r4893 \(mstateen1h\) at cfa\+3188 > + DW_CFA_offset_extended_sf: r4894 \(mstateen2h\) at cfa\+3192 > + DW_CFA_offset_extended_sf: r4895 \(mstateen3h\) at cfa\+3196 > + DW_CFA_offset_extended_sf: r5660 \(hstateen0h\) at cfa\+6256 > + DW_CFA_offset_extended_sf: r5661 \(hstateen1h\) at cfa\+6260 > + DW_CFA_offset_extended_sf: r5662 \(hstateen2h\) at cfa\+6264 > + DW_CFA_offset_extended_sf: r5663 \(hstateen3h\) at cfa\+6268 > DW_CFA_offset_extended_sf: r4163 \(utval\) at cfa\+268 > DW_CFA_offset_extended_sf: r4419 \(stval\) at cfa\+1292 > DW_CFA_offset_extended_sf: r4480 \(satp\) at cfa\+1536 > diff --git a/gas/testsuite/gas/riscv/csr-dw-regnums.s b/gas/testsuite/gas/riscv/csr-dw-regnums.s > index 4a243ad7b0f..2afadac49f6 100644 > --- a/gas/testsuite/gas/riscv/csr-dw-regnums.s > +++ b/gas/testsuite/gas/riscv/csr-dw-regnums.s > @@ -307,6 +307,27 @@ _start: > .cfi_offset vstval, 2316 > .cfi_offset vsip, 2320 > .cfi_offset vsatp, 2560 > + # Smstateen extension > + .cfi_offset mstateen0, 3120 > + .cfi_offset mstateen1, 3124 > + .cfi_offset mstateen2, 3128 > + .cfi_offset mstateen3, 3132 > + .cfi_offset sstateen0, 1072 > + .cfi_offset sstateen1, 1076 > + .cfi_offset sstateen2, 1080 > + .cfi_offset sstateen3, 1084 > + .cfi_offset hstateen0, 6192 > + .cfi_offset hstateen1, 6196 > + .cfi_offset hstateen2, 6200 > + .cfi_offset hstateen3, 6204 > + .cfi_offset mstateen0h, 3184 > + .cfi_offset mstateen1h, 3188 > + .cfi_offset mstateen2h, 3192 > + .cfi_offset mstateen3h, 3196 > + .cfi_offset hstateen0h, 6256 > + .cfi_offset hstateen1h, 6260 > + .cfi_offset hstateen2h, 6264 > + .cfi_offset hstateen3h, 6268 > # dropped > .cfi_offset ubadaddr, 268 # aliases > .cfi_offset sbadaddr, 1292 # aliases > diff --git a/gas/testsuite/gas/riscv/csr-version-1p10.d b/gas/testsuite/gas/riscv/csr-version-1p10.d > index 6e0d1f6c66a..7f9f5497428 100644 > --- a/gas/testsuite/gas/riscv/csr-version-1p10.d > +++ b/gas/testsuite/gas/riscv/csr-version-1p10.d > @@ -601,6 +601,46 @@ Disassembly of section .text: > [ ]+[0-9a-f]+:[ ]+24459073[ ]+csrw[ ]+0x244,a1 > [ ]+[0-9a-f]+:[ ]+28002573[ ]+csrr[ ]+a0,0x280 > [ ]+[0-9a-f]+:[ ]+28059073[ ]+csrw[ ]+0x280,a1 > +[ ]+[0-9a-f]+:[ ]+30c02573[ ]+csrr[ ]+a0,mstateen0 > +[ ]+[0-9a-f]+:[ ]+30c59073[ ]+csrw[ ]+mstateen0,a1 > +[ ]+[0-9a-f]+:[ ]+30d02573[ ]+csrr[ ]+a0,mstateen1 > +[ ]+[0-9a-f]+:[ ]+30d59073[ ]+csrw[ ]+mstateen1,a1 > +[ ]+[0-9a-f]+:[ ]+30e02573[ ]+csrr[ ]+a0,mstateen2 > +[ ]+[0-9a-f]+:[ ]+30e59073[ ]+csrw[ ]+mstateen2,a1 > +[ ]+[0-9a-f]+:[ ]+30f02573[ ]+csrr[ ]+a0,mstateen3 > +[ ]+[0-9a-f]+:[ ]+30f59073[ ]+csrw[ ]+mstateen3,a1 > +[ ]+[0-9a-f]+:[ ]+10c02573[ ]+csrr[ ]+a0,sstateen0 > +[ ]+[0-9a-f]+:[ ]+10c59073[ ]+csrw[ ]+sstateen0,a1 > +[ ]+[0-9a-f]+:[ ]+10d02573[ ]+csrr[ ]+a0,sstateen1 > +[ ]+[0-9a-f]+:[ ]+10d59073[ ]+csrw[ ]+sstateen1,a1 > +[ ]+[0-9a-f]+:[ ]+10e02573[ ]+csrr[ ]+a0,sstateen2 > +[ ]+[0-9a-f]+:[ ]+10e59073[ ]+csrw[ ]+sstateen2,a1 > +[ ]+[0-9a-f]+:[ ]+10f02573[ ]+csrr[ ]+a0,sstateen3 > +[ ]+[0-9a-f]+:[ ]+10f59073[ ]+csrw[ ]+sstateen3,a1 > +[ ]+[0-9a-f]+:[ ]+60c02573[ ]+csrr[ ]+a0,0x60c > +[ ]+[0-9a-f]+:[ ]+60c59073[ ]+csrw[ ]+0x60c,a1 > +[ ]+[0-9a-f]+:[ ]+60d02573[ ]+csrr[ ]+a0,0x60d > +[ ]+[0-9a-f]+:[ ]+60d59073[ ]+csrw[ ]+0x60d,a1 > +[ ]+[0-9a-f]+:[ ]+60e02573[ ]+csrr[ ]+a0,0x60e > +[ ]+[0-9a-f]+:[ ]+60e59073[ ]+csrw[ ]+0x60e,a1 > +[ ]+[0-9a-f]+:[ ]+60f02573[ ]+csrr[ ]+a0,0x60f > +[ ]+[0-9a-f]+:[ ]+60f59073[ ]+csrw[ ]+0x60f,a1 > +[ ]+[0-9a-f]+:[ ]+31c02573[ ]+csrr[ ]+a0,mstateen0h > +[ ]+[0-9a-f]+:[ ]+31c59073[ ]+csrw[ ]+mstateen0h,a1 > +[ ]+[0-9a-f]+:[ ]+31d02573[ ]+csrr[ ]+a0,mstateen1h > +[ ]+[0-9a-f]+:[ ]+31d59073[ ]+csrw[ ]+mstateen1h,a1 > +[ ]+[0-9a-f]+:[ ]+31e02573[ ]+csrr[ ]+a0,mstateen2h > +[ ]+[0-9a-f]+:[ ]+31e59073[ ]+csrw[ ]+mstateen2h,a1 > +[ ]+[0-9a-f]+:[ ]+31f02573[ ]+csrr[ ]+a0,mstateen3h > +[ ]+[0-9a-f]+:[ ]+31f59073[ ]+csrw[ ]+mstateen3h,a1 > +[ ]+[0-9a-f]+:[ ]+61c02573[ ]+csrr[ ]+a0,0x61c > +[ ]+[0-9a-f]+:[ ]+61c59073[ ]+csrw[ ]+0x61c,a1 > +[ ]+[0-9a-f]+:[ ]+61d02573[ ]+csrr[ ]+a0,0x61d > +[ ]+[0-9a-f]+:[ ]+61d59073[ ]+csrw[ ]+0x61d,a1 > +[ ]+[0-9a-f]+:[ ]+61e02573[ ]+csrr[ ]+a0,0x61e > +[ ]+[0-9a-f]+:[ ]+61e59073[ ]+csrw[ ]+0x61e,a1 > +[ ]+[0-9a-f]+:[ ]+61f02573[ ]+csrr[ ]+a0,0x61f > +[ ]+[0-9a-f]+:[ ]+61f59073[ ]+csrw[ ]+0x61f,a1 > [ ]+[0-9a-f]+:[ ]+04302573[ ]+csrr[ ]+a0,utval > [ ]+[0-9a-f]+:[ ]+04359073[ ]+csrw[ ]+utval,a1 > [ ]+[0-9a-f]+:[ ]+14302573[ ]+csrr[ ]+a0,stval > diff --git a/gas/testsuite/gas/riscv/csr-version-1p10.l b/gas/testsuite/gas/riscv/csr-version-1p10.l > index 2511feeafc8..ff23c010d18 100644 > --- a/gas/testsuite/gas/riscv/csr-version-1p10.l > +++ b/gas/testsuite/gas/riscv/csr-version-1p10.l > @@ -411,6 +411,78 @@ > .*Warning: invalid CSR `vsip' for the privileged spec `1.10' > .*Warning: invalid CSR `vsatp' for the privileged spec `1.10' > .*Warning: invalid CSR `vsatp' for the privileged spec `1.10' > +.*Warning: invalid CSR `mstateen0', needs `smstateen' extension > +.*Warning: invalid CSR `mstateen0', needs `smstateen' extension > +.*Warning: invalid CSR `mstateen1', needs `smstateen' extension > +.*Warning: invalid CSR `mstateen1', needs `smstateen' extension > +.*Warning: invalid CSR `mstateen2', needs `smstateen' extension > +.*Warning: invalid CSR `mstateen2', needs `smstateen' extension > +.*Warning: invalid CSR `mstateen3', needs `smstateen' extension > +.*Warning: invalid CSR `mstateen3', needs `smstateen' extension > +.*Warning: invalid CSR `sstateen0', needs `smstateen' extension > +.*Warning: invalid CSR `sstateen0', needs `smstateen' extension > +.*Warning: invalid CSR `sstateen1', needs `smstateen' extension > +.*Warning: invalid CSR `sstateen1', needs `smstateen' extension > +.*Warning: invalid CSR `sstateen2', needs `smstateen' extension > +.*Warning: invalid CSR `sstateen2', needs `smstateen' extension > +.*Warning: invalid CSR `sstateen3', needs `smstateen' extension > +.*Warning: invalid CSR `sstateen3', needs `smstateen' extension > +.*Warning: invalid CSR `hstateen0', needs `smstateen' extension > +.*Warning: invalid CSR `hstateen0' for the privileged spec `1.10' > +.*Warning: invalid CSR `hstateen0', needs `smstateen' extension > +.*Warning: invalid CSR `hstateen0' for the privileged spec `1.10' > +.*Warning: invalid CSR `hstateen1', needs `smstateen' extension > +.*Warning: invalid CSR `hstateen1' for the privileged spec `1.10' > +.*Warning: invalid CSR `hstateen1', needs `smstateen' extension > +.*Warning: invalid CSR `hstateen1' for the privileged spec `1.10' > +.*Warning: invalid CSR `hstateen2', needs `smstateen' extension > +.*Warning: invalid CSR `hstateen2' for the privileged spec `1.10' > +.*Warning: invalid CSR `hstateen2', needs `smstateen' extension > +.*Warning: invalid CSR `hstateen2' for the privileged spec `1.10' > +.*Warning: invalid CSR `hstateen3', needs `smstateen' extension > +.*Warning: invalid CSR `hstateen3' for the privileged spec `1.10' > +.*Warning: invalid CSR `hstateen3', needs `smstateen' extension > +.*Warning: invalid CSR `hstateen3' for the privileged spec `1.10' > +.*Warning: invalid CSR `mstateen0h', needs rv32i extension > +.*Warning: invalid CSR `mstateen0h', needs `smstateen' extension > +.*Warning: invalid CSR `mstateen0h', needs rv32i extension > +.*Warning: invalid CSR `mstateen0h', needs `smstateen' extension > +.*Warning: invalid CSR `mstateen1h', needs rv32i extension > +.*Warning: invalid CSR `mstateen1h', needs `smstateen' extension > +.*Warning: invalid CSR `mstateen1h', needs rv32i extension > +.*Warning: invalid CSR `mstateen1h', needs `smstateen' extension > +.*Warning: invalid CSR `mstateen2h', needs rv32i extension > +.*Warning: invalid CSR `mstateen2h', needs `smstateen' extension > +.*Warning: invalid CSR `mstateen2h', needs rv32i extension > +.*Warning: invalid CSR `mstateen2h', needs `smstateen' extension > +.*Warning: invalid CSR `mstateen3h', needs rv32i extension > +.*Warning: invalid CSR `mstateen3h', needs `smstateen' extension > +.*Warning: invalid CSR `mstateen3h', needs rv32i extension > +.*Warning: invalid CSR `mstateen3h', needs `smstateen' extension > +.*Warning: invalid CSR `hstateen0h', needs rv32i extension > +.*Warning: invalid CSR `hstateen0h', needs `smstateen' extension > +.*Warning: invalid CSR `hstateen0h' for the privileged spec `1.10' > +.*Warning: invalid CSR `hstateen0h', needs rv32i extension > +.*Warning: invalid CSR `hstateen0h', needs `smstateen' extension > +.*Warning: invalid CSR `hstateen0h' for the privileged spec `1.10' > +.*Warning: invalid CSR `hstateen1h', needs rv32i extension > +.*Warning: invalid CSR `hstateen1h', needs `smstateen' extension > +.*Warning: invalid CSR `hstateen1h' for the privileged spec `1.10' > +.*Warning: invalid CSR `hstateen1h', needs rv32i extension > +.*Warning: invalid CSR `hstateen1h', needs `smstateen' extension > +.*Warning: invalid CSR `hstateen1h' for the privileged spec `1.10' > +.*Warning: invalid CSR `hstateen2h', needs rv32i extension > +.*Warning: invalid CSR `hstateen2h', needs `smstateen' extension > +.*Warning: invalid CSR `hstateen2h' for the privileged spec `1.10' > +.*Warning: invalid CSR `hstateen2h', needs rv32i extension > +.*Warning: invalid CSR `hstateen2h', needs `smstateen' extension > +.*Warning: invalid CSR `hstateen2h' for the privileged spec `1.10' > +.*Warning: invalid CSR `hstateen3h', needs rv32i extension > +.*Warning: invalid CSR `hstateen3h', needs `smstateen' extension > +.*Warning: invalid CSR `hstateen3h' for the privileged spec `1.10' > +.*Warning: invalid CSR `hstateen3h', needs rv32i extension > +.*Warning: invalid CSR `hstateen3h', needs `smstateen' extension > +.*Warning: invalid CSR `hstateen3h' for the privileged spec `1.10' > .*Warning: invalid CSR `ubadaddr' for the privileged spec `1.10' > .*Warning: invalid CSR `ubadaddr' for the privileged spec `1.10' > .*Warning: invalid CSR `sbadaddr' for the privileged spec `1.10' > diff --git a/gas/testsuite/gas/riscv/csr-version-1p11.d b/gas/testsuite/gas/riscv/csr-version-1p11.d > index 0c9166555a4..6e85a7e2d4d 100644 > --- a/gas/testsuite/gas/riscv/csr-version-1p11.d > +++ b/gas/testsuite/gas/riscv/csr-version-1p11.d > @@ -601,6 +601,46 @@ Disassembly of section .text: > [ ]+[0-9a-f]+:[ ]+24459073[ ]+csrw[ ]+0x244,a1 > [ ]+[0-9a-f]+:[ ]+28002573[ ]+csrr[ ]+a0,0x280 > [ ]+[0-9a-f]+:[ ]+28059073[ ]+csrw[ ]+0x280,a1 > +[ ]+[0-9a-f]+:[ ]+30c02573[ ]+csrr[ ]+a0,mstateen0 > +[ ]+[0-9a-f]+:[ ]+30c59073[ ]+csrw[ ]+mstateen0,a1 > +[ ]+[0-9a-f]+:[ ]+30d02573[ ]+csrr[ ]+a0,mstateen1 > +[ ]+[0-9a-f]+:[ ]+30d59073[ ]+csrw[ ]+mstateen1,a1 > +[ ]+[0-9a-f]+:[ ]+30e02573[ ]+csrr[ ]+a0,mstateen2 > +[ ]+[0-9a-f]+:[ ]+30e59073[ ]+csrw[ ]+mstateen2,a1 > +[ ]+[0-9a-f]+:[ ]+30f02573[ ]+csrr[ ]+a0,mstateen3 > +[ ]+[0-9a-f]+:[ ]+30f59073[ ]+csrw[ ]+mstateen3,a1 > +[ ]+[0-9a-f]+:[ ]+10c02573[ ]+csrr[ ]+a0,sstateen0 > +[ ]+[0-9a-f]+:[ ]+10c59073[ ]+csrw[ ]+sstateen0,a1 > +[ ]+[0-9a-f]+:[ ]+10d02573[ ]+csrr[ ]+a0,sstateen1 > +[ ]+[0-9a-f]+:[ ]+10d59073[ ]+csrw[ ]+sstateen1,a1 > +[ ]+[0-9a-f]+:[ ]+10e02573[ ]+csrr[ ]+a0,sstateen2 > +[ ]+[0-9a-f]+:[ ]+10e59073[ ]+csrw[ ]+sstateen2,a1 > +[ ]+[0-9a-f]+:[ ]+10f02573[ ]+csrr[ ]+a0,sstateen3 > +[ ]+[0-9a-f]+:[ ]+10f59073[ ]+csrw[ ]+sstateen3,a1 > +[ ]+[0-9a-f]+:[ ]+60c02573[ ]+csrr[ ]+a0,0x60c > +[ ]+[0-9a-f]+:[ ]+60c59073[ ]+csrw[ ]+0x60c,a1 > +[ ]+[0-9a-f]+:[ ]+60d02573[ ]+csrr[ ]+a0,0x60d > +[ ]+[0-9a-f]+:[ ]+60d59073[ ]+csrw[ ]+0x60d,a1 > +[ ]+[0-9a-f]+:[ ]+60e02573[ ]+csrr[ ]+a0,0x60e > +[ ]+[0-9a-f]+:[ ]+60e59073[ ]+csrw[ ]+0x60e,a1 > +[ ]+[0-9a-f]+:[ ]+60f02573[ ]+csrr[ ]+a0,0x60f > +[ ]+[0-9a-f]+:[ ]+60f59073[ ]+csrw[ ]+0x60f,a1 > +[ ]+[0-9a-f]+:[ ]+31c02573[ ]+csrr[ ]+a0,mstateen0h > +[ ]+[0-9a-f]+:[ ]+31c59073[ ]+csrw[ ]+mstateen0h,a1 > +[ ]+[0-9a-f]+:[ ]+31d02573[ ]+csrr[ ]+a0,mstateen1h > +[ ]+[0-9a-f]+:[ ]+31d59073[ ]+csrw[ ]+mstateen1h,a1 > +[ ]+[0-9a-f]+:[ ]+31e02573[ ]+csrr[ ]+a0,mstateen2h > +[ ]+[0-9a-f]+:[ ]+31e59073[ ]+csrw[ ]+mstateen2h,a1 > +[ ]+[0-9a-f]+:[ ]+31f02573[ ]+csrr[ ]+a0,mstateen3h > +[ ]+[0-9a-f]+:[ ]+31f59073[ ]+csrw[ ]+mstateen3h,a1 > +[ ]+[0-9a-f]+:[ ]+61c02573[ ]+csrr[ ]+a0,0x61c > +[ ]+[0-9a-f]+:[ ]+61c59073[ ]+csrw[ ]+0x61c,a1 > +[ ]+[0-9a-f]+:[ ]+61d02573[ ]+csrr[ ]+a0,0x61d > +[ ]+[0-9a-f]+:[ ]+61d59073[ ]+csrw[ ]+0x61d,a1 > +[ ]+[0-9a-f]+:[ ]+61e02573[ ]+csrr[ ]+a0,0x61e > +[ ]+[0-9a-f]+:[ ]+61e59073[ ]+csrw[ ]+0x61e,a1 > +[ ]+[0-9a-f]+:[ ]+61f02573[ ]+csrr[ ]+a0,0x61f > +[ ]+[0-9a-f]+:[ ]+61f59073[ ]+csrw[ ]+0x61f,a1 > [ ]+[0-9a-f]+:[ ]+04302573[ ]+csrr[ ]+a0,utval > [ ]+[0-9a-f]+:[ ]+04359073[ ]+csrw[ ]+utval,a1 > [ ]+[0-9a-f]+:[ ]+14302573[ ]+csrr[ ]+a0,stval > diff --git a/gas/testsuite/gas/riscv/csr-version-1p11.l b/gas/testsuite/gas/riscv/csr-version-1p11.l > index 570efe25cb7..3a767cbcadf 100644 > --- a/gas/testsuite/gas/riscv/csr-version-1p11.l > +++ b/gas/testsuite/gas/riscv/csr-version-1p11.l > @@ -409,6 +409,78 @@ > .*Warning: invalid CSR `vsip' for the privileged spec `1.11' > .*Warning: invalid CSR `vsatp' for the privileged spec `1.11' > .*Warning: invalid CSR `vsatp' for the privileged spec `1.11' > +.*Warning: invalid CSR `mstateen0', needs `smstateen' extension > +.*Warning: invalid CSR `mstateen0', needs `smstateen' extension > +.*Warning: invalid CSR `mstateen1', needs `smstateen' extension > +.*Warning: invalid CSR `mstateen1', needs `smstateen' extension > +.*Warning: invalid CSR `mstateen2', needs `smstateen' extension > +.*Warning: invalid CSR `mstateen2', needs `smstateen' extension > +.*Warning: invalid CSR `mstateen3', needs `smstateen' extension > +.*Warning: invalid CSR `mstateen3', needs `smstateen' extension > +.*Warning: invalid CSR `sstateen0', needs `smstateen' extension > +.*Warning: invalid CSR `sstateen0', needs `smstateen' extension > +.*Warning: invalid CSR `sstateen1', needs `smstateen' extension > +.*Warning: invalid CSR `sstateen1', needs `smstateen' extension > +.*Warning: invalid CSR `sstateen2', needs `smstateen' extension > +.*Warning: invalid CSR `sstateen2', needs `smstateen' extension > +.*Warning: invalid CSR `sstateen3', needs `smstateen' extension > +.*Warning: invalid CSR `sstateen3', needs `smstateen' extension > +.*Warning: invalid CSR `hstateen0', needs `smstateen' extension > +.*Warning: invalid CSR `hstateen0' for the privileged spec `1.11' > +.*Warning: invalid CSR `hstateen0', needs `smstateen' extension > +.*Warning: invalid CSR `hstateen0' for the privileged spec `1.11' > +.*Warning: invalid CSR `hstateen1', needs `smstateen' extension > +.*Warning: invalid CSR `hstateen1' for the privileged spec `1.11' > +.*Warning: invalid CSR `hstateen1', needs `smstateen' extension > +.*Warning: invalid CSR `hstateen1' for the privileged spec `1.11' > +.*Warning: invalid CSR `hstateen2', needs `smstateen' extension > +.*Warning: invalid CSR `hstateen2' for the privileged spec `1.11' > +.*Warning: invalid CSR `hstateen2', needs `smstateen' extension > +.*Warning: invalid CSR `hstateen2' for the privileged spec `1.11' > +.*Warning: invalid CSR `hstateen3', needs `smstateen' extension > +.*Warning: invalid CSR `hstateen3' for the privileged spec `1.11' > +.*Warning: invalid CSR `hstateen3', needs `smstateen' extension > +.*Warning: invalid CSR `hstateen3' for the privileged spec `1.11' > +.*Warning: invalid CSR `mstateen0h', needs rv32i extension > +.*Warning: invalid CSR `mstateen0h', needs `smstateen' extension > +.*Warning: invalid CSR `mstateen0h', needs rv32i extension > +.*Warning: invalid CSR `mstateen0h', needs `smstateen' extension > +.*Warning: invalid CSR `mstateen1h', needs rv32i extension > +.*Warning: invalid CSR `mstateen1h', needs `smstateen' extension > +.*Warning: invalid CSR `mstateen1h', needs rv32i extension > +.*Warning: invalid CSR `mstateen1h', needs `smstateen' extension > +.*Warning: invalid CSR `mstateen2h', needs rv32i extension > +.*Warning: invalid CSR `mstateen2h', needs `smstateen' extension > +.*Warning: invalid CSR `mstateen2h', needs rv32i extension > +.*Warning: invalid CSR `mstateen2h', needs `smstateen' extension > +.*Warning: invalid CSR `mstateen3h', needs rv32i extension > +.*Warning: invalid CSR `mstateen3h', needs `smstateen' extension > +.*Warning: invalid CSR `mstateen3h', needs rv32i extension > +.*Warning: invalid CSR `mstateen3h', needs `smstateen' extension > +.*Warning: invalid CSR `hstateen0h', needs rv32i extension > +.*Warning: invalid CSR `hstateen0h', needs `smstateen' extension > +.*Warning: invalid CSR `hstateen0h' for the privileged spec `1.11' > +.*Warning: invalid CSR `hstateen0h', needs rv32i extension > +.*Warning: invalid CSR `hstateen0h', needs `smstateen' extension > +.*Warning: invalid CSR `hstateen0h' for the privileged spec `1.11' > +.*Warning: invalid CSR `hstateen1h', needs rv32i extension > +.*Warning: invalid CSR `hstateen1h', needs `smstateen' extension > +.*Warning: invalid CSR `hstateen1h' for the privileged spec `1.11' > +.*Warning: invalid CSR `hstateen1h', needs rv32i extension > +.*Warning: invalid CSR `hstateen1h', needs `smstateen' extension > +.*Warning: invalid CSR `hstateen1h' for the privileged spec `1.11' > +.*Warning: invalid CSR `hstateen2h', needs rv32i extension > +.*Warning: invalid CSR `hstateen2h', needs `smstateen' extension > +.*Warning: invalid CSR `hstateen2h' for the privileged spec `1.11' > +.*Warning: invalid CSR `hstateen2h', needs rv32i extension > +.*Warning: invalid CSR `hstateen2h', needs `smstateen' extension > +.*Warning: invalid CSR `hstateen2h' for the privileged spec `1.11' > +.*Warning: invalid CSR `hstateen3h', needs rv32i extension > +.*Warning: invalid CSR `hstateen3h', needs `smstateen' extension > +.*Warning: invalid CSR `hstateen3h' for the privileged spec `1.11' > +.*Warning: invalid CSR `hstateen3h', needs rv32i extension > +.*Warning: invalid CSR `hstateen3h', needs `smstateen' extension > +.*Warning: invalid CSR `hstateen3h' for the privileged spec `1.11' > .*Warning: invalid CSR `ubadaddr' for the privileged spec `1.11' > .*Warning: invalid CSR `ubadaddr' for the privileged spec `1.11' > .*Warning: invalid CSR `sbadaddr' for the privileged spec `1.11' > diff --git a/gas/testsuite/gas/riscv/csr-version-1p12.d b/gas/testsuite/gas/riscv/csr-version-1p12.d > index 3c27ca2de20..46ca519b31e 100644 > --- a/gas/testsuite/gas/riscv/csr-version-1p12.d > +++ b/gas/testsuite/gas/riscv/csr-version-1p12.d > @@ -601,6 +601,46 @@ Disassembly of section .text: > [ ]+[0-9a-f]+:[ ]+24459073[ ]+csrw[ ]+vsip,a1 > [ ]+[0-9a-f]+:[ ]+28002573[ ]+csrr[ ]+a0,vsatp > [ ]+[0-9a-f]+:[ ]+28059073[ ]+csrw[ ]+vsatp,a1 > +[ ]+[0-9a-f]+:[ ]+30c02573[ ]+csrr[ ]+a0,mstateen0 > +[ ]+[0-9a-f]+:[ ]+30c59073[ ]+csrw[ ]+mstateen0,a1 > +[ ]+[0-9a-f]+:[ ]+30d02573[ ]+csrr[ ]+a0,mstateen1 > +[ ]+[0-9a-f]+:[ ]+30d59073[ ]+csrw[ ]+mstateen1,a1 > +[ ]+[0-9a-f]+:[ ]+30e02573[ ]+csrr[ ]+a0,mstateen2 > +[ ]+[0-9a-f]+:[ ]+30e59073[ ]+csrw[ ]+mstateen2,a1 > +[ ]+[0-9a-f]+:[ ]+30f02573[ ]+csrr[ ]+a0,mstateen3 > +[ ]+[0-9a-f]+:[ ]+30f59073[ ]+csrw[ ]+mstateen3,a1 > +[ ]+[0-9a-f]+:[ ]+10c02573[ ]+csrr[ ]+a0,sstateen0 > +[ ]+[0-9a-f]+:[ ]+10c59073[ ]+csrw[ ]+sstateen0,a1 > +[ ]+[0-9a-f]+:[ ]+10d02573[ ]+csrr[ ]+a0,sstateen1 > +[ ]+[0-9a-f]+:[ ]+10d59073[ ]+csrw[ ]+sstateen1,a1 > +[ ]+[0-9a-f]+:[ ]+10e02573[ ]+csrr[ ]+a0,sstateen2 > +[ ]+[0-9a-f]+:[ ]+10e59073[ ]+csrw[ ]+sstateen2,a1 > +[ ]+[0-9a-f]+:[ ]+10f02573[ ]+csrr[ ]+a0,sstateen3 > +[ ]+[0-9a-f]+:[ ]+10f59073[ ]+csrw[ ]+sstateen3,a1 > +[ ]+[0-9a-f]+:[ ]+60c02573[ ]+csrr[ ]+a0,hstateen0 > +[ ]+[0-9a-f]+:[ ]+60c59073[ ]+csrw[ ]+hstateen0,a1 > +[ ]+[0-9a-f]+:[ ]+60d02573[ ]+csrr[ ]+a0,hstateen1 > +[ ]+[0-9a-f]+:[ ]+60d59073[ ]+csrw[ ]+hstateen1,a1 > +[ ]+[0-9a-f]+:[ ]+60e02573[ ]+csrr[ ]+a0,hstateen2 > +[ ]+[0-9a-f]+:[ ]+60e59073[ ]+csrw[ ]+hstateen2,a1 > +[ ]+[0-9a-f]+:[ ]+60f02573[ ]+csrr[ ]+a0,hstateen3 > +[ ]+[0-9a-f]+:[ ]+60f59073[ ]+csrw[ ]+hstateen3,a1 > +[ ]+[0-9a-f]+:[ ]+31c02573[ ]+csrr[ ]+a0,mstateen0h > +[ ]+[0-9a-f]+:[ ]+31c59073[ ]+csrw[ ]+mstateen0h,a1 > +[ ]+[0-9a-f]+:[ ]+31d02573[ ]+csrr[ ]+a0,mstateen1h > +[ ]+[0-9a-f]+:[ ]+31d59073[ ]+csrw[ ]+mstateen1h,a1 > +[ ]+[0-9a-f]+:[ ]+31e02573[ ]+csrr[ ]+a0,mstateen2h > +[ ]+[0-9a-f]+:[ ]+31e59073[ ]+csrw[ ]+mstateen2h,a1 > +[ ]+[0-9a-f]+:[ ]+31f02573[ ]+csrr[ ]+a0,mstateen3h > +[ ]+[0-9a-f]+:[ ]+31f59073[ ]+csrw[ ]+mstateen3h,a1 > +[ ]+[0-9a-f]+:[ ]+61c02573[ ]+csrr[ ]+a0,hstateen0h > +[ ]+[0-9a-f]+:[ ]+61c59073[ ]+csrw[ ]+hstateen0h,a1 > +[ ]+[0-9a-f]+:[ ]+61d02573[ ]+csrr[ ]+a0,hstateen1h > +[ ]+[0-9a-f]+:[ ]+61d59073[ ]+csrw[ ]+hstateen1h,a1 > +[ ]+[0-9a-f]+:[ ]+61e02573[ ]+csrr[ ]+a0,hstateen2h > +[ ]+[0-9a-f]+:[ ]+61e59073[ ]+csrw[ ]+hstateen2h,a1 > +[ ]+[0-9a-f]+:[ ]+61f02573[ ]+csrr[ ]+a0,hstateen3h > +[ ]+[0-9a-f]+:[ ]+61f59073[ ]+csrw[ ]+hstateen3h,a1 > [ ]+[0-9a-f]+:[ ]+04302573[ ]+csrr[ ]+a0,0x43 > [ ]+[0-9a-f]+:[ ]+04359073[ ]+csrw[ ]+0x43,a1 > [ ]+[0-9a-f]+:[ ]+14302573[ ]+csrr[ ]+a0,stval > diff --git a/gas/testsuite/gas/riscv/csr-version-1p12.l b/gas/testsuite/gas/riscv/csr-version-1p12.l > index 03d193cd50e..b23a705f88a 100644 > --- a/gas/testsuite/gas/riscv/csr-version-1p12.l > +++ b/gas/testsuite/gas/riscv/csr-version-1p12.l > @@ -221,6 +221,62 @@ > .*Warning: invalid CSR `henvcfgh', needs rv32i extension > .*Warning: invalid CSR `htimedeltah', needs rv32i extension > .*Warning: invalid CSR `htimedeltah', needs rv32i extension > +.*Warning: invalid CSR `mstateen0', needs `smstateen' extension > +.*Warning: invalid CSR `mstateen0', needs `smstateen' extension > +.*Warning: invalid CSR `mstateen1', needs `smstateen' extension > +.*Warning: invalid CSR `mstateen1', needs `smstateen' extension > +.*Warning: invalid CSR `mstateen2', needs `smstateen' extension > +.*Warning: invalid CSR `mstateen2', needs `smstateen' extension > +.*Warning: invalid CSR `mstateen3', needs `smstateen' extension > +.*Warning: invalid CSR `mstateen3', needs `smstateen' extension > +.*Warning: invalid CSR `sstateen0', needs `smstateen' extension > +.*Warning: invalid CSR `sstateen0', needs `smstateen' extension > +.*Warning: invalid CSR `sstateen1', needs `smstateen' extension > +.*Warning: invalid CSR `sstateen1', needs `smstateen' extension > +.*Warning: invalid CSR `sstateen2', needs `smstateen' extension > +.*Warning: invalid CSR `sstateen2', needs `smstateen' extension > +.*Warning: invalid CSR `sstateen3', needs `smstateen' extension > +.*Warning: invalid CSR `sstateen3', needs `smstateen' extension > +.*Warning: invalid CSR `hstateen0', needs `smstateen' extension > +.*Warning: invalid CSR `hstateen0', needs `smstateen' extension > +.*Warning: invalid CSR `hstateen1', needs `smstateen' extension > +.*Warning: invalid CSR `hstateen1', needs `smstateen' extension > +.*Warning: invalid CSR `hstateen2', needs `smstateen' extension > +.*Warning: invalid CSR `hstateen2', needs `smstateen' extension > +.*Warning: invalid CSR `hstateen3', needs `smstateen' extension > +.*Warning: invalid CSR `hstateen3', needs `smstateen' extension > +.*Warning: invalid CSR `mstateen0h', needs rv32i extension > +.*Warning: invalid CSR `mstateen0h', needs `smstateen' extension > +.*Warning: invalid CSR `mstateen0h', needs rv32i extension > +.*Warning: invalid CSR `mstateen0h', needs `smstateen' extension > +.*Warning: invalid CSR `mstateen1h', needs rv32i extension > +.*Warning: invalid CSR `mstateen1h', needs `smstateen' extension > +.*Warning: invalid CSR `mstateen1h', needs rv32i extension > +.*Warning: invalid CSR `mstateen1h', needs `smstateen' extension > +.*Warning: invalid CSR `mstateen2h', needs rv32i extension > +.*Warning: invalid CSR `mstateen2h', needs `smstateen' extension > +.*Warning: invalid CSR `mstateen2h', needs rv32i extension > +.*Warning: invalid CSR `mstateen2h', needs `smstateen' extension > +.*Warning: invalid CSR `mstateen3h', needs rv32i extension > +.*Warning: invalid CSR `mstateen3h', needs `smstateen' extension > +.*Warning: invalid CSR `mstateen3h', needs rv32i extension > +.*Warning: invalid CSR `mstateen3h', needs `smstateen' extension > +.*Warning: invalid CSR `hstateen0h', needs rv32i extension > +.*Warning: invalid CSR `hstateen0h', needs `smstateen' extension > +.*Warning: invalid CSR `hstateen0h', needs rv32i extension > +.*Warning: invalid CSR `hstateen0h', needs `smstateen' extension > +.*Warning: invalid CSR `hstateen1h', needs rv32i extension > +.*Warning: invalid CSR `hstateen1h', needs `smstateen' extension > +.*Warning: invalid CSR `hstateen1h', needs rv32i extension > +.*Warning: invalid CSR `hstateen1h', needs `smstateen' extension > +.*Warning: invalid CSR `hstateen2h', needs rv32i extension > +.*Warning: invalid CSR `hstateen2h', needs `smstateen' extension > +.*Warning: invalid CSR `hstateen2h', needs rv32i extension > +.*Warning: invalid CSR `hstateen2h', needs `smstateen' extension > +.*Warning: invalid CSR `hstateen3h', needs rv32i extension > +.*Warning: invalid CSR `hstateen3h', needs `smstateen' extension > +.*Warning: invalid CSR `hstateen3h', needs rv32i extension > +.*Warning: invalid CSR `hstateen3h', needs `smstateen' extension > .*Warning: invalid CSR `ubadaddr' for the privileged spec `1.12' > .*Warning: invalid CSR `ubadaddr' for the privileged spec `1.12' > .*Warning: invalid CSR `sbadaddr' for the privileged spec `1.12' > diff --git a/gas/testsuite/gas/riscv/csr-version-1p9p1.d b/gas/testsuite/gas/riscv/csr-version-1p9p1.d > index d0841df5aba..a593182b168 100644 > --- a/gas/testsuite/gas/riscv/csr-version-1p9p1.d > +++ b/gas/testsuite/gas/riscv/csr-version-1p9p1.d > @@ -601,6 +601,46 @@ Disassembly of section .text: > [ ]+[0-9a-f]+:[ ]+24459073[ ]+csrw[ ]+0x244,a1 > [ ]+[0-9a-f]+:[ ]+28002573[ ]+csrr[ ]+a0,0x280 > [ ]+[0-9a-f]+:[ ]+28059073[ ]+csrw[ ]+0x280,a1 > +[ ]+[0-9a-f]+:[ ]+30c02573[ ]+csrr[ ]+a0,mstateen0 > +[ ]+[0-9a-f]+:[ ]+30c59073[ ]+csrw[ ]+mstateen0,a1 > +[ ]+[0-9a-f]+:[ ]+30d02573[ ]+csrr[ ]+a0,mstateen1 > +[ ]+[0-9a-f]+:[ ]+30d59073[ ]+csrw[ ]+mstateen1,a1 > +[ ]+[0-9a-f]+:[ ]+30e02573[ ]+csrr[ ]+a0,mstateen2 > +[ ]+[0-9a-f]+:[ ]+30e59073[ ]+csrw[ ]+mstateen2,a1 > +[ ]+[0-9a-f]+:[ ]+30f02573[ ]+csrr[ ]+a0,mstateen3 > +[ ]+[0-9a-f]+:[ ]+30f59073[ ]+csrw[ ]+mstateen3,a1 > +[ ]+[0-9a-f]+:[ ]+10c02573[ ]+csrr[ ]+a0,sstateen0 > +[ ]+[0-9a-f]+:[ ]+10c59073[ ]+csrw[ ]+sstateen0,a1 > +[ ]+[0-9a-f]+:[ ]+10d02573[ ]+csrr[ ]+a0,sstateen1 > +[ ]+[0-9a-f]+:[ ]+10d59073[ ]+csrw[ ]+sstateen1,a1 > +[ ]+[0-9a-f]+:[ ]+10e02573[ ]+csrr[ ]+a0,sstateen2 > +[ ]+[0-9a-f]+:[ ]+10e59073[ ]+csrw[ ]+sstateen2,a1 > +[ ]+[0-9a-f]+:[ ]+10f02573[ ]+csrr[ ]+a0,sstateen3 > +[ ]+[0-9a-f]+:[ ]+10f59073[ ]+csrw[ ]+sstateen3,a1 > +[ ]+[0-9a-f]+:[ ]+60c02573[ ]+csrr[ ]+a0,0x60c > +[ ]+[0-9a-f]+:[ ]+60c59073[ ]+csrw[ ]+0x60c,a1 > +[ ]+[0-9a-f]+:[ ]+60d02573[ ]+csrr[ ]+a0,0x60d > +[ ]+[0-9a-f]+:[ ]+60d59073[ ]+csrw[ ]+0x60d,a1 > +[ ]+[0-9a-f]+:[ ]+60e02573[ ]+csrr[ ]+a0,0x60e > +[ ]+[0-9a-f]+:[ ]+60e59073[ ]+csrw[ ]+0x60e,a1 > +[ ]+[0-9a-f]+:[ ]+60f02573[ ]+csrr[ ]+a0,0x60f > +[ ]+[0-9a-f]+:[ ]+60f59073[ ]+csrw[ ]+0x60f,a1 > +[ ]+[0-9a-f]+:[ ]+31c02573[ ]+csrr[ ]+a0,mstateen0h > +[ ]+[0-9a-f]+:[ ]+31c59073[ ]+csrw[ ]+mstateen0h,a1 > +[ ]+[0-9a-f]+:[ ]+31d02573[ ]+csrr[ ]+a0,mstateen1h > +[ ]+[0-9a-f]+:[ ]+31d59073[ ]+csrw[ ]+mstateen1h,a1 > +[ ]+[0-9a-f]+:[ ]+31e02573[ ]+csrr[ ]+a0,mstateen2h > +[ ]+[0-9a-f]+:[ ]+31e59073[ ]+csrw[ ]+mstateen2h,a1 > +[ ]+[0-9a-f]+:[ ]+31f02573[ ]+csrr[ ]+a0,mstateen3h > +[ ]+[0-9a-f]+:[ ]+31f59073[ ]+csrw[ ]+mstateen3h,a1 > +[ ]+[0-9a-f]+:[ ]+61c02573[ ]+csrr[ ]+a0,0x61c > +[ ]+[0-9a-f]+:[ ]+61c59073[ ]+csrw[ ]+0x61c,a1 > +[ ]+[0-9a-f]+:[ ]+61d02573[ ]+csrr[ ]+a0,0x61d > +[ ]+[0-9a-f]+:[ ]+61d59073[ ]+csrw[ ]+0x61d,a1 > +[ ]+[0-9a-f]+:[ ]+61e02573[ ]+csrr[ ]+a0,0x61e > +[ ]+[0-9a-f]+:[ ]+61e59073[ ]+csrw[ ]+0x61e,a1 > +[ ]+[0-9a-f]+:[ ]+61f02573[ ]+csrr[ ]+a0,0x61f > +[ ]+[0-9a-f]+:[ ]+61f59073[ ]+csrw[ ]+0x61f,a1 > [ ]+[0-9a-f]+:[ ]+04302573[ ]+csrr[ ]+a0,ubadaddr > [ ]+[0-9a-f]+:[ ]+04359073[ ]+csrw[ ]+ubadaddr,a1 > [ ]+[0-9a-f]+:[ ]+14302573[ ]+csrr[ ]+a0,sbadaddr > diff --git a/gas/testsuite/gas/riscv/csr-version-1p9p1.l b/gas/testsuite/gas/riscv/csr-version-1p9p1.l > index 340216e5ca7..75eda35d2ce 100644 > --- a/gas/testsuite/gas/riscv/csr-version-1p9p1.l > +++ b/gas/testsuite/gas/riscv/csr-version-1p9p1.l > @@ -461,6 +461,78 @@ > .*Warning: invalid CSR `vsip' for the privileged spec `1.9.1' > .*Warning: invalid CSR `vsatp' for the privileged spec `1.9.1' > .*Warning: invalid CSR `vsatp' for the privileged spec `1.9.1' > +.*Warning: invalid CSR `mstateen0', needs `smstateen' extension > +.*Warning: invalid CSR `mstateen0', needs `smstateen' extension > +.*Warning: invalid CSR `mstateen1', needs `smstateen' extension > +.*Warning: invalid CSR `mstateen1', needs `smstateen' extension > +.*Warning: invalid CSR `mstateen2', needs `smstateen' extension > +.*Warning: invalid CSR `mstateen2', needs `smstateen' extension > +.*Warning: invalid CSR `mstateen3', needs `smstateen' extension > +.*Warning: invalid CSR `mstateen3', needs `smstateen' extension > +.*Warning: invalid CSR `sstateen0', needs `smstateen' extension > +.*Warning: invalid CSR `sstateen0', needs `smstateen' extension > +.*Warning: invalid CSR `sstateen1', needs `smstateen' extension > +.*Warning: invalid CSR `sstateen1', needs `smstateen' extension > +.*Warning: invalid CSR `sstateen2', needs `smstateen' extension > +.*Warning: invalid CSR `sstateen2', needs `smstateen' extension > +.*Warning: invalid CSR `sstateen3', needs `smstateen' extension > +.*Warning: invalid CSR `sstateen3', needs `smstateen' extension > +.*Warning: invalid CSR `hstateen0', needs `smstateen' extension > +.*Warning: invalid CSR `hstateen0' for the privileged spec `1.9.1' > +.*Warning: invalid CSR `hstateen0', needs `smstateen' extension > +.*Warning: invalid CSR `hstateen0' for the privileged spec `1.9.1' > +.*Warning: invalid CSR `hstateen1', needs `smstateen' extension > +.*Warning: invalid CSR `hstateen1' for the privileged spec `1.9.1' > +.*Warning: invalid CSR `hstateen1', needs `smstateen' extension > +.*Warning: invalid CSR `hstateen1' for the privileged spec `1.9.1' > +.*Warning: invalid CSR `hstateen2', needs `smstateen' extension > +.*Warning: invalid CSR `hstateen2' for the privileged spec `1.9.1' > +.*Warning: invalid CSR `hstateen2', needs `smstateen' extension > +.*Warning: invalid CSR `hstateen2' for the privileged spec `1.9.1' > +.*Warning: invalid CSR `hstateen3', needs `smstateen' extension > +.*Warning: invalid CSR `hstateen3' for the privileged spec `1.9.1' > +.*Warning: invalid CSR `hstateen3', needs `smstateen' extension > +.*Warning: invalid CSR `hstateen3' for the privileged spec `1.9.1' > +.*Warning: invalid CSR `mstateen0h', needs rv32i extension > +.*Warning: invalid CSR `mstateen0h', needs `smstateen' extension > +.*Warning: invalid CSR `mstateen0h', needs rv32i extension > +.*Warning: invalid CSR `mstateen0h', needs `smstateen' extension > +.*Warning: invalid CSR `mstateen1h', needs rv32i extension > +.*Warning: invalid CSR `mstateen1h', needs `smstateen' extension > +.*Warning: invalid CSR `mstateen1h', needs rv32i extension > +.*Warning: invalid CSR `mstateen1h', needs `smstateen' extension > +.*Warning: invalid CSR `mstateen2h', needs rv32i extension > +.*Warning: invalid CSR `mstateen2h', needs `smstateen' extension > +.*Warning: invalid CSR `mstateen2h', needs rv32i extension > +.*Warning: invalid CSR `mstateen2h', needs `smstateen' extension > +.*Warning: invalid CSR `mstateen3h', needs rv32i extension > +.*Warning: invalid CSR `mstateen3h', needs `smstateen' extension > +.*Warning: invalid CSR `mstateen3h', needs rv32i extension > +.*Warning: invalid CSR `mstateen3h', needs `smstateen' extension > +.*Warning: invalid CSR `hstateen0h', needs rv32i extension > +.*Warning: invalid CSR `hstateen0h', needs `smstateen' extension > +.*Warning: invalid CSR `hstateen0h' for the privileged spec `1.9.1' > +.*Warning: invalid CSR `hstateen0h', needs rv32i extension > +.*Warning: invalid CSR `hstateen0h', needs `smstateen' extension > +.*Warning: invalid CSR `hstateen0h' for the privileged spec `1.9.1' > +.*Warning: invalid CSR `hstateen1h', needs rv32i extension > +.*Warning: invalid CSR `hstateen1h', needs `smstateen' extension > +.*Warning: invalid CSR `hstateen1h' for the privileged spec `1.9.1' > +.*Warning: invalid CSR `hstateen1h', needs rv32i extension > +.*Warning: invalid CSR `hstateen1h', needs `smstateen' extension > +.*Warning: invalid CSR `hstateen1h' for the privileged spec `1.9.1' > +.*Warning: invalid CSR `hstateen2h', needs rv32i extension > +.*Warning: invalid CSR `hstateen2h', needs `smstateen' extension > +.*Warning: invalid CSR `hstateen2h' for the privileged spec `1.9.1' > +.*Warning: invalid CSR `hstateen2h', needs rv32i extension > +.*Warning: invalid CSR `hstateen2h', needs `smstateen' extension > +.*Warning: invalid CSR `hstateen2h' for the privileged spec `1.9.1' > +.*Warning: invalid CSR `hstateen3h', needs rv32i extension > +.*Warning: invalid CSR `hstateen3h', needs `smstateen' extension > +.*Warning: invalid CSR `hstateen3h' for the privileged spec `1.9.1' > +.*Warning: invalid CSR `hstateen3h', needs rv32i extension > +.*Warning: invalid CSR `hstateen3h', needs `smstateen' extension > +.*Warning: invalid CSR `hstateen3h' for the privileged spec `1.9.1' > .*Warning: invalid CSR `utval' for the privileged spec `1.9.1' > .*Warning: invalid CSR `utval' for the privileged spec `1.9.1' > .*Warning: invalid CSR `fflags', needs `f' extension > diff --git a/gas/testsuite/gas/riscv/csr.s b/gas/testsuite/gas/riscv/csr.s > index 0d0ec712c15..1a4a2be2c0f 100644 > --- a/gas/testsuite/gas/riscv/csr.s > +++ b/gas/testsuite/gas/riscv/csr.s > @@ -337,6 +337,28 @@ > csr vsip > csr vsatp > > + # Smstateen extension > + csr mstateen0 > + csr mstateen1 > + csr mstateen2 > + csr mstateen3 > + csr sstateen0 > + csr sstateen1 > + csr sstateen2 > + csr sstateen3 > + csr hstateen0 > + csr hstateen1 > + csr hstateen2 > + csr hstateen3 > + csr mstateen0h > + csr mstateen1h > + csr mstateen2h > + csr mstateen3h > + csr hstateen0h > + csr hstateen1h > + csr hstateen2h > + csr hstateen3h > + > # Supported in previous priv spec, but dropped now > > csr ubadaddr # 0x043 in 1.9.1, but the value is utval since 1.10 > diff --git a/include/opcode/riscv-opc.h b/include/opcode/riscv-opc.h > index 01cd3a4e9dd..badfd48efdc 100644 > --- a/include/opcode/riscv-opc.h > +++ b/include/opcode/riscv-opc.h > @@ -2348,6 +2348,27 @@ > #define CSR_UIP 0x44 > #define CSR_SEDELEG 0x102 > #define CSR_SIDELEG 0x103 > +/* Smstateen extension */ > +#define CSR_MSTATEEN0 0x30c > +#define CSR_MSTATEEN1 0x30d > +#define CSR_MSTATEEN2 0x30e > +#define CSR_MSTATEEN3 0x30f > +#define CSR_SSTATEEN0 0x10c > +#define CSR_SSTATEEN1 0x10d > +#define CSR_SSTATEEN2 0x10e > +#define CSR_SSTATEEN3 0x10f > +#define CSR_HSTATEEN0 0x60c > +#define CSR_HSTATEEN1 0x60d > +#define CSR_HSTATEEN2 0x60e > +#define CSR_HSTATEEN3 0x60f > +#define CSR_MSTATEEN0H 0x31c > +#define CSR_MSTATEEN1H 0x31d > +#define CSR_MSTATEEN2H 0x31e > +#define CSR_MSTATEEN3H 0x31f > +#define CSR_HSTATEEN0H 0x61c > +#define CSR_HSTATEEN1H 0x61d > +#define CSR_HSTATEEN2H 0x61e > +#define CSR_HSTATEEN3H 0x61f > /* Unprivileged Floating-Point CSR addresses. */ > #define CSR_FFLAGS 0x1 > #define CSR_FRM 0x2 > @@ -3006,6 +3027,27 @@ DECLARE_CSR(vscause, CSR_VSCAUSE, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_C > DECLARE_CSR(vstval, CSR_VSTVAL, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT) > DECLARE_CSR(vsip, CSR_VSIP, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT) > DECLARE_CSR(vsatp, CSR_VSATP, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT) > +/* Smstateen extension */ > +DECLARE_CSR(mstateen0, CSR_MSTATEEN0, CSR_CLASS_SMSTATEEN, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT) > +DECLARE_CSR(mstateen1, CSR_MSTATEEN1, CSR_CLASS_SMSTATEEN, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT) > +DECLARE_CSR(mstateen2, CSR_MSTATEEN2, CSR_CLASS_SMSTATEEN, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT) > +DECLARE_CSR(mstateen3, CSR_MSTATEEN3, CSR_CLASS_SMSTATEEN, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT) > +DECLARE_CSR(sstateen0, CSR_SSTATEEN0, CSR_CLASS_SMSTATEEN, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT) > +DECLARE_CSR(sstateen1, CSR_SSTATEEN1, CSR_CLASS_SMSTATEEN, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT) > +DECLARE_CSR(sstateen2, CSR_SSTATEEN2, CSR_CLASS_SMSTATEEN, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT) > +DECLARE_CSR(sstateen3, CSR_SSTATEEN3, CSR_CLASS_SMSTATEEN, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT) > +DECLARE_CSR(hstateen0, CSR_HSTATEEN0, CSR_CLASS_SMSTATEEN, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT) > +DECLARE_CSR(hstateen1, CSR_HSTATEEN1, CSR_CLASS_SMSTATEEN, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT) > +DECLARE_CSR(hstateen2, CSR_HSTATEEN2, CSR_CLASS_SMSTATEEN, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT) > +DECLARE_CSR(hstateen3, CSR_HSTATEEN3, CSR_CLASS_SMSTATEEN, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT) > +DECLARE_CSR(mstateen0h, CSR_MSTATEEN0H, CSR_CLASS_SMSTATEEN_32, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT) > +DECLARE_CSR(mstateen1h, CSR_MSTATEEN1H, CSR_CLASS_SMSTATEEN_32, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT) > +DECLARE_CSR(mstateen2h, CSR_MSTATEEN2H, CSR_CLASS_SMSTATEEN_32, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT) > +DECLARE_CSR(mstateen3h, CSR_MSTATEEN3H, CSR_CLASS_SMSTATEEN_32, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT) > +DECLARE_CSR(hstateen0h, CSR_HSTATEEN0H, CSR_CLASS_SMSTATEEN_32, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT) > +DECLARE_CSR(hstateen1h, CSR_HSTATEEN1H, CSR_CLASS_SMSTATEEN_32, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT) > +DECLARE_CSR(hstateen2h, CSR_HSTATEEN2H, CSR_CLASS_SMSTATEEN_32, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT) > +DECLARE_CSR(hstateen3h, CSR_HSTATEEN3H, CSR_CLASS_SMSTATEEN_32, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT) The privileged spec doesn't define these CSRs, they are defined and controlled by smstaeen extension. So I think the defined and aborted versions of these DECLARE_CSR should be PRIV_SPEC_CLASS_NONE, just like other unprivileged CSRs did. In the future, they should be controlled by smstaeen extension versions, but for now we don't need to care about this. Thanks Nelson > /* Dropped CSRs. */ > DECLARE_CSR(mbase, CSR_MBASE, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_1P10) > DECLARE_CSR(mbound, CSR_MBOUND, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_1P10) > -- > 2.32.0 >