public inbox for binutils@sourceware.org
 help / color / mirror / Atom feed
From: Nelson Chu <nelson.chu@sifive.com>
To: Tsukasa OI <research_trasio@irq.a4lg.com>
Cc: Binutils <binutils@sourceware.org>
Subject: Re: [PATCH 1/3] RISC-V: Add 'Smstateen' extension and its CSRs
Date: Fri, 25 Feb 2022 14:32:42 +0800	[thread overview]
Message-ID: <CAJYME4FANNdPAenpBS7ROWa1T=1VETNcbu5B28uEK2ACbMbrUQ@mail.gmail.com> (raw)
In-Reply-To: <e3ac4329ad803b8c7042992457f8db168192729b.1645704643.git.research_trasio@irq.a4lg.com>

On Thu, Feb 24, 2022 at 8:11 PM Tsukasa OI <research_trasio@irq.a4lg.com> 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
>

  reply	other threads:[~2022-02-25  6:32 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-01-11 10:59 [PATCH 0/6] RISC-V: Add Privileged Arch 1.12 and More CSRs Tsukasa OI
2022-01-11 10:59 ` [PATCH 1/6] RISC-V: Reorganize testcases for CFI directives Tsukasa OI
2022-02-23  6:58   ` Nelson Chu
2022-01-11 10:59 ` [PATCH 2/6] RISC-V: Add Privileged Architecture 1.12 CSRs Tsukasa OI
2022-02-23  6:58   ` Nelson Chu
2022-02-24  2:35     ` Tsukasa OI
2022-02-24  6:05       ` Nelson Chu
2022-01-11 10:59 ` [PATCH 3/6] RISC-V: Add Privileged Arch 1.12 CSR testcases Tsukasa OI
2022-02-23  6:58   ` Nelson Chu
2022-01-11 10:59 ` [PATCH 4/6] RISC-V: Add 'Smstateen' extension and its CSRs Tsukasa OI
2022-01-11 10:59 ` [PATCH 5/6] RISC-V: Add 'Sscofpmf' extension with " Tsukasa OI
2022-01-11 10:59 ` [PATCH 6/6] RISC-V: Add 'Sstc' extension and " Tsukasa OI
2022-02-24 12:10 ` [PATCH 0/3] RISC-V: Add CSRs for several supervisor extensions Tsukasa OI
2022-02-24 12:10   ` [PATCH 1/3] RISC-V: Add 'Smstateen' extension and its CSRs Tsukasa OI
2022-02-25  6:32     ` Nelson Chu [this message]
2022-02-25  6:35       ` Tsukasa OI
2022-02-25 10:51       ` Tsukasa OI
2022-03-02  4:34         ` Nelson Chu
2022-02-24 12:10   ` [PATCH 2/3] RISC-V: Add 'Sscofpmf' extension with " Tsukasa OI
2022-02-24 12:10   ` [PATCH 3/3] RISC-V: Add 'Sstc' extension and " Tsukasa OI
2022-05-24  9:35   ` [PATCH v2 0/3] RISC-V: Add CSRs for several supervisor extensions Tsukasa OI
2022-05-24  9:35     ` [PATCH v2 1/3] RISC-V: Add 'Smstateen' extension and its CSRs Tsukasa OI
2022-05-24  9:35     ` [PATCH v2 2/3] RISC-V: Add 'Sscofpmf' extension with " Tsukasa OI
2022-05-24  9:35     ` [PATCH v2 3/3] RISC-V: Add 'Sstc' extension and " Tsukasa OI
2022-06-24  2:51     ` [PATCH v3 0/4] RISC-V: Add CSRs for several supervisor extensions Tsukasa OI
2022-06-24  2:51       ` [PATCH v3 1/4] RISC-V: Add new CSR feature gate handling (RV32,H) Tsukasa OI
2022-06-24  2:51       ` [PATCH v3 2/4] RISC-V: Add 'Smstateen' extension and its CSRs Tsukasa OI
2022-06-24  2:51       ` [PATCH v3 3/4] RISC-V: Add 'Sscofpmf' extension with " Tsukasa OI
2022-06-24  2:51       ` [PATCH v3 4/4] RISC-V: Add 'Sstc' extension and " Tsukasa OI
2022-06-28  1:40       ` [PATCH v3 0/4] RISC-V: Add CSRs for several supervisor extensions Nelson Chu
2022-06-28  5:33         ` Tsukasa OI
2022-06-28  6:56           ` Nelson Chu

Reply instructions:

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

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

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

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

  git send-email \
    --in-reply-to='CAJYME4FANNdPAenpBS7ROWa1T=1VETNcbu5B28uEK2ACbMbrUQ@mail.gmail.com' \
    --to=nelson.chu@sifive.com \
    --cc=binutils@sourceware.org \
    --cc=research_trasio@irq.a4lg.com \
    /path/to/YOUR_REPLY

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

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).