Commit graph

1853 commits

Author SHA1 Message Date
Adrian Danis
383a6d959f Merge branch zcu102-7.0.0 into master 2017-10-03 12:16:08 +11:00
Adrian Danis
8f4084de8c zynq: User BIT macro 2017-10-03 12:15:57 +11:00
Adrian Danis
a1e6354aa6 Supper compiler versions that disagree on mcpu and march
Differing versions of gcc disagree on which combinations of mcpu and march are valid,
particularly around the armv7ve architecture. The solution here is to only set march
if it would not cause a conflict
2017-09-29 15:41:08 +10:00
Adrian Danis
368d5ae65e x86: Use word_t for vm_rights_t instead of uint32_t
This prevents implicit casting and simplifies verification
2017-09-29 10:46:31 +10:00
Robbie VanVossen
4ba89d4aa0 Added 64-bit support for the zynqmp.
Split up the bit specific code into new folders and added 64-bit
support. Also, changed the device register sizes to be based off of
PAGE_BITS instead of a hardcoded number.

TIMER_CLOCK_HZ is set to the default clock rate from the ATF,
which is the same for both AARCH32 and AARCH64.It may require changes
to the FSBL to work correctly.
2017-09-27 12:59:07 -04:00
Robbie VanVossen
7e928adbb5 Enable HAVE_FPU for the zynqmp by default.
The FPU is always enabled for ARMv8-a platforms by default. For
the kernel to work correctly, this needs to be selected.
2017-09-27 12:59:05 -04:00
Robbie VanVossen
02ca6a80a4 Added 32-bit support for the zynqmp.
The Zynq UltraScale+ MPSoC (PLAT zynqmp) is a Multi-Processor SOC
made by Xilinx that has a quad-core Cortex-A53, a dual-core Cortex-R5
and an FPGA.

This adds 32-bit, single-core support on the the Cortex-A53 cluster.
2017-09-27 12:58:49 -04:00
Adrian Danis
95b505bee2 pc99: Make irq_t a uint8_t type instead of an enum type
This renames the previous irq_t enum into a platform_irq_t enum and provides irq_t
as a 'well defined' uint8_t typedef. Having irq_t be an integer type, and not an enum,
is necessary for consistency with verification. As part of explicitly defining irq_t
as an unsigned integer type the definition of irqInvalid is changed to prevent sign
extension leading to unexpected invalid comparisons.
2017-09-26 16:57:10 +10:00
Adrian Danis
d26c2951c1 x86: Remove needless restriction on TLS_BASE values
Restricting the value of TLS_BASE does not make sense as ultimately the user is prevented
from accessing the kernel region by virtue of protection levels and paging structures.
Whether the access is constructed by the user using a pointer (which in ia32 means an
implicit usage of `ds` selector) or through an explicit `fs` or `gs` selector does not
matter.
2017-09-21 12:05:22 +10:00
Gerwin Klein
960881d07e tools bitfield_gen: proof updates for new base + sign-extension mechanism 2017-09-20 22:01:13 +10:00
Gerwin Klein
3b330f9a6a tools bitfield_gen: use hex literals in proofs and specs 2017-09-20 22:01:13 +10:00
Gerwin Klein
38ba9e405b tools bitfield_gen: simplify theory imports; conform to style 2017-09-20 22:01:13 +10:00
Gerwin Klein
0a99d7d4d8 tools bitfield_gen: remove obsolete mask comments
(These masks existed in earlier versions of the bitfield proofs, removed
because the statements were stronger without them.)
2017-09-20 22:01:13 +10:00
Gerwin Klein
c57ea38874 tools bitfield_gen: use generic base instead of word32 in proofs 2017-09-20 22:01:13 +10:00
Adrian Danis
0644287818 proof: Do not override proof variables
Using the `INTERNAL` attribute implied `FORCE` overriding any value the user may have set
for these. This was not the intention, and they should merely set a `CACHE` value if one
does not already exist.
2017-09-20 14:26:11 +10:00
Adrian Danis
1138d6ab34 proof: Do not check for KernelState_C.thy in CSPEC_DIR path 2017-09-20 14:25:49 +10:00
Adrian Danis
eac4f6bfa2 proof: Defer theory dependencies to isabelle
Instead of explicitly depending on Kernel_C.thy prior to generating proofs, this removes
the dependency check and leaves isabelle to check the dependency upon import.
2017-09-20 14:22:14 +10:00
Adrian Danis
567127defe manual: Expand parts of the x86 virtualisation documentation
This provides documentation for kernel design of the x86 virtualisation, the additional
syscall and object invocations. The ARM design is not fully expanded.
2017-09-18 14:01:46 +10:00
Adrian Danis
09443ed0c1 manual: Correct parameter type of VCPU_EnableIOPort invocation
Type was previously `seL4_CNode`, which is incorrect as the invocation is taking a
cptr to an I/O port, not a cnode, this change reflects that.
2017-09-18 14:01:22 +10:00
Adrian Danis
a1a6390d65 manual: Correct VCPU_SetEPTRoot invocation parameter name
Changes the parameter name to match the actual object that should be passed, as required
by the kernel code.
2017-09-18 14:01:22 +10:00
Adrian Danis
d3c9f36d94 manual: Correct asidpool assign label
Fixes an inconsistency between manual_label for the x86 AsidPool_Assign invocation
and its reference in the manual. This makes the x86 align with the ARM name.
2017-09-18 14:01:22 +10:00
Kent McLeod
76dd101fe1 manual: fix python script to be python3 compatible 2017-09-18 11:28:33 +10:00
Adrian Danis
09ba9fc887 pc99: Prevent zero sized array when IOMMU disabled
An array is declared of size CONFIG_MAX_RMRR_ENTRIES, and if this is zero (such as
when the IOMMU is disabled), then it becomes a zero sized array, which is a GNU
C extension.
2017-09-14 14:48:01 +10:00
Adrian Danis
96bff79f1c Add verified configuration for x64 2017-09-13 17:39:20 +10:00
Adrian Danis
4cf498093d Add verified configuration for arm with hypervisor extensions 2017-09-13 17:39:20 +10:00
Adrian Danis
0df69aa1d1 Use prefix consistent with proof tools for verified configurations
This matches the name with the L4V_ARCH variable in the verification tools and will
allow, as additional configurations are added, selecting the correct configuration
directly based on the configured L4V_ARCH from those tools.
2017-09-13 17:39:20 +10:00
Joel Beeren
d6ebe94d99 Remove CONFIG_IOMMU for x86_64
This brings x86_64 in line with what is being verified.
2017-09-13 11:55:45 +10:00
Bamboo
8bd43ab7c1 [STYLE_FIX] 2017-09-12 06:15:34 +00:00
Adrian Danis
128829a919 x86: Rationalize names of paging structures
Changes the name of paging structure entries to more clearly indicate the kind of object
they map to. Generally this is changing a `pde_small` to `pde_pt` to indicate that this
mapping refers to a page table, removing an inconsistency where `pde_large` indicated that
the mapping was for a large page. For the same reason the `ept_pde_4k` type is changed to
`ept_pde_pt` type to reflect what is present in the actual entry.

`pde_large` is left as 'large' and not explicitly given a size as code common between
ia32 and x86-64 manipulates these entities and 'large' is already a used abstraction
over the two potential page sizes so there is need to introduce a formal abstraction layer
and make the names in the structures more specific.
2017-09-12 15:44:17 +10:00
Anna Lyons
71cde34b45 Add config option for CONFIG_RESET_CHUNK_BITS
The config variable is used in the kernel but no setting was provided
prio to this commit.
2017-09-08 11:16:27 +10:00
Adrian Danis
cfb30f34b9 libsel4: Remove unused argument in seL4_VMEnter syscall
This VCPU argument does not make sense given semantics of the VMEnter syscall,
and as a result the argument is ignored by the kernel.
2017-09-06 15:48:37 +10:00
Kent McLeod
ad03c3348c Add CHANGES to license ignore 2017-09-06 14:34:50 +10:00
Kent McLeod
750d040a41 Add CHANGES file
The purpose of this file is to track changes as they are made to the
kernel in order make writing release notes easier and tracking source or
binary level API breakages.
2017-09-05 13:49:54 +10:00
Kent McLeod
825dd3be28 update VERSION file to 7.0.0-dev 2017-09-05 11:58:10 +10:00
Kent McLeod
220ed968b1 update VERSION file to 7.0.0 2017-09-05 11:58:05 +10:00
Adrian Danis
a8d6315eb1 libsel4: x86: Remove nested struct declarations
Nested structs with attributes are not understandable by the C parser. This change simply
moves the nested definitions into the global namespace (with suitable names).
2017-09-01 15:23:02 +10:00
Adrian Danis
86442b078e libsel4: x86: Correctly pack substructs in VBE struct
The VBE information struct is a representation of the actual VBE information passed from
multiboot and needs to have the precise layout as described.
2017-09-01 10:46:51 +10:00
Adrian Danis
08b9265563 x86: Unmap pages when delete non final frame caps
Unlike other paging structure objects, each frame capability can hold a different mapping,
which should be unmapped. Previously we only performed an unmapping if we were deleting
the final frame capability, which meant if frame capabilities were deleting in the correct
order you could delete the final capability without first unmapping all usages of the
frame.
2017-08-30 17:41:35 +10:00
Adrian Danis
2bf586fe3d x86: Correct return type of servicePendingIRQ
This function returns an interrupt_t, and its call sites expect an interrupt_t,
despite the types being written as irq_t.

Closes #66
2017-08-29 10:56:43 +10:00
Anna Lyons
2a09ce83f7 Add .licenseignore for seL4
This tells the license tool what files to avoid checking for licenses
2017-08-28 17:11:16 +10:00
Anna Lyons
982ad7b2a7 Add missing license to tools/python-deps/README.rst 2017-08-28 17:10:51 +10:00
Bamboo
a990fb3fdd [STYLE_FIX] 2017-08-23 02:57:42 +00:00
Anna Lyons
5627c275ce SMP: add top level migrateTCB
On the MCS kernel, Arch_migrateTCB is called in multiple places.
This commit moves the common code that is required when migrating a TCB
to a top level function to reduce boiler plate.
2017-08-23 11:19:27 +10:00
Adrian Danis
a873611c0f Consistent capitalisation of XSave 2017-08-22 15:40:47 +10:00
Adrian Danis
4c8be8f4f9 x86: Increase TCB size for debug builds
Debug builds require one additional byte in the TCB to have a NULL terminated tcb name.
2017-08-22 14:51:10 +10:00
Adrian Danis
0b73072016 Add a CMake based build system
This commit adds an alternate build system using CMake that operates indepenently of
the existing Kconfig+Kbuild+make based build system
2017-08-22 13:56:26 +10:00
Adrian Danis
ac7216e528 SELFOUR-1070: Makes CONFIG_NUM_DOMAINS 16 for x86_64
This brings the standalone configuration for x86-64 in line with what is verified
2017-08-22 13:39:07 +10:00
Anna Lyons
8fb06eecff libsel4: Return seL4_Error in invocation stubs
Some stubs return structs, which will not change, however instead of
long for those that don't return structs they now return a seL4_Error.
2017-08-22 07:57:54 +10:00
Anna Lyons
c4d86b9844 Debug: fix ksDebugTCBs for SMP
There is a separate list of tcbs per core.

- migrate between debug lists when setting affinity
- use the correct core when removing
2017-08-22 07:27:42 +10:00
Bamboo
9de5e2aa65 [STYLE_FIX] 2017-08-21 07:34:03 +00:00