Commit Graph

3927 Commits

Author SHA1 Message Date
Gerwin Klein dd8032ffad spdx: provide dep5 file with license information
* The information in the dep5 files covers all files in this repository that
   for some reason don't or can't have inline SPDX license tags.
 * Missing license texts mentioned here added to LICENSES/
2020-03-16 14:19:15 +08:00
Gerwin Klein 1448882cd9 camkes: remove NICTA logo
The logo can't be provided under an OSS license.
2020-03-16 14:19:15 +08:00
Gerwin Klein 8d1ec3e324 license: SMLNJ and MLTON licenses moved to LICENSES/
The MLton license is now HPND (see also http://mlton.org/License)
2020-03-16 14:19:15 +08:00
Gerwin Klein 695849ccbd license: provide full license texts in LICENSES/ 2020-03-16 14:19:15 +08:00
Gerwin Klein f518bfe4f9 update contributors file from git logs 2020-03-14 09:42:07 +08:00
Gerwin Klein a5c7c91192 haskell: review copyright in src/SEL4/Kernel/Hypervisor/ 2020-03-13 14:38:47 +08:00
Gerwin Klein 2f32deb44a asmrefine: review license for $ARCH/ArchSetup.thy 2020-03-13 14:38:47 +08:00
Gerwin Klein a424d55e3e licenses: convert license tags to SPDX 2020-03-13 14:38:24 +08:00
Gerwin Klein 8d12d8e4be licenses: tag .md and document file 2020-03-02 18:52:15 +08:00
Corey Lewis 170e8109ec lib: refactor crunch warning messages to handle functions with multiple patterns
Crunch would print spurious warning messages when using a rule with multiple
premises. By default, crunch generates a rule like that when applied to
functions with multiple non-trivial patterns.
2020-02-28 13:46:25 +11:00
Matthew Brecknell 65074bc35d c-kernel: add Makefile targets useful for binary verification
- Add Makefile targets for building ELF binaries and various dumps that
  are used in binary verification.

- Add support for extra CMake command-line arguments. For binary
  verification, this is used to set the optimisation level for the ELF
  targets.

- Add support for the Debian RISC-V toolchain packages, without breaking
  existing users with a manually built RISC-V toolchain.

- Move reusable parts of the C kernel Makefile out to a separate include
  file, with support for configuring the build directory. For binary
  verification, this is used to allow multiple builds at different
  optimisation levels.
2020-02-26 16:22:40 +11:00
Victor Phan 966734c69b Collect abstract lemmas in Refine
Create ArchMove_R.thy for transporting arch specific lemmas (and generic
lemmas that are used somewhat specifically by one architecture) to theory
files before Refine.

Create Move_R.thy as an arch generic Refine theory file for transporting
generic lemmas to theory files before Refine.

Also delete some lemmas that have existed earlier already or are not
needed.

Rename Move.thy in CRefine to Move_C.thy for consistency.
2020-02-21 11:49:25 +11:00
Rafal Kolanski f9ea44ef89 arm-hyp: update spec+proofs for multi-VM support
Highlights:
- new reserved IRQ and associated handler: VPPIEvent
- VPPI events are virtual interrupts we can forward to VMs; currently there is
  only one event: virtual timer interrupt
- VGICMaintenance and VPPIEvent can both receive late interrupts from hardware,
  which are now discarded instead of being delivered to current thread
- given only one possible VPPI event, simplifier tends to mop up more than it
  should, making some proofs fragile w.r.t. adding a new VPPI event
- the order of some lemmas/specs needed shuffling, as now VCPU code needs some
  interrupt code, which uses VCPU code
2020-02-19 10:52:07 +11:00
Rafal Kolanski 504565e57d haskell: translator: handle datatype Enum with one constructor
There is a special case for deriving Enum for datatypes with a single
constructor, but it should only fire when that constructor has exactly
one argument. Previously, one constructor with any other argument count
that one resulted in assertion failed.
2020-02-13 12:29:52 +11:00
Rafal Kolanski 8c42173a70 Word_Lib: add from_bool_eqI 2020-02-13 12:29:52 +11:00
Rafal Kolanski 327bed748d lib: migrate distinct_map_enum into Lib 2020-02-13 12:29:52 +11:00
Rafal Kolanski 88e6737337 lib: add corres_cases'
This version augments the schematic preconditions with the knowledge of
which case we are in. It should replace corres_cases eventually.
2020-02-13 12:29:52 +11:00
Zoltan Kocsis 788b4bd180 refactored irq_t structure (VER-1159) 2020-02-05 17:58:45 +11:00
Zoltan Kocsis 72064236cd word-lib: strengthen ucast_less_ucast 2020-02-05 17:50:45 +11:00
Zoltan Kocsis 43fc7e26d8 word-lib: add upward cast monotonicity lemmata 2020-02-03 16:53:43 +11:00
Victor Phan f2d1f5ada7 refine/crefine: convert crunch with multiple constants into crunches 2020-02-03 16:29:19 +11:00
Victor Phan 285c47f622 cleanup for crunch_ignore in refine and crefine for all arches
Several constants are are added to the top level crunch_ignore statement in
Bits_R.thy, then removed from individual crunch statements across Refine and
CRefine.
2020-02-03 16:29:18 +11:00
Gerwin Klein 430f2c525b crefine: invocation label proof updates 2020-02-03 12:56:19 +08:00
Gerwin Klein 54f557f2b2 refine: invocation label proof updates 2020-02-03 12:56:19 +08:00
Gerwin Klein 0ed60666e3 drefine: invocation label proof updates 2020-02-03 12:56:19 +08:00
Gerwin Klein 73e9503575 ainvs + infoflow: invocation label proof updates 2020-02-03 12:56:19 +08:00
Gerwin Klein f50985b448 abstract: use new invocation label enum 2020-02-03 12:56:19 +08:00
Gerwin Klein 700dab41aa design: generate new GenInvocationLabels type 2020-02-03 12:56:19 +08:00
Gerwin Klein 3a6ce53def haskell: remove invocationLabel triplication
We listed the invocation labels 3 times -- this commit removes the duplication
and instead derives the enum from the order the constructors are listed in.
2020-02-03 12:56:19 +08:00
Gerwin Klein 8356f303b6 haskell-translator: instance proofs for types without 0-arg constructors 2020-02-03 12:56:19 +08:00
Corey Lewis d21ea9da41 lib: reimplement crunch call stack feature so that it works when proofs fail.
This stopped working when crunch was changed to fork proofs.
2020-01-30 15:09:44 +11:00
Corey Lewis 5120e351b3 lib: improve wp tracing
When tracing wp can now print the instantiated version of the rules being used.
It also says which set each used rule is from.
2020-01-29 09:26:18 +11:00
Corey Lewis 7107f9abaf lib: implement instantiate_thm for Trace_Schematic_Insts
This is a function that instantiates a thm with the instantiations provided by
trace_schematic_insts.
2020-01-29 09:26:16 +11:00
Corey Lewis 9b9ae104fc lib: restructure the instantiations type of Trace_Schematic_Insts
This allows us to explicitly record the bound variables from the subgoal so that
they can be more easily handled. We also now drop binders when constructing typ
instantiations.
2020-01-29 09:26:15 +11:00
Edward Pierzchalski 68606b7c23 spec: refactor test dependencies.
Since test sets are recursive, we can clean up shared dependencies.
2020-01-22 15:13:53 +11:00
Edward Pierzchalski 2fec23d646 spec: factor out common `design-spec` task.
`ASpec`, `ExecSpec`, and `DSpec` were identical tests which built the
`design-spec` make target. This means that when `./run_tests` runs tests
concurrently, multiple instances of the `design-spec` make target were
also run concurrently.

We address the issue by making a new "test" called `design-spec` which
builds the `design-spec` make target, and making `{A,Exec,D}Spec`
dependees on `design-spec`.
2020-01-22 15:13:53 +11:00
Victor Phan ff6c0d8a0a Move vcpu_switch into Arch_switchToThread and update proofs
Currently the vcpu_switch function is called in the setVMRoot function
after possible early returns. In order to make sure the vcpu is
always switched, the call is moved into Arch_switchToThread before the
call to setVMRoot.
2020-01-20 16:53:32 +11:00
Edward Pierzchalski 050c192e0d asmrefine riscv: enable SimplExportAndRefine 2019-12-19 17:05:10 +11:00
Edward Pierzchalski 4a222d1189 asmrefine: add arch setup licenses 2019-12-19 17:05:10 +11:00
Edward Pierzchalski c1747628b1 asmrefine: Add support for 64-bit architectures. 2019-12-19 17:05:10 +11:00
Edward Pierzchalski 94513392ac asmrefine: remove unused lemmas. 2019-12-19 17:05:10 +11:00
Edward Pierzchalski 16f02df8b5 asmrefine: be more explicit when reporting results 2019-12-19 17:05:10 +11:00
Edward Pierzchalski b257ff60fd asmrefine: clean up SEL4GraphRefine
Consolidates ML setup code, adds some extra output.
2019-12-19 17:05:10 +11:00
Edward Pierzchalski 437ae807c2 asmrefine: improve debugging
Splits parts of step 4 of the SimplExport proof process, in order to
expose them to the test theory. Add some instructions on how to use
them.

Tags subgoals so that the user can identify which ones caused the
failure.

Consolidates ML setup code, and demarcates it to let uses ignore it.
2019-12-19 17:05:10 +11:00
Edward Pierzchalski d59ccc3fdf asmrefine: update tests
Includes some formatting changes.

Includes a comment explaining why `global_array_swap_gref` fails and is
commented out.
2019-12-19 17:05:10 +11:00
Edward Pierzchalski 708a62795e asmrefine: arch split CFunDump files
Now that asmrefine targets several arches, it's useful to separate out
any intermediate artefacts by L4V_ARCH. For instance, this lets us use
the same directory to test two arches at once.
2019-12-19 17:05:10 +11:00
Edward Pierzchalski 9ba1d498df asmrefine: remove globals_swap ref
Using a shared ref for configuration reduces the understandability of
code. It turns out the contents of the `globals_swap` ref:

1. Was always the same.
2. Was only used in one spot.
3. Could be recreated at that one spot.

So we do that instead.
2019-12-19 17:05:10 +11:00
Edward Pierzchalski b4242a3ae8 asmrefine: arch-split for machine word size.
Arch-split memory operations used when translating graph-lang.
2019-12-19 17:05:10 +11:00
Edward Pierzchalski 89a53c0818 asmrefine: add field offset rewrite rules.
Currently unused, but these are useful for debugging proofs in SEAR
about struct access updates.
2019-12-19 17:05:10 +11:00
Edward Pierzchalski b1940d750c asmrefine: ML style. 2019-12-19 17:05:10 +11:00