No description
Find a file
Matthew Brecknell b2ad98214d avoid passing extra_caps_t by value
The RISC-V calling convention specifies that when a C function takes an
argument by value, the binary function should take the argument by
reference, if the value is larger than 2 pointer words.

For binary verification, we avoid implementing this aspect of the RISC-V
calling convention, by eliminating all such function arguments for
functions which are not inlined.

In this commit, we remove `extra_caps_t` function arguments. This
primarily concerns invocation decode functions. Since `loookupExtraCaps`
already stores extra caps in a global `current_extra_caps`, this
essentially amounts to eliminating many redundant structure copy
operations.

On some execution paths involving IPC, the extra caps lookup may happen
twice: first in the invocation decode, and then for cap transfer in the
performance phase of the IPC operation. Because the two phases are
entirely distinct, there is no interference in the use of a common
global variable.

Even though we are primarily concerned with RISC-V, we remove
`extra_caps_t` arguments across all architectures.

Signed-off-by: Matthew Brecknell <Matthew.Brecknell@data61.csiro.au>
2021-03-19 11:29:51 +11:00
.github/workflows CI: Add a PR check to do a stand-alone kernel compilation (#236) 2020-08-11 16:22:04 +08:00
.reuse dep5 file for additional license information 2020-03-09 18:00:18 +08:00
configs CMake: fix comment with usage example 2021-03-03 11:47:23 +01:00
include avoid passing extra_caps_t by value 2021-03-19 11:29:51 +11:00
libsel4 Remove HAVE_AUTOCONF guard in sel4/config.h 2021-03-08 14:39:27 +11:00
LICENSES Revised kernel printf implementation 2020-05-19 13:16:20 +10:00
manual manual: Correct description of CNode addressing 2021-03-17 19:52:01 +00:00
src avoid passing extra_caps_t by value 2021-03-19 11:29:51 +11:00
tools RISC-V: Replace mentions of BBL with OpenSBI 2021-03-09 11:20:57 +11:00
.cmake-format.yaml SMMU: providing master control caps to root task 2020-10-28 17:30:42 +11:00
.gitignore Fix .gitignore patterns 2020-06-17 17:27:20 +08:00
.licenseignore update license information in README 2020-03-09 18:00:18 +08:00
CAVEATS-generic.md converted CAVEAT file content into .md 2020-03-11 20:20:09 +08:00
CAVEATS-ia32.md converted CAVEAT file content into .md 2020-03-11 20:20:09 +08:00
CHANGES Release 12.0.0 2020-11-06 18:29:45 +11:00
CMakeLists.txt riscv: Set compiler ABI for hardfloat builds 2020-08-26 14:21:35 +10:00
CODE_OF_CONDUCT.md add link to code of conduct 2020-04-01 17:23:36 +08:00
config.cmake Make kernel log buffer derived from cmake config 2020-11-10 16:24:43 +11:00
CONTRIBUTING.md contributing: link to TSC 2020-04-07 19:35:33 +10:00
CONTRIBUTORS.md update CONTRIBUTORS.md from repo 2020-03-10 15:30:11 +08:00
FindseL4.cmake Convert license tags to SPDX identifiers 2020-03-09 13:21:49 +08:00
gcc.cmake gcc.cmake Add additional RISCV toolchains 2020-04-07 18:57:35 +10:00
gdb-macros Convert license tags to SPDX identifiers 2020-03-09 13:21:49 +08:00
LICENSE.md extract license remark into own file 2020-04-01 16:25:27 +08:00
llvm.cmake riscv: Enable clang 2020-08-26 14:21:35 +10:00
README.md README.md: update links to mailinglists 2020-11-23 05:14:20 +01:00
VERSION Update VERSION file to 12.0.0-dev 2020-11-06 18:29:45 +11:00

The seL4 microkernel

This project contains the source code of seL4 microkernel.

For details about the seL4 microkernel, including details about its formal correctness proof, please see the sel4.systems website and associated FAQ.

DOIs for citing recent releases of this repository:

  • DOI

We welcome contributions to seL4. Please see the website for information on how to contribute.

This repository is usually not used in isolation, but as part of the build system in a larger project.

seL4 Basics

Community

Manual

A hosted version of the manual for the most recent release can be found here.

A web version of the API can be found here

Repository Overview

  • include and src: C and ASM source code of seL4
  • tools: build tools
  • libsel4: C bindings for the seL4 ABI
  • manual: LaTeX sources of the seL4 reference manual

Build Instructions

See the seL4 website for build instructions.

Status

A list of releases and current project status can be found under seL4 releases.