Commit Graph

1355 Commits

Author SHA1 Message Date
Thomas Sewell 0fa247199b SELFOUR-444: Repair InfoFlow. 2016-11-02 11:19:10 +11:00
Thomas Sewell f1d546db85 SELFOUR-444: Fix for rebase. 2016-11-02 11:19:10 +11:00
Thomas Sewell 86731939f2 SELFOUR-444: CRefine proof for preemptible retype. 2016-11-02 11:19:09 +11:00
Thomas Sewell dcd7fd8c17 SELFOUR-444: Refine proof with ghost invariant. 2016-11-02 11:19:09 +11:00
Thomas Sewell 9e7fb1daf0 SELFOUR-444: Structure of crefine.
Figured out how to pass the necessary assumptions about the region
being zeroed through the createNewObjects loop and resolve at
invokeUntyped_Retype. Still WIP.
2016-11-02 11:19:09 +11:00
Thomas Sewell 74adb7a283 SELFOUR-444: Avoid unnecessary cache clears.
Adjust both specs and propagate the changes.
2016-11-02 11:19:09 +11:00
Thomas Sewell edddf623ec ProveGraphRefine: Handle power operations w/sign.
Support some more kinds of power operations in the C code when
proving the export to Simpl is OK.
2016-11-02 11:19:09 +11:00
Thomas Sewell 0128e3b66d Handle another operation in SimplExport.
Handle pointer comparison operations in SimplExport.
2016-11-02 11:19:09 +11:00
Thomas Sewell 7ebefa69ab SELFOUR-444: Work on untyped zero invariant.
The invariant just proves that the ghost field is up to date.
2016-11-02 11:19:09 +11:00
Thomas Sewell 6ad456ca03 SELFOUR-444: Adjust Haskell, new ghost data.
The new ghost data is saved in the design spec when Untyped caps
are modified and will be used by CRefine.
2016-11-02 11:19:09 +11:00
Thomas Sewell a96346e308 SELFOUR-444: Finished InfoFlow and DRefine. 2016-11-02 11:19:09 +11:00
Thomas Sewell 69f7be9917 SELFOUR-444: Initial updates to capDL spec. 2016-11-02 11:19:09 +11:00
Thomas Sewell 411af12ee9 SELFOUR-444: Logic generalised; Access finished.
Tweak AInvs proof for Untyped to be more reusable, finish integrity
proofs.
2016-11-02 11:19:08 +11:00
Thomas Sewell d765a64b81 SELFOUR-444: Haskell implementation, begin refine.
First attempt at a haskell implementation of preemptible retyping
and the refinement proof to abstract.
2016-11-02 11:19:08 +11:00
Thomas Sewell 63888fa98d SELFOUR-444: AInvs proven for preemptible retype. 2016-11-02 11:19:08 +11:00
Thomas Sewell f32e2ca0f5 SELFOUR-444: Abstract implementation.
Abstract implementation of preemptible retyping.
2016-11-02 11:19:08 +11:00
Thomas Sewell b430709191 AddUpdSimps: An addition to Lib.
This is a work-in-progress tool for producing simp rules for functions on a
record that don't look at all the record's state. For instance, given a record
with fields a, b, c, and a function "f x = a x + b x", the tool should
automatically prove that "f (c_update f x) = f x".
2016-11-02 11:17:32 +11:00
Rafal Kolanski 00c5402b1a trivial: CRefine: handle SKIP introduced by SMP_COND_STATEMENT(); 2016-10-19 20:24:17 +11:00
Rafal Kolanski af40ad80e9 Verification support for PR #406: lazy VCPU switching for arm-hyp 2016-10-17 15:21:40 +11:00
Matthew Brecknell 0212696e60 VER-643: make regression compatible with psutil 4.1.0+
At version 4.1.0, the Python psutil package changed the way it reports
CPU times for processes. This commit ensures that regression tests are
compatible with both old and new psutil APIs.
2016-10-07 09:23:20 +11:00
Thomas Sewell 9a28e3c777 Fix a bug with strengthen rules.
Adding optional tracing makes the bug clear; the subgoals of the
rules are attacked in the opposite order, so congruence-style rules
which introduce extra assumptions would have the (schematic)
assumptions unified out of order. Fixed.
2016-10-06 15:37:09 +11:00
Thomas Sewell 4b7965505f Fixes to WPC for multiple resolution.
WPC was written somewhat conservatively to raise exceptions if
something surprising happens. One surprising thing is multiple
higher-order resolution candidates, caused by such things as
a previous precondition of the form "?P x y None None". This isn't
really a problem, so a slight tweak should suppress the exception.
2016-10-05 12:11:43 +11:00
Matthew Brecknell a3714e8190 SELFOUR-276: Finish proofs for maximum controlled priority (MCP)
To finish the proof of refinement to C, the specification for checkPrio
needed strengthening: the checkPrio spec now takes a machine word
argument. In the spec, priorities are still stored as 8-bit quantities,
however. Once the spec was strenthened, it was possible to remove some
redundant checks and mask operations from the C code.

A thread's maximum controlled priority (MCP) determines the maximum
thread priority or MCP it can assign to another thread (or itself).
2016-10-05 02:43:41 +11:00
Joel Beeren b352769016 SELFOUR-276: Prove refinement to Haskell for MCP
Also includes fixes to specs and invariants, and initial progress
towards C refinement.

A thread's maximum controlled priority (MCP) determines the maximum
thread priority or MCP it can assign to another thread (or itself).
2016-10-05 02:43:41 +11:00
Sophie Taylor 20539620f9 SELFOUR-276: Add MCP to specs and invariants
A thread's maximum controlled priority (MCP) determines the maximum
thread priority or MCP it can assign to another thread (or itself).
2016-10-05 02:43:41 +11:00
Matthew Brecknell 31f47e477e clib: ccorres_rewrite rules for trivial guards and conditionals 2016-10-05 02:43:41 +11:00
Matthew Brecknell 92148ce8e7 Word_Lib: lemmas comparing different word sizes 2016-10-05 02:43:41 +11:00
Matthew Brecknell 569cd2822e thydeps: support Perl version 5.24
Perl version 5.24 no longer allows use of $_ as a lexical variable.
2016-10-04 12:04:36 +11:00
Xin Gao 00f64879de Merge pull request #110 in SEL4/l4v from SELFOUR-421-rebased to master
* commit '8d4a8eb238090999b4b41f588d5fa63453d58ae8':
  SELFOUR-421: fix coding style
  SELFOUR-421: fix drefine
  SELFOUR-421: add device bit in UntypedCap and FrameCap in capdl
  SELFOUR-421: infoflow and infoflow_c builds
  SELFOUR-421: crefine builds
  SELFOUR-421: commit before change abstract again
  SELFOUR-421: fix refine
  SELFOUR-421: a defend version before wild changes
  SELFOUR-421: new haskell spec after UserDataDevice changes
  SELFOUR-421: broken crefine after conversation with gerwin
  SELFOUR-421: up to VSpace_C done
  SELFOUR-421: temp work in CSpace_C
  SELFOUR-421: fixed Refine after merge with master
  SELFOUR-421: retranslate haskell after merge with master
  SELFOUR-421: random uncommitted stuff before merge
  SELFOUR-421: retranslate haskell for fixed range check
  SELFOUR-421: refine done
  SELFOUR-421: added check to decoding asid control invocations and stole an asid bit from the high bits not the low ones
  SELFOUR-421: AInvs done, no added invariants yet
  SELFOUR-421: first attempt at abstract spec
2016-09-23 04:17:09 +00:00
Xin,Gao 8d4a8eb238 SELFOUR-421: fix coding style 2016-09-22 19:23:28 +10:00
Xin,Gao 8f3a4dee31 SELFOUR-421: merge with master, fix wholesystem proofs 2016-09-22 19:23:19 +10:00
Xin,Gao 113315d9a6 SELFOUR-421: merge and fix up to ArmConfidentiality proof 2016-09-22 19:21:56 +10:00
Xin,Gao 56dff5a787 SELFOUR-421: fix drefine 2016-09-22 19:11:37 +10:00
Xin,Gao e00e4c4e64 SELFOUR-421: add device bit in UntypedCap and FrameCap in capdl 2016-09-22 19:11:37 +10:00
Xin,Gao 252ce8df4c SELFOUR-421: infoflow and infoflow_c builds 2016-09-22 19:11:37 +10:00
Xin,Gao 328846ee1a SELFOUR-421: crefine builds 2016-09-22 19:11:37 +10:00
Xin,Gao ba03caf644 SELFOUR-421: commit before change abstract again 2016-09-22 19:11:37 +10:00
Xin,Gao 7784e80940 SELFOUR-421: fix refine 2016-09-22 19:11:36 +10:00
Xin,Gao c3be923ca0 SELFOUR-421: a defend version before wild changes 2016-09-22 19:11:36 +10:00
Joel Beeren ec57875566 SELFOUR-421: new haskell spec after UserDataDevice changes 2016-09-22 19:11:36 +10:00
Joel Beeren 99a4c5380c SELFOUR-421: broken crefine after conversation with gerwin 2016-09-22 19:11:36 +10:00
Joel Beeren 5cac23733b SELFOUR-421: up to VSpace_C done 2016-09-22 19:11:36 +10:00
Joel Beeren 1ef5bdf681 SELFOUR-421: temp work in CSpace_C 2016-09-22 19:11:36 +10:00
Joel Beeren 765d8aa88e SELFOUR-421: fixed Refine after merge with master 2016-09-22 19:11:36 +10:00
Joel Beeren 78bd770240 SELFOUR-421: retranslate haskell after merge with master 2016-09-22 19:11:36 +10:00
Joel Beeren 9617e22ce6 SELFOUR-421: random uncommitted stuff before merge 2016-09-22 19:11:36 +10:00
Joel Beeren 773684bcd1 SELFOUR-421: retranslate haskell for fixed range check 2016-09-22 19:11:36 +10:00
Joel Beeren df877769fc SELFOUR-421: refine done 2016-09-22 19:11:36 +10:00
Joel Beeren 0d787cf1c6 SELFOUR-421: added check to decoding asid control invocations and stole an asid bit from the high bits not the low ones 2016-09-22 19:11:36 +10:00
Joel Beeren 3c223b42fe SELFOUR-421: AInvs done, no added invariants yet 2016-09-22 19:11:29 +10:00