lh-l4v/spec/haskell
Rafal Kolanski 4a3d7a958c arm-hyp: update proofs for SELFOUR-584: running multiple VMs on ARM
As requested by verification, hypervisor registers are now an
enumeration-indexed array rather than individual fields. This cleans up
some of the proof. Additionally, we sweep some non-complexity under the
machine op rug: vcpu_hw_write/read_reg_ccorres is as deep as we go,
rather than specifying every operation and proving that
vcpu_hw_write seL4_VCPUReg_REG calls set_REG for every REG

I took this opportunity to clean up some arm-hyp definitions and proofs,
so some whitespace cleanup got tangled in.
2018-06-15 18:48:47 +10:00
..
include license-tool: missing license headers + .licenseignore [VER-551] 2016-07-14 16:34:31 +10:00
src arm-hyp: update proofs for SELFOUR-584: running multiple VMs on ARM 2018-06-15 18:48:47 +10:00
.gitignore haskell: retire literate Haskell PDF document 2018-05-24 10:44:35 +10:00
Makefile haskell: retire literate Haskell PDF document 2018-05-24 10:44:35 +10:00
README.md haskell: update documentation for building the Haskell kernel 2017-02-03 16:23:56 +11:00
SEL4.cabal haskell: integrate all architectures 2017-08-09 17:02:49 +10:00
Setup.hs haskell: unify arm and arm-hyp haskell files 2017-07-03 10:30:49 +10:00
check-newlines.sh haskell: add license tag to util script 2016-05-24 16:31:03 +10:00
configure haskell: move Haskell kernel into spec/ 2016-05-24 14:18:13 +10:00
mkhsboot.pl Removes all trailing whitespaces 2017-07-12 15:13:51 +10:00
stack-path haskell: use stack to obtain suitable GHC and cabal 2017-02-01 17:31:21 +11:00
stack.yaml haskell: use stack to obtain suitable GHC and cabal 2017-02-01 17:31:21 +11:00

README.md

The seL4 Haskell Model

The sources in this directory can be used to build a Haskell Cabal package containing an executable model of the seL4 kernel. The model cannot run stand-alone; it must be integrated into a simulator that can run user-level binaries and generate events that the kernel model can process.

To build it:

  • install the Haskell build tool stack.
  • run make

The Makefile will use stack to fetch appropriate versions of ghc and cabal-install.

After that, you can compile Haskell programs using the simulator by adding -package SEL4 to the ghc command line. Note that the qemu target requires some callback functions to be accessible via the FFI, so it is not possible to load a model compiled for those targets in GHCi.

Currently, the simulator interface is out of date, so this model is currently only useful as documentation and as intermediate artefact in the seL4 correctness proof. The model itself is kept up to date with the C code, only the simulator interface is outdated.