Skip to content

riscv-software-src/riscv-pk

Folders and files

NameName
Last commit message
Last commit date
Nov 1, 2020
Jul 9, 2018
Sep 26, 2024
Feb 5, 2025
Nov 17, 2023
Sep 17, 2018
Feb 7, 2022
Aug 2, 2017
Apr 20, 2013
Jul 9, 2018
Jul 10, 2018
May 16, 2023
Sep 9, 2024
Jul 9, 2018
Feb 3, 2020
Jan 5, 2023
Apr 20, 2022

Repository files navigation

RISC-V Proxy Kernel and Boot Loader

About

The RISC-V Proxy Kernel, pk, is a lightweight application execution environment that can host statically-linked RISC-V ELF binaries. It is designed to support tethered RISC-V implementations with limited I/O capability and thus handles I/O-related system calls by proxying them to a host computer.

This package also contains the Berkeley Boot Loader, bbl, which is a supervisor execution environment for tethered RISC-V systems. It is designed to host the RISC-V Linux port.

Build Steps

We assume that the RISCV environment variable is set to the RISC-V tools install path, and that the riscv-gnu-toolchain package is installed. Please note that building the binaries directly inside the source directory is not supported; you need to use a separate build directory.

$ mkdir build
$ cd build
$ ../configure --prefix=$RISCV --host=riscv64-unknown-elf
$ make
$ make install

Alternatively, the GNU/Linux toolchain may be used to build this package, by setting --host=riscv64-unknown-linux-gnu.

By default, 64-bit (RV64) versions of pk and bbl are built. To built 32-bit (RV32) versions, supply a --with-arch=rv32i_zicsr_zifencei flag to the configure command. To process RVC binaries, supply a --with-arch=rv32ic_zicsr_zifencei flag, because the emulation code (floating point and miss-aligned load and store) is different in the RVC case.

The install step installs 64-bit build products into a directory matching your host (e.g. $RISCV/riscv64-unknown-elf). 32-bit versions are installed into a directory matching a 32-bit version of your host (e.g. $RISCV/riscv32-unknown-elf).

OpenBSD Build Steps

Install the riscv-gnu-toolchain, and follow generic build steps.

# pkg_add riscv-elf-binutils riscv-elf-gcc riscv-elf-newlib