QEMU is a versatile open-source emulator and virtualiser. By emulating popular CPU architectures like Arm and RISC-V, it allows guest operating systems and applications to run on any host hardware. For CHERI, this provides a critical sandbox for system testing and software development without the need for physical silicon.

Project Home: Reference spec dependent, see the Get Involved section.

Downloads & Documentation

Fork VersionBased on Upstream VersionTargetReference SpecDownload
HEAD
2026-01-08
v7.0.0
2022-04-19
aarch64c, riscv32c, riscv64cCHERI RISC-V Draft 0.9.3Source
0f0babd
2026-01-08
v7.0.0
2022-04-19
aarch64c, riscv32c, riscv64cMorello, University of Cambridge ISAv9Source
There are no pre-built binaries or versioned releases yet, users must build from source.

Project Status

Towards the end of 2025, the work Codasip contributed to the QEMU project for supporting the 0.9.3 draft spec were rebased ontop of the CTSRD-CHERI/qemu. The main branch of this repo is now pushed as the reference implementation for the 0.9.3 specification, and will soon be tagged as work moves onto supporting the 0.9.6 spec (both versions will not be simultaneously supported).

Whilst contribution guidelines for this project are yet to be published, the intention will be to keep both the CHERI-Alliance/qemu and the CTSRD-CHERI/qemu repositories in sync where possible. There is a potential mid-term goal of a CHERI ISA v10 based on the standard RVY, which may include the current experimental instructions and features that did not make it into the spec. Although what this looks like is yet to be decided.

Building from Source

To build CHERI-Alliance/qemu from source directly:

# Install Dependencies
sudo apt install pkg-config libglib2.0-dev libpixman-1-dev python3-setuptools
# Clone the repo
git clone https://github.com/CHERI-Alliance/qemu.git
cd qemu
# Set a variable of where we will install qemu to
export QEMU_CHERI_INSTALL_DIR="/opt/qemu" 
mkdir build && cd build
../configure 
    --prefix=${QEMU_CHERI_INSTALL_DIR}/install \
    --target-list="riscv32xcheri-softmmu riscv64xcheri-softmmu" \
    --disable-gtk --audio-drv-list="" --disable-brlapi --disable-libiscsi \
    --disable-libnfs --disable-rbd --disable-sdl --disable-snappy \
    --disable-vnc --disable-vnc-jpeg --disable-vnc-sasl --disable-l2tpv3 \
    --disable-oss --disable-alsa --disable-tpm --disable-werror --meson=git
# Build
ninja
ninja install

For building CTSRD-CHERI/CHERI-qemu it is recommended to use CTSRD-CHERI/cheribuild script. Please see the cheribuild repo for full usage, but to build qemu with support for riscv32c, riscv64c and morello:

./cheribuild.py qemu

This will install to $HOME/cheri/output/sdk/bin/qemu-system-<arch>

Get Involved

Development for this project happens in the following places:

Support is generally discussed in the CHERI CPU Slack in the #qemu channel.

The CHERI Alliance QEMU working group hold regular meetings

Something missing, incorrect?

This page was last updated on 27th January 2026. Please let us know of any corrections via support@thecapablehub.org, alternatively raise a GitHub pull request in our repo.