aboutsummaryrefslogtreecommitdiff
path: root/src/priv-preface.adoc
diff options
context:
space:
mode:
Diffstat (limited to 'src/priv-preface.adoc')
-rw-r--r--src/priv-preface.adoc598
1 files changed, 598 insertions, 0 deletions
diff --git a/src/priv-preface.adoc b/src/priv-preface.adoc
new file mode 100644
index 0000000..22536de
--- /dev/null
+++ b/src/priv-preface.adoc
@@ -0,0 +1,598 @@
+[colophon]
+== Preface
+
+This document describes the RISC-V privileged architecture.
+It contains the following versions of the RISC-V ISA modules,
+all of which have been ratified:
+
+[%autowidth,float="center",align="center",cols="^,<",options="header",]
+|===
+|Module |Version
+|*Machine ISA* +
+*Smstateen Extension* +
+*Smcsrind/Sscsrind Extension* +
+*Smepmp Extension* +
+*Smcntrpmf Extension* +
+*Smrnmi Extension* +
+*Smcdeleg Extension* +
+*Smdbltrp Extension* +
+*Smctr Extension* +
+*Supervisor ISA* +
+*Svade Extension* +
+*Svnapot Extension* +
+*Svpbmt Extension* +
+*Svinval Extension* +
+*Svadu Extension* +
+*Svvptc Extension* +
+*Ssqosid Extension* +
+*Sstc Extension* +
+*Sscofpmf Extension* +
+*Ssdbltrp Extension* +
+*Ssqosid Extension* +
+*Hypervisor ISA* +
+*Shlcofideleg Extension* +
+*Svvptc Extension* +
+*Pointer-Masking Extensions* +
+*Svrsw60t59b Extension*
+
+|*1.13* +
+*1.0* +
+*1.0* +
+*1.0* +
+*1.0* +
+*1.0* +
+*1.0* +
+*1.0* +
+*1.0* +
+*1.13* +
+*1.0* +
+*1.0* +
+*1.0* +
+*1.0* +
+*1.0* +
+*1.0* +
+*1.0* +
+*1.0* +
+*1.0* +
+*1.0* +
+*1.0* +
+*1.0* +
+*1.0* +
+*1.0* +
+*1.0* +
+*1.0*
+|===
+
+The following changes have been made since version 20250508:
+
+* Addition of the Svrsw60t59b extension for additional PTE reserved-for-software bits.
+
+// Had to make the above a level 1 heading (two equals signs) to avoid error when building
+// the ISA manual as a book with other "parts". This is opposite to what the adoc says to do
+// but otherwise asciidoctor creates the error message:
+//
+// asciidoctor: ERROR: ext/riscv-isa-manual/src/priv-preface.adoc: line 2: invalid part, must have at least one section (e.g., chapter, appendix, etc.)
+//
+// See asciidoctor doc which seems wrong: https://docs.asciidoctor.org/asciidoc/latest/sections/colophon/
+[.big]*_Preface to Version 20250508_*
+
+This document describes the RISC-V privileged architecture.
+
+The ISA modules marked *Ratified* have been ratified at this time. The
+modules marked _Frozen_ are not expected to change significantly before
+being put up for ratification. The modules marked _Draft_ are expected
+to change before ratification.
+
+The document contains the following versions of the RISC-V ISA modules:
+
+[%autowidth,float="center",align="center",cols="^,<,^",options="header",]
+|===
+|Module |Version |Status
+|*Machine ISA* +
+*Smstateen Extension* +
+*Smcsrind/Sscsrind Extension* +
+*Smepmp Extension* +
+*Smcntrpmf Extension* +
+*Smrnmi Extension* +
+*Smcdeleg Extension* +
+*Smdbltrp Extension* +
+*Smctr Extension* +
+*Supervisor ISA* +
+*Svade Extension* +
+*Svnapot Extension* +
+*Svpbmt Extension* +
+*Svinval Extension* +
+*Svadu Extension* +
+*Svvptc Extension* +
+*Ssqosid Extension* +
+*Sstc Extension* +
+*Sscofpmf Extension* +
+*Ssdbltrp Extension* +
+*Ssqosid Extension* +
+*Hypervisor ISA* +
+*Shlcofideleg Extension* +
+*Svvptc Extension* +
+*Pointer-Masking Extensions*
+
+|*1.13* +
+*1.0* +
+*1.0* +
+*1.0* +
+*1.0* +
+*1.0* +
+*1.0* +
+*1.0* +
+*1.0* +
+*1.13* +
+*1.0* +
+*1.0* +
+*1.0* +
+*1.0* +
+*1.0* +
+*1.0* +
+*1.0* +
+*1.0* +
+*1.0* +
+*1.0* +
+*1.0* +
+*1.0* +
+*1.0* +
+*1.0* +
+*1.0*
+
+|*Ratified* +
+*Ratified* +
+*Ratified* +
+*Ratified* +
+*Ratified* +
+*Ratified* +
+*Ratified* +
+*Ratified* +
+*Ratified* +
+*Ratified* +
+*Ratified* +
+*Ratified* +
+*Ratified* +
+*Ratified* +
+*Ratified* +
+*Ratified* +
+*Ratified* +
+*Ratified* +
+*Ratified* +
+*Ratified* +
+*Ratified* +
+*Ratified* +
+*Ratified* +
+*Ratified* +
+*Ratified*
+|===
+
+The following changes have been made since version 20241101:
+
+* Addition of the Smctr Control Transfer Records extension.
+* Addition of the Svvptc Extension for Obviating Memory-Management Instructions after Marking PTEs Valid.
+* Addition of the Ssqosid Extension for Quality-of-Service Identifiers.
+* Addition of the Pointer-Masking Extensions.
+
+[.big]*_Preface to Version 20241101_*
+
+This document describes the RISC-V privileged architecture.
+
+The ISA modules marked *Ratified* have been ratified at this time. The
+modules marked _Frozen_ are not expected to change significantly before
+being put up for ratification. The modules marked _Draft_ are expected
+to change before ratification.
+
+The document contains the following versions of the RISC-V ISA modules:
+
+[%autowidth,float="center",align="center",cols="^,<,^",options="header",]
+|===
+|Module |Version |Status
+|*Machine ISA* +
+*Smstateen Extension* +
+*Smcsrind/Sscsrind Extension* +
+*Smepmp Extension* +
+*Smcntrpmf Extension* +
+*Smrnmi Extension* +
+*Smcdeleg Extension* +
+*Smdbltrp Extension* +
+*Supervisor ISA* +
+*Svade Extension* +
+*Svnapot Extension* +
+*Svpbmt Extension* +
+*Svinval Extension* +
+*Svadu Extension* +
+*Sstc Extension* +
+*Sscofpmf Extension* +
+*Ssdbltrp Extension* +
+*Ssqosid Extension* +
+*Hypervisor ISA* +
+*Shlcofideleg Extension* +
+*Svvptc Extension*
+
+|*1.13* +
+*1.0* +
+*1.0* +
+*1.0* +
+*1.0* +
+*1.0* +
+*1.0* +
+*1.0* +
+*1.13* +
+*1.0* +
+*1.0* +
+*1.0* +
+*1.0* +
+*1.0* +
+*1.0* +
+*1.0* +
+*1.0* +
+*1.0* +
+*1.0* +
+*1.0* +
+*1.0*
+
+|*Ratified* +
+*Ratified* +
+*Ratified* +
+*Ratified* +
+*Ratified* +
+*Ratified* +
+*Ratified* +
+*Ratified* +
+*Ratified* +
+*Ratified* +
+*Ratified* +
+*Ratified* +
+*Ratified* +
+*Ratified* +
+*Ratified* +
+*Ratified* +
+*Ratified* +
+*Ratified* +
+*Ratified* +
+*Ratified* +
+*Ratified*
+|===
+
+[.big]*_Preface to Version 20241017_*
+
+This document describes the RISC-V privileged architecture. This
+release, version 20241017, contains the following versions of the RISC-V ISA
+modules:
+
+[%autowidth,float="center",align="center",cols="^,<,^",options="header",]
+|===
+|Module |Version |Status
+|*Machine ISA* +
+*Smstateen Extension* +
+*Smcsrind/Sscsrind Extension* +
+*Smepmp* +
+*Smcntrpmf* +
+*Smrnmi Extension* +
+*Smcdeleg* +
+*Smdbltrp* +
+*Supervisor ISA* +
+*Svade Extension* +
+*Svnapot Extension* +
+*Svpbmt Extension* +
+*Svinval Extension* +
+*Svadu Extension* +
+*Sstc* +
+*Sscofpmf* +
+*Ssdbltrp* +
+*Hypervisor ISA* +
+*Shlcofideleg* +
+*Svvptc*
+
+|*1.13* +
+*1.0* +
+*1.0* +
+*1.0* +
+*1.0* +
+*1.0* +
+*1.0* +
+*1.0* +
+*1.13* +
+*1.0* +
+*1.0* +
+*1.0* +
+*1.0* +
+*1.0* +
+*1.0* +
+*1.0* +
+*1.0* +
+*1.0* +
+*1.0* +
+*1.0*
+
+|*Ratified* +
+*Ratified* +
+*Ratified* +
+*Ratified* +
+*Ratified* +
+*Ratified* +
+*Ratified* +
+*Ratified* +
+*Ratified* +
+*Ratified* +
+*Ratified* +
+*Ratified* +
+*Ratified* +
+*Ratified* +
+*Ratified* +
+*Ratified* +
+*Ratified* +
+*Ratified* +
+*Ratified* +
+*Ratified*
+|===
+
+The following changes have been made since version 1.12 of the Machine and
+Supervisor ISAs, which, while not strictly backwards compatible, are not
+anticipated to cause software portability problems in practice:
+
+* Redefined `misa`.MXL to be read-only, making MXLEN a constant.
+* Added the constraint that SXLEN{ge}UXLEN.
+
+Additionally, the following compatible changes have been
+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
+implemented.
+* Defined the RV32-only `medelegh` and `hedelegh` CSRs.
+* Defined the misaligned atomicity granule PMA, superseding the proposed Zam
+ extension.
+* Allocated interrupt 13 for Sscofpmf LCOFI interrupt.
+* Defined hardware-error and software-check exception codes.
+* Specified synchronization requirements when changing the PBMTE and ADUE fields
+in `menvcfg` and `henvcfg`.
+* Exposed count-overflow interrupts to VS-mode via the Shlcofideleg extension.
+* Relaxed behavior of some HINTs when MXLEN > XLEN.
+* Defined the format of the memory-mapped `msip` registers.
+
+Finally, the following clarifications and document improvements have been made
+since the last document release:
+
+* Transliterated the document from LaTeX into AsciiDoc.
+* Included all ratified extensions through March 2024.
+* Clarified that "platform- or custom-use" interrupts are actually
+"platform-use interrupts", where the platform can choose to make some custom.
+* Clarified semantics of explicit accesses to CSRs wider than XLEN bits.
+* Clarified that MXLEN{ge}SXLEN.
+* Clarified that WFI is not a HINT instruction.
+* Clarified that VS-stage page-table accesses set G-stage A/D bits.
+* Clarified ordering rules when PBMT=IO is used on main-memory regions.
+* Clarified ordering rules for hardware A/D bit updates.
+* Clarified that, for a given exception cause, `__x__tval` might sometimes
+be set to a nonzero value but sometimes not.
+* Clarified exception behavior of unimplemented or inaccessible CSRs.
+* Clarified that Svpbmt allows implementations to override additional PMAs.
+* Replaced the concept of vacant memory regions with inaccessible memory or I/O regions.
+* Clarified that timer and count-overflow interrupts' arrival in
+ interrupt-pending registers is not immediate.
+* Clarified that MXR affects only explicit memory accesses.
+
+[.big]*_Preface to Version 20211203_*
+
+This document describes the RISC-V privileged architecture. This
+release, version 20211203, contains the following versions of the RISC-V
+ISA modules:
+
+[%autowidth,float="center",align="center",cols="^,<,^",options="header",]
+|===
+|Module |Version |Status
+|*Machine ISA* +
+*Supervisor ISA* +
+*Svnapot Extension* +
+*Svpbmt Extension* +
+*Svinval Extension* +
+*Hypervisor ISA* +
+|*1.12* +
+*1.12* +
+*1.0* +
+*1.0* +
+*1.0* +
+*1.0* +
+|*Ratified* +
+*Ratified* +
+*Ratified* +
+*Ratified* +
+*Ratified* +
+*Ratified*
+|===
+
+The following changes have been made since version 1.11, which, while
+not strictly backwards compatible, are not anticipated to cause software
+portability problems in practice:
+
+* Changed MRET and SRET to clear `mstatus`.MPRV when leaving M-mode.
+* Reserved additional `satp` patterns for future use.
+* Stated that the `scause` Exception Code field must implement bits 4–0
+at minimum.
+* Relaxed I/O regions have been specified to follow RVWMO. The previous
+specification implied that PPO rules other than fences and
+acquire/release annotations did not apply.
+* Constrained the LR/SC reservation set size and shape when using
+page-based virtual memory.
+* PMP changes require an SFENCE.VMA on any hart that implements
+page-based virtual memory, even if VM is not currently enabled.
+* Allowed for speculative updates of page table entry A bits.
+* Clarify that if the address-translation algorithm non-speculatively
+reaches a PTE in which a bit reserved for future standard use is set, a
+page-fault exception must be raised.
+
+Additionally, the following compatible changes have been made since
+version 1.11:
+
+* Removed the N extension.
+* Defined the mandatory RV32-only CSR `mstatush`, which contains most of
+the same fields as the upper 32 bits of RV64’s `mstatus`.
+* Defined the mandatory CSR `mconfigptr`, which if nonzero contains the
+address of a configuration data structure.
+* Defined optional `mseccfg` and `mseccfgh` CSRs, which control the
+machine’s security configuration.
+* Defined `menvcfg`, `henvcfg`, and `senvcfg` CSRs (and RV32-only
+`menvcfgh` and `henvcfgh` CSRs), which control various characteristics
+of the execution environment.
+* Designated part of SYSTEM major opcode for custom use.
+* Permitted the unconditional delegation of less-privileged interrupts.
+* Added optional big-endian and bi-endian support.
+* Made priority of load/store/AMO address-misaligned exceptions
+implementation-defined relative to load/store/AMO page-fault and
+access-fault exceptions.
+* PMP reset values are now platform-defined.
+* An additional 48 optional PMP registers have been defined.
+* Slightly relaxed the atomicity requirement for A and D bit updates
+performed by the implementation.
+* Clarify the architectural behavior of address-translation caches
+* Added Sv57 and Sv57x4 address translation modes.
+* Software breakpoint exceptions are permitted to write either 0 or the
+`pc` to `__x__tval`.
+* Clarified that bare S-mode need not support the SFENCE.VMA
+instruction.
+* Specified relaxed constraints for implicit reads of non-idempotent
+regions.
+* Added the Svnapot Standard Extension, along with the N bit in Sv39,
+Sv48, and Sv57 PTEs.
+* Added the Svpbmt Standard Extension, along with the PBMT bits in Sv39,
+Sv48, and Sv57 PTEs.
+* Added the Svinval Standard Extension and associated instructions.
+
+Finally, the hypervisor architecture proposal has been extensively
+revised.
+
+[.big]*_Preface to Version 1.11_*
+
+This is version 1.11 of the RISC-V privileged architecture. The document
+contains the following versions of the RISC-V ISA modules:
+
+[%autowidth,float="center",align="center",cols="^,<,^",options="header",]
+|===
+|Module |Version |Status
+|*Machine ISA* +
+*Supervisor ISA* +
+_Hypervisor ISA_
+|*1.11* +
+*1.11* +
+_0.3_
+|*Ratified* +
+*Ratified* +
+_Draft_
+|===
+
+Changes from version 1.10 include:
+
+* Moved Machine and Supervisor spec to *Ratified* status.
+* Improvements to the description and commentary.
+* Added a draft proposal for a hypervisor extension.
+* Specified which interrupt sources are reserved for standard use.
+* Allocated some synchronous exception causes for custom use.
+* Specified the priority ordering of synchronous exceptions.
+* Added specification that xRET instructions may, but are not required
+to, clear LR reservations if A extension present.
+* The virtual-memory system no longer permits supervisor mode to execute
+instructions from user pages, regardless of the SUM setting.
+* Clarified that ASIDs are private to a hart, and added commentary about
+the possibility of a future global-ASID extension.
+* SFENCE.VMA semantics have been clarified.
+* Made the `mstatus`.MPP field *WARL*, rather than *WLRL*.
+* Made the unused `__x__ip` fields *WPRI*, rather than *WIRI*.
+* Made the unused `misa` fields *WARL*, rather than *WIRI*.
+* Made the unused `pmpaddr` and `pmpcfg` fields *WARL*, rather than *WIRI*.
+* Required all harts in a system to employ the same PTE-update scheme as
+each other.
+* Rectified an editing error that misdescribed the mechanism by which
+`mstatus.__x__IE` is written upon an exception.
+* Described scheme for emulating misaligned AMOs.
+* Specified the behavior of the `misa` and `__x__epc` registers in systems
+with variable IALIGN.
+* Specified the behavior of writing self-contradictory values to the
+`misa` register.
+* Defined the `mcountinhibit` CSR, which stops performance counters from
+incrementing to reduce energy consumption.
+* Specified semantics for PMP regions coarser than four bytes.
+* Specified contents of CSRs across XLEN modification.
+* Moved PLIC chapter into its own document.
+
+[.big]*_Preface to Version 1.10_*
+
+This is version 1.10 of the RISC-V privileged architecture proposal.
+Changes from version 1.9.1 include:
+
+* The previous version of this document was released under a Creative
+Commons Attribution 4.0 International License by the original authors,
+and this and future versions of this document will be released under the
+same license.
+* The explicit convention on shadow CSR addresses has been removed to
+reclaim CSR space. Shadow CSRs can still be added as needed.
+* The `mvendorid` register now contains the JEDEC code of the core
+provider as opposed to a code supplied by the Foundation. This avoids
+redundancy and offloads work from the Foundation.
+* The interrupt-enable stack discipline has been simplified.
+* An optional mechanism to change the base ISA used by supervisor and
+user modes has been added to the `mstatus` CSR, and the field previously
+called Base in `misa` has been renamed to `MXL` for consistency.
+* Clarified expected use of XS to summarize additional extension state
+status fields in `mstatus`.
+* Optional vectored interrupt support has been added to the `mtvec` and
+`stvec` CSRs.
+* The SEIP and UEIP bits in the `mip` CSR have been redefined to support
+software injection of external interrupts.
+* The `mbadaddr` register has been subsumed by a more general `mtval`
+register that can now capture bad instruction bits on an illegal-instruction
+fault to speed instruction emulation.
+* The machine-mode base-and-bounds translation and protection schemes
+have been removed from the specification as part of moving the virtual
+memory configuration to `sptbr` (now `satp`). Some of the motivation for
+the base and bound schemes are now covered by the PMP registers, but
+space remains available in `mstatus` to add these back at a later date
+if deemed useful.
+* In systems with only M-mode, or with both M-mode and U-mode but
+without U-mode trap support, the `medeleg` and `mideleg` registers now
+do not exist, whereas previously they returned zero.
+* Virtual-memory page faults now have `mcause` values distinct from
+physical-memory access faults. Page-fault exceptions can now be
+delegated to S-mode without delegating exceptions generated by PMA and
+PMP checks.
+* An optional physical-memory protection (PMP) scheme has been proposed.
+* The supervisor virtual memory configuration has been moved from the
+`mstatus` register to the `sptbr` register. Accordingly, the `sptbr`
+register has been renamed to `satp` (Supervisor Address Translation and
+Protection) to reflect its broadened role.
+* The SFENCE.VM instruction has been removed in favor of the improved
+SFENCE.VMA instruction.
+* The `mstatus` bit MXR has been exposed to S-mode via `sstatus`.
+* The polarity of the PUM bit in `sstatus` has been inverted to shorten
+code sequences involving MXR. The bit has been renamed to SUM.
+* Hardware management of page-table entry Accessed and Dirty bits has
+been made optional; simpler implementations may trap to software to set
+them.
+* The counter-enable scheme has changed, so that S-mode can control
+availability of counters to U-mode.
+* H-mode has been removed, as we are focusing on recursive
+virtualization support in S-mode. The encoding space has been reserved
+and may be repurposed at a later date.
+* A mechanism to improve virtualization performance by trapping S-mode
+virtual-memory management operations has been added.
+* The Supervisor Binary Interface (SBI) chapter has been removed, so
+that it can be maintained as a separate specification.
+
+[.big]*_Preface to Version 1.9.1_*
+
+This is version 1.9.1 of the RISC-V privileged architecture proposal.
+Changes from version 1.9 include:
+
+* Numerous additions and improvements to the commentary sections.
+* Change configuration string proposal to be use a search process that
+supports various formats including Device Tree String and flattened
+Device Tree.
+* Made `misa` optionally writable to support modifying base and
+supported ISA extensions. CSR address of `misa` changed.
+* Added description of debug mode and debug CSRs.
+* Added a hardware performance monitoring scheme. Simplified the
+handling of existing hardware counters, removing privileged versions of
+the counters and the corresponding delta registers.
+* Fixed description of SPIE in presence of user-level interrupts.