Commit Graph

49 Commits

Author SHA1 Message Date
Gerwin Klein 24c0c5c390 spec+proof: use generated config constants
This includes replacing previous ASpec names for such constants with
the names used in Haskell/ExecSpec to avoid duplication. This also
makes some of the proofs slightly more generic.

Signed-off-by: Gerwin Klein <gerwin.klein@proofcraft.systems>
2021-12-23 14:54:13 +11:00
Rafal Kolanski ec79dc3330 aspec+design+haskell: extract numDomains into Kernel_Config
Introduce Kernel_Config theory for storage of non-architecture-specific
seL4 configuration variables that are shared by the abstract and design
specs.

Remove `num_domains`, in lieu of `numDomains` that is now defined only
in `Kernel_Config.thy`. The definition is hidden and must be referred to
as Kernel_Config.numDomains_def when avoiding unfolding is not possible.

Include required properties of `numDomains` as lemmas.

Signed-off-by: Rafal Kolanski <rafal.kolanski@proofcraft.systems>
2021-12-22 23:50:22 +11:00
Gerwin Klein a45adef66a all: remove theory import path references
In Isabelle2020, when isabelle jedit is started without a session
context, e.g. `isabelle jedit -l ASpec`, theory imports with path
references cause the isabelle process to hang.

Since sessions now declare directories, Isabelle can find those files
without path reference and we therefore remove all such path references
from import statements. With this, `jedit` and `build` should work with
and without explicit session context as before.

Signed-off-by: Gerwin Klein <gerwin.klein@data61.csiro.au>
2020-11-02 10:16:17 +10:00
Gerwin Klein a424d55e3e licenses: convert license tags to SPDX 2020-03-13 14:38:24 +08:00
Gerwin Klein f50985b448 abstract: use new invocation label enum 2020-02-03 12:56:19 +08:00
Gerwin Klein c34840d09b global: isabelle update_cartouches 2019-06-14 11:41:21 +10:00
Thibaut Perami 10145250c2 aspec: Update ASpec for GrantReply (SELFOUR-6) 2018-12-10 20:01:37 +11:00
Mitchell Buckley 8173a37c2d Updated specs and proofs for SELFOUR-1491: control IRQ triggering on ARM. 2018-09-19 16:18:09 +10:00
Gerwin Klein b5cdf4703f globally use session-qualified imports; add Lib session
Session-qualified imports will be required for Isabelle2018 and help clarify
the structure of sessions in the build tree.

This commit mainly adds a new set of sessions for lib/, including a Lib
session that includes most theories in lib/ and a few separate sessions for
parts that have dependencies beyond CParser or are separate AFP sessions.
The group "lib" collects all lib/ sessions.

As a consequence, other theories should use lib/ theories by session name,
not by path, which in turns means spec and proof sessions should also refer
to each other by session name, not path, to avoid duplicate theory errors in
theory merges later.
2018-08-20 09:06:34 +10:00
Corey Lewis 2b8a2ebfbe spec: add SetTLSBase invocation and update the registers (VER-807) 2018-07-03 13:42:17 +10:00
Gerwin Klein 88f804be12 specs: range check full object size, not only user object size
This is relevant when the max object size is significantly smaller than word_bits,
which is the case for 64 bit platforms.
2018-04-11 07:59:27 +10:00
Michael Sproul f0795805d1 SELFOUR-1016: fix confused deputy problem when setting priorities 2018-02-26 11:19:43 +11:00
Matthew Brecknell 2f540e802c add constant definitions for bounds on untyped object sizes 2017-12-18 12:58:27 +11:00
Joel Beeren ffc0640869 VER-853: put arch_check_irq into the Arch locale, and update x64 to match C 2017-12-13 12:13:36 +11:00
Matthew Brecknell b8fc532b4e reject all invalid IRQ inputs to IRQ control syscall
This updates the proofs for a change in the C code. The IRQ control
syscall now returns an error whenever the IRQ parameter is not a valid
IRQ value. Previously, the syscall threw away some higher-order bits
before checking for IRQ validity.

Incidentally, the C now only uses the name `irq` for variables of type
`irq_t`, and `irq_w` for variables of type `word_t`. This avoids trouble
with c-parser name mangling.
2017-10-05 07:59:02 +11:00
Alejandro Gomez-Londono 796887d9b1 Removes all trailing whitespaces 2017-07-12 15:13:51 +10:00
Miki Tanaka 99bcebda87 ASpec: arch-specific faults + VMFault -> ArchFault + ReservedIRQ
* fixing name space for arch_tcb and tcb_context

* arch_fault added

* changing name space for arch_tcb

  - as_user, set_mrs, get_mrs, copyRegsToArea, and copyRegsToArea are
    moved to the ARM_HYP directory.  This breaks the proofs in
    refinement, etc., mostly in tcb related files.

* removed a duplicate range check definition

* fixes ARM for arch_tcb

* adding arch_thread_get/set

* add ReserveIRQ

  - initInterruptController is not added yet.

* add arch_fault

  - arch_fault and related functions are added.

* arch-parametrising arch-specific extra registers

  - ArchDefaultExtraRegisters is the common interface that refers to the
    arch-specific data (ARMNoExtraRegisters for ARM/ARM_HYP)

* Adding accesors for tcb_context

  - Despite the fact that tcb_context has an arch-specific definition,
    it is reasonable to assume that some form of tcb_context will be
    available in any architecture, thus the need for accesors to handle
    updates.

* as_user updated to use tcb_context accesors

* set_mrs and get_mrs updated to use tcb_context accesors

  - Several function on ArchTcb_A and ArchTcbAcc_A (both theories where
    removed) can be defined in a general context by using the
    tcb_context accesors

  tags: [VER-623][SELFOUR-413]
2016-11-25 13:05:49 +11:00
Joel Beeren 2553371a14 SELFOUR-64: Remove general Recycle operation
This removes the RecycleCap CNodeInvocation, whilst
retaining recycle behaviour for Endpoints -- now renamed
CNodeCancelBadgedSends.
2016-11-18 14:11:12 +11:00
Thomas Sewell f32e2ca0f5 SELFOUR-444: Abstract implementation.
Abstract implementation of preemptible retyping.
2016-11-02 11:19:08 +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
Xin,Gao 113315d9a6 SELFOUR-421: merge and fix up to ArmConfidentiality proof 2016-09-22 19:21:56 +10:00
Joel Beeren 765d8aa88e SELFOUR-421: fixed Refine 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 5e16ec5617 SELFOUR-421: first attempt at abstract spec 2016-09-22 19:11:16 +10:00
Gerwin Klein f0faa90f8a lib/spec/proof/tools: fix word change fallout 2016-05-16 21:11:40 +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
Matthew Brecknell 8cc95bfb8e arch_split: merge master into arch_split 2016-03-01 11:30:47 +11:00
Matthew Brecknell 84d2889d45 Isabelle2016: merge master into 2016 2016-02-19 16:17:26 +11:00
Daniel Matichuk df8261c121 arch_split: split up Invariants_AI 2016-02-17 16:36:29 +11:00
Gao Xin 0d260252ff l4v-sabre: rebase and fix proofs to infoflow 2016-02-17 11:18:02 +11:00
Matthew Brecknell c65e290a8b Isabelle2016: merge master into 2016 2016-02-16 12:52:24 +11:00
Daniel Matichuk 1018d01b6f arch_split: More namespacing progress and invariant splitting. Checks halfway into Invariants_AI 2016-02-05 17:00:06 +11:00
Joel Beeren 1d0366ac5e msi: Restructure IOAPIC, MSI interrupts for x86, fix up ARM proofs for new API 2016-02-02 15:57:28 +11:00
Daniel Matichuk c282969c54 Merge remote-tracking branch 'verification/master' into arch_split 2016-01-21 10:22:48 +11:00
Joel Beeren efb4c61816 archirq: Remove redundant invocation, renamed
arch_decode_interrupt_control.
2016-01-14 17:50:33 +11:00
Daniel Matichuk fad2c6aae9 paramatrised abstract and haskell specs over L4V_ARCH
Haskell translator was modified to support multiple translations
of the haskell, with different build parameters.
2016-01-13 12:01:40 +11:00
Gerwin Klein 02cfe4d009 ASpec 2016-01-10 17:48:49 +11:00
Joel Beeren 457a55a831 add arch_tcb object to C, rename aep -> ntfn 2015-11-20 16:02:13 +11:00
Joel Beeren 5babd2ce21 aep-binding: restructured decode_bind_aep for infoflow 2015-09-15 16:31:13 +10: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
Joel Beeren 8d11a22f5b ioapic: first abstract spec 2014-08-22 16:24:40 +10:00
Gerwin Klein 50dda7708c comment cleanup 2014-07-22 18:10:20 +02:00
Gerwin Klein 9d9a325032 Updates for getpaddr system call (by Joel Beeren) 2014-07-18 17:21:34 +02:00
Gerwin Klein 84595f4233 release cleanup 2014-07-17 18:22:50 +02:00
Gerwin Klein 2a03e81df4 Import release snapshot. 2014-07-14 21:32:44 +02:00