riscv / riscv-cheri

This repository contains the CHERI extension specification, adding hardware capabilities to RISC-V ISA to enable fine-grained memory protection and scalable compartmentalization.
https://jira.riscv.org/browse/RVG-148
Creative Commons Attribution 4.0 International
56 stars 29 forks source link
capabilities compartmentalization memory-safety

= RISC-V Specification for CHERI Extensions

This repository contains the CHERI extension specification, adding hardware capabilities to the RISC-V ISA to enable fine-grained memory protection and scalable compartmentalization.

The latest draft HTML version can be accessed at https://riscv.github.io/riscv-cheri and the latest PDF snapshot can be downloaded from https://github.com/riscv/riscv-cheri/releases.

== License

This work is licensed under a Creative Commons Attribution 4.0 International License (CC-BY-4.0). For details, see the link:LICENSE[LICENSE] file.

== Contributors

The list of contributors to this specification is maintained in the link:src/contributors.adoc[contributors] file.

For guidelines on how to contribute, refer to the link:CONTRIBUTING.md[CONTRIBUTING] file.

== Building the Document

=== Prerequisites

To build the document, you'll need the following tools installed on your system:

=== Cloning the Repository

git clone --recurse-submodules https://github.com/riscv/riscv-cheri.git

=== Building the Documentation

To start the build process, run:

cd ./riscv-cheri && make all

The link:Makefile[] script will check the availability of Docker on your system:

The documentation is generated from the AsciiDoctor source files in your project. The primary source file is specified by the HEADER_SOURCE variable in the Makefile.

The build process utilizes several options, including theming and font settings, and generates a PDF document as output.

=== Cleaning up

To clean up the generated files, run:

make clean

This will remove the generated PDF file.

== Enabling pre-commit checks locally The repository has some basic commit checks set up with https://pre-commit.com/[pre-commit] that will be enforced by the GitHub CI. To ensure these checks are also run in the local repository while making changes the following command can be run: [source,shell]

pip3 install pre-commit && pre-commit install

When enabling additional checks https://pre-commit.com/#plugins[by editing .pre-commit-config.yaml], it is recommended to run to newly added check on all files in the repository. This can be done with the following command: [source,shell]

pre-commit run --all-files