mirror of
https://github.com/openhwgroup/cva6.git
synced 2025-04-23 13:47:13 -04:00
update riscv-isa-manual to riscv-isa-release-c8c8075-2024-06-12 (#2253)
This commit is contained in:
parent
8164828913
commit
105d3601b6
17 changed files with 823 additions and 623 deletions
|
@ -15,19 +15,19 @@ setup:
|
||||||
|
|
||||||
priv-pdf: setup
|
priv-pdf: setup
|
||||||
cd build/riscv-isa-manual/build; make priv-pdf
|
cd build/riscv-isa-manual/build; make priv-pdf
|
||||||
cp ./build/riscv-isa-manual/build/priv-isa-asciidoc.pdf priv-isa-cv32a65x.pdf
|
cp ./build/riscv-isa-manual/build/riscv-privileged.pdf priv-isa-cv32a65x.pdf
|
||||||
|
|
||||||
priv-html: setup
|
priv-html: setup
|
||||||
cd build/riscv-isa-manual/build; make priv-html
|
cd build/riscv-isa-manual/build; make priv-html
|
||||||
cp ./build/riscv-isa-manual/build/priv-isa-asciidoc.html priv-isa-cv32a65x.html
|
cp ./build/riscv-isa-manual/build/riscv-privileged.html priv-isa-cv32a65x.html
|
||||||
|
|
||||||
unpriv-pdf: setup
|
unpriv-pdf: setup
|
||||||
cd build/riscv-isa-manual/build; make unpriv-pdf
|
cd build/riscv-isa-manual/build; make unpriv-pdf
|
||||||
cp ./build/riscv-isa-manual/build/unpriv-isa-asciidoc.pdf unpriv-isa-cv32a65x.pdf
|
cp ./build/riscv-isa-manual/build/riscv-unprivileged.pdf unpriv-isa-cv32a65x.pdf
|
||||||
|
|
||||||
unpriv-html: setup
|
unpriv-html: setup
|
||||||
cd build/riscv-isa-manual/build; make unpriv-html
|
cd build/riscv-isa-manual/build; make unpriv-html
|
||||||
cp ./build/riscv-isa-manual/build/unpriv-isa-asciidoc.html unpriv-isa-cv32a65x.html
|
cp ./build/riscv-isa-manual/build/riscv-unprivileged.html unpriv-isa-cv32a65x.html
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -rf build
|
rm -rf build
|
||||||
|
|
File diff suppressed because one or more lines are too long
|
@ -1 +1 @@
|
||||||
Subproject commit 1bec7d34914aa1a2a890b4fca30af519ba539e7b
|
Subproject commit c8c8075a6a71be67ac723528070e3e50ff7586b2
|
6
docs/04_cv32a65x/riscv/src/bfloat16.adoc
Normal file
6
docs/04_cv32a65x/riscv/src/bfloat16.adoc
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
[[bf16]]
|
||||||
|
== "BF16" Extensions for for BFloat16-precision Floating-Point, Version 1.0
|
||||||
|
|
||||||
|
ifeval::[{RVZfbf-RZvfbf} == false]
|
||||||
|
{ohg-config}: These extensions are not supported.
|
||||||
|
endif::[]
|
|
@ -7,7 +7,7 @@
|
||||||
This document describes the RISC-V unprivileged architecture tailored for
|
This document describes the RISC-V unprivileged architecture tailored for
|
||||||
OpenHW Group {ohg-config}.
|
OpenHW Group {ohg-config}.
|
||||||
|
|
||||||
[.big]*_Preface to Document Version 20240528_*
|
[.big]*_Preface to Document Version 20240612_*
|
||||||
|
|
||||||
This document describes the RISC-V unprivileged architecture.
|
This document describes the RISC-V unprivileged architecture.
|
||||||
|
|
||||||
|
|
|
@ -11,9 +11,11 @@
|
||||||
:RVS: false
|
:RVS: false
|
||||||
:RVU: false
|
:RVU: false
|
||||||
:RVV: false
|
:RVV: false
|
||||||
|
:RVZabha: false
|
||||||
:RVZacas: false
|
:RVZacas: false
|
||||||
:RVZawrs: false
|
:RVZawrs: false
|
||||||
:RVZfa: false
|
:RVZfa: false
|
||||||
|
:RVZfbf-RZvfbf: false
|
||||||
:RVZfh: false
|
:RVZfh: false
|
||||||
:RVZfinx: false
|
:RVZfinx: false
|
||||||
:RVZicbo: false
|
:RVZicbo: false
|
||||||
|
@ -29,11 +31,13 @@
|
||||||
:RVZsmcdeleg: false
|
:RVZsmcdeleg: false
|
||||||
:RVZsmcntrpmf: false
|
:RVZsmcntrpmf: false
|
||||||
:RVZsmcsrind-RVZsscsrind: false
|
:RVZsmcsrind-RVZsscsrind: false
|
||||||
|
:RVZsmdbltrp: false
|
||||||
:RVZsmepmp: false
|
:RVZsmepmp: false
|
||||||
:RVZsmmpm: false
|
:RVZsmmpm: false
|
||||||
:RVZsmrnmi: false
|
:RVZsmrnmi: false
|
||||||
:RVZsmstateen: false
|
:RVZsmstateen: false
|
||||||
:RVZsscofpmf: false
|
:RVZsscofpmf: false
|
||||||
|
:RVZssdbltrp: false
|
||||||
:RVZsstc: false
|
:RVZsstc: false
|
||||||
:RVZtso: false
|
:RVZtso: false
|
||||||
:RVZvk: false
|
:RVZvk: false
|
||||||
|
|
|
@ -529,7 +529,8 @@ ifeval::[{ohg-config} != CV32A65X]
|
||||||
{bits: 1, name: 'MPV'},
|
{bits: 1, name: 'MPV'},
|
||||||
{bits: 1, name: 'WPRI'},
|
{bits: 1, name: 'WPRI'},
|
||||||
{bits: 1, name: 'MPELP'},
|
{bits: 1, name: 'MPELP'},
|
||||||
{bits: 21, name: 'WPRI'},
|
{bits: 1, name: 'MDT'},
|
||||||
|
{bits: 20, name: 'WPRI'},
|
||||||
{bits: 1, name: 'SD'},
|
{bits: 1, name: 'SD'},
|
||||||
], config:{lanes: 4, hspace:1024}}
|
], config:{lanes: 4, hspace:1024}}
|
||||||
....
|
....
|
||||||
|
@ -553,8 +554,13 @@ endif::[]
|
||||||
{bits: 4, name: 'WPRI'},
|
{bits: 4, name: 'WPRI'},
|
||||||
{bits: 1, name: 'SBE'},
|
{bits: 1, name: 'SBE'},
|
||||||
{bits: 1, name: 'MBE'},
|
{bits: 1, name: 'MBE'},
|
||||||
{bits: 26, name: 'WPRI'},
|
{bits: 1, name: 'GVA'},
|
||||||
], config:{lanes: 1, hspace:1024}}
|
{bits: 1, name: 'MPV'},
|
||||||
|
{bits: 1, name: 'WPRI'},
|
||||||
|
{bits: 1, name: 'MPELP'},
|
||||||
|
{bits: 1, name: 'MDT'},
|
||||||
|
{bits: 21, name: 'WPRI'},
|
||||||
|
], config:{lanes: 2, hspace:1024}}
|
||||||
....
|
....
|
||||||
|
|
||||||
[[privstack]]
|
[[privstack]]
|
||||||
|
@ -692,6 +698,78 @@ ifeval::[{RVS} == false]
|
||||||
and UPP are read-only 0.
|
and UPP are read-only 0.
|
||||||
endif::[]
|
endif::[]
|
||||||
|
|
||||||
|
[[machine-double-trap]]
|
||||||
|
===== Double Trap Control in `mstatus` Register
|
||||||
|
|
||||||
|
ifeval::[{RVZsmdbltrp} == true]
|
||||||
|
A double trap typically arises during a sensitive phase in trap handling
|
||||||
|
operations -- when an exception or interrupt occurs while the trap handler (the
|
||||||
|
component responsible for managing these events) is in a non-reentrant state.
|
||||||
|
This non-reentrancy usually occurs in the early phase of trap handling, wherein
|
||||||
|
the trap handler has not yet preserved the necessary state to handle and resume
|
||||||
|
from the trap. The occurrence of a trap during this phase can lead to an
|
||||||
|
overwrite of critical state information, resulting in the loss of data needed to
|
||||||
|
recover from the initial trap. The trap that caused this critical error
|
||||||
|
condition is henceforth called the _unexpected trap_. Trap handlers are designed
|
||||||
|
to neither enable interrupts nor cause exceptions during this phase of handling.
|
||||||
|
However, managing Hardware-Error exceptions, which may occur unpredictably,
|
||||||
|
presents significant challenges in trap handler implementation due to the
|
||||||
|
potential risk of a double trap.
|
||||||
|
|
||||||
|
The M-mode-disable-trap (`MDT`) bit is a WARL field introduced by the Smdbltrp
|
||||||
|
extension. Upon reset, the `MDT` field is set to 1. When the `MDT` bit is set to
|
||||||
|
1 by an explicit CSR write, the `MIE` (Machine Interrupt Enable) bit is cleared
|
||||||
|
to 0. For RV64, this clearing occurs regardless of the value written, if any, to
|
||||||
|
the `MIE` bit by the same write. The `MIE` bit can only be set to 1 by an
|
||||||
|
explicit CSR write if the `MDT` bit is already 0 or, for RV64, is being set to 0
|
||||||
|
by the same write (For RV32, the `MDT` bit is in `mstatush` and the `MIE` bit in
|
||||||
|
`mstatus` register).
|
||||||
|
|
||||||
|
When a trap is to be taken into M-mode, if the `MDT` bit is currently 0, it is
|
||||||
|
then set to 1, and the trap is delivered as expected. However, if `MDT` is
|
||||||
|
already set to 1, then this is an _unexpected trap_. Additionally, when the
|
||||||
|
Smrnmi extension is implemented, a trap that occurs when executing in M-mode
|
||||||
|
with the `mnstatus.NMIE` set to 0 is an _unexpected trap_.
|
||||||
|
|
||||||
|
In the event of a _unexpected trap_, the handling is as follows:
|
||||||
|
|
||||||
|
* When the Smrnmi extension is implemented and `mnstatus.NMIE` is 1, the hart
|
||||||
|
traps to the RNMI handler. To deliver this trap, the `mnepc` and `mncause`
|
||||||
|
registers are written with the values that the _unexpected trap_ would have
|
||||||
|
written to the `mepc` and `mcause` registers respectively. The privilege
|
||||||
|
mode information fields in the `mnstatus` register are written to indicate
|
||||||
|
M-mode and its `NMIE` field is set to 0.
|
||||||
|
|
||||||
|
[NOTE]
|
||||||
|
====
|
||||||
|
The consequence of this specification is that on occurrence of double trap the
|
||||||
|
RNMI handler is not provided with information that a trap would report in the
|
||||||
|
`mtval` and the `mtval2` registers. This information, if needed, may be obtained
|
||||||
|
by the RNMI handler by decoding the instruction at the address in `mnepc` and
|
||||||
|
examining its source register contents.
|
||||||
|
====
|
||||||
|
|
||||||
|
* When the Smrnmi extension is not implemented, or if the Smrnmi extension is
|
||||||
|
implemented and `mnstatus.NMIE` is 0, the hart enters a critical-error state
|
||||||
|
without updating any architectural state including the `pc`. This state
|
||||||
|
involves ceasing execution, disabling all interrupts (including NMIs), and
|
||||||
|
asserting a `critical-error` signal to the platform.
|
||||||
|
|
||||||
|
[NOTE]
|
||||||
|
====
|
||||||
|
The actions performed by the platform on assertion of a `critical-error` signal
|
||||||
|
by a hart are platform specific. The range of possible actions include restarting
|
||||||
|
the affected hart or restarting the entire platform among others.
|
||||||
|
====
|
||||||
|
|
||||||
|
An `MRET` instruction sets the `MDT` bit to 0.
|
||||||
|
endif::[]
|
||||||
|
|
||||||
|
ifeval::[{RVZsmdbltrp} == true]
|
||||||
|
[{ohg-config}] As Double Trap Control (Smdbltrp extension) is not implemented,
|
||||||
|
MDT field is read-only 0.
|
||||||
|
endif::[]
|
||||||
|
|
||||||
[[xlen-control]]
|
[[xlen-control]]
|
||||||
===== Base ISA Control in `mstatus` Register
|
===== Base ISA Control in `mstatus` Register
|
||||||
|
|
||||||
|
@ -1230,6 +1308,8 @@ unconfigure or disable/enable instructions.
|
||||||
|
|
||||||
<<<
|
<<<
|
||||||
|
|
||||||
|
[[fsxsstates]]
|
||||||
|
.FS, VS, and XS state transitions.
|
||||||
[width=75,align=center,float=center,cols="<,<,<,<,<"]
|
[width=75,align=center,float=center,cols="<,<,<,<,<"]
|
||||||
|===
|
|===
|
||||||
|Current State +
|
|Current State +
|
||||||
|
@ -1333,9 +1413,7 @@ Off
|
||||||
Off
|
Off
|
||||||
|===
|
|===
|
||||||
|
|
||||||
[[fsxsstates]]
|
|
||||||
[width=75,align=center,float=center,cols="<,<,<,<,<"]
|
[width=75,align=center,float=center,cols="<,<,<,<,<"]
|
||||||
.FS, FS, and XS state transitions.
|
|
||||||
|===
|
|===
|
||||||
5+^|Execute instruction to enable unit
|
5+^|Execute instruction to enable unit
|
||||||
|
|
||||||
|
@ -1586,6 +1664,8 @@ interrupt delegation control is located in bit 5).
|
||||||
For exceptions that cannot occur in less privileged modes, the
|
For exceptions that cannot occur in less privileged modes, the
|
||||||
corresponding `medeleg` bits should be read-only zero. In particular,
|
corresponding `medeleg` bits should be read-only zero. In particular,
|
||||||
`medeleg`[11] is read-only zero.
|
`medeleg`[11] is read-only zero.
|
||||||
|
|
||||||
|
The `medeleg`[16] is read-only zero as double trap is not delegatable.
|
||||||
endif::[]
|
endif::[]
|
||||||
|
|
||||||
ifeval::[{RVU} == false]
|
ifeval::[{RVU} == false]
|
||||||
|
@ -1876,13 +1956,6 @@ include::images/bytefield/hpmevents.adoc[]
|
||||||
The `mhpmcounters` are *WARL* registers that support up to 64 bits of
|
The `mhpmcounters` are *WARL* registers that support up to 64 bits of
|
||||||
precision on RV32 and RV64.
|
precision on RV32 and RV64.
|
||||||
|
|
||||||
[NOTE]
|
|
||||||
====
|
|
||||||
A future revision of this specification will define a mechanism to
|
|
||||||
generate an interrupt when a hardware performance monitor counter
|
|
||||||
overflows.
|
|
||||||
====
|
|
||||||
|
|
||||||
When XLEN=32, reads of the `mcycle`, `minstret`, `mhpmcounter__n__`, and `mhpmevent__n__`
|
When XLEN=32, reads of the `mcycle`, `minstret`, `mhpmcounter__n__`, and `mhpmevent__n__`
|
||||||
CSRs return bits 31-0 of the corresponding register, and writes change
|
CSRs return bits 31-0 of the corresponding register, and writes change
|
||||||
only bits 31-0; reads of the `mcycleh`, `minstreth`, `mhpmcounter__n__h`, and `mhpmevent__n__h`
|
only bits 31-0; reads of the `mcycleh`, `minstreth`, `mhpmcounter__n__h`, and `mhpmevent__n__h`
|
||||||
|
@ -2223,6 +2296,7 @@ _Designated for platform use_
|
||||||
0 +
|
0 +
|
||||||
0 +
|
0 +
|
||||||
0 +
|
0 +
|
||||||
|
0 +
|
||||||
0
|
0
|
||||||
|0 +
|
|0 +
|
||||||
1 +
|
1 +
|
||||||
|
@ -2240,7 +2314,8 @@ _Designated for platform use_
|
||||||
13 +
|
13 +
|
||||||
14 +
|
14 +
|
||||||
15 +
|
15 +
|
||||||
16-17 +
|
16 +
|
||||||
|
17 +
|
||||||
18 +
|
18 +
|
||||||
19 +
|
19 +
|
||||||
20-23 +
|
20-23 +
|
||||||
|
@ -2264,6 +2339,7 @@ Instruction page fault +
|
||||||
Load page fault +
|
Load page fault +
|
||||||
_Reserved_ +
|
_Reserved_ +
|
||||||
Store/AMO page fault +
|
Store/AMO page fault +
|
||||||
|
Double trap +
|
||||||
_Reserved_ +
|
_Reserved_ +
|
||||||
Software check +
|
Software check +
|
||||||
Hardware error +
|
Hardware error +
|
||||||
|
@ -2550,7 +2626,8 @@ privileged than M.
|
||||||
{bits: 1, name: 'CBZE'},
|
{bits: 1, name: 'CBZE'},
|
||||||
{bits: 24, name: 'WPRI'},
|
{bits: 24, name: 'WPRI'},
|
||||||
{bits: 2, name: 'PMM'},
|
{bits: 2, name: 'PMM'},
|
||||||
{bits: 26, name: 'WPRI'},
|
{bits: 25, name: 'WPRI'},
|
||||||
|
{bits: 1, name: 'DTE'},
|
||||||
{bits: 1, name: 'CDE'},
|
{bits: 1, name: 'CDE'},
|
||||||
{bits: 1, name: 'ADUE'},
|
{bits: 1, name: 'ADUE'},
|
||||||
{bits: 1, name: 'PBMTE'},
|
{bits: 1, name: 'PBMTE'},
|
||||||
|
@ -2661,6 +2738,11 @@ the following rules apply to privilege modes that are less than M:
|
||||||
* The `henvcfg.SSE` and `senvcfg.SSE` fields will read as zero and are read-only.
|
* The `henvcfg.SSE` and `senvcfg.SSE` fields will read as zero and are read-only.
|
||||||
* `SSAMOSWAP.W/D` raises an illegal-instruction exception.
|
* `SSAMOSWAP.W/D` raises an illegal-instruction exception.
|
||||||
|
|
||||||
|
The Ssdbltrp extension adds the double-trap-enable (`DTE`) field in `menvcfg`.
|
||||||
|
When `menvcfg.DTE` is zero, the implementation behaves as though Ssdbltrp is not
|
||||||
|
implemented. When Ssdbltrp is not implemented `sstatus.SDT`, `vsstatus.SDT`, and
|
||||||
|
`henvcfg.DTE` bits are read-only zero.
|
||||||
|
|
||||||
When XLEN=32, `menvcfgh` is a 32-bit read/write register
|
When XLEN=32, `menvcfgh` is a 32-bit read/write register
|
||||||
that aliases bits 63:32 of `menvcfg`.
|
that aliases bits 63:32 of `menvcfg`.
|
||||||
The `menvcfgh` register does not exist when XLEN=64.
|
The `menvcfgh` register does not exist when XLEN=64.
|
||||||
|
@ -3035,12 +3117,6 @@ privilege mode, either immediately on encountering the WFI or after some
|
||||||
interval to initiate a machine-mode transition to a lower power state,
|
interval to initiate a machine-mode transition to a lower power state,
|
||||||
for example.
|
for example.
|
||||||
|
|
||||||
As implementations are free to implement WFI as a NOP, software must
|
|
||||||
explicitly check for any relevant pending but disabled interrupts in the
|
|
||||||
code following an WFI, and should loop back to the WFI if no suitable
|
|
||||||
interrupt was detected. The `mip` register can be interrogated
|
|
||||||
to determine the presence of any interrupt in machine.
|
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
The same "wait-for-event" template might be used for possible future
|
The same "wait-for-event" template might be used for possible future
|
||||||
|
@ -3796,9 +3872,6 @@ are *WARL*.
|
||||||
include::images/bytefield/pmpaddr-rv32.adoc[]
|
include::images/bytefield/pmpaddr-rv32.adoc[]
|
||||||
endif::[]
|
endif::[]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<<pmpcfg>> shows the layout of a PMP configuration
|
<<pmpcfg>> shows the layout of a PMP configuration
|
||||||
register. The R, W, and X bits, when set, indicate that the PMP entry
|
register. The R, W, and X bits, when set, indicate that the PMP entry
|
||||||
permits read, write, and instruction execution, respectively. When one
|
permits read, write, and instruction execution, respectively. When one
|
||||||
|
@ -3998,7 +4071,6 @@ If a PMP entry matches all bytes of an access, then the L, R, W, and X
|
||||||
bits determine whether the access succeeds or fails. If the L bit is
|
bits determine whether the access succeeds or fails. If the L bit is
|
||||||
clear and the privilege mode of the access is M, the access succeeds.
|
clear and the privilege mode of the access is M, the access succeeds.
|
||||||
|
|
||||||
|
|
||||||
ifeval::[{RVU} == true]
|
ifeval::[{RVU} == true]
|
||||||
Otherwise, if the L bit is set or the privilege mode of the access is S
|
Otherwise, if the L bit is set or the privilege mode of the access is S
|
||||||
or U, then the access succeeds only if the R, W, or X bit corresponding
|
or U, then the access succeeds only if the R, W, or X bit corresponding
|
||||||
|
|
|
@ -6,10 +6,10 @@
|
||||||
This document describes the RISC-V privileged architecture tailored for
|
This document describes the RISC-V privileged architecture tailored for
|
||||||
OpenHW Group {ohg-config}.
|
OpenHW Group {ohg-config}.
|
||||||
|
|
||||||
[.big]*_Preface to Version 20240528_*
|
[.big]*_Preface to Version 20240612_*
|
||||||
|
|
||||||
This document describes the RISC-V privileged architecture. This
|
This document describes the RISC-V privileged architecture. This
|
||||||
release, version 20240528, contains the following versions of the RISC-V ISA
|
release, version 20240612, contains the following versions of the RISC-V ISA
|
||||||
modules:
|
modules:
|
||||||
|
|
||||||
[%autowidth,float="center",align="center",cols="^,<,^",options="header",]
|
[%autowidth,float="center",align="center",cols="^,<,^",options="header",]
|
||||||
|
@ -22,6 +22,7 @@ modules:
|
||||||
**Smcntrpmf* +
|
**Smcntrpmf* +
|
||||||
*Smrnmi Extension* +
|
*Smrnmi Extension* +
|
||||||
*Smcdeleg* +
|
*Smcdeleg* +
|
||||||
|
*Smdbltrp* +
|
||||||
_Supervisor ISA_ +
|
_Supervisor ISA_ +
|
||||||
*Svade Extension* +
|
*Svade Extension* +
|
||||||
*Svnapot Extension* +
|
*Svnapot Extension* +
|
||||||
|
@ -30,7 +31,9 @@ _Supervisor ISA_ +
|
||||||
*Svadu Extension* +
|
*Svadu Extension* +
|
||||||
*Sstc* +
|
*Sstc* +
|
||||||
*Sscofpmf* +
|
*Sscofpmf* +
|
||||||
*Hypervisor ISA*
|
*Ssdbltrp* +
|
||||||
|
*Hypervisor ISA* +
|
||||||
|
_Shlcofideleg_
|
||||||
|
|
||||||
|_1.13_ +
|
|_1.13_ +
|
||||||
*1.0* +
|
*1.0* +
|
||||||
|
@ -39,6 +42,7 @@ _Supervisor ISA_ +
|
||||||
*1.0* +
|
*1.0* +
|
||||||
*1.0* +
|
*1.0* +
|
||||||
*1.0* +
|
*1.0* +
|
||||||
|
*1.0* +
|
||||||
_1.13_ +
|
_1.13_ +
|
||||||
*1.0* +
|
*1.0* +
|
||||||
*1.0* +
|
*1.0* +
|
||||||
|
@ -47,7 +51,9 @@ _1.13_ +
|
||||||
*1.0* +
|
*1.0* +
|
||||||
*1.0* +
|
*1.0* +
|
||||||
*1.0* +
|
*1.0* +
|
||||||
*1.0*
|
*1.0* +
|
||||||
|
*1.0* +
|
||||||
|
_0.1_
|
||||||
|
|
||||||
|_Draft_ +
|
|_Draft_ +
|
||||||
*Ratified* +
|
*Ratified* +
|
||||||
|
@ -57,6 +63,7 @@ _1.13_ +
|
||||||
*Ratified* +
|
*Ratified* +
|
||||||
*Ratified* +
|
*Ratified* +
|
||||||
_Draft_ +
|
_Draft_ +
|
||||||
|
_Draft_ +
|
||||||
*Ratified* +
|
*Ratified* +
|
||||||
*Ratified* +
|
*Ratified* +
|
||||||
*Ratified* +
|
*Ratified* +
|
||||||
|
@ -64,7 +71,9 @@ _Draft_ +
|
||||||
*Ratified* +
|
*Ratified* +
|
||||||
*Ratified* +
|
*Ratified* +
|
||||||
*Ratified* +
|
*Ratified* +
|
||||||
*Ratified*
|
_Draft_ +
|
||||||
|
*Ratified* +
|
||||||
|
_Draft_
|
||||||
|===
|
|===
|
||||||
|
|
||||||
The following changes have been made since version 1.12 of the Machine and
|
The following changes have been made since version 1.12 of the Machine and
|
||||||
|
@ -77,6 +86,8 @@ anticipated to cause software portability problems in practice:
|
||||||
Additionally, the following compatible changes have been
|
Additionally, the following compatible changes have been
|
||||||
made to the Machine and Supervisor ISAs since version 1.12:
|
made to the Machine and Supervisor ISAs since version 1.12:
|
||||||
|
|
||||||
|
* Defined the `misa`.B field to reflect that the B extension has been
|
||||||
|
implemented.
|
||||||
* Defined the `misa`.V field to reflect that the V extension has been
|
* Defined the `misa`.V field to reflect that the V extension has been
|
||||||
implemented.
|
implemented.
|
||||||
* Defined the RV32-only `medelegh` and `hedelegh` CSRs.
|
* Defined the RV32-only `medelegh` and `hedelegh` CSRs.
|
||||||
|
@ -86,7 +97,7 @@ implemented.
|
||||||
* Defined hardware error and software check exception codes.
|
* Defined hardware error and software check exception codes.
|
||||||
* Specified synchronization requirements when changing the PBMTE fields
|
* Specified synchronization requirements when changing the PBMTE fields
|
||||||
in `menvcfg` and `henvcfg`.
|
in `menvcfg` and `henvcfg`.
|
||||||
* Exposed count-overflow interrups to VS-mode.
|
* Exposed count-overflow interrups to VS-mode via the Shlcofideleg extension.
|
||||||
|
|
||||||
Finally, the following clarifications and document improvments have been made
|
Finally, the following clarifications and document improvments have been made
|
||||||
since the last document release:
|
since the last document release:
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
= The RISC-V Instruction Set Manual for CV32A65X: Volume II: Privileged Architecture
|
= The RISC-V Instruction Set Manual for CV32A65X: Volume II: Privileged Architecture
|
||||||
:description: Volume II - Privileged Architecture
|
:description: Volume II - Privileged Architecture
|
||||||
:company: RISC-V.org
|
:company: RISC-V.org
|
||||||
:revnumber: 20240528
|
:revnumber: 20240612
|
||||||
//:revremark: Pre-release version
|
//:revremark: Pre-release version
|
||||||
//development: assume everything can change
|
//development: assume everything can change
|
||||||
//stable: assume everything could change
|
//stable: assume everything could change
|
||||||
|
@ -100,11 +100,13 @@ include::smepmp.adoc[]
|
||||||
include::smcntrpmf.adoc[]
|
include::smcntrpmf.adoc[]
|
||||||
include::rnmi.adoc[]
|
include::rnmi.adoc[]
|
||||||
include::smcdeleg.adoc[]
|
include::smcdeleg.adoc[]
|
||||||
|
include::smdbltrp.adoc[]
|
||||||
include::supervisor.adoc[]
|
include::supervisor.adoc[]
|
||||||
include::sstc.adoc[]
|
include::sstc.adoc[]
|
||||||
include::sscofpmf.adoc[]
|
include::sscofpmf.adoc[]
|
||||||
include::hypervisor.adoc[]
|
include::hypervisor.adoc[]
|
||||||
include::priv-cfi.adoc[]
|
include::priv-cfi.adoc[]
|
||||||
|
include::ssdbltrp.adoc[]
|
||||||
include::priv-insns.adoc[]
|
include::priv-insns.adoc[]
|
||||||
include::priv-history.adoc[]
|
include::priv-history.adoc[]
|
||||||
include::bibliography.adoc[]
|
include::bibliography.adoc[]
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
= The RISC-V Instruction Set Manual for CV32A65X: Volume I - Unprivileged Architecture
|
= The RISC-V Instruction Set Manual for CV32A65X: Volume I - Unprivileged Architecture
|
||||||
:description: Volume I - Unprivileged Architecture
|
:description: Volume I - Unprivileged Architecture
|
||||||
:company: RISC-V.org
|
:company: RISC-V.org
|
||||||
:revnumber: 20240528
|
:revnumber: 20240612
|
||||||
//:revremark: Pre-release version
|
//:revremark: Pre-release version
|
||||||
:url-riscv: http://riscv.org
|
:url-riscv: http://riscv.org
|
||||||
:doctype: book
|
:doctype: book
|
||||||
|
@ -29,7 +29,8 @@
|
||||||
:bibtex-throw: false
|
:bibtex-throw: false
|
||||||
:icons: font
|
:icons: font
|
||||||
:lang: en
|
:lang: en
|
||||||
:listing-caption: Example
|
:example-caption: Example
|
||||||
|
:listing-caption: Listing
|
||||||
:sectnums:
|
:sectnums:
|
||||||
:toc: left
|
:toc: left
|
||||||
:toclevels: 5
|
:toclevels: 5
|
||||||
|
@ -43,6 +44,8 @@ endif::[]
|
||||||
:chapter-refsig: Chapter
|
:chapter-refsig: Chapter
|
||||||
:section-refsig: Section
|
:section-refsig: Section
|
||||||
:appendix-refsig: Appendix
|
:appendix-refsig: Appendix
|
||||||
|
// Uncomment :data-uri: if your eBook reader is not capable of rendering
|
||||||
|
// embedded images. One known affected device is PocketBook InkPad 3.
|
||||||
:data-uri:
|
:data-uri:
|
||||||
:hide-uri-scheme:
|
:hide-uri-scheme:
|
||||||
:stem: latexmath
|
:stem: latexmath
|
||||||
|
@ -181,6 +184,7 @@ include::m-st-ext.adoc[]
|
||||||
include::a-st-ext.adoc[]
|
include::a-st-ext.adoc[]
|
||||||
include::zawrs.adoc[]
|
include::zawrs.adoc[]
|
||||||
include::zacas.adoc[]
|
include::zacas.adoc[]
|
||||||
|
include::zabha.adoc[]
|
||||||
include::rvwmo.adoc[]
|
include::rvwmo.adoc[]
|
||||||
include::ztso-st-ext.adoc[]
|
include::ztso-st-ext.adoc[]
|
||||||
include::cmo.adoc[]
|
include::cmo.adoc[]
|
||||||
|
@ -188,6 +192,7 @@ include::f-st-ext.adoc[]
|
||||||
include::d-st-ext.adoc[]
|
include::d-st-ext.adoc[]
|
||||||
include::q-st-ext.adoc[]
|
include::q-st-ext.adoc[]
|
||||||
include::zfh.adoc[]
|
include::zfh.adoc[]
|
||||||
|
include::bfloat16.adoc[]
|
||||||
include::zfa.adoc[]
|
include::zfa.adoc[]
|
||||||
include::zfinx.adoc[]
|
include::zfinx.adoc[]
|
||||||
include::c-st-ext.adoc[]
|
include::c-st-ext.adoc[]
|
||||||
|
@ -198,6 +203,7 @@ include::p-st-ext.adoc[]
|
||||||
include::v-st-ext.adoc[]
|
include::v-st-ext.adoc[]
|
||||||
include::scalar-crypto.adoc[]
|
include::scalar-crypto.adoc[]
|
||||||
include::vector-crypto.adoc[]
|
include::vector-crypto.adoc[]
|
||||||
|
include::unpriv-cfi.adoc[]
|
||||||
include::rv-32-64g.adoc[]
|
include::rv-32-64g.adoc[]
|
||||||
include::extending.adoc[]
|
include::extending.adoc[]
|
||||||
include::naming.adoc[]
|
include::naming.adoc[]
|
||||||
|
|
|
@ -194,6 +194,7 @@ endif::[]
|
||||||
|
|
||||||
<<<
|
<<<
|
||||||
ifeval::[{RVA} == true]
|
ifeval::[{RVA} == true]
|
||||||
|
|
||||||
[%autowidth.stretch,float="center",align="center",cols="^2m,^2m,^2m,^2m,<2m,>3m, <4m, >4m, <4m, >4m, <4m, >4m, <4m, >4m, <6m"]
|
[%autowidth.stretch,float="center",align="center",cols="^2m,^2m,^2m,^2m,<2m,>3m, <4m, >4m, <4m, >4m, <4m, >4m, <4m, >4m, <6m"]
|
||||||
|===
|
|===
|
||||||
15+^|
|
15+^|
|
||||||
|
|
6
docs/04_cv32a65x/riscv/src/smdbltrp.adoc
Normal file
6
docs/04_cv32a65x/riscv/src/smdbltrp.adoc
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
[[smdbltrp]]
|
||||||
|
== "Smdbltrp" Double Trap Extension, Version 1.0
|
||||||
|
|
||||||
|
ifeval::[{RVZsmdbltrp} == false]
|
||||||
|
{ohg-config}: This extension is not supported.
|
||||||
|
endif::[]
|
6
docs/04_cv32a65x/riscv/src/ssdbltrp.adoc
Normal file
6
docs/04_cv32a65x/riscv/src/ssdbltrp.adoc
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
[[ssdbltrp]]
|
||||||
|
== "Ssdbltrp" Double Trap Extension, Version 1.0
|
||||||
|
|
||||||
|
ifeval::[{RVZssdbltrp} == false]
|
||||||
|
{ohg-config}: This extension is not supported.
|
||||||
|
endif::[]
|
10
docs/04_cv32a65x/riscv/src/unpriv-cfi.adoc
Normal file
10
docs/04_cv32a65x/riscv/src/unpriv-cfi.adoc
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
[[unpriv-cfi]]
|
||||||
|
== Control-flow Integrity (CFI)
|
||||||
|
|
||||||
|
ifeval::[{RVZicfiss} == false]
|
||||||
|
{ohg-config}: The Zicfiss extension is not supported.
|
||||||
|
endif::[]
|
||||||
|
|
||||||
|
ifeval::[{RVZicfilp} == false]
|
||||||
|
{ohg-config}: The Zicfilp extension is not supported.
|
||||||
|
endif::[]
|
|
@ -1,5 +1,5 @@
|
||||||
[[vector-crypto]]
|
[[vector-crypto]]
|
||||||
== Cryptography Extensions: Vector Instructions, Version 1.0.0
|
== Cryptography Extensions: Vector Instructions, Version 1.0
|
||||||
|
|
||||||
ifeval::[{RVZvk} == false]
|
ifeval::[{RVZvk} == false]
|
||||||
{ohg-config}: These extensions are not supported.
|
{ohg-config}: These extensions are not supported.
|
||||||
|
|
6
docs/04_cv32a65x/riscv/src/zabha.adoc
Normal file
6
docs/04_cv32a65x/riscv/src/zabha.adoc
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
[[zabha]]
|
||||||
|
== "Zabha" Extension for Byte and Halfword Atomic Memory Operations, Version 1.0.0
|
||||||
|
|
||||||
|
ifeval::[{RVZabha} == false]
|
||||||
|
{ohg-config}: This extension is not supported.
|
||||||
|
endif::[]
|
File diff suppressed because one or more lines are too long
Loading…
Add table
Add a link
Reference in a new issue