Commit Graph

614 Commits

Author SHA1 Message Date
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
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
Victor Phan b9c285400d remove diminished (VER-1158)
diminished takes two caps and asserts that one is equal to the other
except that one may have fewer rights. We remove this definition and all
references to it, replacing diminished with equality.
2019-11-16 01:03:36 +11:00
Gerwin Klein 1970ed0ce0 word_lib internal + crefine: remove duplicate lemma 2019-11-15 12:08:22 +11:00
Gerwin Klein c390ba7404 proofs: adjustments for word_lib changes 2019-11-15 12:08:22 +11:00
Victor Phan 9fda73732a x64 crefine: update for seL4 bugfix [GITHUB PR 107]
Always invalidate TLB during unmapPage.
2019-11-14 18:05:24 +11:00
Gerwin Klein d2584a3692 cleanup: collect word lemmas 2019-11-12 18:28:40 +11:00
Victor Phan 67bba7edc3 lib, x64 crefine: remove word lemma unat_ucast_8_64
unat_ucast_8_64 states that upcasting an 8 word to a 64 word does not
changes its value. We have a generic lemma for this which can be
specialised to this lemma: unat_ucast_up_simp[where 'a=8 and 'b=64,
simplified].
2019-10-30 19:09:39 +11:00
Corey Lewis 9846cd42bb proof: update for crunch changes 2019-10-14 17:23:41 +11:00
Corey Lewis dd48e0d899 proof: update for wp changes
Updated 'wp_once' to 'wp (once)' and removed several stray uses of 'wp_trace'.
2019-10-14 17:12:18 +11:00
Victor Phan a6024fb377 x64 refine/crefine: remove vmsz_aligned' 2019-10-10 11:27:31 +11:00
Victor Phan de09728b6c x64 crefine: update for PageMap replacing PageRemap (SELFOUR-161) 2019-10-10 11:27:20 +11:00
Victor Phan dbc4df6c1d arm-hyp crefine: update for PageMap replacing PageRemap (SELFOUR-161) 2019-10-10 11:27:17 +11:00
Victor Phan d1637c06ce arm crefine: update for PageMap replacing PageRemap (SELFOUR-161) 2019-10-10 11:27:14 +11:00
MiladKetabi acbc08b836 clean-ups done during proof update for the jira issue SELFOUR-1187: seL4 setPriority should attempt a direct schedule 2019-10-06 18:31:19 +11:00
MiladKetabi d934d25269 proof update for SELFOUR-1187: seL4 setPriority should attempt a direct schedule
Prior to this commit the kernel would always trigger a full reschedule
on setPriority. This change allows the kernel to attempt a direct
switch, avoiding invoking the scheduler.
2019-10-06 18:31:19 +11:00
Japheth Lim 50b0f66a58 X64 CRefine: minor fixes for MCS kernel merge
The previous commit only updated ARM and ARM_HYP; this updates X64.
2019-08-23 15:43:25 +10:00
Japheth Lim da2081631b CRefine: minor fixes for MCS kernel merge
We need to make small adjustments because the kernel will see minor
changes to variable initialisation, even in the non-MCS build.
2019-08-22 11:22:29 +10:00
Edward Pierzchalski 9852fcccd2 crefine: disambiguate record fields.
When the bitfield generator switches to python 3, the dicts we use to
track data won't be iterated deterministically. These changes
disambiguate (some) record literals and accessors so that they aren't
sensitive to the definition order.
2019-07-25 11:58:12 +10:00
Amirreza Zarrabi 4f93ebe608 refine, crefine: update after adding thread id registers to TCB for SELFOUR-1524 2019-06-28 11:48:24 +10:00
Matthew Brecknell b3c4a56e01 crefine: type-qualify overloaded C struct constructor names
Changes in the C boot code mean that `tcb_C` and `asid_pool_C` are now
overloaded in the Isabelle C specification: They are constructors for
the respective C structs, and also accessors for fields of an unrelated
struct (`root_server_mem_t`). Consequently, we need to be more explicit
when naming the constructors.
2019-06-20 11:05:27 +10:00
Gerwin Klein c34840d09b global: isabelle update_cartouches 2019-06-14 11:41:21 +10:00
Gerwin Klein 2e6bf613e2 crefine: c-parser cleanup fallout 2019-06-14 11:41:20 +10:00
Michael McInerney c13432b0c4 misc updates for Isabelle2019 2019-06-14 11:41:20 +10:00
Michael McInerney 32a3ebba1c crefine: update for Isabelle2019 2019-06-13 16:22:33 +10:00
Michael McInerney 4463e9750e SELFOUR-1198: update proofs for correct restart PC
Fixes a case where a thread can go from Running->Inactive->Restart and
use a restart PC that is out of date. An out of date restart PC occurs
when a thread was transitioned to running after being in a blocked
state, but was never scheduled and so did not execute the traps code
that updates the restart PC.

This also renames relevant register names for consistency across
architectures (FaultIP and NextIP).
2019-06-13 11:43:50 +10:00
Matthew Brecknell 9f94d3ccb3 crefine: update for renamed NextIP and FaultIP registers
The ARM C kernels have renamed the LR_svc and FaultInstruction registers
to NextIP and FaultIP respectively, for consistency with x86 kernels. A
patch for a similar renaming in the abstract and Haskell specifications
is forthcoming.
2019-05-29 16:52:59 +10:00
Matthew Brecknell b8557d3862 crefine cleanup: remove redundant Kernel_C_reg_simps 2019-05-29 16:52:59 +10:00
Edward Pierzchalski 2035f444a0 refine: Remove unused lemmas. 2019-05-28 10:00:10 +10:00
Matthew Brecknell 175c612f3f crefine: use mangled names in memzero and memset
This is required by a C kernel patch (to refactor some boot code) which
caused the Isabelle C parser to mangle the names of some local
variables.
2019-05-15 14:49:20 +10:00
Matthew Brecknell 503f7ce7de crefine: update proofs for statically allocated IRQ node
Previously, the C kernel maintained a global pointer to the IRQ node.
This pointer was only initialised during boot, when the actual IRQ node
was dynamically allocated from untyped memory.

The C kernel now includes a statically allocated IRQ node, which is just
a suitably sized array of CTEs. This commit updates the proofs to verify
this change to the C kernel.
2019-05-03 13:52:52 +10:00
Matthew Brecknell 206ee07c58 crefine: add abbreviations for global page table addresses 2019-05-03 13:52:52 +10:00
Matthew Brecknell f47f1c6446 cleanup: move pt_Ptr etc up to Wellformed_C 2019-05-03 13:52:52 +10:00
Matthew Brecknell 009c0c98b5 cleanup: remove some redundant uses of if_1_0_0 2019-05-03 13:52:52 +10:00
Matthew Brecknell 17b0aca539 cleanup: remove duplicate cap_get_tag_isCap_ArchObject2 lemmas 2019-05-03 13:52:52 +10:00
Matthew Brecknell f1901beee0 cleanup: remove duplicates of invs'_invs_no_cicd 2019-05-03 13:52:52 +10:00
Matthew Brecknell eedf3d8fa2 cleanup: remove duplicates of objBitsKO_gt_0 2019-05-03 13:52:52 +10:00
Amirreza Zarrabi 51cfddab32 crefine: update for increased capIRQ field bits on 64-bit platforms (VER-1047) 2019-03-25 07:47:45 +11:00
Edward Pierzchalski 7cea1ad1b4 lib: don't extend core signatures.
Just because we *can* extend the core SML `List` signature, that doesn't
mean we *should*. It's a neat trick, but it makes it harder to find uses
of the new modules, and obfuscates definitions for very little gain.
2019-03-07 15:29:13 +11:00
Edward Pierzchalski e039ecc6a1 crefine: shorten long c-parser names.
Previously, tactics like `ctac` and `csymbr` would use definition names
to produce new bound variables. Now that the C parser always emits long
name *definitions* and short name *aliases*, we adjust these tactics to
try and shorten any new names they produce.
2019-03-07 13:34:32 +11:00
Matthew Brecknell 8272f79c0f arm-hyp crefine: remove named interrupt identifiers
Recent changes to the C kernel mean that various structures and
constants are generated from DTS files. In particular, verification now
sees interrupt identifiers as integer literals instead of defined
constants.
2019-01-30 17:13:03 +11:00
Rafal Kolanski 4ee84d6348 x64 crefine: update for GrantReply (SELFOUR-6) 2018-12-10 20:01:38 +11:00
Rafal Kolanski 0d292f48dd arm-hyp crefine: update for GrantReply (SELFOUR-6) 2018-12-10 20:01:38 +11:00
Rafal Kolanski a34e0fc6f8 arm crefine: update for GrantReply (SELFOUR-6) 2018-12-10 20:01:37 +11:00
Edward Pierzchalski 3d49538f2f arm crefine: mark some lemmas as FIXME.
There are some good simp set candidates as well as ones that should be
moved.
2018-11-21 17:12:23 +11:00
Edward Pierzchalski 17f3263d5e arm crefine: remove some unused lemmas.
Add some comments on unused lemmas that we want to move or keep.
2018-11-21 17:12:23 +11:00
Edward Pierzchalski d8552fa97d crefine: arm-hyp: add word lemma FIXMEs
Various potential improvements that became apparent during the word
lemma move.
2018-10-10 14:15:01 +11:00
Edward Pierzchalski c4dc578bc3 Fix up proofs after word lemma moves 2018-10-10 14:15:01 +11:00
Edward Pierzchalski d75740201c Remove pure word lemmas from proof/*
Removes redundant lemmas after moving them up to Word_Lib.
2018-10-10 14:15:00 +11:00