Commit Graph

81 Commits

Author SHA1 Message Date
Corey Lewis 967a091cf6 ainvs: Remove unnecessary crunches and whitespace 2018-06-27 11:48:56 +10:00
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
Corey Lewis 2d0baab462 Proof update for crunch changes 2018-04-04 14:13:55 +10:00
Thomas Sewell 0f38e20094 Many proof repairs. 2018-03-16 14:57:51 +11:00
Thomas Sewell 652cbb966e Initial proof updates for combinator changes. 2018-03-16 14:53:22 +11:00
Matthew Brecknell 2f540e802c add constant definitions for bounds on untyped object sizes 2017-12-18 12:58:27 +11:00
Matthew Brecknell 48b3a8b4ca update object and field widths for x64, and remove some magic numbers
In X64 update the following to match the C kernel:
  - TCB size-bits (11).
  - Endpoint size-bits (4).
  - Guard bits (58).
  - Message registers.

For all architectures, replace magic numbers with defined constants in
specifications, and as far as possible in proofs:
  - tcb_bits in abstract spec.
  - tcbBlockSizeBits, cteSizeBits, ntfnSizeBits, epSizeBits in Haskell
    spec, Haskell and C refinement proofs.
2017-10-26 14:05:35 +11: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
Joel Beeren f492f85471 ainvs: added back in second_level_tables for Untyped, ported changes to ARM_HYP also 2017-06-19 14:32:43 +10:00
Gerwin Klein dbbc0d41b5 arm-hyp: AInvs sorry-free 2017-06-19 14:32:23 +10:00
Miki Tanaka 9123c3635e arm-hyp: changes after rebase (on top of d08ee04e2f) 2017-06-19 14:32:22 +10:00
Miki Tanaka 7e79b1b7b2 changes after rebasing (for isabelle2016-1 and the new wp) 2017-06-19 14:32:21 +10:00
Miki Tanaka eb0ec4dcd0 arch_splitting, fixing sorries, some more invariants 2017-06-19 14:32:21 +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 ee5e6f9607 arm-hyp invariants: some fixes for locale interpretations 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
Matthew Brecknell 659088cc13 x64: merge master 2017-03-29 20:22:12 +11:00
Matthew Brecknell 6f3efc504a arch_split x64 arm: make endpoint_bits and ntfn_bits arch constants 2017-03-27 19:07:42 +11:00
Matthew Brecknell bb92e92f52 arch_split x64 arm: make cte_level_bits an arch constant 2017-03-27 19:07:28 +11:00
Joel Beeren 49e12ef7dc x64: change cte_level_bits, obj_bits (Endpoint; Notification) to 5
rather than 4.

This is true on all 64-bit platforms as the size of these objects is 4
words (4*8 = 32 = 2^5). However, this breaks the 32-bit ARM proofs that
rely on these values being 4 - see jira issue VER-725.
2017-03-21 15:09:37 +11:00
Gerwin Klein a2de84cf3d ainvs: repair wp_pre fallout 2017-03-16 19:39:11 +11:00
Joel Beeren 95d1671940 Merge remote-tracking branch 'verification/master' into x64-split
Conflicts:
	lib/LemmaBucket.thy
	lib/NonDetMonadLemmaBucket.thy
	lib/Word_Lib/Word_Lemmas.thy
	lib/X64/WordSetup.thy
	proof/invariant-abstract/ARM/ArchDetype_AI.thy
	proof/invariant-abstract/ARM/ArchInvariants_AI.thy
	proof/invariant-abstract/BCorres_AI.thy
	proof/invariant-abstract/CSpace_AI.thy
	proof/invariant-abstract/DetSchedSchedule_AI.thy
	proof/invariant-abstract/Interrupt_AI.thy
	proof/invariant-abstract/IpcCancel_AI.thy
	proof/invariant-abstract/Syscall_AI.thy
	proof/invariant-abstract/Untyped_AI.thy
	proof/refine/ARM/Include.thy
	spec/abstract/ARM/ArchTcb_A.thy
	spec/abstract/CSpace_A.thy
	spec/abstract/Tcb_A.thy
	spec/design/ARM/ArchIntermediate_H.thy
	spec/design/X64/ArchInterruptDecls_H.thy
	spec/haskell/Makefile
	spec/machine/MachineExports.thy
	tools/c-parser/.gitignore
	tools/c-parser/standalone-parser/Makefile
	tools/c-parser/testfiles/ARM/imports/MachineWords.thy
	tools/c-parser/testfiles/X64/imports/MachineWords.thy
	tools/haskell-translator/caseconvs
2017-03-10 19:35:39 +11:00
Gerwin Klein 941d383594 ainvs: allow valid_arch_state to depend on arch objs 2017-03-03 13:51:35 +11:00
Gerwin Klein 99c7dd8a04 cleanup: remove old wp_cleanup comments 2017-03-03 09:01:28 +11:00
Matthew Brecknell c54cbb3828 x64: remove arch-specific detail that crept back into Untyped_AI 2017-02-16 11:08:46 +11:00
Joel Beeren 41c3abede6 x64: fix sorry in Untyped_AI, move clearMemory_invs to ArchRetype_AI 2017-02-15 11:21:44 +11:00
Xin,Gao 9d555f5197 X64: some progress on ArchUntyped_AI.thy 2017-02-14 17:06:32 +11:00
Joel Beeren 037d0566e4 x64: fix word proof in Untyped_AI, re-add set_cap_valid_arch_objs_simple 2017-02-13 12:24:47 +11:00
Xin,Gao 677c82ca11 X64: fix some sorries in ArchVSpace 2017-02-09 13:47:01 +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
Matthew Brecknell 759a0387ab merge master into x64-split
Primarily concerns wp improvements
2017-01-18 07:49:48 +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 abf1db5b51 merge master into x64-split 2017-01-13 17:22:03 +11:00
Matthew Brecknell c1782fc155 x64: fix ARM build after merge 2017-01-13 11:24:06 +11:00
Matthew Brecknell a1b5f16ed6 merge x64-split into local branch 2017-01-11 17:22:05 +11:00
Matthew Brecknell 41d4aa4f1d Isabelle2016-1: update references to renamed constants and facts 2017-01-05 14:23:05 +11:00
Joel Beeren f21d06d35a AInvs: remove 32-bit references in Untyped_AI 2016-12-02 15:10:51 +11:00
Matthew Brecknell 73a08160a1 merge master into x64-split 2016-11-30 12:08:32 +11:00
Matthew Brecknell d659794237 update references to word32_plus_mono_right_split
This is now called machine_word_plus_mono_right_split, since it now
works at the current architecture's machine word size.
2016-11-24 16:46:19 +11:00
Ramana Kumar c1c636a24f Simplify obj_bits to not check well_formed_cnode_n 2016-11-11 16:24:37 +11:00
Thomas Sewell dcd7fd8c17 SELFOUR-444: Refine proof with ghost invariant. 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 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
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