Commit Graph

56 Commits

Author SHA1 Message Date
Joel Beeren f728dd25e8 x64: Add IOPortControlCaps to control IO port allocation
The previous implementation of IOPortCaps has problems with revocability
and determining parency etc. This commit adds IOPortControlCaps which
behave identically to IRQControlCaps -- invoking the IOPortControlCap
allows one to create IOPortCaps with the supplied range.

There now exist invariants to show that there is only one
IOPortControlCap and that all IOPortCaps in the system do not overlap.
Furthermore there is a global record of which IO ports have been
allocated to prevent reissuing the same ports.
2018-04-19 05:27:06 +10:00
Miki Tanaka 55d50c7ba9 arm/arm_hyp ainvs: rename wellformed_arch_obj to arch_valid_obj 2017-08-18 09:49:11 +10:00
Miki Tanaka 6d8e917087 Remove valid_arch_objs
now that we have valid_vspace_objs to express validiy of
vspace objects, we do not need valid_arch_objs: we have
valid_objs to state the validity of non-vspace arch objects.
2017-08-17 22:44:23 +10:00
Matthew Brecknell 238e8b307e x64: merge master 2017-07-21 11:27:12 +10:00
Alejandro Gomez-Londono 796887d9b1 Removes all trailing whitespaces 2017-07-12 15:13:51 +10:00
Miki Tanaka 5e4df460e2 ainvs: adjust generic theories for ARM fix 2017-06-19 14:32:43 +10:00
Gerwin Klein abc195f170 arm-hyp ainvs: add valid_arch_tcb invariant (vcpu_at for tcb_vcpu) 2017-06-19 14:32:28 +10:00
Miki Tanaka 317b2b3ff2 arm-hyp invariants: new liveness definition
* the definition of liveness is extended for tcb/vcpu reference
* proved liveness related properties for dissociate_vcpu_tcb, prepare_thread_delete, etc.
2017-06-19 14:32:22 +10:00
Miki Tanaka 5cabf38229 arm-hyp invariants: fix arch_splitting/locales
* tcb_arch_ref: definition and invariants (to access obj_refs in tcb_arch in generic contexts)
* fixes related hyp_refs
2017-06-19 14:32:21 +10:00
Miki Tanaka 61dffdb6cc arm-hyp invariants: changes from rebase for ARM_HYP invariants 2017-06-19 14:32:20 +10:00
Miki Tanaka 1d4b6e934b arm-hyp invariants: updates for vcpu, alignments, valid_vspace_obj, wellformed_arch_obj, etc. 2017-06-19 14:32:20 +10:00
Miki Tanaka 26970ce865 arm-hyp invariants: symrefs for hypervisor
introducing hyp_sym_refs (vcpu/tcb symref) related definitions + proof updates
2017-06-19 14:32:20 +10:00
Matthew Brecknell bb92e92f52 arch_split x64 arm: make cte_level_bits an arch constant 2017-03-27 19:07:28 +11:00
Gerwin Klein 99c7dd8a04 cleanup: remove old wp_cleanup comments 2017-03-03 09:01:28 +11:00
Joel Beeren 3dafec7d46 backport changes to ARM proofs from X64 work in progress
- replace ARM-specific constants and types with aliases which can be
  instantiated separately for each architecture.
- expand lib with lemmas used in X64 proofs.
- simplify some proofs.

Also-by: Matthew Brecknell <Matthew.Brecknell@data61.csiro.au>
2017-01-27 08:31:07 +11:00
Gerwin Klein 47119bf43e wp_cleanup: update proofs for new wp behaviour
The things that usually go wrong:
  - wp fall through: add +, e.g.
      apply (wp select_wp) -> apply (wp select_wp)+

  - precondition: you can remove most hoare_pre, but wpc still needs it, and
    sometimes the wp instance relies on being able to fit a rule to the
    current non-schematic precondition. In that case, use "including no_pre"
    to switch off the automatic hoare_pre application.

  - very rarely there is a schematic postcondition that interferes with the
    new trivial cleanup rules, because the rest of the script assumes some
    specific state afterwards (shouldn't happen in a reasonable proof, but
    not all proofs are reasonable..). In that case, (wp_once ...)+ should
    emulate the old behaviour precisely.
2017-01-13 14:04:15 +01:00
Matthew Brecknell b5158e31bc Isabelle2016-1: fix proofs involving UNION
SUPREMUM changed from a definition to an abbreviation.

A number of proofs that previously used blast, fastforce or auto to
solve goals involving UNION, now either fail or loop. This commit
includes various ad-hoc workarounds.
2017-01-05 14:27:33 +11:00
Matthew Brecknell a84ac9c411 Isabelle2016-1: remove references to empty 'assms'
Isabelle now only creates a local fact named 'assms' when there is a
non-zero number of structured assumptions.
2017-01-05 14:26:47 +11:00
Matthew Brecknell 7d0425dd3e Isabelle2016-1: fix proofs using lemmas now removed
Some lemmas that were specific instances of more general lemmas have
been removed from the library. In most cases, broken references could
simply be replaced with the more general fact.
2017-01-05 14:23:11 +11:00
Matthew Brecknell 41d4aa4f1d Isabelle2016-1: update references to renamed constants and facts 2017-01-05 14:23:05 +11:00
Thomas Sewell a96346e308 SELFOUR-444: Finished InfoFlow and DRefine. 2016-11-02 11:19:09 +11:00
Thomas Sewell 63888fa98d SELFOUR-444: AInvs proven for preemptible retype. 2016-11-02 11:19:08 +11:00
Xin,Gao 8d4a8eb238 SELFOUR-421: fix coding style 2016-09-22 19:23:28 +10:00
Xin,Gao 113315d9a6 SELFOUR-421: merge and fix up to ArmConfidentiality proof 2016-09-22 19:21:56 +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
Joel Beeren 3c223b42fe SELFOUR-421: AInvs done, no added invariants yet 2016-09-22 19:11:29 +10:00
Matthew Brecknell 1013e959c1 arch_split: give some vspace concepts more generic names
In particular rename "pd" to "vspace", when the pd represents
an address space.
2016-08-03 14:46:48 +10:00
Matthew Brecknell 6ef4c2d60f arch_split: invariants: split InterruptAcc_AI [VER-606] 2016-07-09 11:04:22 +10:00
Miki Tanaka 820cf2d366 Arch-split: Untyped.thy done [VER-566] 2016-06-23 12:00:59 +10:00
Matthew Brecknell b9313f6d11 arch_split: invariants: tidied 2016-06-15 10:15:26 +10:00
Matthew Brecknell aceb021f88 arch_split: invariants: split Retype_AI [VER-556] 2016-06-08 10:33:09 +10:00
Matthew Brecknell 3e90041831 arch_split: access: fixup locale introduction rule 2016-05-31 15:05:24 +10:00
Daniel Matichuk 9f62622532 arch_split: skeleton arch files for AInvs 2016-05-31 15:05:24 +10:00
Japheth Lim 26a7907c95 Merge pull request #43 in SEL4/l4v from ~JALIM/l4v:autocorres-seL4 to master
* commit 'ecbb860532b4c576fc4726a805802f16bcf5302c': (29 commits)
  autocorres-crefine: specialise corres_no_failI for compatibility with Refine
  Add license tags for autocorres-crefine files
  crefine: refactor AutoCorresTest a bit
  autocorres-crefine: remove local debugging imports
  Fix InfoFlowC to accommodate corres_underlying changes.
  Fix DRefine to accommodate corres_underlying changes.
  autocorres-crefine: experiment with manually translating a function (clzl).
  autocorres-crefine: experiment with translating bitfield_gen specs.
  autocorres-crefine: start a test case for function calls.
  autocorres-crefine: update example proofs to work with no_c_termination, which does not require proving termination for the C spec.
  autocorres: add user option "no_c_termination" for previous patch.
  Making termination proof optional for AutoCorres.
  WIP: autocorres: hacky proof of concept for incremental translation.
  autocorres: add some missing WordAbstract rules.
  autocorres-crefine: fix some comments in work theory.
  autocorres-crefine: prove modifies and (simple) terminates specs.
  autocorres-crefine: experiment with generating modifies proofs
  autocorres-crefine: run autocorres in kernel_all_substitute locale
  autocorres-crefine: update another corres_UL that snuck in before rebasing.
  autocorres-crefine: working ccorres for handleYield (modulo some white lies).
  ...
2016-05-19 01:19:58 +00:00
Gerwin Klein 322f1023f5 word_lib: adjust theory dependencies 2016-05-16 21:11:40 +10:00
Gerwin Klein 445efb7c29 lib: closure for Word_Lib and own session 2016-05-16 21:11:40 +10:00
Japheth Lim 0f0f731ab7 Merge branch 'master' of ssh://bitbucket.keg.ertos.in.nicta.com.au:7999/SEL4/l4v into autocorres-seL4
This is to prepare for merging back into master.

Conflicts:
	proof/crefine/Refine_C.thy
2016-05-11 15:08:22 +10:00
Daniel Matichuk 9ceed1eb12 arch_split: fix proofs after removing shadow and unqualify commands and adding fix for crunch. Checks up to DPolicy. 2016-05-04 15:14:41 +10:00
Daniel Matichuk 1d20b393c0 arch_split: replaced sublocale with global_naming 2016-04-27 14:32:38 +10:00
Daniel Matichuk 2de08b7ec1 arch_split: differentiate "context ARM begin" vs "context begin interpretation ARM ." 2016-04-08 15:05:09 +10:00
Daniel Matichuk 04362dba27 arch_split: some quick and dirty arch_splitting by selectively interpreting the ARM locale (with FIXMEs) 2016-04-07 17:05:14 +10:00
Japheth Lim bb83b53b15 Merge branch 'master' into autocorres-seL4
This updates autocorres-seL4 to Isabelle2016.

Conflicts:
	proof/crefine/Refine_C.thy
2016-03-29 14:07:54 +11:00
Japheth Lim 1b14082291 autocorres-crefine: add pre-no-fail flag to corres. Updated AI+Refine. 2016-01-22 15:08:14 +11:00
Daniel Matichuk ca808130e6 repair ARM proofs up to Refine after factoring out architecture 2016-01-13 12:02:12 +11:00
Joel Beeren 457a55a831 add arch_tcb object to C, rename aep -> ntfn 2015-11-20 16:02:13 +11:00
Ramana Kumar 0fb88ea01c Merge branch 'master' into aep-merge
This commit should at least remove merge conflict markers, and the idea
is that at least refine, crefine, drefine, and infoflow (with sorrys)
build. Subsequent commits may be required to fix build issues that I
have not picked up.
2015-09-10 17:06:45 +10:00
Ramana Kumar d88a931ec7 history squashed patch for aep-binding 2015-09-02 15:43:39 +10:00
Gerwin Klein 12fa86863a fewer warnings 2015-05-16 19:52:49 +10:00
Gerwin Klein 17826f9b49 more Isabelle2015 update; AInvs up to (excluding) Syscall_AI
also includes some global replacements
2015-04-18 21:51:26 +01:00