[0/2] RISC-V: Add support for indirect CSR access extensions

Message ID cover.1692602822.git.research_trasio@irq.a4lg.com
Headers
Series RISC-V: Add support for indirect CSR access extensions |

Message

Tsukasa OI Aug. 21, 2023, 7:27 a.m. UTC
  Hello,

REVIEW ONLY v1:
<https://sourceware.org/pipermail/binutils/2023-August/128973.html>

Because the specification got stable and is approved, I once again submit
this patch set (pretty much *unchanged* from the previous one except the
commit message and the version number per the latest specification status).


This patch set implements two extensions ('Smcsrind' and 'Sscsrind') in
the Indirect CSR Access Architecture Extension specification:
<https://github.com/riscv/riscv-indirect-csr-access/releases/tag/v1.0.0-rc2>

Note that RISC-V AIA and this Indirect CSR Access specifications don't have
any strict superset or subset relations.  Instead, Indirect CSR Access is
based on a subset of RISC-V AIA but with some extensions and intentionally
designed *not* to have dependencies to AIA.

To implement those extensions (PATCH 2), new CSR handling mechanism will be
required because those CSRs are shared with RISC-V AIA ('Smaia' / 'Ssaia').

1.  miselect
2.  mireg
3.  siselect
4.  sireg
5.  vsiselect
6.  vsireg

Complex CSR handling preparation as in PATCH 1 enables separating the
"extension" variable (shared for error message) and actual checking.
It enables checking like (A && B) and (A || B).  In the PATCH 2, the author
used this mechanism to check (Smaia || Smcsrind) and (Ssaia || Sscsrind).

This approach should work until a kind of combinatorial explosion happens.

Thanks,
Tsukasa




Tsukasa OI (2):
  RISC-V: Add complex CSR error handling
  RISC-V: Add indirect CSR Access Extensions and its CSRs

 bfd/elfxx-riscv.c                           |   4 +
 gas/config/tc-riscv.c                       |  38 ++++++-
 gas/testsuite/gas/riscv/csr-dw-regnums.d    |  15 +++
 gas/testsuite/gas/riscv/csr-dw-regnums.s    |  17 ++++
 gas/testsuite/gas/riscv/csr-version-1p10.d  |  30 ++++++
 gas/testsuite/gas/riscv/csr-version-1p10.l  | 104 +++++++++++++++++---
 gas/testsuite/gas/riscv/csr-version-1p11.d  |  30 ++++++
 gas/testsuite/gas/riscv/csr-version-1p11.l  | 104 +++++++++++++++++---
 gas/testsuite/gas/riscv/csr-version-1p12.d  |  30 ++++++
 gas/testsuite/gas/riscv/csr-version-1p12.l  | 104 +++++++++++++++++---
 gas/testsuite/gas/riscv/csr-version-1p9p1.d |  30 ++++++
 gas/testsuite/gas/riscv/csr-version-1p9p1.l | 104 +++++++++++++++++---
 gas/testsuite/gas/riscv/csr.s               |  19 ++++
 include/opcode/riscv-opc.h                  |  46 +++++++--
 14 files changed, 619 insertions(+), 56 deletions(-)


base-commit: 29c0e7512493aa6cdd713024909c352964fe1b1a