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

Tsukasa OI research_trasio@irq.a4lg.com
Mon Aug 21 07:27:04 GMT 2023


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
-- 
2.41.0



More information about the Binutils mailing list