Skip to content
This repository has been archived by the owner on Feb 29, 2024. It is now read-only.

clarify when to set misa.C #230

Merged
merged 2 commits into from
Oct 25, 2023
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 17 additions & 0 deletions Zc-specification/Zc.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
[width="100%",options=header]
|====================================================================================
|Version | change
|v1.0.4-3 | Added misa.C clarification
|v1.0.4-2 | Added rule that C implies Zca, Zcf, Zcd - discussed in https://github.com/riscv/riscv-isa-manual/issues/1132
|v1.0.4-1 | Added rule that Zcf implies F and Zcd implies D - discussed in https://github.com/riscv/riscv-code-size-reduction/issues/221

Expand Down Expand Up @@ -120,6 +121,22 @@ Therefore common ISA strings can be updated as follows to include the relevant Z
* RV32IMC becomes RV32IM_Zce
* RV32IMCF becomes RV32IMF_Zce

[#misaC]
=== MISA.C

If all the instructions from the C extension are present, and the MISA CSR, has been implemented, then MISA.C is set. This happens if the following extensions are selected:

* Zca and not F
* Zca, Zcf and F is specified (RV32 only)
* Zca, Zcf and Zcd if D is specified (RV32 only)
** this configuration excludes Zcmp, Zcmt
* Zca, Zcd if D is specified (RV64 only)
** this configuration excludes Zcmp, Zcmt

Therefore MISA.C can be set without directly specifying the C extension.
aswaterman marked this conversation as resolved.
Show resolved Hide resolved

Specifying Zce sets MISA.C if D is not implemented. If D _is_ implemented then Zce does _not_ set MISA.C as it cannot include Zcd because some of the encodings have been repurposed by Zcmp and Zcmt.
aswaterman marked this conversation as resolved.
Show resolved Hide resolved

[#Zca]
=== Zca

Expand Down