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.
QEMU
- Home /
- CHERI Enabled Software /
- QEMU
Project Home: Reference spec dependent, see the Get Involved section.
Downloads & Documentation
| Fork Version | Based on Upstream Version | Target | Reference Spec | Download |
|---|---|---|---|---|
| HEAD 2026-01-08 | v7.0.0 2022-04-19 | aarch64c, riscv32c, riscv64c | CHERI RISC-V Draft 0.9.3 | Source |
| 0f0babd 2026-01-08 | v7.0.0 2022-04-19 | aarch64c, riscv32c, riscv64c | Morello, University of Cambridge ISAv9 | 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:
- CHERI-Alliance/qemu - 0.9.3 spec changes rebased onto CTSRD-CHERI/qemu
- CTSRD-CHERI/qemu - Support ISAv9 and morello
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.