Commit Graph

1149 Commits

Author SHA1 Message Date
Victor Phan c7fb4dcf2b riscv aspec/ainvs: redefine kernel_elf_base to point to be kernelELFBase 2019-11-13 16:08:52 +11:00
Victor Phan 6f94fff163 riscv aspec/ainvs: rename kernel_base to kernel_elf_base 2019-11-13 16:08:42 +11:00
Victor Phan 8bf03d45a0 riscv haskell/design: add and implement IRQ invocations
setIRQTrigger added but unimplemented because it's a machine op.
irqInvalid added, set to 0, since this is what's defined on the Spike
platform, may need to implement irqInvalid for other platforms if we
want generality for later proofs (Refine).
check, decode, perform IRQ control fully implemented to match the CSpec.
2019-11-12 18:28:40 +11:00
Victor Phan 55408a48af riscv aspec: implement IRQ check, decode and invoke control functions
These functions were originally doing throwError IllegalOperation or
returnOk (). Now they have been reimplemented to match the CSpec.

In arch_check_irq, an error is thrown if IRQ is greater than maxIRQ or
is equal to irqInvalid. The error that gets returned to the user however
is a RangeError from 1 to maxIRQ.
2019-11-12 18:28:40 +11:00
Victor Phan 39d314137e riscv haskell: add support to thread id registers 2019-11-12 18:28:40 +11:00
Victor Phan 79da089c2e riscv aspec: update for moving IPC buffer register to thread-local storage 2019-11-12 18:28:40 +11:00
Victor Phan d4f302ae7f riscv haskell: rename kernelBase to kernelELFBase and fix its value 2019-11-12 18:28:40 +11:00
Victor Phan 453233faad riscv aspec: rename kernelBase to kernelELFBase and update address space layout comment 2019-11-12 18:28:40 +11:00
Victor Phan e4d83b313a riscv refine: update for PageMap replacing PageRemap (SELFOUR-161) 2019-11-12 18:28:40 +11:00
Gerwin Klein a5e27933a5 riscv: cleanup; resolve remaining FIXMEs 2019-11-12 18:28:40 +11:00
Gerwin Klein 090894c990 riscv aspec+ainvs: define a consistent initial page table
Simpler than the real kernel layout, but will show that invariants are
consistent.
2019-11-12 18:28:39 +11:00
Gerwin Klein 9d81f85c38 riscv: force vptr alignment in PTMap decode
Instead of checking for alignment, mask out the bottom bits to force the
vptr stored in the cap into the correct alignment for the level to be mapped.

See also SELFOUR-2162
2019-11-12 18:28:39 +11:00
Gerwin Klein 4a49681bf5 riscv haskell: look up ASID of PT cap, not vspace cap.
It is the user-provided cap that needs to be checked for correct ASID and
vspace.
2019-11-12 18:28:39 +11:00
Gerwin Klein 7ce1c0fb21 riscv haskell: force vptr alignment in decodeRISCVPageTableInvocationMap
see also JIRA SELFOUR-2162
2019-11-12 18:28:39 +11:00
Gerwin Klein b5c47d552e riscv aspec+ainvs: perform_pg_inv_unmap: update cap in memory
The argument cap is the same as the one in memory, but it's less work to not
prove that.
2019-11-12 18:28:39 +11:00
Gerwin Klein a26c57a825 riscv haskell: needs to unmap, not ignore in finalise 2019-11-12 18:28:39 +11:00
Gerwin Klein 750746296f riscv aspec: unmap_page may be called with unmapped ASID
This means we can't use gets_the, which asserts, but need find_vspace_for_asid,
which can throw.
2019-11-12 18:28:39 +11:00
Gerwin Klein d4f3d7122c riscv aspec: fix addr conversions in set_vm_root
global_pt needs addrFromKPPtr, because it is an address that lives in the
kernel image, other pt's need addrFromPPtr because they are standard
kernel-virtual addresses.
2019-11-12 18:28:39 +11:00
Gerwin Klein 11bcbc1675 riscv refine: fix ppn handling in checkMappingPPtr 2019-11-12 18:28:39 +11:00
Gerwin Klein 09dbc34a0c riscv haskell/design: fix lookupPTSlotFromLevel and lookupPTFromLevel 2019-11-12 18:28:39 +11:00
Gerwin Klein c46a641f7f riscv haskell: globalPT is at maxPTLevel 2019-11-12 18:28:39 +11:00
Gerwin Klein c77b2126e0 riscv aspec: initialise SSTATUS register correctly 2019-11-12 18:28:39 +11:00
Gerwin Klein 5a7c2ef850 riscv aspec: correct comment for kernel_base; adjust idle_thread_ptr 2019-11-12 18:28:39 +11:00
Gerwin Klein 960636f744 riscv aspec: pick aligned addresses for pptr_base in initial example state. 2019-11-12 18:28:39 +11:00
Gerwin Klein 8ab9888cf4 riscv aspec: set irq type to lowest word length that fits maxIRQ
The irq type determines the size of the IRQ CNode in the abstract spec, which
(in C) is the smallest power of two that fits maxIRQ.
2019-11-12 18:28:39 +11:00
Gerwin Klein c764565b51 riscv haskell: fail ArchInv.IRQControlInvocation
Use fail instead of error so we don't have to prove unreachability for all
properties.
2019-11-12 18:28:39 +11:00
Gerwin Klein 688f8b193d riscv design: make machine op definition available
setVSpaceRoot was being shadowed, because setVMRoot was wrongly excluded instead.
2019-11-12 18:28:39 +11:00
Gerwin Klein bb4245d23d riscv haskell: define rest of arch kernel state
Included vspace_uses for refinement proof, and added multiple global PTs.
2019-11-12 18:28:39 +11:00
Gerwin Klein 6dd45e2d5f riscv aspec: sync max_untyped_size with Haskell/C 2019-11-12 18:28:39 +11:00
Gerwin Klein 067d1bdcab riscv haskell: object numbers for LargePage and HugePage 2019-11-12 18:28:39 +11:00
Gerwin Klein d72e6b5263 riscv haskell: sync RISCVPageTableUnmap with C and spec
now in sync with seL4 change set f612028b180633dc4e404aaceee656da953f877d
2019-11-12 18:28:38 +11:00
Gerwin Klein ab43338feb riscv haskell: bring lookupPTFromLevel up to date with C and spec 2019-11-12 18:28:38 +11:00
Gerwin Klein 6b30142018 riscv haskell: maxUntypedSize depends on addressable memory
(not on word size)
2019-11-12 18:28:38 +11:00
Gerwin Klein 8e39bbbda9 riscv aspec: provide a constant for ppn word width 2019-11-12 18:28:38 +11:00
Gerwin Klein 430a345aeb riscv aspec: avoid type variable warning and freeindex increase 2019-11-12 18:28:38 +11:00
Victor Phan c143029f25 capdl: update PageMap to replace PageRemap (SELFOUR-161) 2019-10-10 11:27:28 +11:00
Victor Phan 5d22c1d329 riscv haskell: update PageMap to replace PageRemap (SELFOUR-161) 2019-10-10 11:27:04 +11:00
Victor Phan f284a0cb0e x64 haskell: update PageMap to replace PageRemap (SELFOUR-161) 2019-10-10 11:27:01 +11:00
Victor Phan 18a12fc4a0 arm/arm-hyp haskell: update PageMap to replace PageRemap (SELFOUR-161) 2019-10-10 11:27:01 +11:00
Victor Phan 0ae9614d30 riscv aspec: update PageMap to replace PageRemap (SELFOUR-161) 2019-10-10 11:26:41 +11:00
Victor Phan 2f04dc3694 x64 aspec: update PageMap to replace PageRemap (SELFOUR-161) 2019-10-10 11:26:33 +11:00
Victor Phan 12a7c2d441 arm-hyp aspec: update PageMap to replace PageRemap (SELFOUR-161) 2019-10-10 11:26:33 +11:00
Victor Phan c64e054c3f arm aspec: update PageMap to replace PageRemap (SELFOUR-161) 2019-10-10 11:26:33 +11:00
Victor Phan 90c0bd618f aspec doc: update for PageMap replacing Remap (SELFOUR-161) 2019-10-10 11:26:33 +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
Edward Pierzchalski 31d5c1c70e cspec: Add feature selection variable.
Adds an 'L4V_FEATURES' variable which can be used to select different
CMake configurations for seL4. This makes it easier to build and test
alternative configurations (like MCS).
2019-08-12 16:22:41 +10:00
Gerwin Klein a1dca67543 riscv aspec/ainvs: resolve FIXMEs, reduce warnings
Mostly moved lemmas and definitions to more suitable locations.
Removed unused lemmas and commented-out code.
Resolved simple Isabelle warnings.
2019-07-31 16:56:26 +10:00
Gerwin Klein f8dc660baf riscv aspec/ainvs: move init_vspace_uses and canonical_user to spec
Needed to define an initial state that satisfies invariants.
2019-07-31 16:55:32 +10:00
Gerwin Klein 519b672d08 riscv aspec bugfix: need to check vaddr alignment for PT-map 2019-07-31 16:55:32 +10:00
Gerwin Klein 0feb5c1a1e riscv aspec: add check for top-level PT in PT unmap decode
See also SELFOUR-2158
2019-07-31 16:55:32 +10:00
Gerwin Klein af6e0765c5 riscv aspec+ainvs: spec bugfix for arch_finalise_cap; finish ArchFinalise 2019-07-31 16:55:32 +10:00
Gerwin Klein 82df777dd7 riscv aspec: fix spec bug in pt_lookup_from_level
This spec bug was inspired by slightly differently but similarly wrong C code
(SELFOUR-2091). Current change brings it into sync with the (correct, we think)
C. Proof update included.
2019-07-31 16:55:32 +10:00
Gerwin Klein 116009c1d7 riscv aspec: constrain asid type to asid_len
We previously had asids at machine word representation, but it turns out that
constraining them to actual asid_len is almost no overhead and saves us proving
invariants about asid sizes.
2019-07-31 16:55:32 +10:00
Gerwin Klein d140b5d9bc aspec: workaround for VER-1099
(locale_abbrev does not always contract when part of the abbreviation chain is outside the locale)
2019-07-31 16:55:32 +10:00
Gerwin Klein ed87ba03a9 riscv aspec: vtable roots must be page table caps 2019-07-31 16:55:32 +10:00
Rafal Kolanski 89aafed912 riscv aspec+ainvs+haskell: update kernelBase, paddrLoad to match C
update for changeset 897aaf5b13f39ba2b9ca8ade3a58d1350eb42ad7

This changes properties of kernel_base, thereby invalidating two unused
lemmas: mask_out_8_le_kernel_base, mask_out_8_less_kernel_base
2019-07-31 16:55:32 +10:00
Rafal Kolanski 8cd2f3de79 riscv aspec: change pte to store ppn instead of address
On other architectures, the address is a PTE stored using field_high and
thus retrieved as an aligned address. On RISCV we have a frame number
(referred to as PPN in some places) that is the address shifted down by
pt_bits.

This changes over the pte to use a ppn with a different number of bits,
and provides addr_from_ppn and addr_from_pte accessors, the latter being
an abbreviation.

Issues:
- "ppn" and "frame" show up in C, which should we use
- conversion functions take paddr, but are named with "addr": change
  naming to use paddr?
- we sanity check the number of bits in a ppn is word_bits - pt_bits,
  but in C that number subtracts another 8 bits, not clear why
2019-07-31 16:55:31 +10:00
Rafal Kolanski 341d12d2fb riscv aspec: adjust asid high and low bits to match C
1 bit moves from high bits to low bits
2019-07-31 16:55:31 +10:00
Rafal Kolanski 31da393e14 riscv haskell: adjust asid high and low bits to match C
1 bit moves from high bits to low bits
2019-07-31 16:55:31 +10:00
Gerwin Klein bda33be6b9 riscv aspec: sync with C fix for SELFOUR-1955
aspec now in sync with seL4 master@a39c9b6a76d279364e28d3415d750d7287fefd67
2019-07-31 16:55:31 +10:00
Gerwin Klein decbdd9c17 riscv haskell: sync VMFaults with C fix for SELFOUR-1955
RISCV faults reduced to actual VM faults, rest become anonymous user-level
faults. handleVMFault adjusted to perform complete case distinction and to not
change the state.

Now in sync with seL4 master@a39c9b6a76d279364e28d3415d750d7287fefd67
2019-07-31 16:55:31 +10:00
Gerwin Klein 23866cbae9 riscv platform: sync seL4_UserTop with C
now in sync with master@63ed19c9b7d972eb4af73c666484e277b0d4cf83
2019-07-31 16:55:31 +10:00
Gerwin Klein b7bf3a9e22 riscv haskell: sync register set definition with C
Now in sync with seL4 master@63ed19c9b7d972eb4af73c666484e277b0d4cf83
2019-07-31 16:55:31 +10:00
Rafal Kolanski f2a6566192 riscv: add Kernel_C.thy to base CKernel image on 2019-07-31 16:55:31 +10:00
Gerwin Klein 61bd76708f riscv aspec: temporarily work around SELFOUR-1955 2019-07-31 16:55:31 +10:00
Rafal Kolanski 3e8f89f249 riscv aspec: make aobjs_of projection available in generic spec 2019-07-31 16:55:31 +10:00
Gerwin Klein c0b7d2fc83 riscv aspec: make decode case distinctions complete 2019-07-31 16:55:31 +10:00
Gerwin Klein a37d867e66 riscv aspec: abbreviations for asid_table & pt table base + index
(moved from riscv ainvs)
2019-07-31 16:55:31 +10:00
Rafal Kolanski d91c83f3a6 riscv aspec+ainvs: rename lookup_pt_* to pt_lookup_* to resemble vs_lookup_*
More consistent naming, easier to remember.
2019-07-31 16:55:31 +10:00
Gerwin Klein ac9ff925ce riscv platform: removed unused region in address space diagram
co-authored-by: Rafal Kolanski <rafal.kolanski@data61.csiro.au>
2019-07-31 14:13:56 +10:00
Gerwin Klein 367922b8fa riscv aspec: factor out pure page table walking
In particular, separate out a function that returns page table pointers instead
of a function that returns slots in page tables. Phrase the latter in terms of
the former. This makes many properties about walks much more compositional.
2019-07-31 14:13:56 +10:00
Gerwin Klein 629b131dcd riscv aspec: use OptionReader instead of Option monad 2019-07-31 14:13:56 +10:00
Gerwin Klein d54fc7860e riscv aspec: use locale_abbrev 2019-07-31 14:13:56 +10:00
Gerwin Klein 28e1298eea riscv spec: refactored for invariants; force alignment for PTEs
Also:
 - renamed pt_slot_index and pte_at_index to *_offset
 - store pte_addr instead of pte_ppn
2019-07-31 14:13:56 +10:00
Gerwin Klein f152d32512 riscv aspec: refactor ptes_of
(to make it obvious it depends on pts_of only)
2019-07-31 14:13:56 +10:00
Gerwin Klein 7561116d08 riscv aspec: factor out conversion of page number to kernel virtual 2019-07-31 14:13:56 +10:00
Gerwin Klein 0b8af8800c riscv aspec: fail not too early in lookup_pt_slot_from_level 2019-07-31 14:13:56 +10:00
Gerwin Klein e2e68953ae riscv aspec: refactor to allow multiple levels of global PTs 2019-07-31 14:13:56 +10:00
Gerwin Klein b44925d0b0 riscv aspec: add riscv_kernel_vspace to support invariant formulation 2019-07-31 14:13:56 +10:00
Gerwin Klein 5f2e6c15db riscv design: avoid double declaration of riscvvspace_region_use 2019-07-31 14:13:56 +10:00
Gerwin Klein c1373f3eac riscv haskell: add kernel ELF region identifier
(used in proofs only)
2019-07-31 14:13:56 +10:00
Amirreza Zarrabi bc7c4efc5a abstract: updates for moving IPC buffer register to thread-local storage for SELFOUR-1524 2019-06-28 11:32:31 +10:00
Amirreza Zarrabi 0116126a3c design: add support to thread id registers 2019-06-28 11:20:22 +10:00
Matthew Brecknell 2e556d4a33 reduce UserLevelFault code to 28 bits
This makes room for a 4-bit seL4_FaultType field.
2019-06-18 12:04:45 +10:00
Gerwin Klein c34840d09b global: isabelle update_cartouches 2019-06-14 11:41:21 +10:00
Gerwin Klein 6af81b535c x64 aspec: more comments now rendered in LaTeX 2019-06-14 11:41:20 +10:00
Gerwin Klein 159a9fc27e arm-hyp aspec: more comments now rendered in LaTeX 2019-06-14 11:41:20 +10:00
Japheth Lim dfb7ed8fc9 design: correct haskell-translator build dependencies 2019-06-13 16:22:33 +10:00
Michael McInerney 356e91c9fa access-control, capDL-api, drefine, infoflow, sep-capDL, capDL: update for Isabelle2019 2019-06-13 16:22:33 +10:00
Gerwin Klein 664fc34aaa cspec: eliminate Local_Theory.reset
(removed in Isabelle2019)
2019-06-13 16:22:33 +10:00
Gerwin Klein ea5e502d25 cspec: update to using cartouches 2019-06-13 16:22:33 +10:00
Michael McInerney 26fdedad4d ainvs, spec: changes to remove errors for Isabelle 2019 update 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
Victor Phan 1c35127dcc x64 aspec: trivial - removed filename prefix in set_asid_pool definition 2019-04-18 14:32:08 +10:00
Victor Phan 27a46bbe94 aspec: move type checking assert to set_object
Move type checking assert from kernel object set functions to
set_object. This improves proofs by generic reasoning of set_object
instead of kernel object specific lemmas.
2019-04-18 14:32:08 +10:00
Matthew Brecknell 8a13759deb haskell: update to GHC 8.6.4 and Cabal 2.4
Cabal 2.4 deprecates the default behaviours of previous versions, and
issues warnings whenever the usual cabal-install commands are used. This
is in preparation for future versions of Cabal where the usual commands
will have entirely new default behaviours. More work would be required
to update our SEL4.cabal configuration to these new behaviours. For now,
we avoid the warnings given by Cabal 2.4 by using the `v1-` versions of
cabal-install commands, which should continue to have the old behaviours
until they are removed from Cabal.
2019-04-02 18:14:37 +11:00
Japheth Lim 22f2a1c08c CSpec: update KernelInc_C imports to match seL4 build system changes
This fixes import breakage due to seL4 commit f85774e36f.
2019-03-21 19:54:16 +11:00
Luke Mondy 89372de534 Update to new toolchain 2019-03-18 16:35:18 +11:00
Michael Sproul c44fd87594 capdl: remove redundant definition `opt_object`
A lot of the proofs in SysInit and DRefine previously had to unfold opt_object,
which was really just an alias for cdl_objects with the arguments in the
opposite order! This commit deletes opt_object in favour of using cdl_objects
directly, which should slightly reduce the burden of unfolding.
2019-02-28 14:34:01 +11:00
Callum Bannister 4c79675879 sysinit: implement support for shared frames
Co-authored-by: Michael Sproul <michael.sproul@data61.csiro.au>
2019-02-19 14:47:00 +11:00
Gerwin Klein 04f1254cb8 arm/arm-hyp abstract: remove outdated comment about globals_frame 2019-01-14 13:37:52 +11:00
Japheth Lim 10b5bab0f4 aspec: avoid manual proof for rec_del definition 2018-12-18 14:50:54 +11:00
Japheth Lim 3758df05df dspec, drefine: fix for GrantReply (SELFOUR-6)
Nothing too exciting here, just duplicating the new GrantReply logic
from ASpec and repairing the proofs.
2018-12-10 20:01:38 +11:00
Thibaut Perami ddf222700f haskell: Update for GrantReply (SELFOUR-6) 2018-12-10 20:01:37 +11:00
Thibaut Perami c955ff4917 aspec + arm ainvs: Update mask_rights to mask master reply caps 2018-12-10 20:01:37 +11:00
Thibaut Perami 1b0b188679 aspec: Fix send_fault_ipc to call send_ipc with is_call at true 2018-12-10 20:01:37 +11:00
Thibaut Perami 10145250c2 aspec: Update ASpec for GrantReply (SELFOUR-6) 2018-12-10 20:01:37 +11:00
Michael Sproul cac9472e44 sys-init: eliminate non-constructive UNIV 2018-11-26 16:05:37 +11:00
Gerwin Klein 558aa5ca05 riscv platform: address space layout diagram; fixed pAddr_base 2018-11-06 14:14:26 +11:00
Gerwin Klein 021f3eedb5 riscv aspec: refactor RISC-V spec to use OptionMonad 2018-10-26 09:24:27 +11:00
Gerwin Klein c53f7850d7 Base ASpec + machine on OptionMonad_ND; fix proof fallout 2018-10-25 12:54:02 +11:00
Gerwin Klein 7a48f4c8c7 aspec: add function for mapping arch objects from objects 2018-10-25 12:54:02 +11:00
Gerwin Klein 516952bd9d aspec: clean up comments + warnings 2018-10-25 12:54:02 +11:00
Gerwin Klein 15bfcdd98b reduce DRefine dependencies from Refine to AInvs
This needs (and includes) some deduplication and moving of lemmas formerly in
refine.
2018-10-22 13:21:11 +11:00
Mitchell Buckley 331a0ee1c2 Minor adjustments to the patch for selfour-1491.
There were some sloppy last-minute changes that were not properly tested
and managed to evade testing. These contained a single logical omission
and a few typographic mistakes.
2018-09-21 10:09:49 +10: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 733f749e7e cspec: normalise imports + use proper session name for Kernel_C
Substitute.thy already includes Kernel_C, no need to import twice.
Not using the session name in the imports was leading to a second import
of the C code, instead of using the CKernel image/session.
2018-09-10 08:34:32 +10:00
Gerwin Klein 64ea909c4d haskell: increase timeout for Haskell compilation
(GHC setup now seems to take longer)
2018-09-08 11:36:22 +10:00
Gerwin Klein 1597395f03 riscv aspec: style + docs 2018-09-07 08:13:13 +10:00
Gerwin Klein 6301a9703f riscv aspec: implement abstract spec for RISCV64 2018-09-07 08:13:13 +10:00
Gerwin Klein 395a1eede5 riscv machine: update copyright headers for RISCV64 work 2018-09-07 08:13:13 +10:00
Gerwin Klein 7986766e95 riscv haskell: consistent name for Frame invocations 2018-09-07 08:13:13 +10:00
Gerwin Klein 340232aeb5 riscv haskell: refactor checkFreeSlot; fix test in PageRemap decoding 2018-09-07 08:13:13 +10:00
Gerwin Klein 85a589e1a8 riscv haskell: add type annotations 2018-09-07 08:13:13 +10:00
Gerwin Klein ec6e969cbf riscv design: use pre-defined machine ops 2018-09-07 08:13:13 +10:00
Gerwin Klein 01307aeeb0 riscv machine: define setVSpaceRoot, update read_sbadaddr 2018-09-07 08:13:13 +10:00
Gerwin Klein 4791ae78e2 riscv design: make vmFaultTypeFSR available to ASpec 2018-09-07 08:13:13 +10:00
Ilya Yanok 378717bee0 haskell: hide count{Leading,Trailing}Zeros from Data.Bits 2018-09-04 14:59:45 +10:00
Ilya Yanok d63c9d0343 haskell: enable FlexibleContexts extension in some files
Since version 7.10 complains if the inferred type requires FlexibleContexts.
Alternatively we could just add monomorphic type signatures.
2018-09-04 14:59:45 +10:00
Ilya Yanok 333f01608e haskell: switch from deprecated ErrorT to ExceptT
and remove Error instances that are not needed anymore.
2018-09-04 14:59:45 +10:00
Ilya Yanok 34e437f918 haskell: hide Prelude.Word in generated hsboot files 2018-09-04 14:59:44 +10:00
Ilya Yanok dac7a00e83 haskell: explicitly import Prelude hiding Word
everywhere where it can clash with Word type defined by SEL4.
2018-09-04 14:59:44 +10:00
Ilya Yanok 7dc3d1f47c haskell: fix Setup.hs to work with Cabal2 2018-09-04 14:59:44 +10:00
Ilya Yanok d232c20030 haskell: add missing modules to the cabal file 2018-09-04 14:59:44 +10:00
Ilya Yanok 5b95542e9a haskell: start switching to Stackage LTS-12.7 (GHC 8.4/Cabal 2.2) 2018-09-04 14:59:44 +10:00
Gerwin Klein 3101eba8e7 remove trailing whitespace from ulem.sty 2018-08-21 15:15:08 +10:00
Gerwin Klein fa553b8085 aspec/refine: remove redundant captransfer_size definition 2018-08-20 09:06:37 +10:00
Gerwin Klein 6db6322169 aspec: remove duplicate cap_transfer definition 2018-08-20 09:06:37 +10:00
Gerwin Klein 84110bd84a Isabelle2018 riscv: ExecSpec 2018-08-20 09:06:37 +10:00
Gerwin Klein a1d1b69776 Isabelle2018 arm: CRefine 2018-08-20 09:06:37 +10:00
Gerwin Klein 082a48d7b2 Isabelle2018: c-kernel/UmmTypes 2018-08-20 09:06:37 +10:00
Gerwin Klein 8af6b2ec1a Isabelle2018: add ulem.sty which is now required by isabelle.sty
(available by default in newer tetex installs, but not older ones)
2018-08-20 09:06:37 +10:00
Gerwin Klein bdb3c592b8 Isabelle2018: TakeGrant 2018-08-20 09:06:36 +10:00
Gerwin Klein b2a2656c19 Isabelle2018: DSpec 2018-08-20 09:06:36 +10:00
Gerwin Klein 428a806526 Isabelle2018 arm: ASpec
Only change is empty ~> Map.empty
2018-08-20 09:06:36 +10:00
Gerwin Klein 3525eb6d15 Isabelle2018 arm: ExecSpec 2018-08-20 09:06:36 +10:00
Gerwin Klein 75b38be012 Isabelle2018: new AsmRefine session + test 2018-08-20 09:06:36 +10:00
Gerwin Klein 6b9d9d24dd Isabelle2018: new "op x" syntax; now is "(x)"
(result of "isabelle update_op -m <dir>")
2018-08-20 09:06:35 +10:00
Gerwin Klein 011e08458e Isabelle2018: new comment syntax
(result of "isabelle update_comments <dirs>")
2018-08-20 09:06:35 +10:00
Gerwin Klein 7a5416dc05 Isabelle2018 spec: new handling of external file deps 2018-08-20 09:06:34 +10:00
Gerwin Klein 6486bad264 lib: make Lib session a test dependency
Also ensure that the C parser is built before Lib, because it depends
on generated grammar files that need `make'.
2018-08-20 09:06:34 +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
Matthew Brecknell 4258929246 haskell-translator: add Makefile dependency on caseconvs 2018-08-16 16:44:12 +10:00
Gerwin Klein 2d8233bb76 cparser: set sorry_modifies_proofs conditionally on env var
This includes replacing the non-thread-safe ref sorry_modifies_proofs with a
proper Config option.
2018-08-06 14:28:44 +10:00
Gerwin Klein 53fde5e5ff lib/design: enable more Haskell-like list comprehension syntax
Accept "[f x | x \leftarrow t]" in addition to "[f x . x \leftarrow t]",
because the former is what naturally comes out of the Haskell translator, and
the regexps that would be necessary in the Haskell translator for this are
distasteful.

JIRA-VER 927
2018-08-06 11:22:54 +10:00
Gerwin Klein 4db4af2347 dspec: resolve old FIXMEs in capDL spec 2018-08-06 11:22:53 +10:00
Gerwin Klein 9a4d2677e3 lib+spec: move definition of machine_word to Word_Lib
JIRA VER-963
2018-08-06 11:22:52 +10:00
Gerwin Klein 807a9792d9 arm-hyp haskell: use consistent ARMHYP_SMMU tag 2018-08-06 11:22:52 +10:00
Gerwin Klein d860d1e656 haskell: code sharing turned out to work; remove FIXME 2018-08-06 11:22:52 +10:00
Gerwin Klein e82c7a5c50 x64 design: clean out old FIXMEs 2018-08-06 11:22:52 +10:00
Gerwin Klein 5ae7cc23b1 aspec: msg_align_bits and related are arch independent
While the numerical value is arch dependent, the definition and symbolic value
are not. This commit factors out the symbolic computation and only unfolds the
numeric value in the architecture dependent spec.
2018-08-06 11:22:51 +10:00
Gerwin Klein ead3e6fdc4 aspec: message_info_to_data is mostly arch independent
Factored out msg_label_bits, which is the only architecture specific part.
2018-08-06 11:22:51 +10:00
Gerwin Klein d4f59c862c aspec: resolve ntfn FIXME 2018-08-06 11:22:50 +10:00
Gerwin Klein b383b9a187 aspec: move up mask_vm_rights, make arch independent
Strictly speaking vmrights might at some point become architecture dependent,
but all present architectures have precisely the same implementation, and there
are no plans to do anything different in the foreseeable future.
2018-08-06 11:22:50 +10:00
Gerwin Klein e533810190 x64 aspec: mark vt-d FIXME 2018-08-06 11:22:49 +10:00
Gerwin Klein 469b88ea30 x64 aspec: remove syntax warning 2018-08-06 11:22:49 +10:00
Gerwin Klein 8f1122270c aspec/ainvs: move TLS/ipc buffer FIXME to appropriate position in ADT_AI 2018-08-06 11:22:49 +10:00
Gerwin Klein d635232bec aspec: remove old mentions of (retired) globals_frame 2018-08-06 11:18:41 +10:00
Gerwin Klein 0ca5f831a1 x64 machine: cleanup 2018-08-06 11:18:41 +10:00
Gerwin Klein 065f4d25cd x64 aspec: resolve vtd_pt_bits; check IOPageTabelCap functions
Currently unused, but will be relevant for VT-d
2018-08-06 11:18:41 +10:00
Gerwin Klein 908787f315 aspec/haskell: clean out resolved FIXMEs 2018-08-06 11:18:41 +10:00
Thomas Sewell d262d7f747 cspec Makefile: add target for kernel source.
Adds a target name that ensures that the preprocessed kernel source
is up to date, but doesn't do any other work. This avoids confusion
when doing a check of source compatibility in building the seL4 input
for graph-refine.
2018-07-20 14:57:54 +10:00
Rafal Kolanski 9e0551f56a arm-hyp: update proofs for TPIDRUR[OW]/TLS_BASE preservation
TPIDRUR[OW] registers removed from VCPU registers. Their saving now
lives in arch_c_entry_hook, which is before verified code is hit.

Relevant for verification, TPIDRURO is already handled as TLS_BASE
register, and TPIDRURW (holds IPC buffer) is saved/restored as part of
normal thread register save/restore.
2018-07-12 23:38:58 +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 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
Joel Beeren 02ed965d79 x64: aspec+haskell: reorder attribsFromWord to match C 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 df1c4b1e45 x64: spec+refine: plumb call through perform_ioport_invocation 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 a4a9a9f721 x64: spec: update ensurePortOperationAllowed to better match C 2018-07-05 16:23:15 +10:00
Michael Sproul 0b978bae61 x64: spec: changes for IRQ invocations (VER-879) 2018-07-05 16:23:15 +10:00
Michael Sproul c481c7d2df x64: set cteRightsBits to 0 (VER-930) 2018-07-05 16:23:15 +10:00
Joel Beeren 8953543843 x64: ainvs+refine: remove invalidateASIDEntry, simplify with just hwASIDInvalidate 2018-07-05 16:23:15 +10:00
Matthew Brecknell 4967850316 x64: clear wordFromMessageInfo_spec sorry in VSpace_C 2018-07-05 16:23:15 +10:00
Matthew Brecknell f649240cde x64: CR3 and machine op updates for Meltdown 2018-07-05 16:23:15 +10:00
Matthew Brecknell a3de401c09 x64: more abstract specs and invariants for ASIDs 2018-07-05 16:23:15 +10:00
Gerwin Klein c10b93bedd spec/design: fix Haskell file dependencies 2018-07-05 16:23:15 +10:00
Gerwin Klein c041492916 specs: mask to 32 bit for user-level faults
Even on 64 bit platforms, C only passes on 32 bit of information for these faults.
2018-07-05 16:23:15 +10:00
Gerwin Klein b7758614a8 x64 abstract: reorder arch_data_to_obj_type to match C 2018-07-05 16:23:15 +10:00
Gerwin Klein 0640ff61e4 x64 design/skel: reorder object_type enum to match C 2018-07-05 16:23:15 +10:00
Gerwin Klein 8744fb20d7 x64 abstract/machine: introduce and use FPUNullState
The FPU state is opaque, and its null state is not necessary an array of zeroes.
Instead, the null state is a snapshot taken after initialisation.
2018-07-05 16:23:15 +10:00
Matthew Brecknell bcac2c8492 x64: clear some sorry proofs from CSpace_C
Also update some Haskell and abstract specs relating to IO ports.
2018-07-05 16:23:14 +10:00
Joel Beeren c2694a009d x64: haskell: comment out IO invocation labels 2018-07-05 16:23:14 +10:00
Rafal Kolanski 769a9d1166 riscv haskell: use TP register for TLS_BASE
Recent TLS_BASE was missing a RISCV64 definition.
2018-07-04 17:45:36 +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 66831aac87 haskell: pin cabal version
Breaks with newer cabals such as 1.22, and it should be using the
stack default anyway.
2018-06-28 16:38:35 +10:00
Gerwin Klein 3a88648ec4 riscv haskell: unmapPage updated to check mapping ptr in C
removed FIXME
2018-06-27 10:06:49 +02:00
Rafal Kolanski 86ae67af41 riscv haskell: setVMRoot C updated to use 0 ASID for global PT
remove FIXME
2018-06-27 10:06:48 +02:00
Gerwin Klein 705983cfd4 riscv design: type sigs + style for recursive funs 2018-06-27 10:06:48 +02:00
Gerwin Klein ebee89f76b riscv design: license check 2018-06-27 10:06:48 +02:00
Gerwin Klein 77a47b8c52 riscv haskell: rename decodePage* to match C more closely 2018-06-27 10:06:48 +02:00
Gerwin Klein 360b43a12c riscv design: lookupPTFromLevel now terminates as fun 2018-06-27 10:06:48 +02:00
Rafal Kolanski 5ed7eee730 riscv design: add remaining arch skel files 2018-06-27 10:06:48 +02:00
Rafal Kolanski e12e57d74a riscv design: skeleton files up to ArchRetypeDecls_H 2018-06-27 10:06:48 +02:00
Gerwin Klein a84b7c624e riscv machine: style 2018-06-27 10:06:48 +02:00
Gerwin Klein aa510dbb93 riscv machine: add remaining machine interface
These are unused in RISCV64 at the moment, but referred to
in generic code, and will likely need to be filled in for
real hardware later.
2018-06-27 10:06:48 +02:00
Gerwin Klein 52486ccd79 riscv haskell: refactor for haskell translator
The translator couldn't infer the error monad in the where clause.
2018-06-27 10:06:48 +02:00
Gerwin Klein a64b0805ad riscv haskell: parentheses for the haskell translator 2018-06-27 10:06:48 +02:00
Gerwin Klein 6e93fb1724 riscv haskell: check ptr to be unmapped 2018-06-27 10:06:48 +02:00
Gerwin Klein cd086b17f1 riscv haskell: avoid identifiers with leading _ for Isabelle 2018-06-27 10:06:48 +02:00
Rafal Kolanski ca8142fdda riscv haskell: add ASIDPoolCap case to finaliseCap
(C got updated)
2018-06-27 10:06:47 +02:00
Rafal Kolanski 115a9ad266 riscv machine: define pptrUserTop and pageColourBits 2018-06-27 10:06:47 +02:00
Rafal Kolanski fc13a034bb riscv haskell: C code now respects isDevice in createObject
remove FIXME
2018-06-27 10:06:47 +02:00
Rafal Kolanski b4f74c851e riscv haskell: sync maskCapRights to new C implementation 2018-06-27 10:06:47 +02:00
Rafal Kolanski 39b8b1cb28 riscv design: sFence and readSBADAddr -> sfence and read_sbadaddr 2018-06-27 10:06:47 +02:00
Rafal Kolanski 53774a7a47 riscv haskell: sFence and readSBADAddr -> sfence and read_sbadaddr 2018-06-27 10:06:47 +02:00
Rafal Kolanski 41326ddec4 riscv haskell: review hardware ops, especially "unimplemented"
sFence and readSBADAddr have hard-to-guess names, tuned to what they
look like in C
2018-06-27 10:06:47 +02:00
Rafal Kolanski ce937c5797 riscv design: update ptrFromPAddr/addrFromPPtr to match C 2018-06-27 10:06:47 +02:00
Gerwin Klein 8e4f85c7d5 riscv spec/machine: adjust defs for RISCV64 2018-06-27 10:06:47 +02:00
Gerwin Klein 05925b889d riscv design: initial RISCV64 setup 2018-06-27 10:06:47 +02:00
Gerwin Klein 9bc97c9ac7 riscv haskell: use explicit decl for haskell translator 2018-06-27 10:06:47 +02:00
Gerwin Klein 1833ea40de riscv haskell: use -- comments for haskell translator 2018-06-27 10:06:47 +02:00
Gerwin Klein 84a455641e riscv haskell: add VSpaceRegionUse type for invariants 2018-06-27 10:06:47 +02:00
Gerwin Klein c0afbc6977 riscv haskell: mark simulator interface unused 2018-06-27 10:06:46 +02:00
Gerwin Klein 3eed0be588 riscv haskell: correct initial ASIDPool size
This will be encoded separately in the proofs anyway, but if there ever is a
simulator interface for Haskell/RISCV, makeObject is now defined correctly.
2018-06-27 10:06:40 +02:00
Gerwin Klein 8a71a417c2 riscv haskell: Arch.(perform|decode)Invocation 2018-06-27 10:05:45 +02:00
Gerwin Klein 077353b5f1 riscv haskell: clean up hardware interface.
Most of the machine monad functions can remain unimplemented for RISCV, because
they are only relevant for simulator support in Haskell. They will be
implemented separately in the formal specs after translation.
2018-06-27 10:05:45 +02:00
Gerwin Klein e20c03a53a riscv haskell: no IRQ parameters on RISCV64 2018-06-27 10:05:45 +02:00
Gerwin Klein 8a9b22c459 riscv haskell: checked boot code stubs
They can all remain unimplemented.
2018-06-27 10:05:45 +02:00
Gerwin Klein 51732b74bc riscv haskell: irq type and bounds 2018-06-27 10:05:45 +02:00
Gerwin Klein 9a10e926fa riscv haskell: StateData: checked and cleared FIXMEs 2018-06-27 10:05:45 +02:00
Gerwin Klein 856e4df5d3 riscv haskell: decode page table invocations 2018-06-27 10:05:45 +02:00
Gerwin Klein 98541812c7 riscv haskell: decode page invocation 2018-06-27 10:05:45 +02:00
Gerwin Klein d57c3db80f riscv haskell: indent tweak 2018-06-27 10:05:45 +02:00
Gerwin Klein 892ef9e695 riscv haskell: ASID control + pool decode 2018-06-27 10:05:45 +02:00
Gerwin Klein 8fb7e5523a riscv haskell: no separate flushing on riscv 2018-06-27 10:05:45 +02:00
Gerwin Klein 4ba6fa77d9 riscv haskell: page table invocations 2018-06-27 10:05:44 +02:00
Gerwin Klein 0b4e6974d2 riscv haskell: ASID and Page invocations 2018-06-27 10:05:44 +02:00
Gerwin Klein 5a762ccbfa riscv haskell: added sfence machine op 2018-06-27 10:05:44 +02:00
Gerwin Klein 42a3e465fd riscv haskell: introduce readSBADAddr machine op
(C machine interface has caught up)
2018-06-27 10:05:44 +02:00
Gerwin Klein 8e40102aed riscv haskell: fill in vspace helper functions 2018-06-27 10:05:44 +02:00
Gerwin Klein 5b665f663a riscv haskell: unmapPageTable 2018-06-27 10:05:44 +02:00
Rafal Kolanski 487dbe56b0 riscv haskell: progress on ObjectType
Preliminary versions of finaliseCap/sameRegionAs/placeNewDataObject
There are issues with C code under discussion, these are noted and spec
will have to be updated accordingly.
2018-06-27 10:05:44 +02:00
Gerwin Klein 22c86e9c5f riscv haskell: unmapPage 2018-06-27 10:05:44 +02:00
Gerwin Klein be08b88ce5 riscv haskell: deleteASID 2018-06-27 10:05:44 +02:00
Gerwin Klein 537360b065 riscv haskell: lookupIPCBuffer 2018-06-27 10:05:44 +02:00
Gerwin Klein 2e7c6ed252 riscv haskell: copyGlobalMappings 2018-06-27 10:05:44 +02:00
Gerwin Klein 8c23021814 riscv haskell: no ASID map in RISCV (enough bits in hw ASID) 2018-06-27 10:05:44 +02:00
Gerwin Klein 9ba1c0ee07 riscv haskell: deleteASIDPool 2018-06-27 10:05:44 +02:00
Gerwin Klein 156e4b3262 riscv haskell: tweak lookupPTSlot, add comments.
Adjusted according to Raf's feedback.
2018-06-27 10:05:44 +02:00
Rafal Kolanski 8af55f6f9d riscv haskell: deriveCap and similar 2018-06-27 10:05:44 +02:00
Rafal Kolanski 13d68657db riscv haskell: arch invocation datatypes 2018-06-27 10:05:44 +02:00
Rafal Kolanski 31b635401d riscv: setup cspec build for L4V_ARCH=RISCV64
C parser and word setup copied from X64
2018-06-27 10:05:44 +02:00
Rafal Kolanski d5eb5f6768 riscv haskell: handling/encoding of VM faults 2018-06-27 10:05:44 +02:00
Rafal Kolanski 4d79eb9a8e haskell: explicitly note RISCV64 modules in cabal file
They are implicitly compiled already when building non-arch modules.
2018-06-27 10:05:44 +02:00
Gerwin Klein 7a16f0611a riscv haskell: setVMRoot 2018-06-27 10:05:44 +02:00
Gerwin Klein c5c4e2d41f riscv haskell: fill in basic address constants 2018-06-27 10:05:44 +02:00
Gerwin Klein 254e0e02af riscv haskell: more consistent name
Diverges from C, but if at all we should change the C.
2018-06-27 10:05:44 +02:00
Gerwin Klein fd20351903 riscv haskell: refactor lookupPTSlot to avoid duplication 2018-06-27 10:05:43 +02:00
Gerwin Klein 499e768dd5 riscv haskell: recursive lookupPTSlot 2018-06-27 10:05:43 +02:00
Gerwin Klein 6d7ca21acb riscv haskell: rework PTE for more abstraction 2018-06-27 10:05:43 +02:00
Gerwin Klein f99e733669 riscv haskell: findVSpaceForASID and PSpaceStorable 2018-06-27 10:02:47 +02:00
Gerwin Klein 3bd9b618ce riscv haskell: use symbolic names 2018-06-27 10:02:47 +02:00
Rafal Kolanski 6a8425f644 riscv haskell: pageBitsForSize 2018-06-27 10:02:47 +02:00
Rafal Kolanski 34093ed313 riscv haskell: arch object types
Translate 4K/Mega/Giga to Small/Large/Huge to fit with other
architectures.
2018-06-27 10:02:47 +02:00
Rafal Kolanski f1069582bd riscv haskell: update arch thread and interrupt 2018-06-27 10:02:47 +02:00
Rafal Kolanski 086ff039e5 riscv haskell: invocation labels from xml 2018-06-27 10:02:47 +02:00
Rafal Kolanski e4c4650cf3 riscv haskell: update arch RegisterSet and TCB 2018-06-27 10:02:47 +02:00
Gerwin Klein a98fe9b465 riscv haskell: finish arch object definitions 2018-06-27 10:02:47 +02:00
Gerwin Klein 37d552967c riscv haskell: clarify diff to C 2018-06-27 10:02:47 +02:00
Gerwin Klein f220423f50 riscv haskell: define arch objects and caps 2018-06-27 10:02:47 +02:00
Rafal Kolanski 7f06c5eb9c riscv haskell: minimum compiling skeleton
All functions and datatypes required by generic code are supplied in
stubbed out or placeholder form, and anything not required is missing.

The code compiles (make build-riscv), please let's keep it that way.

Look for the "FIXME RISCV" tag, which is the official FIXME tag for this
project.
2018-06-27 10:02:47 +02:00
Rafal Kolanski 959aa78aa1 haskell: add build configuration for RISCV on Spike platform
Setup.hs + SEL4.cabal + Makefile
2018-06-27 10:02:47 +02:00
Rafal Kolanski 15d6b62040 arm: address setCurrentPD mismatch between abstract/haskell/C
ARM setCurrentPD was recently refactored as part of multi-VM support for
ARM_HYP. The Haskell was updated correctly, and the C was not.
Unfortunately, setCurrentPD was manually redefined in MachineOps.thy for
ARM hiding the change, making the C look correct when it wasn't.

We scrap the second definition of setCurrentPD, load it from the Haskell,
and have an abstract set_current_pd that's a bit simpler to refine down
from.

The proofs are updated for the above change and the update to the C
setCurrentPD that was breaking on KZM.
2018-06-22 11:59:30 +10:00
Rafal Kolanski 4a3d7a958c arm-hyp: update proofs for SELFOUR-584: running multiple VMs on ARM
As requested by verification, hypervisor registers are now an
enumeration-indexed array rather than individual fields. This cleans up
some of the proof. Additionally, we sweep some non-complexity under the
machine op rug: vcpu_hw_write/read_reg_ccorres is as deep as we go,
rather than specifying every operation and proving that
vcpu_hw_write seL4_VCPUReg_REG calls set_REG for every REG

I took this opportunity to clean up some arm-hyp definitions and proofs,
so some whitespace cleanup got tangled in.
2018-06-15 18:48:47 +10:00
Gerwin Klein 2ca1994139 haskell: retire literate Haskell PDF document
The PDF has been out of date for a while and is unmaintained. For now,
we leave the file format as literate Haskell, but retire the build for
the PDF document.

JIRA VER-912
2018-05-24 10:44:35 +10:00
Joel Beeren 25125763bd arm-hyp: ioportcontrol: fixes after adding IOPortControlCaps to x64 2018-04-19 05:27:06 +10:00
Joel Beeren 1634608453 arm: ioportcontrol: Fixes after adding IOPortControlCaps to x64 2018-04-19 05:27:06 +10:00
Joel Beeren f728dd25e8 x64: Add IOPortControlCaps to control IO port allocation
The previous implementation of IOPortCaps has problems with revocability
and determining parency etc. This commit adds IOPortControlCaps which
behave identically to IRQControlCaps -- invoking the IOPortControlCap
allows one to create IOPortCaps with the supplied range.

There now exist invariants to show that there is only one
IOPortControlCap and that all IOPortCaps in the system do not overlap.
Furthermore there is a global record of which IO ports have been
allocated to prevent reissuing the same ports.
2018-04-19 05:27:06 +10:00
Joel Beeren 02e5096534 x64: VER-917: correct VSpace invocations to update map_type, and add invariants to check that maptype and mapped addresses correspond for PageCaps 2018-04-19 05:27:05 +10:00
Japheth Lim 1966c2e07c cspec: fix make dependency breakage when CMake command fails
Once again, with feeling. This commit uses a dummy file as the CMake
dependency, to avoid re-running the kernel build in parallel.
2018-04-13 17:10:59 +10:00
Japheth Lim b264f59f8d Revert "cspec: fix make dependency breakage when CMake command fails"
This reverts commit 1635696387.

Unconditionally cleaning and invoking the kernel build system turns out
to be a bad idea; it breaks when multiple builds are run in parallel.
2018-04-13 16:46:29 +10:00
Japheth Lim 1635696387 cspec: fix make dependency breakage when CMake command fails 2018-04-12 12:07:42 +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
Rafal Kolanski 9813f6a09f arm-hyp haskell+refine: reorder arch invocation labels to match C 2018-04-07 00:02:51 +10:00
Gerwin Klein 62bee91f12 cspec/crefine: make ctcb_offset available to AUXUPD 2018-03-26 14:37:22 +11:00
Gerwin Klein 51190d18d1 ARM bisim: proof update for user_context refactor 2018-03-08 18:41:28 +11:00
Gerwin Klein d9c08fc73f aspec/haskell/machine: refactor user_context interface
- remove separate abstract set_/get_register implementation, directly use machine op
 - make interface aware that user_context does not always need to equal
   (register => machine_word)
 - introduce FPU state on x64
2018-03-08 18:41:28 +11:00
Michael Sproul f0795805d1 SELFOUR-1016: fix confused deputy problem when setting priorities 2018-02-26 11:19:43 +11:00
Joel Beeren 4601f2a1ab Genericise deletion actions that occur after empty_slot
This patch adds a generic "post_cap_deletion" step that is called by
finalise_slot. Previous to this, the only caps which had actions
required at this stage were IRQHandlerCaps -- it was required that the
IRQ bitmap be updated after the cap itself was removed (as the
invariants state that for any existing IRQHandlerCap, the corresponding
bit in the IRQ bitmap must be set).

By genericising this, we add the capacity for new, arch-specific post
cap deletion actions to occur in the future.
2018-02-23 09:12:55 +11:00
Matthew Brecknell 3abbdd74a3 aspec: reintroduce spec document version information
Including version information in the spec document is tricky, because
Isabelle will rebuild the session whenever it sees that session inputs
(including document sources) have changed. Since ASpec is close to the
root of our session hierarchy, frequently changing version information
causes excessive rebuilds during development.

This commit avoids excessive rebuilding by building the document (with
version information) in a separate ASpecDoc session. The ASpecDoc
session is identical to the previous version of the ASpec session, but
is not the parent of any other sessions. The ASpec session is used as
the basis for other sessions, but has document-only inputs removed, and
also has document builds disabled.
2018-02-20 10:46:50 +11:00
Matthew Brecknell 0b2cb85b8d aspec: remove ARCH and git-id from specification document
This partially reverts a recent change which adds these.

Unfortunately, including the ARCH and git-id files in the ROOT file
causes frequent rebuilds during development. For example, adding a
commit that changes only CRefine would cause a change in the git-id
file, which would in turn trigger a rebuild of ASpec and everything that
depends on it. Because the git-id file also noted uncommitted changes,
these would also trigger an ASpec rebuild. Similarly, switching to a
different L4V_ARCH would cause the ARCH file to change, also triggering
an ASpec rebuild.

Since Isabelle makes it difficult to include this information in the
document without adding these files to the ROOT file, this commit is
removing this information until we find a better way.
2018-02-17 10:44:36 +11:00
Joel Beeren 3d225cde69 VER-910: add msgLabelBits to haskell
message_info structs have 20 bit labels. On 32-bit systems, the label
does not need to be masked as there are no extra padding bits in the
struct, but this is not true for 64-bit systems. As a result, the
haskell needs to mask msgLabelBits (=20) when extracting the label in
messageInfoFromWord.
2018-02-07 10:36:59 +11:00
Gerwin Klein 07f4c60171 abstract pdf: indicate additional/dirty files in hash 2018-01-26 14:30:52 +11:00
Gerwin Klein 840e77edeb abstract pdf: update old NICTA URL to TS 2018-01-26 14:30:48 +11:00
Gerwin Klein 9f6d2c8d57 abstract pdf: update copyright 2018-01-26 14:30:44 +11:00
Gerwin Klein f310195e56 abstract pdf: update authors list 2018-01-26 14:30:38 +11:00
Gerwin Klein e6c65356a0 abstract pdf: generate VERSION, ARCH, git-id information for PDF 2018-01-26 14:30:38 +11:00
Michael Sproul 995b88cefa SELFOUR-707: schedule highest priority thread on setPriority 2018-01-19 16:08:11 +11:00