From patchwork Thu Nov 3 12:26:28 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tsukasa OI X-Patchwork-Id: 14840 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:6687:0:0:0:0:0 with SMTP id l7csp495724wru; Thu, 3 Nov 2022 05:27:06 -0700 (PDT) X-Google-Smtp-Source: AMsMyM4irJoCwbdmiDCwv6Pzf1S0YPD8OYNDSKhOmpvYVwMnaa+bC/oegYCEW/K1zkZx1qrCrZSK X-Received: by 2002:a17:907:1dc8:b0:7ad:b792:2fec with SMTP id og8-20020a1709071dc800b007adb7922fecmr25279009ejc.732.1667478426059; Thu, 03 Nov 2022 05:27:06 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1667478426; cv=none; d=google.com; s=arc-20160816; b=LW921nGUYD8yEA4jbJvtftTLhMO3Qbz0zwvWEKh4y3ZOI8iZ+Xwb7XF5sRV55keAsa oWuMgmhO7N/ZKxaAxWUwo8bw/L3Ar6tAQ+OBw7qppQbWcXRS9r3NcVJNiuouwGHZgOLU wQaCZUWTDSW+wCn7Izq+P0dIPcQnuN6qo1ABxnbs32KZUCChDZKbh1JvLTYk0brUlk/R DIZUNO6WDngvlC9szEY45aPsJomz57H1j0G75cY9SsFaY8rDY36AOMOvl30D+XTmZA11 3ZDrbKhFjYfeYURL2bkUm27PbD2fG9oFNDQu4TAxTeRXioONYMSYEOQp3hxRSs5hX7au YKSw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:reply-to:from:list-subscribe:list-help :list-post:list-archive:list-unsubscribe:list-id:precedence :content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:dmarc-filter:delivered-to:dkim-signature :dkim-filter; bh=1zQ6GP84jgBA5BEt2Y0WwJTUt1ptl/sO9Z3FhHNYw+k=; b=dwG2ShdANiXOWmz/un0Wsln8rm8MB16Uo/Sdgqtf0QzqB5HMc26WYW6Blpyej0YEEc /ZsEhK/TD7J6sJuzA3tzReEU3d2uSJ0qFHNHh38VDrrQgJp30gFkwflGugWFsQpcZUZ5 xEWorZfVuyPpQoA535emZBPquRdH0xuEhHZm7wyC/7hjVeAvSaCA3jViu0BfmSqyymkp 6WdtQop5ITuP+CSGYzplEVS/pF7Vzoz71+IxnAvP81LlqKjveMTGJ590+YlMkdKXJkfW SI4L5pd7DOB5R+2qgDAwCrOdu4p7xnlNErjHE3gFEN/gBx0U+YZJLtQ6urhKn600k6cV a9UQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@sourceware.org header.s=default header.b="E/YGN1cr"; spf=pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) smtp.mailfrom="binutils-bounces+ouuuleilei=gmail.com@sourceware.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=sourceware.org Received: from sourceware.org (server2.sourceware.org. [2620:52:3:1:0:246e:9693:128c]) by mx.google.com with ESMTPS id i3-20020a05640242c300b0045c9904fdafsi1436816edc.74.2022.11.03.05.27.05 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 03 Nov 2022 05:27:06 -0700 (PDT) Received-SPF: pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) client-ip=2620:52:3:1:0:246e:9693:128c; Authentication-Results: mx.google.com; dkim=pass header.i=@sourceware.org header.s=default header.b="E/YGN1cr"; spf=pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) smtp.mailfrom="binutils-bounces+ouuuleilei=gmail.com@sourceware.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 9F4ED385841A for ; Thu, 3 Nov 2022 12:27:04 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 9F4ED385841A DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1667478424; bh=1zQ6GP84jgBA5BEt2Y0WwJTUt1ptl/sO9Z3FhHNYw+k=; h=To:Subject:Date:In-Reply-To:References:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc: From; b=E/YGN1crkBPxIrIm1zEyOIg7cg0e1Z4RXB3XCPFoJmtBK8Ijy6iEuMQsHpzN8TWy7 TwXjsb9xf3NX5gQgqtI4O15+fsMJY3BvMATfvpiu7u0KhVgl3KjkSz7gOmElR8To2P BRq8kNaRX74nMaCAuIGE+HSHyVc01+EpYaixvz8s= X-Original-To: binutils@sourceware.org Delivered-To: binutils@sourceware.org Received: from mail-sender-0.a4lg.com (mail-sender.a4lg.com [153.120.152.154]) by sourceware.org (Postfix) with ESMTPS id 5D5B43858417 for ; Thu, 3 Nov 2022 12:26:45 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 5D5B43858417 Received: from [127.0.0.1] (localhost [127.0.0.1]) by mail-sender-0.a4lg.com (Postfix) with ESMTPSA id DF99E300089; Thu, 3 Nov 2022 12:26:42 +0000 (UTC) To: Tsukasa OI , Nelson Chu , Kito Cheng , Palmer Dabbelt Subject: [REVIEW ONLY 1/2] NEAR-RATIFICATION RISC-V: Add 'Ssstateen' extension and its CSRs Date: Thu, 3 Nov 2022 12:26:28 +0000 Message-Id: <283a86ebf0941f0f63dc1a590ec3d547bd5d69e8.1667478033.git.research_trasio@irq.a4lg.com> In-Reply-To: References: Mime-Version: 1.0 X-Spam-Status: No, score=-12.1 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, GIT_PATCH_0, 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 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-Patchwork-Original-From: Tsukasa OI via Binutils From: Tsukasa OI Reply-To: Tsukasa OI Cc: binutils@sourceware.org Errors-To: binutils-bounces+ouuuleilei=gmail.com@sourceware.org Sender: "Binutils" X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1748477857966652125?= X-GMAIL-MSGID: =?utf-8?q?1748477857966652125?= [DO NOT MERGE] RISC-V Profiles are frozen but -- from my view -- this document will still change in some way. Meanwhile, this patch should not be merged upstream. This commit uses tentative version 1.0 (same as 'Smstateen'). This commit adds 'Ssstateen' extension, which is a supervisor-visible view of the 'Smstateen' extension. It means, this extension implements sstateen* and hstateen* CSRs of the 'Smstateen' extension. Note that 'Smstateen' extension itself is unchanged but due to implementation simplicity, it is implemented so that 'Smstateen' implies 'Ssstateen' (just like 'M' implies 'Zmmul'). This is based on the latest version of RISC-V Profiles (version 0.9-draft): bfd/ChangeLog: * elfxx-riscv.c (riscv_implicit_subsets): Update implication rules. (riscv_supported_std_s_ext) Add 'Ssstateen' extension. gas/ChangeLog: * config/tc-riscv.c (enum riscv_csr_class): Rename CSR_CLASS_SMSTATEEN_AND_H{,_32} to CSR_CLASS_SSSTATEEN_... Add CSR_CLASS_SSSTATEEN. (riscv_csr_address): Support new/renamed CSR classes. * testsuite/gas/riscv/csr.s: Add 'Ssstateen' extension to comment. * testsuite/gas/riscv/csr-version-1p9p1.l: Reflect changes to error messages. * testsuite/gas/riscv/csr-version-1p10.l: Likewise. * testsuite/gas/riscv/csr-version-1p11.l: Likewise. * testsuite/gas/riscv/csr-version-1p12.l: Likewise. * testsuite/gas/riscv/ssstateen-csr.s: Test for 'Ssstateen' CSRs. * testsuite/gas/riscv/ssstateen-csr.d: Likewise. * testsuite/gas/riscv/smstateen-csr-s.d: Test to make sure that supervisor/hypervisor part of 'Smstateen' CSRs are accessible from 'RV32IH_Smstateen', not just from 'RV32IH_Ssstateen' that is tested in ssstateen-csr.d. include/ChangeLog: * opcode/riscv-opc.h: Update DECLARE_CSR declarations with new CSR classes. --- bfd/elfxx-riscv.c | 4 +- gas/config/tc-riscv.c | 20 +++++---- gas/testsuite/gas/riscv/csr-version-1p10.l | 48 ++++++++++----------- gas/testsuite/gas/riscv/csr-version-1p11.l | 48 ++++++++++----------- gas/testsuite/gas/riscv/csr-version-1p12.l | 48 ++++++++++----------- gas/testsuite/gas/riscv/csr-version-1p9p1.l | 48 ++++++++++----------- gas/testsuite/gas/riscv/csr.s | 2 +- gas/testsuite/gas/riscv/smstateen-csr-s.d | 22 ++++++++++ gas/testsuite/gas/riscv/ssstateen-csr.d | 22 ++++++++++ gas/testsuite/gas/riscv/ssstateen-csr.s | 13 ++++++ include/opcode/riscv-opc.h | 26 +++++------ 11 files changed, 182 insertions(+), 119 deletions(-) create mode 100644 gas/testsuite/gas/riscv/smstateen-csr-s.d create mode 100644 gas/testsuite/gas/riscv/ssstateen-csr.d create mode 100644 gas/testsuite/gas/riscv/ssstateen-csr.s diff --git a/bfd/elfxx-riscv.c b/bfd/elfxx-riscv.c index 94bff0e0388..781b57cbd98 100644 --- a/bfd/elfxx-riscv.c +++ b/bfd/elfxx-riscv.c @@ -1097,9 +1097,10 @@ static struct riscv_implicit_subset riscv_implicit_subsets[] = {"zks", "zbkx", check_implicit_always}, {"zks", "zksed", check_implicit_always}, {"zks", "zksh", check_implicit_always}, + {"smstateen", "ssstateen", check_implicit_always}, {"smepmp", "zicsr", check_implicit_always}, - {"smstateen", "zicsr", check_implicit_always}, {"sscofpmf", "zicsr", check_implicit_always}, + {"ssstateen", "zicsr", check_implicit_always}, {"sstc", "zicsr", check_implicit_always}, {NULL, NULL, NULL} }; @@ -1219,6 +1220,7 @@ static struct riscv_supported_ext riscv_supported_std_s_ext[] = {"smepmp", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 }, {"smstateen", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 }, {"sscofpmf", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 }, + {"ssstateen", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 }, {"sstc", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 }, {"svinval", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 }, {"svnapot", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 }, diff --git a/gas/config/tc-riscv.c b/gas/config/tc-riscv.c index 2dc92ecd3c3..019545171f5 100644 --- a/gas/config/tc-riscv.c +++ b/gas/config/tc-riscv.c @@ -69,9 +69,10 @@ enum riscv_csr_class CSR_CLASS_H, /* hypervisor */ CSR_CLASS_H_32, /* hypervisor, rv32 only */ CSR_CLASS_SMSTATEEN, /* Smstateen only */ - CSR_CLASS_SMSTATEEN_AND_H, /* Smstateen only (with H) */ CSR_CLASS_SMSTATEEN_32, /* Smstateen RV32 only */ - CSR_CLASS_SMSTATEEN_AND_H_32, /* Smstateen RV32 only (with H) */ + CSR_CLASS_SSSTATEEN, /* S[ms]stateen only */ + CSR_CLASS_SSSTATEEN_AND_H, /* S[ms]stateen only (with H) */ + CSR_CLASS_SSSTATEEN_AND_H_32, /* S[ms]stateen RV32 only (with H) */ CSR_CLASS_SSCOFPMF, /* Sscofpmf only */ CSR_CLASS_SSCOFPMF_32, /* Sscofpmf RV32 only */ CSR_CLASS_SSTC, /* Sstc only */ @@ -1029,15 +1030,18 @@ riscv_csr_address (const char *csr_name, extension = "zve32x"; break; case CSR_CLASS_SMSTATEEN: - case CSR_CLASS_SMSTATEEN_AND_H: case CSR_CLASS_SMSTATEEN_32: - case CSR_CLASS_SMSTATEEN_AND_H_32: - is_rv32_only = (csr_class == CSR_CLASS_SMSTATEEN_32 - || csr_class == CSR_CLASS_SMSTATEEN_AND_H_32); - is_h_required = (csr_class == CSR_CLASS_SMSTATEEN_AND_H - || csr_class == CSR_CLASS_SMSTATEEN_AND_H_32); + is_rv32_only = (csr_class == CSR_CLASS_SMSTATEEN_32); extension = "smstateen"; break; + case CSR_CLASS_SSSTATEEN: + case CSR_CLASS_SSSTATEEN_AND_H: + case CSR_CLASS_SSSTATEEN_AND_H_32: + is_rv32_only = (csr_class == CSR_CLASS_SSSTATEEN_AND_H_32); + is_h_required = (csr_class == CSR_CLASS_SSSTATEEN_AND_H + || csr_class == CSR_CLASS_SSSTATEEN_AND_H_32); + extension = "ssstateen"; + break; case CSR_CLASS_SSCOFPMF_32: is_rv32_only = true; /* Fall through. */ diff --git a/gas/testsuite/gas/riscv/csr-version-1p10.l b/gas/testsuite/gas/riscv/csr-version-1p10.l index 999e9af1520..03af32d3bef 100644 --- a/gas/testsuite/gas/riscv/csr-version-1p10.l +++ b/gas/testsuite/gas/riscv/csr-version-1p10.l @@ -419,30 +419,30 @@ .*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 `sstateen0', needs `ssstateen' extension +.*Warning: invalid CSR `sstateen0', needs `ssstateen' extension +.*Warning: invalid CSR `sstateen1', needs `ssstateen' extension +.*Warning: invalid CSR `sstateen1', needs `ssstateen' extension +.*Warning: invalid CSR `sstateen2', needs `ssstateen' extension +.*Warning: invalid CSR `sstateen2', needs `ssstateen' extension +.*Warning: invalid CSR `sstateen3', needs `ssstateen' extension +.*Warning: invalid CSR `sstateen3', needs `ssstateen' extension .*Warning: invalid CSR `hstateen0', needs `h' extension -.*Warning: invalid CSR `hstateen0', needs `smstateen' extension +.*Warning: invalid CSR `hstateen0', needs `ssstateen' extension .*Warning: invalid CSR `hstateen0', needs `h' extension -.*Warning: invalid CSR `hstateen0', needs `smstateen' extension +.*Warning: invalid CSR `hstateen0', needs `ssstateen' extension .*Warning: invalid CSR `hstateen1', needs `h' extension -.*Warning: invalid CSR `hstateen1', needs `smstateen' extension +.*Warning: invalid CSR `hstateen1', needs `ssstateen' extension .*Warning: invalid CSR `hstateen1', needs `h' extension -.*Warning: invalid CSR `hstateen1', needs `smstateen' extension +.*Warning: invalid CSR `hstateen1', needs `ssstateen' extension .*Warning: invalid CSR `hstateen2', needs `h' extension -.*Warning: invalid CSR `hstateen2', needs `smstateen' extension +.*Warning: invalid CSR `hstateen2', needs `ssstateen' extension .*Warning: invalid CSR `hstateen2', needs `h' extension -.*Warning: invalid CSR `hstateen2', needs `smstateen' extension +.*Warning: invalid CSR `hstateen2', needs `ssstateen' extension .*Warning: invalid CSR `hstateen3', needs `h' extension -.*Warning: invalid CSR `hstateen3', needs `smstateen' extension +.*Warning: invalid CSR `hstateen3', needs `ssstateen' extension .*Warning: invalid CSR `hstateen3', needs `h' extension -.*Warning: invalid CSR `hstateen3', needs `smstateen' extension +.*Warning: invalid CSR `hstateen3', needs `ssstateen' extension .*Warning: invalid CSR `mstateen0h', needs rv32i extension .*Warning: invalid CSR `mstateen0h', needs `smstateen' extension .*Warning: invalid CSR `mstateen0h', needs rv32i extension @@ -461,28 +461,28 @@ .*Warning: invalid CSR `mstateen3h', needs `smstateen' extension .*Warning: invalid CSR `hstateen0h', needs rv32i extension .*Warning: invalid CSR `hstateen0h', needs `h' extension -.*Warning: invalid CSR `hstateen0h', needs `smstateen' extension +.*Warning: invalid CSR `hstateen0h', needs `ssstateen' extension .*Warning: invalid CSR `hstateen0h', needs rv32i extension .*Warning: invalid CSR `hstateen0h', needs `h' extension -.*Warning: invalid CSR `hstateen0h', needs `smstateen' extension +.*Warning: invalid CSR `hstateen0h', needs `ssstateen' extension .*Warning: invalid CSR `hstateen1h', needs rv32i extension .*Warning: invalid CSR `hstateen1h', needs `h' extension -.*Warning: invalid CSR `hstateen1h', needs `smstateen' extension +.*Warning: invalid CSR `hstateen1h', needs `ssstateen' extension .*Warning: invalid CSR `hstateen1h', needs rv32i extension .*Warning: invalid CSR `hstateen1h', needs `h' extension -.*Warning: invalid CSR `hstateen1h', needs `smstateen' extension +.*Warning: invalid CSR `hstateen1h', needs `ssstateen' extension .*Warning: invalid CSR `hstateen2h', needs rv32i extension .*Warning: invalid CSR `hstateen2h', needs `h' extension -.*Warning: invalid CSR `hstateen2h', needs `smstateen' extension +.*Warning: invalid CSR `hstateen2h', needs `ssstateen' extension .*Warning: invalid CSR `hstateen2h', needs rv32i extension .*Warning: invalid CSR `hstateen2h', needs `h' extension -.*Warning: invalid CSR `hstateen2h', needs `smstateen' extension +.*Warning: invalid CSR `hstateen2h', needs `ssstateen' extension .*Warning: invalid CSR `hstateen3h', needs rv32i extension .*Warning: invalid CSR `hstateen3h', needs `h' extension -.*Warning: invalid CSR `hstateen3h', needs `smstateen' extension +.*Warning: invalid CSR `hstateen3h', needs `ssstateen' extension .*Warning: invalid CSR `hstateen3h', needs rv32i extension .*Warning: invalid CSR `hstateen3h', needs `h' extension -.*Warning: invalid CSR `hstateen3h', needs `smstateen' extension +.*Warning: invalid CSR `hstateen3h', needs `ssstateen' extension .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension .*Warning: read-only CSR is written `csrw scountovf,a1' diff --git a/gas/testsuite/gas/riscv/csr-version-1p11.l b/gas/testsuite/gas/riscv/csr-version-1p11.l index a099e4ecc93..0766c2263ec 100644 --- a/gas/testsuite/gas/riscv/csr-version-1p11.l +++ b/gas/testsuite/gas/riscv/csr-version-1p11.l @@ -417,30 +417,30 @@ .*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 `sstateen0', needs `ssstateen' extension +.*Warning: invalid CSR `sstateen0', needs `ssstateen' extension +.*Warning: invalid CSR `sstateen1', needs `ssstateen' extension +.*Warning: invalid CSR `sstateen1', needs `ssstateen' extension +.*Warning: invalid CSR `sstateen2', needs `ssstateen' extension +.*Warning: invalid CSR `sstateen2', needs `ssstateen' extension +.*Warning: invalid CSR `sstateen3', needs `ssstateen' extension +.*Warning: invalid CSR `sstateen3', needs `ssstateen' extension .*Warning: invalid CSR `hstateen0', needs `h' extension -.*Warning: invalid CSR `hstateen0', needs `smstateen' extension +.*Warning: invalid CSR `hstateen0', needs `ssstateen' extension .*Warning: invalid CSR `hstateen0', needs `h' extension -.*Warning: invalid CSR `hstateen0', needs `smstateen' extension +.*Warning: invalid CSR `hstateen0', needs `ssstateen' extension .*Warning: invalid CSR `hstateen1', needs `h' extension -.*Warning: invalid CSR `hstateen1', needs `smstateen' extension +.*Warning: invalid CSR `hstateen1', needs `ssstateen' extension .*Warning: invalid CSR `hstateen1', needs `h' extension -.*Warning: invalid CSR `hstateen1', needs `smstateen' extension +.*Warning: invalid CSR `hstateen1', needs `ssstateen' extension .*Warning: invalid CSR `hstateen2', needs `h' extension -.*Warning: invalid CSR `hstateen2', needs `smstateen' extension +.*Warning: invalid CSR `hstateen2', needs `ssstateen' extension .*Warning: invalid CSR `hstateen2', needs `h' extension -.*Warning: invalid CSR `hstateen2', needs `smstateen' extension +.*Warning: invalid CSR `hstateen2', needs `ssstateen' extension .*Warning: invalid CSR `hstateen3', needs `h' extension -.*Warning: invalid CSR `hstateen3', needs `smstateen' extension +.*Warning: invalid CSR `hstateen3', needs `ssstateen' extension .*Warning: invalid CSR `hstateen3', needs `h' extension -.*Warning: invalid CSR `hstateen3', needs `smstateen' extension +.*Warning: invalid CSR `hstateen3', needs `ssstateen' extension .*Warning: invalid CSR `mstateen0h', needs rv32i extension .*Warning: invalid CSR `mstateen0h', needs `smstateen' extension .*Warning: invalid CSR `mstateen0h', needs rv32i extension @@ -459,28 +459,28 @@ .*Warning: invalid CSR `mstateen3h', needs `smstateen' extension .*Warning: invalid CSR `hstateen0h', needs rv32i extension .*Warning: invalid CSR `hstateen0h', needs `h' extension -.*Warning: invalid CSR `hstateen0h', needs `smstateen' extension +.*Warning: invalid CSR `hstateen0h', needs `ssstateen' extension .*Warning: invalid CSR `hstateen0h', needs rv32i extension .*Warning: invalid CSR `hstateen0h', needs `h' extension -.*Warning: invalid CSR `hstateen0h', needs `smstateen' extension +.*Warning: invalid CSR `hstateen0h', needs `ssstateen' extension .*Warning: invalid CSR `hstateen1h', needs rv32i extension .*Warning: invalid CSR `hstateen1h', needs `h' extension -.*Warning: invalid CSR `hstateen1h', needs `smstateen' extension +.*Warning: invalid CSR `hstateen1h', needs `ssstateen' extension .*Warning: invalid CSR `hstateen1h', needs rv32i extension .*Warning: invalid CSR `hstateen1h', needs `h' extension -.*Warning: invalid CSR `hstateen1h', needs `smstateen' extension +.*Warning: invalid CSR `hstateen1h', needs `ssstateen' extension .*Warning: invalid CSR `hstateen2h', needs rv32i extension .*Warning: invalid CSR `hstateen2h', needs `h' extension -.*Warning: invalid CSR `hstateen2h', needs `smstateen' extension +.*Warning: invalid CSR `hstateen2h', needs `ssstateen' extension .*Warning: invalid CSR `hstateen2h', needs rv32i extension .*Warning: invalid CSR `hstateen2h', needs `h' extension -.*Warning: invalid CSR `hstateen2h', needs `smstateen' extension +.*Warning: invalid CSR `hstateen2h', needs `ssstateen' extension .*Warning: invalid CSR `hstateen3h', needs rv32i extension .*Warning: invalid CSR `hstateen3h', needs `h' extension -.*Warning: invalid CSR `hstateen3h', needs `smstateen' extension +.*Warning: invalid CSR `hstateen3h', needs `ssstateen' extension .*Warning: invalid CSR `hstateen3h', needs rv32i extension .*Warning: invalid CSR `hstateen3h', needs `h' extension -.*Warning: invalid CSR `hstateen3h', needs `smstateen' extension +.*Warning: invalid CSR `hstateen3h', needs `ssstateen' extension .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension .*Warning: read-only CSR is written `csrw scountovf,a1' diff --git a/gas/testsuite/gas/riscv/csr-version-1p12.l b/gas/testsuite/gas/riscv/csr-version-1p12.l index cf8f2e25634..c13efcc6681 100644 --- a/gas/testsuite/gas/riscv/csr-version-1p12.l +++ b/gas/testsuite/gas/riscv/csr-version-1p12.l @@ -279,30 +279,30 @@ .*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 `sstateen0', needs `ssstateen' extension +.*Warning: invalid CSR `sstateen0', needs `ssstateen' extension +.*Warning: invalid CSR `sstateen1', needs `ssstateen' extension +.*Warning: invalid CSR `sstateen1', needs `ssstateen' extension +.*Warning: invalid CSR `sstateen2', needs `ssstateen' extension +.*Warning: invalid CSR `sstateen2', needs `ssstateen' extension +.*Warning: invalid CSR `sstateen3', needs `ssstateen' extension +.*Warning: invalid CSR `sstateen3', needs `ssstateen' extension .*Warning: invalid CSR `hstateen0', needs `h' extension -.*Warning: invalid CSR `hstateen0', needs `smstateen' extension +.*Warning: invalid CSR `hstateen0', needs `ssstateen' extension .*Warning: invalid CSR `hstateen0', needs `h' extension -.*Warning: invalid CSR `hstateen0', needs `smstateen' extension +.*Warning: invalid CSR `hstateen0', needs `ssstateen' extension .*Warning: invalid CSR `hstateen1', needs `h' extension -.*Warning: invalid CSR `hstateen1', needs `smstateen' extension +.*Warning: invalid CSR `hstateen1', needs `ssstateen' extension .*Warning: invalid CSR `hstateen1', needs `h' extension -.*Warning: invalid CSR `hstateen1', needs `smstateen' extension +.*Warning: invalid CSR `hstateen1', needs `ssstateen' extension .*Warning: invalid CSR `hstateen2', needs `h' extension -.*Warning: invalid CSR `hstateen2', needs `smstateen' extension +.*Warning: invalid CSR `hstateen2', needs `ssstateen' extension .*Warning: invalid CSR `hstateen2', needs `h' extension -.*Warning: invalid CSR `hstateen2', needs `smstateen' extension +.*Warning: invalid CSR `hstateen2', needs `ssstateen' extension .*Warning: invalid CSR `hstateen3', needs `h' extension -.*Warning: invalid CSR `hstateen3', needs `smstateen' extension +.*Warning: invalid CSR `hstateen3', needs `ssstateen' extension .*Warning: invalid CSR `hstateen3', needs `h' extension -.*Warning: invalid CSR `hstateen3', needs `smstateen' extension +.*Warning: invalid CSR `hstateen3', needs `ssstateen' extension .*Warning: invalid CSR `mstateen0h', needs rv32i extension .*Warning: invalid CSR `mstateen0h', needs `smstateen' extension .*Warning: invalid CSR `mstateen0h', needs rv32i extension @@ -321,28 +321,28 @@ .*Warning: invalid CSR `mstateen3h', needs `smstateen' extension .*Warning: invalid CSR `hstateen0h', needs rv32i extension .*Warning: invalid CSR `hstateen0h', needs `h' extension -.*Warning: invalid CSR `hstateen0h', needs `smstateen' extension +.*Warning: invalid CSR `hstateen0h', needs `ssstateen' extension .*Warning: invalid CSR `hstateen0h', needs rv32i extension .*Warning: invalid CSR `hstateen0h', needs `h' extension -.*Warning: invalid CSR `hstateen0h', needs `smstateen' extension +.*Warning: invalid CSR `hstateen0h', needs `ssstateen' extension .*Warning: invalid CSR `hstateen1h', needs rv32i extension .*Warning: invalid CSR `hstateen1h', needs `h' extension -.*Warning: invalid CSR `hstateen1h', needs `smstateen' extension +.*Warning: invalid CSR `hstateen1h', needs `ssstateen' extension .*Warning: invalid CSR `hstateen1h', needs rv32i extension .*Warning: invalid CSR `hstateen1h', needs `h' extension -.*Warning: invalid CSR `hstateen1h', needs `smstateen' extension +.*Warning: invalid CSR `hstateen1h', needs `ssstateen' extension .*Warning: invalid CSR `hstateen2h', needs rv32i extension .*Warning: invalid CSR `hstateen2h', needs `h' extension -.*Warning: invalid CSR `hstateen2h', needs `smstateen' extension +.*Warning: invalid CSR `hstateen2h', needs `ssstateen' extension .*Warning: invalid CSR `hstateen2h', needs rv32i extension .*Warning: invalid CSR `hstateen2h', needs `h' extension -.*Warning: invalid CSR `hstateen2h', needs `smstateen' extension +.*Warning: invalid CSR `hstateen2h', needs `ssstateen' extension .*Warning: invalid CSR `hstateen3h', needs rv32i extension .*Warning: invalid CSR `hstateen3h', needs `h' extension -.*Warning: invalid CSR `hstateen3h', needs `smstateen' extension +.*Warning: invalid CSR `hstateen3h', needs `ssstateen' extension .*Warning: invalid CSR `hstateen3h', needs rv32i extension .*Warning: invalid CSR `hstateen3h', needs `h' extension -.*Warning: invalid CSR `hstateen3h', needs `smstateen' extension +.*Warning: invalid CSR `hstateen3h', needs `ssstateen' extension .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension .*Warning: read-only CSR is written `csrw scountovf,a1' diff --git a/gas/testsuite/gas/riscv/csr-version-1p9p1.l b/gas/testsuite/gas/riscv/csr-version-1p9p1.l index 5f298c1dda9..bc35630abd0 100644 --- a/gas/testsuite/gas/riscv/csr-version-1p9p1.l +++ b/gas/testsuite/gas/riscv/csr-version-1p9p1.l @@ -469,30 +469,30 @@ .*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 `sstateen0', needs `ssstateen' extension +.*Warning: invalid CSR `sstateen0', needs `ssstateen' extension +.*Warning: invalid CSR `sstateen1', needs `ssstateen' extension +.*Warning: invalid CSR `sstateen1', needs `ssstateen' extension +.*Warning: invalid CSR `sstateen2', needs `ssstateen' extension +.*Warning: invalid CSR `sstateen2', needs `ssstateen' extension +.*Warning: invalid CSR `sstateen3', needs `ssstateen' extension +.*Warning: invalid CSR `sstateen3', needs `ssstateen' extension .*Warning: invalid CSR `hstateen0', needs `h' extension -.*Warning: invalid CSR `hstateen0', needs `smstateen' extension +.*Warning: invalid CSR `hstateen0', needs `ssstateen' extension .*Warning: invalid CSR `hstateen0', needs `h' extension -.*Warning: invalid CSR `hstateen0', needs `smstateen' extension +.*Warning: invalid CSR `hstateen0', needs `ssstateen' extension .*Warning: invalid CSR `hstateen1', needs `h' extension -.*Warning: invalid CSR `hstateen1', needs `smstateen' extension +.*Warning: invalid CSR `hstateen1', needs `ssstateen' extension .*Warning: invalid CSR `hstateen1', needs `h' extension -.*Warning: invalid CSR `hstateen1', needs `smstateen' extension +.*Warning: invalid CSR `hstateen1', needs `ssstateen' extension .*Warning: invalid CSR `hstateen2', needs `h' extension -.*Warning: invalid CSR `hstateen2', needs `smstateen' extension +.*Warning: invalid CSR `hstateen2', needs `ssstateen' extension .*Warning: invalid CSR `hstateen2', needs `h' extension -.*Warning: invalid CSR `hstateen2', needs `smstateen' extension +.*Warning: invalid CSR `hstateen2', needs `ssstateen' extension .*Warning: invalid CSR `hstateen3', needs `h' extension -.*Warning: invalid CSR `hstateen3', needs `smstateen' extension +.*Warning: invalid CSR `hstateen3', needs `ssstateen' extension .*Warning: invalid CSR `hstateen3', needs `h' extension -.*Warning: invalid CSR `hstateen3', needs `smstateen' extension +.*Warning: invalid CSR `hstateen3', needs `ssstateen' extension .*Warning: invalid CSR `mstateen0h', needs rv32i extension .*Warning: invalid CSR `mstateen0h', needs `smstateen' extension .*Warning: invalid CSR `mstateen0h', needs rv32i extension @@ -511,28 +511,28 @@ .*Warning: invalid CSR `mstateen3h', needs `smstateen' extension .*Warning: invalid CSR `hstateen0h', needs rv32i extension .*Warning: invalid CSR `hstateen0h', needs `h' extension -.*Warning: invalid CSR `hstateen0h', needs `smstateen' extension +.*Warning: invalid CSR `hstateen0h', needs `ssstateen' extension .*Warning: invalid CSR `hstateen0h', needs rv32i extension .*Warning: invalid CSR `hstateen0h', needs `h' extension -.*Warning: invalid CSR `hstateen0h', needs `smstateen' extension +.*Warning: invalid CSR `hstateen0h', needs `ssstateen' extension .*Warning: invalid CSR `hstateen1h', needs rv32i extension .*Warning: invalid CSR `hstateen1h', needs `h' extension -.*Warning: invalid CSR `hstateen1h', needs `smstateen' extension +.*Warning: invalid CSR `hstateen1h', needs `ssstateen' extension .*Warning: invalid CSR `hstateen1h', needs rv32i extension .*Warning: invalid CSR `hstateen1h', needs `h' extension -.*Warning: invalid CSR `hstateen1h', needs `smstateen' extension +.*Warning: invalid CSR `hstateen1h', needs `ssstateen' extension .*Warning: invalid CSR `hstateen2h', needs rv32i extension .*Warning: invalid CSR `hstateen2h', needs `h' extension -.*Warning: invalid CSR `hstateen2h', needs `smstateen' extension +.*Warning: invalid CSR `hstateen2h', needs `ssstateen' extension .*Warning: invalid CSR `hstateen2h', needs rv32i extension .*Warning: invalid CSR `hstateen2h', needs `h' extension -.*Warning: invalid CSR `hstateen2h', needs `smstateen' extension +.*Warning: invalid CSR `hstateen2h', needs `ssstateen' extension .*Warning: invalid CSR `hstateen3h', needs rv32i extension .*Warning: invalid CSR `hstateen3h', needs `h' extension -.*Warning: invalid CSR `hstateen3h', needs `smstateen' extension +.*Warning: invalid CSR `hstateen3h', needs `ssstateen' extension .*Warning: invalid CSR `hstateen3h', needs rv32i extension .*Warning: invalid CSR `hstateen3h', needs `h' extension -.*Warning: invalid CSR `hstateen3h', needs `smstateen' extension +.*Warning: invalid CSR `hstateen3h', needs `ssstateen' extension .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension .*Warning: read-only CSR is written `csrw scountovf,a1' diff --git a/gas/testsuite/gas/riscv/csr.s b/gas/testsuite/gas/riscv/csr.s index 128aeb83a04..397fe0b9eb8 100644 --- a/gas/testsuite/gas/riscv/csr.s +++ b/gas/testsuite/gas/riscv/csr.s @@ -337,7 +337,7 @@ csr vsip csr vsatp - # Smstateen extension + # Smstateen/Ssstateen extensions csr mstateen0 csr mstateen1 csr mstateen2 diff --git a/gas/testsuite/gas/riscv/smstateen-csr-s.d b/gas/testsuite/gas/riscv/smstateen-csr-s.d new file mode 100644 index 00000000000..44b6dd66373 --- /dev/null +++ b/gas/testsuite/gas/riscv/smstateen-csr-s.d @@ -0,0 +1,22 @@ +#as: -march=rv32ih_smstateen -mcsr-check -mpriv-spec=1.12 +#source: ssstateen-csr.s +#objdump: -dr + +.*:[ ]+file format .* + + +Disassembly of section .text: + +0+000 : +[ ]+[0-9a-f]+:[ ]+10c02573[ ]+csrr[ ]+a0,sstateen0 +[ ]+[0-9a-f]+:[ ]+10d02573[ ]+csrr[ ]+a0,sstateen1 +[ ]+[0-9a-f]+:[ ]+10e02573[ ]+csrr[ ]+a0,sstateen2 +[ ]+[0-9a-f]+:[ ]+10f02573[ ]+csrr[ ]+a0,sstateen3 +[ ]+[0-9a-f]+:[ ]+60c02573[ ]+csrr[ ]+a0,hstateen0 +[ ]+[0-9a-f]+:[ ]+60d02573[ ]+csrr[ ]+a0,hstateen1 +[ ]+[0-9a-f]+:[ ]+60e02573[ ]+csrr[ ]+a0,hstateen2 +[ ]+[0-9a-f]+:[ ]+60f02573[ ]+csrr[ ]+a0,hstateen3 +[ ]+[0-9a-f]+:[ ]+61c02573[ ]+csrr[ ]+a0,hstateen0h +[ ]+[0-9a-f]+:[ ]+61d02573[ ]+csrr[ ]+a0,hstateen1h +[ ]+[0-9a-f]+:[ ]+61e02573[ ]+csrr[ ]+a0,hstateen2h +[ ]+[0-9a-f]+:[ ]+61f02573[ ]+csrr[ ]+a0,hstateen3h diff --git a/gas/testsuite/gas/riscv/ssstateen-csr.d b/gas/testsuite/gas/riscv/ssstateen-csr.d new file mode 100644 index 00000000000..29b286a6353 --- /dev/null +++ b/gas/testsuite/gas/riscv/ssstateen-csr.d @@ -0,0 +1,22 @@ +#as: -march=rv32ih_ssstateen -mcsr-check -mpriv-spec=1.12 +#source: ssstateen-csr.s +#objdump: -dr + +.*:[ ]+file format .* + + +Disassembly of section .text: + +0+000 : +[ ]+[0-9a-f]+:[ ]+10c02573[ ]+csrr[ ]+a0,sstateen0 +[ ]+[0-9a-f]+:[ ]+10d02573[ ]+csrr[ ]+a0,sstateen1 +[ ]+[0-9a-f]+:[ ]+10e02573[ ]+csrr[ ]+a0,sstateen2 +[ ]+[0-9a-f]+:[ ]+10f02573[ ]+csrr[ ]+a0,sstateen3 +[ ]+[0-9a-f]+:[ ]+60c02573[ ]+csrr[ ]+a0,hstateen0 +[ ]+[0-9a-f]+:[ ]+60d02573[ ]+csrr[ ]+a0,hstateen1 +[ ]+[0-9a-f]+:[ ]+60e02573[ ]+csrr[ ]+a0,hstateen2 +[ ]+[0-9a-f]+:[ ]+60f02573[ ]+csrr[ ]+a0,hstateen3 +[ ]+[0-9a-f]+:[ ]+61c02573[ ]+csrr[ ]+a0,hstateen0h +[ ]+[0-9a-f]+:[ ]+61d02573[ ]+csrr[ ]+a0,hstateen1h +[ ]+[0-9a-f]+:[ ]+61e02573[ ]+csrr[ ]+a0,hstateen2h +[ ]+[0-9a-f]+:[ ]+61f02573[ ]+csrr[ ]+a0,hstateen3h diff --git a/gas/testsuite/gas/riscv/ssstateen-csr.s b/gas/testsuite/gas/riscv/ssstateen-csr.s new file mode 100644 index 00000000000..82707a4625b --- /dev/null +++ b/gas/testsuite/gas/riscv/ssstateen-csr.s @@ -0,0 +1,13 @@ +target: + csrr a0, sstateen0 + csrr a0, sstateen1 + csrr a0, sstateen2 + csrr a0, sstateen3 + csrr a0, hstateen0 + csrr a0, hstateen1 + csrr a0, hstateen2 + csrr a0, hstateen3 + csrr a0, hstateen0h + csrr a0, hstateen1h + csrr a0, hstateen2h + csrr a0, hstateen3h diff --git a/include/opcode/riscv-opc.h b/include/opcode/riscv-opc.h index e40592159cd..982a732bcd2 100644 --- a/include/opcode/riscv-opc.h +++ b/include/opcode/riscv-opc.h @@ -3488,27 +3488,27 @@ DECLARE_CSR(vscause, CSR_VSCAUSE, CSR_CLASS_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_C DECLARE_CSR(vstval, CSR_VSTVAL, CSR_CLASS_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE) DECLARE_CSR(vsip, CSR_VSIP, CSR_CLASS_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE) DECLARE_CSR(vsatp, CSR_VSATP, CSR_CLASS_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE) -/* Smstateen extension */ +/* 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) DECLARE_CSR(mstateen2, CSR_MSTATEEN2, CSR_CLASS_SMSTATEEN, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE) DECLARE_CSR(mstateen3, CSR_MSTATEEN3, CSR_CLASS_SMSTATEEN, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE) -DECLARE_CSR(sstateen0, CSR_SSTATEEN0, CSR_CLASS_SMSTATEEN, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE) -DECLARE_CSR(sstateen1, CSR_SSTATEEN1, CSR_CLASS_SMSTATEEN, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE) -DECLARE_CSR(sstateen2, CSR_SSTATEEN2, CSR_CLASS_SMSTATEEN, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE) -DECLARE_CSR(sstateen3, CSR_SSTATEEN3, CSR_CLASS_SMSTATEEN, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE) -DECLARE_CSR(hstateen0, CSR_HSTATEEN0, CSR_CLASS_SMSTATEEN_AND_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE) -DECLARE_CSR(hstateen1, CSR_HSTATEEN1, CSR_CLASS_SMSTATEEN_AND_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE) -DECLARE_CSR(hstateen2, CSR_HSTATEEN2, CSR_CLASS_SMSTATEEN_AND_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE) -DECLARE_CSR(hstateen3, CSR_HSTATEEN3, CSR_CLASS_SMSTATEEN_AND_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE) +DECLARE_CSR(sstateen0, CSR_SSTATEEN0, CSR_CLASS_SSSTATEEN, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE) +DECLARE_CSR(sstateen1, CSR_SSTATEEN1, CSR_CLASS_SSSTATEEN, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE) +DECLARE_CSR(sstateen2, CSR_SSTATEEN2, CSR_CLASS_SSSTATEEN, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE) +DECLARE_CSR(sstateen3, CSR_SSTATEEN3, CSR_CLASS_SSSTATEEN, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE) +DECLARE_CSR(hstateen0, CSR_HSTATEEN0, CSR_CLASS_SSSTATEEN_AND_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE) +DECLARE_CSR(hstateen1, CSR_HSTATEEN1, CSR_CLASS_SSSTATEEN_AND_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE) +DECLARE_CSR(hstateen2, CSR_HSTATEEN2, CSR_CLASS_SSSTATEEN_AND_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE) +DECLARE_CSR(hstateen3, CSR_HSTATEEN3, CSR_CLASS_SSSTATEEN_AND_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE) DECLARE_CSR(mstateen0h, CSR_MSTATEEN0H, CSR_CLASS_SMSTATEEN_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE) DECLARE_CSR(mstateen1h, CSR_MSTATEEN1H, CSR_CLASS_SMSTATEEN_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE) DECLARE_CSR(mstateen2h, CSR_MSTATEEN2H, CSR_CLASS_SMSTATEEN_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE) DECLARE_CSR(mstateen3h, CSR_MSTATEEN3H, CSR_CLASS_SMSTATEEN_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE) -DECLARE_CSR(hstateen0h, CSR_HSTATEEN0H, CSR_CLASS_SMSTATEEN_AND_H_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE) -DECLARE_CSR(hstateen1h, CSR_HSTATEEN1H, CSR_CLASS_SMSTATEEN_AND_H_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE) -DECLARE_CSR(hstateen2h, CSR_HSTATEEN2H, CSR_CLASS_SMSTATEEN_AND_H_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE) -DECLARE_CSR(hstateen3h, CSR_HSTATEEN3H, CSR_CLASS_SMSTATEEN_AND_H_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE) +DECLARE_CSR(hstateen0h, CSR_HSTATEEN0H, CSR_CLASS_SSSTATEEN_AND_H_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE) +DECLARE_CSR(hstateen1h, CSR_HSTATEEN1H, CSR_CLASS_SSSTATEEN_AND_H_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE) +DECLARE_CSR(hstateen2h, CSR_HSTATEEN2H, CSR_CLASS_SSSTATEEN_AND_H_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE) +DECLARE_CSR(hstateen3h, CSR_HSTATEEN3H, CSR_CLASS_SSSTATEEN_AND_H_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE) /* Sscofpmf extension */ DECLARE_CSR(scountovf, CSR_SCOUNTOVF, CSR_CLASS_SSCOFPMF, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE) DECLARE_CSR(mhpmevent3h, CSR_MHPMEVENT3H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)