Skip to content
This repository has been archived by the owner on Apr 27, 2023. It is now read-only.

LibraryKernel

Daniel Page edited this page Dec 20, 2019 · 1 revision
  • The libscarv library is a set of individual kernels; the associated implementation is housed in

    ${REPO_HOME}/src/libscarv/${KERNEL}

    and built by providing

    ${REPO_HOME}/src/libscarv/${KERNEL}/Makefile.in

    for the build system to include.

  • The directory housing a kernel implementation is structured per

    ${REPO_HOME}/src/libscarv/${KERNEL}
    ${REPO_HOME}/src/libscarv/${KERNEL}/native
    ${REPO_HOME}/src/libscarv/${KERNEL}/riscv
    ${REPO_HOME}/src/libscarv/${KERNEL}/riscv-xcrypto

    i.e., there are sub-directories for each target architecture. Note that:

    • The top-level directory for a given kernel (i.e., ${REPO_HOME}/src/libscarv/${KERNEL}) houses an architecture-agnostic implementation. This implementation may be either

      • incomplete, meaning it must be combined with supporting, architecture-specific functionality (i.e., cannot be used as a stand-alone kernel),
      • complete, meaning it may be combined with supporting, architecture-specific functionality (i.e., can be used as a stand-alone kernel).
    • If supporting, architecture-specific functionality is used, the target architecture (sub-)directory (i.e., ${REPO_HOME}/src/libscarv/${KERNEL}/${ARCH}) houses it.

    • Within a given target architecture (sub-)directory,

      • X_imp.S captures the architecture-specific implementation of some functionality X,
      • macro.S captures macros that support said implementation(s).
Clone this wiki locally