Commit Graph

3067 Commits

Author SHA1 Message Date
Michael Sproul e11abb6011 x64: crefine: prove isIOPortRangeFree_spec 2018-07-05 17:07:58 +10:00
Matthew Brecknell 80693df8e2 x64 crefine: add mask_eq_ucast_shiftl 2018-07-05 17:07:58 +10:00
Matthew Brecknell 3231ee17bf x64 crefine: prove 'return false' case of isIOPortRangeFree_spec postcondition 2018-07-05 17:07:58 +10:00
Matthew Brecknell aabf8ded2e x64 crefine: progress on isIOPortRangeFree_spec postcondition 2018-07-05 17:07:58 +10:00
Joel Beeren 7eb8e01443 x64: crefine: proved word_highbits_bounded_highbits_eq
Contributed by: Michael Sproul <michael.sproul@data61.csiro.au>
2018-07-05 17:07:57 +10:00
Joel Beeren da05f4f72e x64: crefine: cleared vcg precondition sorry in isIOPortRangeFree_spec, modulo small word lemma 2018-07-05 17:07:57 +10:00
Matthew Brecknell b9c3279779 x64 crefine: prove mask_le_mono
Contributed by: Thomas Sewell <Thomas.Sewell@data61.csiro.au>
2018-07-05 17:07:57 +10:00
Matthew Brecknell 7a951cad95 x64 crefine: prove invariant preservation for isIOPortRangeFree_spec 2018-07-05 17:07:49 +10:00
Michael Sproul 7af93e5bc1 x64: crefine: prove word_minus_1_shiftr 2018-07-05 16:23:15 +10:00
Joel Beeren 07b60ec185 x64: crefine: progress on sorries in isIOPortRangeFree_spec 2018-07-05 16:23:15 +10:00
Matthew Brecknell f0a8621434 x64 crefine: prove isIOPortRangeFree_ccorres in Arch_C (WIP) 2018-07-05 16:23:15 +10:00
Gerwin Klein 91b55bc74b x64 crefine: progress on spec and inv for isIOPortRangeFree 2018-07-05 16:23:15 +10:00
Matthew Brecknell 74e74571ca x64 crefine: prove setIOPortMask_ccorres in CSpace_C 2018-07-05 16:23:15 +10:00
Michael Sproul 72e3dcc8e2 x64: crefine: prove decodeX64MMUInvocation_ccorres
Required adding a case to cl_valid_cap to encode the relationship between a
PML4Cap's IsMapped bit and its MappedASID.
2018-07-05 16:23:15 +10:00
Joel Beeren 0f0f46b2b0 x64: refine: fix fallout from decodeX64PageInvocation change 2018-07-05 16:23:15 +10:00
Joel Beeren 5ce7ed478f x64: crefine: add SetTLSBase invocation to x64 CRefine 2018-07-05 16:23:15 +10:00
Joel Beeren 2558a7c6e5 x64: crefine: update decodeX64FrameInvocation to not mask with PPTR_USER_TOP 2018-07-05 16:23:15 +10:00
Joel Beeren 89df98ec14 x64: fix inadvertently broken lemma in CSpace_C 2018-07-05 16:23:15 +10:00
Joel Beeren 417e6b8bc1 arm-hyp: crefine: fix up eisr_calc proof for strengthened ccorres_rewrite 2018-07-05 16:23:15 +10:00
Joel Beeren 584c6e9d26 x64: crefine: prove decodeX64FrameInvocation_ccorres 2018-07-05 16:23:15 +10:00
Joel Beeren 7f52da6571 x64: ainvs+refine: fix up proofs for decodeX64FrameInvocation changes 2018-07-05 16:23:15 +10:00
Joel Beeren e6ca6883ad x64: spec: fix up definition of decodeX64FrameInvocation to match C 2018-07-05 16:23:15 +10:00
Joel Beeren 5ed7bb16be x64: fix up definition of performPageInvocation for unmapping pages 2018-07-05 16:23:15 +10:00
Matthew Brecknell 700060b642 x64 crefine: prove Arch_decodeInvocation_ccorres in Arch_C 2018-07-05 16:23:15 +10:00
Matthew Brecknell 047f96c711 x64 crefine: prove kernel_mappings conditions in Retype_C 2018-07-05 16:23:15 +10:00
Matthew Brecknell 3686d79677 x64 crefine: prove createObjects_asidpool_ccorres in Arch_C
In x64, asid_map_C is now a bitfield union type, whereas in ARM,
the ASID pool contains plain pointers. This means that proving
ccorres for the x64 ASID pool placeNewObject operation requires
some additional unfolding of C type information.
2018-07-05 16:23:15 +10:00
Matthew Brecknell c390013909 x64 crefine: prove several lemmas in Retype_C
To prove that retyping a TCB establishes the state relation for TCBs,
it is necessary to prove that the C FPU null state is always equal to
the Haskell FPU null state. This commit therefore includes some
machinery for maintaining the state relation for the FPU null state,
and repairs many proofs.
2018-07-05 16:23:15 +10:00
Michael Sproul 19d9085b15 lib: word lemma about mask and shiftl 2018-07-05 16:23:15 +10:00
Michael Sproul 26b218e4bd x64: crefine: clear sorries for decode PT/PD/PDPT 2018-07-05 16:23:15 +10:00
Joel Beeren 151ca60b9f x64: refine: add new invariant "pspace_in_kernel_mappings'"
This invariant shows that all pointers in ksPSpace are above pptr_base -
that is, in the kernel window. This was never formally proven before, as
had never truly been required (although it is true).
2018-07-05 16:23:15 +10:00
Joel Beeren 02ed965d79 x64: aspec+haskell: reorder attribsFromWord to match C 2018-07-05 16:23:15 +10:00
Joel Beeren 0bad7af88b x64: crefine: actually clear last ioport_table_C sorry 2018-07-05 16:23:15 +10:00
Joel Beeren 1dea36ed6f x64: crefine: add some tag disjunctions for ioport_table_C to SR_Lemmas_C 2018-07-05 16:23:15 +10:00
Joel Beeren bcd21f27bf x64: crefine: clear final two sorries from ioport_bitmap_relation fallout 2018-07-05 16:23:15 +10:00
Joel Beeren d6a620ec5d x64: crefine: move setIOPortMask_ccorres to CSpace_C, finish freeIOPortRange_ccorres 2018-07-05 16:23:15 +10:00
Joel Beeren 3c65b91512 x64: crefine: finished invokeX86PortControl_ccorres and decodeIOPortControlInvocation_ccorres 2018-07-05 16:23:15 +10:00
Joel Beeren d487d1fc6a x64: crefine: added ioport bitmap to StateRelation_C 2018-07-05 16:23:15 +10:00
Joel Beeren 95cdaa8ad7 x64: crefine: cleared sorry in decodeIOPortInvocation_ccorres 2018-07-05 16:23:15 +10:00
Michael Sproul cf1052e303 x64: crefine: prove prepareThreadDelete_ccorres (VER-837) 2018-07-05 16:23:15 +10:00
Michael Sproul b91ee8e4d0 x64: spec+ainvs+refine: add machine ops for nativeThreadUsingFPU and switchFpuOwner 2018-07-05 16:23:15 +10:00
Joel Beeren f68aa38531 x64: crefine: almost finished decodeX86PortInvocation_ccorres 2018-07-05 16:23:15 +10:00
Joel Beeren 68456a1979 x64: crefine: decodeIOPortInvocation progress 2018-07-05 16:23:15 +10:00
Joel Beeren f21096d987 x64: crefine: progress in Arch_C, added performPDPTInvocationMap_ccorres, makeUserPML4E_spec 2018-07-05 16:23:15 +10:00
Joel Beeren df1c4b1e45 x64: spec+refine: plumb call through perform_ioport_invocation 2018-07-05 16:23:15 +10:00
Michael Sproul 648938513f x64: crefine: prove Arch_finaliseCap_ccorres 2018-07-05 16:23:15 +10:00
Michael Sproul e9940dee83 x64: spec+refine: remove VMIOSpaceMap, tighten valid_cap' map type guarantees 2018-07-05 16:23:15 +10:00
Joel Beeren b48f530591 x64: crefine: assorted progress in Arch_C 2018-07-05 16:23:15 +10:00
Joel Beeren 278e0fcbb9 x64: crefine: finished ensurePortOperationAllowed_ccorres, progress in decodeIOPortInvocation_ccorres 2018-07-05 16:23:15 +10:00
Joel Beeren a4a9a9f721 x64: spec: update ensurePortOperationAllowed to better match C 2018-07-05 16:23:15 +10:00
Joel Beeren 9bef874088 x64: crefine: finished performPageInvocation[Map|Remap]PDPTE_ccorres 2018-07-05 16:23:15 +10:00