Commit Graph

440 Commits

Author SHA1 Message Date
Alejandro Gomez-Londono 6fb8f73535 design: Remove files generated by the haskell-translator 2017-05-11 16:26:18 +10:00
Pang Luo da28d94974 VER-717: refactor tpidrurwRegister and fix corresponding proof 2017-05-05 15:17:41 +10:00
Joel Beeren 71e2db88a4 arm: refactor sanitise_register to take a bool instead of a kernel_object
This simplified the sanitise_register logic in CRefine for arm-hyp.
2017-05-03 21:51:57 +10:00
Rafal Kolanski 87a3d9592d cspec/crefine: readme: document significance of L4V_ARCH
tags: [NO_PROOF]
2017-03-31 16:13:42 +11:00
Rafal Kolanski 7e13fb9e91 cspec: move to ARM subdirectory
Configure to build with L4V_ARCH=ARM
2017-03-30 18:20:24 +11:00
Rafal Kolanski ea771a8f7c arm-hyp: configure kernel Makefile for L4V_ARCH=ARM_HYP
Set as required for TK1 platform.
2017-03-06 17:16:28 +11:00
Gerwin Klein c3d179cd28 aspec: standard file access rights 2017-03-04 10:32:12 +11:00
Joel Beeren 81b3e7808b licenses: Updated licenses added from x64 backport
tags: [NO_PROOF]
2017-02-28 12:26:19 +11:00
Miki Tanaka 5665511d84 capDL spec and DRefine: updates for Hypervisor stub 2017-02-22 15:26:50 +11:00
Miki Tanaka b2f2034bbc Bisim / Access / InfoFlow: updates for Hypervisor stub 2017-02-22 15:26:49 +11:00
Miki Tanaka 75b1680d68 abstract: add Hypervisor fault event to ARM 2017-02-22 15:26:49 +11:00
Miki Tanaka 98832f8ccd execspec: add hypervisor, HypFaultType in skeletons (ARM), generated files 2017-02-22 15:26:46 +11:00
Rafal Kolanski ce1b60e16e haskell: add Hypervisor module, add concept of Hypervisor exceptions
The kernel gains an entry point for hypervisor exception events, as well
as a way to add arch-specific handlers for these events.

We do this since the hypervisor has its own entry point into the kernel,
and that must be reflected in the top-level kernel entry interface.

For ARM target, which does not have hypervisor support, we add an no-op stub.
2017-02-22 15:26:41 +11:00
Miki Tanaka c957220996 capDL spec and DRefine for prepare_thread_delete 2017-02-20 09:23:56 +11:00
Miki Tanaka 1ac38269b6 abstract: prepare_thread_delete stub for ARM
- defined prepare_thread_delete for finalise_cap
2017-02-20 09:23:55 +11:00
Miki Tanaka b853647a6d execspec: fix skeleton for prepareThreadDelete, generated files 2017-02-20 09:23:55 +11:00
Miki Tanaka 185876b89f haskell: add a stub for prepareThreadDelete
this is a function called from finailiseCap to prepare a tcb for deletion
(it does nothing for ARM)
2017-02-20 09:23:55 +11:00
Gerwin Klein 520921351a provide TCB argument for sanitiseRegister
Other platforms such as arm-hyp will need to look into additional TCB state
such as VCPU in sanitiseRegister. This commit provides the scaffolding for
that.
2017-02-12 12:54:42 +11:00
Gerwin Klein 3607dfabbf haskell/design: remove unused functions 2017-02-12 12:33:05 +11:00
Gerwin Klein 82ab5500a1 abstract: remove two obsolete functions 2017-02-10 22:29:07 +11:00
Matthew Brecknell d08ee04e2f haskell: update documentation for building the Haskell kernel 2017-02-03 16:23:56 +11:00
Matthew Brecknell aee13996a6 haskell: use stack to obtain suitable GHC and cabal 2017-02-01 17:31:21 +11:00
Matthew Brecknell 7a8f2b8980 trivial: use absolute paths in haskell .gitignore 2017-02-01 17:13:04 +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 3fee2d83b4 cleanup: correct version info 2017-01-15 17:05:52 +01:00
Gerwin Klein 8ac1200329 cleanup: remove accidentally declared const 2017-01-15 17:05:52 +01:00
Matthew Brecknell db13ff19bb Isabelle2016-1: configure c-parser with faster string comparisons 2017-01-05 14:27:44 +11: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 30122b5d80 Isabelle2016-1: update to new ML API
Update references to renamed ML constants; supply default arguments to
functions with additional parameters; etc.
2017-01-05 14:26:14 +11:00
Matthew Brecknell 511c6b2d3a Isabelle2016-1: rename free variables to avoid capture 2017-01-05 14:24:36 +11:00
Matthew Brecknell 41d4aa4f1d Isabelle2016-1: update references to renamed constants and facts 2017-01-05 14:23:05 +11:00
Matthew Brecknell 0b039a0735 Isabelle2016-1: syntax: use semantic markup instead of "header" 2017-01-05 14:22:24 +11:00
Alejandro Gomez-Londono b4fe96ee67 CSpec: New import locations
types.bf and shared_types.bf were merged and moved to 32/mode/api,
imports in KernelInc_C.thy were updated accordingly

  tags: [VER-623][SELFOUR-413]
2016-11-25 13:05:55 +11:00
Alejandro Gomez-Londono ab6b9baebb ExecSpec: Changes to the haskell to better reflect ASpec
* atcbContextGet and atcbContextSet where added (just as in ASpec)

* asUser is now defined in terms of atcbContext{Get,Set}

* arch_tcb is now correctly imported as a datatype not as a type
  synonym

  tags: [VER-623][SELFOUR-413]
2016-11-25 13:05:55 +11:00
Alejandro Gomez-Londono f9c7c855d0 Haskell: Changes to the haskell to better reflect ASpec
* atcbContextGet and atcbContextSet where added (just as in ASpec)

* asUser is now defined in terms of atcbContext{Get,Set}

  tags: [VER-623][SELFOUR-413]
2016-11-25 13:05:55 +11: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
Miki Tanaka 6dad6a1c75 ExecSpec: arch-specific faults + VMFault -> ArchFault + ReservedIRQ
* skeletons, adding new constructs (arch_tcb, arch_fault)

* adjusting skeletons for ReserveIRQ + small change in haskell (ARM)

  Changes in: spec/haskell/src/SEL4/Object/Interrupt/ARM.lhs:37:21
  Due to "Defined but not used: ‘irq’"

* arch-splitting faults in skeletons (ARM)

* fix arch_tcb and asUser namespace issues in skeletons (ARM)

* checking in current generated files

  tags: [VER-623][SELFOUR-413]
2016-11-25 13:05:42 +11:00
Rafal Kolanski c92baf746d Haskell: arch-specific faults + split VMFault -> ArchFault + ReservedIRQ
Hypervisor extensions add extra fault types which are entirely
arch-specific. While the concept of a VM fault exists on all platforms,
these faults are also arch-specific.

This change adds an ArchFault datatype and constructor to the generic
Faults and Failures, and moves VMFault into ArchFault for the ARM
platform.

NOTE: fault indices have changed (generic goes before arch) as per
  the changes needed for SELFOUR-413, which is the seL4 C equivalent of
  this commit.

* add arch faults and failures to SEL4.cabal

* introduce and handle IRQReserved

  On ARM this does nothing, but on other platforms reserved IRQs are
  actually used.

* split TCB into ArchTCB (userContext)

* changing ArchFault to make haskell-translator to work

  tags: [VER-623][SELFOUR-413]
2016-11-25 13:05:15 +11:00
Xin,Gao d7450607a8 SELFOUR-553: rebase and fix styles and comments 2016-11-21 20:47:15 +11:00
Miki Tanaka a2d707d17e SELFOUR-553: update rpidrurw in TCBConfigure for simpler Infoflow proofs. 2016-11-18 16:27:26 +11:00
Miki Tanaka f8f88c6952 SELFOUR-553: Change Spec according to C code and fix ASpec and AInvs 2016-11-18 16:19:14 +11:00
Miki Tanaka 9769f73888 changed callKernel to conditionally call hooks 2016-11-18 16:19:14 +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
Rafal Kolanski 72349f81fd Revert SELFOUR-242: invert bitfield scheduler and optimise fast path
This reverts:
- a67b443ca5
    "SELFOUR-242: update goal number based indentation in Fastpath_C"
- f704cf0404
    "SELFOUR-242: invert bitfield scheduler and optimise fast path"

Verification confirmed functional correctness and refinement of the
system in this case. However, guarantees on thread scheduling and
fairness are not modeled in the current verification. Once this issue is
addressed, SELFOUR-242 will be re-examined.
2016-11-16 14:02:50 +11:00
Rafal Kolanski f704cf0404 SELFOUR-242: invert bitfield scheduler and optimise fast path
* Reverse the level 2 of the bitmap scheduler to move the highest priority
  threads' level 2 entries into the same cache line as the level 1.
* Use the bitfield scheduler to make the fast path a more common occurrence.
* Change possibleSwitchTo to not invoke scheduler when the fast path would not
  invoke it either (using implicit assumptions about the current thread being
  the highest priority schedulable thread)
2016-11-15 09:20:31 +11:00
Ramana Kumar c1c636a24f Simplify obj_bits to not check well_formed_cnode_n 2016-11-11 16:24:37 +11:00
Rafal Kolanski ff7ca60df7 ADT: add kernel entry/exit constraints on domain time left
These changes to the automatons are required by:
  SELFOUR-242: invert bitfield scheduler and optimise fast path

Details:

When we enter the kernel, the domain time left (ksDomainTime) is never zero.
If we entered on a timer interrupt, we may decrement it to zero before the
scheduler runs. If we do so, we set the scheduler state to choose_new_thread.

When choosing a new thread, the scheduler switches to a new domain if the
present one is required, and sets the new domain time left from domain_list
(ksDomSchedule).

When entering the kernel on a non-interrupt event, we never touch the domain
time left, which trivially preserves the new constraints.

To prove these, we had to ban a transition from kernel entry to kernel being
preempted when handling an interrupt event in InfoFlow. This is fine, as by
design handling interrupts is not meant to be preempted by interrupts.
2016-11-11 06:01:30 +11:00
Xin,Gao 3b679b0ce3 SELFOUR-444: fix DSpecProofs and SysInit 2016-11-02 11:19:10 +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 7ebefa69ab SELFOUR-444: Work on untyped zero invariant.
The invariant just proves that the ghost field is up to date.
2016-11-02 11:19:09 +11:00
Thomas Sewell 6ad456ca03 SELFOUR-444: Adjust Haskell, new ghost data.
The new ghost data is saved in the design spec when Untyped caps
are modified and will be used by CRefine.
2016-11-02 11:19:09 +11:00
Thomas Sewell 69f7be9917 SELFOUR-444: Initial updates to capDL spec. 2016-11-02 11:19:09 +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 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 8d4a8eb238 SELFOUR-421: fix coding style 2016-09-22 19:23:28 +10:00
Xin,Gao 8f3a4dee31 SELFOUR-421: merge with master, fix wholesystem proofs 2016-09-22 19:23:19 +10:00
Xin,Gao 113315d9a6 SELFOUR-421: merge and fix up to ArmConfidentiality proof 2016-09-22 19:21:56 +10:00
Xin,Gao e00e4c4e64 SELFOUR-421: add device bit in UntypedCap and FrameCap in capdl 2016-09-22 19:11:37 +10:00
Xin,Gao 328846ee1a SELFOUR-421: crefine builds 2016-09-22 19:11:37 +10:00
Xin,Gao c3be923ca0 SELFOUR-421: a defend version before wild changes 2016-09-22 19:11:36 +10:00
Joel Beeren ec57875566 SELFOUR-421: new haskell spec after UserDataDevice changes 2016-09-22 19:11:36 +10:00
Joel Beeren 765d8aa88e SELFOUR-421: fixed Refine after merge with master 2016-09-22 19:11:36 +10:00
Joel Beeren 78bd770240 SELFOUR-421: retranslate haskell 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 773684bcd1 SELFOUR-421: retranslate haskell for fixed range check 2016-09-22 19:11:36 +10:00
Joel Beeren df877769fc SELFOUR-421: refine done 2016-09-22 19:11:36 +10:00
Joel Beeren 3c223b42fe SELFOUR-421: AInvs done, no added invariants yet 2016-09-22 19:11:29 +10:00
Joel Beeren 5e16ec5617 SELFOUR-421: first attempt at abstract spec 2016-09-22 19:11:16 +10:00
Thomas Sewell 4c23410f6c Haskell translator: can keep type constructors.
A skeleton line of the form
\#INCLUDE_SETTINGS keep_constructor=asidpool
now ensures that the asidpool type constructor is actually created in
subsequent #INCLUDE_HASKELL declarations. It turns out this feature was already
available, and already used for asidpools, this change just makes it externally
adjustable.
2016-08-25 15:33:19 +10:00
Matthew Brecknell 6b6b8786e8 arch_split: move kernel_base and idle_thread_ptr to arch-specific theories 2016-08-03 14:46:48 +10:00
Matthew Brecknell f9f160ed14 arch_split: replace some fixed word sizes with type aliases
Changed some instances of word32 to machine_word, and "10 word" to irq.
Also introduce a type_synonym for "machine_word_len".
2016-08-03 14:46:23 +10:00
Matthew Brecknell c2fa704d9b add workaround for building documents with TeX Live 2016 [VER-622]
Isabelle LaTeX style files use old font commands \bf, \rm, \tt, etc.
However, newer versions of some LaTeX document classes (e.g. scrbook)
have removed support for these commands. This brings back those
commands for documents built with isabelle.sty.
2016-07-22 07:48:08 +10:00
Rafal Kolanski 58153f923c rerun haskell translator, fix design spec 2016-07-22 01:10:29 +10:00
Corey Richardson dd73a2c819
run haskell translator 2016-07-21 15:54:49 +10:00
Corey Richardson e2c55aa544
run haskell translator 2016-07-20 18:16:23 +10:00
Alejandro Gomez-Londono 93adccc141 license-tool: missing license headers + .licenseignore [VER-551] 2016-07-14 16:34:31 +10:00
Matthew Brecknell b3c809983b arch_split: invariants: split Ipc_AI [VER-572] 2016-06-27 17:19:11 +10:00
Alejandro Gomez-Londono 9c608c62dc arch_split: Schedule_AI [VER-565] 2016-06-02 14:20:06 +10:00
Matthew Brecknell 9ccdbfa21e arch_split: move locale setup to generic theory 2016-05-31 15:14:40 +10:00
Japheth Lim 40570bc4fe regression: add test to check theory import paths
This commit also fixes all bad imports reported by the test script.
Jira issue VER-560
2016-05-27 16:17:13 +10:00
Japheth Lim 225a2dbe79 haskell: add .PHONY makefile entries 2016-05-24 16:31:03 +10:00
Japheth Lim 6ae8d712ec haskell: reconstruct lost comment from galois-domains merge 2016-05-24 16:31:03 +10:00
Japheth Lim 3409a92eca haskell: document the package version constraints 2016-05-24 16:31:03 +10:00
Japheth Lim 858733c318 haskell: add GHC config var to makefile
This allows people with multiple GHCs to select the correct one (7.8).
2016-05-24 16:31:03 +10:00
Japheth Lim 218f6ccbf3 haskell: add license tag to util script 2016-05-24 16:31:03 +10:00
Japheth Lim 37fa2f359a haskell: revert minimum cabal-version
GHC 7.8 ships with Cabal 1.18 but the .cabal file asks for >=1.20,
which seems to be unnecessary. This commit reverts to >=1.18.
2016-05-24 14:53:00 +10:00
Japheth Lim c71fb4da54 regression: add test for building Haskell kernel
Currently requires GHC 7.8.x.
2016-05-24 14:52:51 +10:00
Japheth Lim ebc7cbe584 haskell: move Haskell kernel into spec/ 2016-05-24 14:18:13 +10:00
Joel Beeren 6a2692abc6 lib: fix theory includes for arch-splitted WordSetup 2016-05-20 12:31:10 +10:00
Gerwin Klein 80456aa2c7 abstract: reduce syntax ambiguity 2016-05-16 21:11:40 +10:00
Gerwin Klein 322f1023f5 word_lib: adjust theory dependencies 2016-05-16 21:11:40 +10:00
Gerwin Klein 2a6df7a9a3 capDL: remove duplicate wordbits 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
Gerwin Klein f0faa90f8a lib/spec/proof/tools: fix word change fallout 2016-05-16 21:11:40 +10:00
Daniel Matichuk 7e37215bd2 arch_split: add extend_locale to base import 2016-05-06 18:37:16 +10:00
Matthew Brecknell bb0644beaa arch_split: merge master 2016-05-06 16:44:43 +10:00
Matthew Brecknell 56b226a608 arch_split: CRefine: use requalify instead of shadow 2016-05-06 08:59:33 +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 670d1c118d arch_split: added optional definition override for crunch. Reduced qualification commands to minimal required set. 2016-05-04 15:14:41 +10:00
Matthew Brecknell a2135ca8ce arch_split: Refine checking, including Orphanage 2016-04-30 16:25:20 +10:00
Matthew Brecknell 0c3a12771d arch_split: merge master 2016-04-28 14:36:43 +10:00
Matthew Brecknell 0e5ffd1ea0 arch_split: requalify abstract theories 2016-04-27 18:46:16 +10:00
Daniel Matichuk 1d20b393c0 arch_split: replaced sublocale with global_naming 2016-04-27 14:32:38 +10:00
Matthew Brecknell 8ab955984f arch_split: CSpec checking 2016-04-26 13:45:59 +10:00
Daniel Matichuk 3191c485d5 arch_split: added ARM_A and ARM_H locales 2016-04-20 17:31:45 +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
Daniel Matichuk 72337faa7b arch_split: added namespacing to ExecSpec 2016-04-01 15:17:17 +11:00
Daniel Matichuk 144778e8eb arch_split: avoid caching file_defs in translator to make CONTEXT environment function as expected 2016-04-01 15:09:34 +11:00
Daniel Matichuk d0a29887ff arch_split: checkpoint for namespacing haskell 2016-04-01 15:09:34 +11:00
Matthew Brecknell f89279e381 arch_split: reworking predicates about arch objects and types 2016-03-24 17:24:14 +11:00
Matthew Brecknell f2cc8d7c0f arch_split: invariants: progress in ArchADT_AI 2016-03-18 13:08:26 +11:00
Thomas Sewell 7e9b8224ee Factor out bitfield proof text into Eisbach lib.
There's a lot of proof text quoted into the source of the bitfield generator
(../seL4/tools/bitfield_gen.py). Optimising that requires even more complex
proof scripts. Instead of quoting them there, this introduces
lib/BitFieldProofsLib.thy which creates Eisbach methods for discharging some
relevant proof obligations. These can be tweaked without adjusting the
bitfield generator.

This approach could be taken a lot further to simplify the bitfield generator
further.
2016-03-17 15:54:24 +11:00
Sophie Taylor d7fd88727a SELFOUR-420: Verification of maxIRQ check in handle_interrupt. 2016-03-17 11:20:52 +11:00
Daniel Matichuk b679b00f97 arch_split: initial attempt at redefining invariants to avoid changing too many proofs 2016-03-04 19:03:45 +11:00
Daniel Matichuk 5e2f9a5e7c arch_split: change caps_of_state to be explicit projection f caps_of_state 2016-03-04 19:03:45 +11:00
Matthew Brecknell b88de8b2e2 arch_split: trivial fixup SpecCheck inconsistency 2016-03-03 16:01:15 +11:00
Matthew Brecknell 8042994eec arch_split: fix namespacing for DSpec and SepTacticsExamples 2016-03-03 14:56:43 +11:00
Matthew Brecknell 8cc95bfb8e arch_split: merge master into arch_split 2016-03-01 11:30:47 +11:00
Japheth Lim 3144c4d847 Remove time limits from Isabelle ROOT files. 2016-02-29 14:52:37 +11:00
Miki Tanaka 6f6c58168c SELFOUR-56: Remove diminish rights from IPC 2016-02-24 13:24:10 +11:00
Daniel Matichuk d107cb6758 arch_split: halfway into KHeap_AI 2016-02-22 17:48:52 +11:00
Japheth Lim 5772559915 regression: bump timeouts further. All timeouts now multiples of 1hr. 2016-02-22 17:38:35 +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
Xin Gao 91b9490d0a l4v-sabre: regenerate haskell-spec 2016-02-17 11:18:03 +11:00
Gao Xin 0d260252ff l4v-sabre: rebase and fix proofs to infoflow 2016-02-17 11:18:02 +11:00
Gao Xin bc73b112bd l4v-sabre: change type of irq to be 10 word 2016-02-17 11:18:02 +11:00
Gao Xin 50fa257113 rebase and fix problems caused by new machine constants 2016-02-17 11:18:02 +11:00
Gao Xin c45f88745c l4v-sabre: minor fix on dmo_ackInterrupt and foldME 2016-02-17 11:18:02 +11:00
Gao Xin bee4ba0052 l4v-sabre: fix refine 2016-02-17 11:18:02 +11:00
Matthew Brecknell c1574f1f32 cspec: build: avoid re-entering isabelle via dash-0.5.8 2016-02-17 11:04:20 +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
Daniel Matichuk 9718f1bda2 arch_split: progress on namespacing abstract spec 2016-02-05 16:59:18 +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
Japheth Lim 253b04f6d9 regression: use CPU instead of real-time timeouts for all tests.
Also update and clarify test spec documentation.
2016-02-01 19:51:13 +11:00
Miki Tanaka b287127924 DRefine and DPolicy finished (includes a small change in ASpec) 2016-01-29 07:11:11 +11:00
Daniel Matichuk 0063075ba4 Merge remote-tracking branch 'verification/master' into arch_split 2016-01-28 18:26:53 +11:00
Miki Tanaka 671c5673bd more fixes in DRefine: some changes in proofs involving uint / unat 2016-01-28 14:07:42 +11:00
Daniel Matichuk a1f23e5b28 arch_split: DRefine now builds 2016-01-25 18:42:27 +11:00
Joel Beeren 080268851a fix CRefine after shared_types got moved 2016-01-22 11:51:49 +11:00
Daniel Matichuk c282969c54 Merge remote-tracking branch 'verification/master' into arch_split 2016-01-21 10:22:48 +11:00
Daniel Matichuk b214ac035f resurrected "defs" command for Isabelle2016-RC1 2016-01-18 15:10:47 +11:00
Joel Beeren c0173e2e85 archirq: bump kernel version 2016-01-18 11:50:10 +11:00
Joel Beeren cb4cb4201c archirq: bump haskell kernel version 2016-01-18 10:30:24 +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
Joel Beeren 7b1d4a12a6 SELFOUR-114: remove duplicated message_info struct 2016-01-11 14:13:13 +11:00
Gerwin Klein 02cfe4d009 ASpec 2016-01-10 17:48:49 +11:00
Japheth Lim d92666bc30 regression: remove forceful build options from CSpec makefiles. They don't seem to be needed. 2016-01-07 18:39:50 +11:00
Japheth Lim 3c4b566484 regression: fix tests.xml dependencies to be consistent with ROOTs. 2016-01-07 18:39:50 +11:00
Joel Beeren 1ccd4f5dcc conversion: Rationalise standard types 2015-12-10 21:24:22 +11:00
Thomas Sewell 043a69c81b Fix Orphanage from array changes, refactor.
Some generalisation is done in finaliseSlot_invs'' to avoid
duplicating it in Orphanage and PageTableDuplicates.

Finally cleanup in haskell translation.
2015-12-02 09:15:32 +11:00
Thomas Sewell 7e40646c48 Proof up to Fastpath_C.
The very last twist of this: the proof that resolveAddressBits can
be seen as functional needs to change, a lot, because it's now
sensitive to gsCNodes. Still working on that.
2015-12-02 09:07:49 +11:00
Thomas Sewell 4fd43512bb WIP on handling array assertions. Up to Retype_C.
This is quite a lot of work in the end. I've had to gut most of
Retype_C along the way. Nearly done there.
2015-12-02 09:06:06 +11:00
Thomas Sewell 6fa0909124 Partial progress on using array assertions. 2015-12-02 09:05:04 +11:00
Gerwin Klein 0f2d557679 terminology in comments: async ep -> notifications 2015-11-24 16:58:22 +13:00
Gerwin Klein 00bfafe2f5 Wait -> Recv: update specs 2015-11-20 16:02:14 +11:00
Gerwin Klein 8fb2dc2b15 Wait -> Recv: haskell update 2015-11-20 16:02:13 +11:00
Joel Beeren 457a55a831 add arch_tcb object to C, rename aep -> ntfn 2015-11-20 16:02:13 +11:00
Gerwin Klein 05c6abc751 removed unused (and outdated) constants 2015-11-13 15:24:36 +11:00
Rafal Kolanski d51402a5a2 Merge remote-tracking branch 'verification/master' into priority-bitmap
(seL4_NBWait)
2015-10-21 16:23:01 +11:00
Joel Beeren e403eb8f0a poll: added non blocking sync wait 2015-10-21 14:24:49 +11:00
Joel Beeren d6f7579be7 poll: Added new syscall for polling async endpoints (non-blocking wait) 2015-10-21 14:24:49 +11:00
Rafal Kolanski c1eb235105 Merge 'verification/master' into priority-bitmap
Green build except for:
CParserTest (WTF Duplicate fact declaration "dc_20081211.dc_20081211.test_modifies")
AutoCorresSEL4 (waiting on result)

There is still a carefully managed sorry in Schedule_R, waiting on the C
parser FNSPEC+DONT_TRANSLATE fix.
2015-10-21 06:19:20 +11:00
Rafal Kolanski 2a9d3022f2 priority-bitmap: Update abstract->Haskell refinement
Added word_log2 and word_clz (inline for now, will migrate them out to
lib later).

Proved most important properties of word_log2 and some basic
count leading zeros properties (word_clz). The former were painful.

Thanks to Thomas, we have a nice tactic for dealing with complicated
obj_at' predicates in conclusion: normalise_obj_at'
2015-10-20 23:40:44 +11:00
Corey Richardson d28994d860 Consistently use /usr/bin/env to invoke python 2015-10-13 16:42:53 +11:00
Nickolai Zeldovich 1060eb664a fix typo in Syscall_A.thy documentation 2015-10-13 16:41:04 +11:00
Daniel Matichuk c8d0692008 sys-init now checks 2015-09-22 12:14:27 +10:00
Daniel Matichuk dab3914e95 change sending on a bound async ipc to avoid revoke_cap 2015-09-21 17:18:37 +10:00
Ramana Kumar 1ae434b9d5 aep-binding: attempted progress on Bisim, 1 sorry remains
assumptions include aep_obj aep = IdleAEP and aep_bound_tcb aep = Some
x, which I guess is probably a contradiction, but I don't know how to
prove that.
2015-09-17 17:55:57 +10:00
Joel Beeren 8467425906 aep-binding: fixed ASepSpec 2015-09-16 15:30:19 +10:00
Joel Beeren f117c99903 aep-binding: updated AInvs, Access, Refine for new decodeBindAEP 2015-09-15 16:31:14 +10: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
Joel Beeren 3372cd32a8 SELFOUR-220: When calling handleWait, only delete the
TCB's ReplyCap when actually waiting on a synchronous
endpoint.
2015-07-23 14:45:17 +10:00
Thomas Sewell b5f796184a Repair spec/refine, I think. 2015-07-15 17:25:47 +10:00
Thomas Sewell b7bb3666f4 Update haskell for proving WCET annotations. 2015-07-14 14:23:29 +10:00
Thomas Sewell ca4391881c WIP on WCET annotations. 2015-07-14 14:23:29 +10:00
Daniel Matichuk 9882205e15 Most recent version of subgoal focus tools 2015-07-08 15:44:33 +10:00
Gerwin Klein 80897b5bbc spec: tabs -> spaces 2015-05-28 14:03:53 +10:00
Gerwin Klein cfec9ea0db Merge branch 'master' into 2015 2015-05-28 11:45:13 +10:00
Gao Xin bd0f0c29d1 small fixes on haskell translator and haskell spec templates 2015-05-28 11:30:22 +10:00
Joel Beeren 7b6ddc5212 updated translated haskell spec 2015-05-28 11:30:22 +10:00
Joel Beeren 002cf370bb Updated proof with new fastpath changes removing setCurrentASID and armv_contextSwitch_fp 2015-05-28 11:30:22 +10:00
Gerwin Klein ca88de6611 Merge from master. 2015-05-26 07:47:54 +10:00
Matthew Fernandez 221cb74dd5 Fix: Description of `SORRY_BITFIELD_PROOFS` in cspec README.
The kernel's Makefile expects this value to be `1` and will incorrectly detect
`yes` as a directive *not* to sorry these proofs.
2015-05-19 12:27:37 +10:00
Gerwin Klein e09f88d2e7 2015 update for CBaseRefine 2015-05-17 10:42:15 +10:00
Gerwin Klein 12fa86863a fewer warnings 2015-05-16 19:52:49 +10:00
Gerwin Klein e4b54fea78 capDL spec: fewer warnings 2015-05-09 13:05:01 +02:00
Gerwin Klein 277ecdf2bb remove syntax ambiguity 2015-05-09 13:04:11 +02: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
Gerwin Klein 190e7c38d6 start work on Isabelle 2015 update 2015-04-17 16:19:32 +01:00
Gerwin Klein 22af66555c remove even arch calls from separation kernel setup
(patch by Simon Winwood)
2015-04-10 17:39:24 +10:00
Daniel Matichuk a221a52350 Added new proofcount tool to "tools" and removed old one from "lib".
Removed reference to old proof_counting from proof/ROOT and spec/ROOT
2015-02-11 17:46:34 +11:00
Matthew Fernandez 2b23652b5e cspec: Check CPP exists and fallback on native CPP if possible. 2015-01-22 13:36:53 +11:00
Gerwin Klein 7e7d39c24e enable XN in abstract spec; update AInvs and Refine 2014-11-28 08:58:57 +11:00
Gerwin Klein 21e7e33878 import Haskell version of XN patch 2014-11-28 08:58:57 +11:00
Gerwin Klein e4d8fb5dba GHC 7.8 update (bitSize -> finiteBitSize) 2014-11-28 08:58:57 +11:00
Andrew Boyton fe14c7c456 Make toPAddr and fromPAddr input abbreviations (not abbreviations).
This stops every instance of "id" becoming "fromPAddr" in goals.
2014-10-24 16:26:19 +11:00
David Greenaway 3fb7f99d55 make-spec: Avoid generating unnecessary whitespace in instance proofs. 2014-10-21 21:36:27 +11:00
David Greenaway 7521fa080b spec: Remove excessive strings of newlines. 2014-10-21 10:42:43 +11:00
Thomas Sewell 8e427dcb3b Renovate StaticFun a bit.
The functor is gone, and instead StaticFun exports two more general
operators, one for defining a partial map by a tree, and one for
extracting the theorems from an existing partial map definition.

The extraction process uses simplification in a more conservative
manner than before, and is guaranteed to produce exactly the
expected theorems.
2014-09-23 14:40:31 +10:00
David Greenaway 0c004d2a93 Merge branch 'master' into 'isabelle-2014'.
Conflicts:
	proof/drefine/Arch_DR.thy
	proof/drefine/Finalise_DR.thy
	proof/drefine/StateTranslation_D.thy
	sys-init/DuplicateCaps_SI.thy
	sys-init/Proof_SI.thy
	tools/autocorres/tests/examples/SchorrWaite.thy
2014-09-23 14:31:33 +10:00
Andrew Boyton ea58753cd7 Merge branch 'cdl_page_map_cancel'
Merge in the setting of registers and the starting of threads in the system initialser.
2014-09-18 17:21:17 +10:00
Andrew Boyton 2b7b258997 sys-init: Prove the starting of threads is done correctly.
We no longer assume the starting of threads, but prove it correct
(assuming the behaviour of the scheduler).
2014-09-18 12:30:04 +10:00
David Greenaway cf0d1abce6 Merge 'master' into 'isabelle-2014'.
Conflicts:
	proof/crefine/Fastpath_C.thy
	proof/drefine/KHeap_DR.thy
	proof/infoflow/Noninterference.thy
	spec/design/version
	sys-init/DuplicateCaps_SI.thy
	sys-init/InitTCB_SI.thy
	sys-init/Proof_SI.thy
	tools/asmrefine/SimplExport.thy
	tools/autocorres/tests/examples/SchorrWaite.thy
2014-09-17 14:21:13 +10:00
Gao Xin 0199c5c19c Fix seL4_TCB_Resume 2014-09-12 15:28:47 +10:00
Gao Xin 5015f53d95 fix seL4_TCB_WriteRegisters 2014-09-10 17:30:35 +10:00
Gao Xin 47662af345 fix DSpecProofs 2014-09-09 15:57:52 +10:00
Andrew Boyton 7167ea42ac CapDL: Made IRQ Nodes a new object type, not a small CNode.
IRQ Nodes are now their own object type in capDL. This makes it much easier
to distinguish between "real" CNodes and IRQ Nodes.

Updated:
 * the capDL refinement,
 * the access proofs, and
 * the system initialiser.
2014-09-09 14:07:50 +10:00
Gao Xin 77dd554227 page_map_unmap_cancel : cdl spec changed and drefine fixed. 2014-09-05 14:48:22 +10:00
Andrew Boyton 7693e1fadc TakeGrant: Rename a couple of constants to make things clearer.
has_at_least => cap_in_caps
has_at_most => caps_dominated_by
2014-09-04 14:13:46 +10:00
Joel Beeren a5f2cab271 Merge branch 'master' into ioapic 2014-09-02 11:13:55 +10:00
Joel Beeren 8fa6226ecc ioapic: fixed specs for change to 14 bit FSR 2014-09-01 16:41:33 +10:00
Thomas Sewell caf0529c7f Move burden of 'halt' proof, use less modifies.
In detail:
  - add a general user-specified exception to c_exntype
    (for use in tools like Substitute)
  - wrap calls to 'halt' in Guard {}, making it clearer that
    halt is never called, simplifying asmrefine
  - repair halt changes in crefine
  - avoid use of some suspicious 'modifies' properties in crefine
    which were generated by the parser for functions where inline
    ASM blocks have been elided, and which may be inaccurate.
2014-08-29 13:57:28 +10:00
Joel Beeren b3e2eb1f9d ioapic: finished up to InfoFlowC 2014-08-28 15:56:26 +10:00
Joel Beeren 8d11a22f5b ioapic: first abstract spec 2014-08-22 16:24:40 +10:00
Gerwin Klein f1d808c96a integrate separation kernel config proofs
Hooked up into build system and regression test; added READMEs
2014-08-13 22:08:46 +10:00
Gerwin Klein 3556bee2dc github import of static cap config proofs 2014-08-13 15:31:21 +10:00
Gerwin Klein 12b1b0d16f move isAligned to HaskellLib
Isabelle2014 doesn't like defs to be less general than the consts declaration.
2014-08-09 15:59:24 +10:00
Gerwin Klein 1af1d2b67b some of the global Isabelle2014 renames
option_case -> case_option
sum_case -> case_sum
prod_case -> case_prod
Option.set -> set_option
Option.map -> map_option
option_rel -> rel_option
list_all2_def -> list_all2_iff
map.simps -> list.map
tl.simps -> list.sel(2-3)
the.simps -> option.sel
2014-08-09 15:39:20 +10:00
Gerwin Klein 954492534c ported ASpec to Isabelle2014-RC0 2014-08-09 15:00:18 +10:00
Gerwin Klein ef7ba847c0 bump API version 2014-07-28 11:10:47 +02:00
Corey Lewis 71ad3eed07 Update a comment in the capDL spec. 2014-07-28 17:45:50 +10:00
David Greenaway 0fb7a8084d misc: Proofing and formatting of README.md files.
Attempt to improve readability of the files when viewed as plain ASCII;
proof-read and fix minor issues.
2014-07-28 13:15:48 +10:00
Gerwin Klein 4326d30cdc the other README files for spec/ 2014-07-22 19:11:43 -04:00
Gerwin Klein fc4200f845 README files for spec/ 2014-07-22 19:10:10 -04:00
Gerwin Klein 50dda7708c comment cleanup 2014-07-22 18:10:20 +02:00
Andrew Boyton acf0abe16a Cleanup of a number of definitions of the separation algebra for capDL.
* The definitions of the separation "arrows" is slightly nicer and more consistent.
  - We have a nicer correspondence between sep_map_c and sep_map_s.
  - sep_map_irq now specifies exactly what the IRQ table contains
    (that it *only* has one entry, not that it contains at least that entry).
  - Nicer LaTeX output for the arrows.

* A number of minor renaming of constants and types.
  - cdl_component => cdl_component_id
  - sep_entity => cdl_component
  - state_sep_projection => sep_state_projection
  - obj_to_sep_state => object_to_sep_state

* Removed a few unused lemmas.
2014-07-22 14:37:37 +10:00
Andrew Boyton 36588c4359 Minor cleanup of proofs in the Take/Grant security model. 2014-07-22 14:36:53 +10:00
Gerwin Klein 1273b8aac8 fix haskell version generation 2014-07-21 11:18:14 +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