Commit Graph

440 Commits

Author SHA1 Message Date
Miki Tanaka 5cd27a104f arm-hyp abstract: add VCPU_A, add ARM_HYP/ArchInterrupt_A 2017-06-19 14:32:19 +10:00
Miki Tanaka 4c3b1ef1e4 arm-hyp abstract: vcpu datatype, update pte/pde datatypes, etc. 2017-06-19 14:32:19 +10:00
Miki Tanaka 2753aa64c1 arm-hyp abstract: add vcpu, arch_tcb, arch_fault, fix decode invocations 2017-06-19 14:32:19 +10:00
Miki Tanaka bb9d8df8e8 arm-hyp execspec/machine: callbacks and variuos vcpu functions
- defined callback axiomatisations
2017-06-19 14:32:19 +10:00
Miki Tanaka c079f39e3b arm-hyp execspec: pdates for VER-623
with correct copy_global_mappings for ARM_HYP
2017-06-19 14:32:19 +10:00
Miki Tanaka c32e6552e5 arm-hyp execspec: add irqVGICMaintenane and initInterruptController
with caseconvs, generated files
2017-06-19 14:32:19 +10:00
Miki Tanaka 00f1393c5b arm-hyp execspec: add caseconvs, fixes in haskell + VCPU_H 2017-06-19 14:32:19 +10:00
Miki Tanaka 0ee19108b5 arm-hyp execspec: VCPU skeleton file, new constructs (arch_tcb, arch_fault, Hypervisor) for ARM_HYP 2017-06-19 14:32:19 +10:00
Miki Tanaka 0741f0d533 arm-hyp execspec/machine: fixing import paths and namespace for multiple architecture 2017-06-19 14:32:19 +10:00
Miki Tanaka 81663c978d arm-hyp execspec: add skel/ARM_HYP, m-skel/ARM_HYP, make haskell-translator work for ARM_HYP
(copied from ARM)
Per-plaform CPP configuration for spec-check and make-spec.

The configuration is still duplicated between the two scripts, but now
the translation/check for ARM_HYP will use correct CPP settings.
2017-06-19 14:31:56 +10:00
Miki Tanaka 8bfc2ac68c execspec/machine: remove redundant file (ARM) 2017-06-17 16:26:11 +10:00
Miki Tanaka 1f8127c6cc arm-hyp (abstract/design/machine): add ARM_HYP directories 2017-06-17 16:26:11 +10:00
Miki Tanaka f7e451b18a arm-hyp haskell: updates for the rebase (remove recycle/selfour-553/VER-623)
* correct asid_high_bits and largePTE/superSectionPDE offsets
* correct copy_global_mappings for ARM_HYP
2017-06-17 16:26:11 +10:00
Miki Tanaka 611d63e4ea arm-hyp haskell: add prepareThreadDelete
this is a function called from finiliseCap to prepare a tcb for deletion
2017-06-17 16:26:11 +10:00
Rafal Kolanski 5898d6c7e3 arm-hyp haskell: get SMMU target to build again 2017-06-17 16:26:11 +10:00
Rafal Kolanski 6356fe57a2 arm-hyp haskell: implement VCPU functionality (except faults)
also includes fixes for haskell-translator (SELFOUR-551/555/557), fix the range of vgicLR
2017-06-17 16:26:11 +10:00
Rafal Kolanski 68a8ebd560 arm-hyp haskell: SELFOUR-551: Swap argument order of [di|a]ssociateVcpuTcb
Covers pull request #299. The rest of the changes are either already in
place or concern IO which is not fully specified yet.
2017-06-17 16:26:11 +10:00
Rafal Kolanski b77476a45e arm-hyp haskell: incorporate SELFOUR-555/557
from pull request #285:
SELFOUR-555: Rename ksCurCPU->armHSCurVCPU
SELFOUR-557: s/isIOSpaceFrame/isIOSpaceFrameCap/

Other changes in pull request have no effect on current Haskell spec.
2017-06-17 16:26:11 +10:00
Rafal Kolanski 2c58b564d9 arm-hyp haskell: VIRQ inject invocation 2017-06-17 16:26:11 +10:00
Rafal Kolanski 32951a9a87 arm-hyp haskell: rephrase VIRQ inject decode after kernel changes 2017-06-17 16:26:11 +10:00
Rafal Kolanski 39f054220c arm-hyp haskell: add VGIC interfaces + decode VCPU inject IRQ 2017-06-17 16:26:11 +10:00
Rafal Kolanski 222c2fdf77 arm-hyp haskell: VCPU register read/write (decode+perform) 2017-06-17 16:26:11 +10:00
Rafal Kolanski 0085b67aea arm-hyp haskell: fix compile for build-arm-hyp-nosmmu
Forgot to disable capVPisIOSpace PageCap property when SMMU disabled.
2017-06-17 16:26:11 +10:00
Rafal Kolanski 9dfcec274a haskell: clean up Makefile, separate build dir per target 2017-06-17 16:26:11 +10:00
Rafal Kolanski bd8c6d2a72 haskell: add mapMaybe and modifyArchState
Utility functions.
2017-06-17 16:26:11 +10:00
Rafal Kolanski 9ea53d6c1f haskell: make build-arm-hyp-nosmmu the default build target 2017-06-17 16:26:11 +10:00
Rafal Kolanski 7125d4843c haskell: rename ARM target in Makefile to build-arm
"build" is ambiguous
2017-06-17 16:26:11 +10:00
Rafal Kolanski fa8fc7de7d haskell: arch-specific faults + split VMFault -> ArchFault
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.
2017-06-17 16:26:11 +10:00
Rafal Kolanski 7dc21c9c71 haskell: fix misguided import for ARM platform 2017-06-17 16:26:11 +10:00
Rafal Kolanski 57d800e9c3 arm-hyp haskell: ARMVCPUSetTCB decode+perform 2017-06-17 16:26:11 +10:00
Rafal Kolanski fb23b8ef21 arm-hyp haskell: make VCPU PSpaceStorable 2017-06-17 16:26:11 +10:00
Rafal Kolanski 8309e0acde arm-hyp haskell: don't regenerate Structures.lhs-boot
Structures.lhs-boot is custom, but there was a general rule that would
clobber it in the Makefile. Override this rule.
2017-06-17 16:26:11 +10:00
Rafal Kolanski c5e59e1028 arm-hyp haskell: basic stubs to support recent haskell changes 2017-06-17 16:26:11 +10:00
Rafal Kolanski d79c167820 arm-hyp haskell: ArchFault stub for ARM_HYP platform. 2017-06-17 16:26:11 +10:00
Rafal Kolanski 75514f6a05 arm-hyp haskell: resolve circular dependency for VCPUs
Done by scattering parts of VCPU all over the place, but in a canonical
fashion.
2017-06-17 16:26:11 +10:00
Rafal Kolanski 25616760bd arm-hyp haskell: more non-progress in trying to resolve circular imports 2017-06-17 16:26:11 +10:00
Rafal Kolanski de74d26bbe arm-hyp haskell: call VCPU functions properly
Completely breaks build due to circular dependency problems we can't yet
solve.
2017-06-17 16:26:11 +10:00
Rafal Kolanski 663790c1ad arm-hyp haskell: add start of VCPU/ARM_HYP
Currently not working.
2017-06-17 16:26:11 +10:00
Rafal Kolanski 884586da3f arm-hyp haskell: addres several FIXMES:
- dropped InvokePageIO in favour of capVPisIOSpace flag on PageCap
- converted some objBits (undefined :: ...) to pteBits and pdeBits
- added invalid IOPDEs and IOPTEs encoded to 0
- added IOPTEs and IOPDEs to PSpaceStorable
- adjusted asidHighBits to drop one on enabling MMU
2017-06-17 16:26:11 +10:00
Rafal Kolanski 298d4ea6fe arm-hyp haskell: changes from meeting 2017-06-17 16:26:11 +10:00
Rafal Kolanski a35ec59857 arm-hyp haskell: add arm-hyp-nossmu target, make sure it compiles 2017-06-17 16:26:11 +10:00
Rafal Kolanski 77af6dc71e arm-hyp haskell: compiles, still missing VCPU and IO/IOSpace
All missing spots are hopefully tagged now, and there is quite a bit to
discuss tagged with "FIXME ARMHYP".
2017-06-17 16:26:11 +10:00
Rafal Kolanski b2a1ff6a6a arm-hyp haskell: VSpace compiles with enabled SMMU (stubbed IO for the moment) 2017-06-17 16:26:11 +10:00
Rafal Kolanski c103dfc31b haskell: allow underscores in module names in mkhsboot
Wasted so much time figuring out this was a problem.
2017-06-17 16:26:11 +10:00
Rafal Kolanski bdc3c846dd haskell: base arm-hyp off of arm-kzm 2017-06-17 16:26:11 +10:00
Rafal Kolanski e080f5c26d haskell: allow adding extra CPP options for a target 2017-06-17 16:26:11 +10:00
Rafal Kolanski f5831941ff haskell: hlint and clean up Setup.hs 2017-06-17 16:26:11 +10:00
Rafal Kolanski 49bf6be16a Haskell: build setup for arm-hyp (arm-tk1 = ARM_HYP + TK1) 2017-06-17 16:26:11 +10:00
Alejandro Gomez-Londono 0a31fa7fe4 Remove spec-check test and scripts 2017-05-12 12:50:55 +10:00
Alejandro Gomez-Londono 41f200d5b3 design: Update Makefiles + tests.xml to auto-generate the design spec
* It runs the haskell-translator as a dependency, eliminating the
      need for "run haskell translator" commits.
2017-05-12 12:50:49 +10:00
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