Commit graph

353 commits

Author SHA1 Message Date
Yanyan Shen
0ab42919dd libsel4/armv8: Add seL4_VCPUReg for EL2 2018-03-28 12:15:09 +11:00
Yanyan Shen
a4fef8f4d9 libsel4/armv8: Add VGICMaintenance_/VCPUFault_Msg 2018-03-28 12:15:09 +11:00
Yanyan Shen
28cc72e972 libsel4/armv8: Add seL4_ARM_VCPUBits&seL4_VCPUBits 2018-03-28 12:15:09 +11:00
Adrian Danis
a7a6d9e229 x86: Increase TCB size for large xsave regions 2018-03-27 13:42:09 +11:00
Bruce Mitchener
b942a50441 Fix trivial comment typos. 2018-03-27 10:51:26 +11:00
Adrian Danis
cc9ccb497b arm: Correct TCB size under multicore 2018-03-27 10:25:07 +11:00
Adrian Danis
f5d0b93ccf arm: Correct TCB size when using FPU and virtualisation 2018-03-26 14:41:28 +11:00
Yanyan Shen
bdbe4866ce armv8/libsel4: Add VGICMaintenance and VCPUFault 2018-03-23 17:39:49 +11:00
Adrian Danis
f12d6fdc98 Increase seL4_TCBBits ready for alignment increase
The alignment of the tcb_t portion of a TCB object is going to be increased, this will
cause the total TCB size to overflow in some cases. This updates the definition of
seL4_TCBBits such that TCBs will be large enough after the alignment change.
2018-03-23 12:28:54 +11:00
Anna Lyons
33398f2191 SELFOUR-331: add seL4_TCB_SetSchedParams
This allows the prio and mcp to be set in one system call.
2018-02-26 11:24:42 +11:00
Anna Lyons
46ddf1ab6b Change prio, mcp to seL4_Word from Uint8_t
Although seL4_MaxPrio does fit into 8 bits, making
the argument 8 bits is not saving us anything.
2018-02-26 11:24:22 +11:00
Anna Lyons
05b83acd95 SELFOUR-1016: Require auth cap to set prio/mcp
This fixes confused deputy problem when setting priorities/mcps.
2018-02-26 11:24:22 +11:00
Adrian Danis
ce2efb33c8 Remove archInfo from bootinfo
With extended bootinfo providing a more flexible and extensible form of archInfo this
member can be retired.
2018-02-23 13:55:26 +11:00
Adrian Danis
9a10cfac3d x86: Define tsc frequency bootinfo header 2018-02-23 13:54:04 +11:00
Adrian Danis
40ce1b11f1 libsel4: remove unused extra_cflags
This is now unused due to the usage of CPPFile which allows us to just use the includes
via the `include_directories`
2018-02-22 14:51:48 +11:00
Adrian Danis
08b29f30f0 libsel4: Replace GenCPPCommand with CPPFile
CPPFile is a much more robust version of GenCPP command. We drop the `extra_cflags`
as the CPPFile command uses regular cmake compilation and will use the include
directories added by `include_directories`, which includes all the directories from
 `extra_cflags`
2018-02-22 14:51:48 +11:00
Adrian Danis
596d4c6239 libsel4: Provide includes directly to include_directories
include_directories makes these directories directly available to all compilation that
happens, without needing to provide additional target link directories. This is the
first step to removing the `extra_cflags` variable
2018-02-22 14:51:48 +11:00
Kent McLeod
a82b066c36 libsel4: Correct type typo in syscalls.h 2018-02-06 17:17:13 +11:00
Adrian Danis
eec02fd223 x86: Dangerous read/write MSR interface
Provides a syscall interface for reading and writing arbitrary MSR values. This is
being introduced as an alternative to the DebugRun, as the main purpose of debug run
is for modifying the performance monitoring events via read/write MSR.
2018-01-17 16:35:39 +11:00
Anna Lyons
4e620499c8 Minor fixes to syscall.xml
- update comment to reflect behaviour (it's #if condition not #ifdef
name)
- remove redundant xml
2018-01-15 14:16:47 +11:00
Hesham Almatary
3f862cbfe0 Fix: Guard seL4_DebugDumpScheduler with PRINTING instead of DEBUG
Definitions of seL4_DebugDumpScheduler (for each arch) guard
seL4_DebugDumpScheduler with PRINTING and not DEBUG.
2017-12-07 14:55:34 +11:00
Alexander Boettcher
734320d717 x86: add framebuffer info of MBI2 via boot_info 2017-11-30 22:54:01 +01:00
Adrian Danis
6707a74131 x86: GetStatusBits only defined on ia32
The GetStatusBits invocation is only implemented on ia32. Adding the condition to the
XML list prevents the invocation from being in the list of invocations on x86_64, when
it has no implementation.
2017-11-22 17:01:03 +11:00
Adrian Danis
2b6e302008 cmake: Avoid placing lists in generator expressions
Placing lists directly in the generater expression means that this string, despite having
semicolons in it, is not actually a list, as it has an expression (the generator expression)
spanning multiple lists. This leads to confusion during argument processing and expansion
2017-11-03 13:49:37 +11:00
Adrian Danis
d2644e8ab7 Declare and check IPC buffer size
Adds a named constant of the IPC buffer size bits that can be used when checking the
size/alignment of an IPC buffer. This constant has a compile time assertion to ensure
it corresponds to the actual IPC buffer
2017-10-27 16:12:18 +11:00
Bamboo
bbb9717cd8 [STYLE_FIX] 2017-10-27 01:30:35 +00:00
Adrian Danis
15c0f0eb75 Increase badge size for endpoints on 64-bit platforms
This unifies the badge size of endpoints and notifications on 64-bit platforms to a
consistent 64-bits, and also changes the libsel4 definitions to match for both.
2017-10-27 12:15:09 +11:00
Adrian Danis
b5854775a5 Increase size of guards on 64-bit platforms
The maximum guard size was unnecessarily restricted to 18 bits as it is on 32-bit
platforms. This change increases it to the current maximum possible of 58 bits.
The 58-bit limitation exists due to the need to encode a guard+guardsize into a
single word for cnode invocations.
2017-10-27 12:15:09 +11:00
Adrian Danis
bdf78d2361 libsel4: Correct 64-bit guard size bits constant
This constant was incorrectly defined as 5 when it is actually 6 on 64-bit kernels
2017-10-27 12:15:09 +11:00
Adrian Danis
2a70716833 libsel4: Make guard and badge definitions mode specific
The definitions of guard and badge sizes is going to be changed for 64-bit platforms,
this change provides an easy way of providing different definitions
2017-10-27 12:15:09 +11:00
Adrian Danis
8108c811ed libsel4: Remove bitfield type unifying Guard and Badge construction
Using the bitfield generator to treat guards and badges as a union type can be convenient,
but it requires reserving a bit in the data for the bitfield run time type information.
This type information is not needed by the kernel as it knows implicitly whether the passed
data is a badge or a guard based on the kind of cap being operated on. However, with the
type information present we cannot pass a word sized piece of data to the kernel.

The solution here is to go back to using a plain seL4_Word as the type for invocations
that want a capdata and let the user either construct a badge as a plain word, or use
the seL4_CNode_CapData bitfield for constructing a guard, although they have to manually extract
the word representation out of it.
2017-10-27 12:15:09 +11:00
Adrian Danis
2e6cadd9f0 Rename cnode_capdata to seL4_CNode_CapData
The purpose of renaming this type is to match the style of the other shared types in libsel4.
Previously its name was fine as this was a private kernel type.
2017-10-27 12:14:44 +11:00
Adrian Danis
5f4640dc6c Move cnode_capdata to libsel4 shared types bitfield
This data structure is meant to be the user visible format of the data for a cnode_cap,
yet it is defined in a kernel only bitfield file. Moving it to libsel4 opens up the
possibility of consolidating the definitions in libsel4
2017-10-27 12:14:44 +11:00
Alexander Boettcher
023977fc4b x86: Provide copy of RSDP in bootinfo
This gives a rootserver a way to find the ACPI tables in cases where there is no BIOS region
to scan for an RSDP.
2017-10-06 10:08:46 +11:00
Adrian Danis
7468ed450c Merge branch benchmark into master 2017-10-04 17:41:04 +11:00
Adrian Danis
383a6d959f Merge branch zcu102-7.0.0 into master 2017-10-03 12:16:08 +11: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
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
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
Alexander Boettcher
a3b0bd5c4f benchmark: support reading out idle cpu time on remote cpu
Fixes #68
2017-09-04 12:50:42 +02: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
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
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
Adrian Danis
a9e1f51713 SELFOUR-1062: Hide all IOMMU related code behind #ifdef guards
The IOMMU implementation is not going to be verified at the moment, and so the code for
it needs to be hidden from verification, which we do by #ifdef'ing it out if the IOMMU
is not enabled. As a result the IOMMU configuration depends on a non verification target
2017-08-21 16:44:58 +10:00
Hesham Almatary
72478f3606 Manual: document mode/arm object invocations 2017-08-09 10:01:00 +10:00