2020-03-09 06:18:30 +00:00
|
|
|
<!--
|
|
|
|
Copyright 2020, Data61, CSIRO (ABN 41 687 119 230)
|
|
|
|
|
2020-03-14 12:13:16 +00:00
|
|
|
SPDX-License-Identifier: CC-BY-SA-4.0
|
2020-03-09 06:18:30 +00:00
|
|
|
-->
|
2020-03-02 08:20:30 +00:00
|
|
|
|
2014-07-28 01:59:57 +00:00
|
|
|
CapDL User-level system initialiser
|
|
|
|
===================================
|
2014-07-26 02:28:38 +00:00
|
|
|
|
2014-07-28 01:59:57 +00:00
|
|
|
This contains a formalised algorithm and the proof of correctness of
|
|
|
|
a user-level system initialiser that uses [capDL](../spec/capDL/) to
|
|
|
|
specify the state of the resultant system.
|
2014-07-26 02:28:38 +00:00
|
|
|
|
2020-08-08 13:00:53 +00:00
|
|
|
It builds on the [CapDL API Proofs](../proof/capDL-api/), and uses
|
|
|
|
a [separation logic defined for capDL](../proof/sep-capDL/).
|
2014-07-26 02:28:38 +00:00
|
|
|
|
2014-07-28 01:59:57 +00:00
|
|
|
The system initialiser and the proof are described in the
|
|
|
|
[ICFEM '13 paper][Boyton_13] and Andrew Boyton's PhD thesis.
|
2014-07-26 02:28:38 +00:00
|
|
|
|
2021-08-25 00:50:38 +00:00
|
|
|
[Boyton_13]: https://trustworthy.systems/publications/nictaabstracts/Boyton_ABFGGKLS_13.abstract "Formally Verified System Initialisation"
|
2014-07-26 02:28:38 +00:00
|
|
|
|
2014-07-28 01:59:57 +00:00
|
|
|
Building
|
|
|
|
--------
|
2014-07-26 02:28:38 +00:00
|
|
|
|
2023-03-30 02:59:18 +00:00
|
|
|
To build from the `l4v/` directory for the ARM architecture, run:
|
2014-07-26 02:28:38 +00:00
|
|
|
|
2023-03-30 02:59:18 +00:00
|
|
|
L4V_ARCH=ARM ./run_tests SysInit
|
2014-07-28 01:59:57 +00:00
|
|
|
|
2014-07-26 02:28:38 +00:00
|
|
|
To build the example capDL specifications, from the `l4v/` directory, run:
|
|
|
|
|
2023-03-30 02:59:18 +00:00
|
|
|
L4V_ARCH=ARM ./run_tests SysInitExamples
|
2014-07-26 02:28:38 +00:00
|
|
|
|
|
|
|
|
2014-07-28 01:59:57 +00:00
|
|
|
Important Theories
|
|
|
|
------------------
|
2014-07-26 02:28:38 +00:00
|
|
|
|
|
|
|
* The specification for the algorithm of the system initialiser is in
|
|
|
|
[`SysInit_SI`](SysInit_SI.thy).
|
|
|
|
|
2014-07-28 01:59:57 +00:00
|
|
|
* The top-level statement of the correctness of the system-initialiser
|
|
|
|
is found in [`Proof_SI`](Proof_SI.thy).
|
2014-07-26 02:28:38 +00:00
|
|
|
|
2014-07-28 01:59:57 +00:00
|
|
|
* The definition of what it means for an object to be initialised
|
|
|
|
(`object_initialised` and (`irq_initialised`) is found in
|
|
|
|
[`ObjectInitialised_SI`](ObjectInitialised_SI.thy).
|
2014-07-26 02:28:38 +00:00
|
|
|
|
2014-07-28 01:59:57 +00:00
|
|
|
* Only "well-formed" capDL specifications can be initialised. The
|
|
|
|
definition of well-formed is located in
|
|
|
|
[`WellFormed_SI`](WellFormed_SI.thy).
|
2014-07-26 02:28:38 +00:00
|
|
|
|
|
|
|
* Two example capDL specifications that are "well-formed" are found in
|
2020-10-23 04:27:35 +00:00
|
|
|
[`ExampleSpec_SI`](examples/ExampleSpec_SI.thy) and
|
|
|
|
[`ExampleSpecIRQ_SI`](examples/ExampleSpecIRQ_SI.thy). The former is a simple
|
2014-07-28 01:59:57 +00:00
|
|
|
capDL spec, and the latter a more complicated specifications with IRQ
|
|
|
|
support.
|
2014-07-26 02:28:38 +00:00
|
|
|
|