#
6ad15c0f |
|
26-Oct-2020 |
Oliver Scott <Oliver.Scott@data61.csiro.au> |
trivial: clean up code for C parser Remove unused cases and add break in switch statements. Add conditions to sel4arch.xml. Change guard in capdl printing to correct TK1_SMMU. Set KernelArmSMMU default to off. Add types to aarch32 syscall_stub_gen.py. Signed-off-by: Oliver Scott <Oliver.Scott@data61.csiro.au>
|
#
6e591117 |
|
19-Nov-2019 |
Qian Ge <qian.ge@data61.csiro.au> |
SMMU: binding stream ID to context banks Providing system calls that binds context banks to stream IDs. Once the stream ID is bound, the transaction using that SID is enabled. Signed-off-by: Oliver Scott <Oliver.Scott@data61.csiro.au>
|
#
73e062bd |
|
12-Nov-2019 |
Qian Ge <qian.ge@data61.csiro.au> |
SMMU: assigning vspace to context banks Supporting user-level applications to assign vsapce root to context banks through system calls. This commit also configures the context bank according to stage 1 or stage 2 requirement. Signed-off-by: Oliver Scott <Oliver.Scott@data61.csiro.au>
|
#
0cf122a0 |
|
09-Oct-2019 |
Qian Ge <qian.ge@data61.csiro.au> |
SMMU: system calls for creating SID and CB caps Providing system calls on stream ID control cap and context bank control cap for creating stream ID and context bank caps. Signed-off-by: Oliver Scott <Oliver.Scott@data61.csiro.au>
|
#
00a9ba91 |
|
12-May-2020 |
Kent McLeod <Kent.Mcleod@data61.csiro.au> |
aarch32: Move tpidruro from vcpu to tcb context This register is visible to software executing at PL0 but not writeable. Storing it in the VCPU context required custom save/restore handling as it had to be explicitly handled when switching from a VCPU thread to a non-VCPU thread so that it didn't become a channel. It is possible to now update this register via seL4_TCB_WriteRegisters for software executing at PL0. This also fixes a bug where if a vcpu-thread is switched for a non-vcpu-thread and then switched to a different vcpu-thread the original vcpu-thread's copy of this register will get set to 0. Signed-off-by: Kent McLeod <Kent.Mcleod@data61.csiro.au>
|
#
a221ee1c |
|
05-Apr-2020 |
Saer Debel <saer.debel@data61.csiro.au> |
Enabled IPC debug features under new config Introduced a new config flag to enable userError format strings to be written to the IPC buffer. Another config bool has been introduced to toggle printing the error out and this can also be set at runtime. Signed-off-by: Saer Debel <saer.debel@data61.csiro.au>
|
#
39dd11b1 |
|
10-Mar-2020 |
Stephen Sherratt <stephen@sherra.tt> |
Fix python warning in syscall stub generator The "is" keyword compares addresses. "==" compares values.
|
#
79da0792 |
|
01-Mar-2020 |
Gerwin Klein <gerwin.klein@data61.csiro.au> |
Convert license tags to SPDX identifiers This commit also converts our own copyright headers to directly use SPDX, but leaves all other copyright header intact, only adding the SPDX ident. As far as possible this commit also merges multiple Data61 copyright statements/headers into one for consistency.
|
#
8234026c |
|
16-Sep-2019 |
Kent McLeod <Kent.Mcleod@data61.csiro.au> |
aarch64: Move tpidrro_el0 from vcpu to tcb context This register is visible to software executing at EL0 but not writeable. Storing it in the VCPU context required custom save/restore handling as it had to be explicitly handled when switching from a VCPU thread to a non-VCPU thread so that it didn't become a channel. It is possible to now update this register via seL4_TCB_WriteRegisters for software executing at EL0. This also fixes a potential bug where if a vcpu-thread is switched for a non-vcpu-thread and then switched to a different vcpu-thread the original vcpu-thread's copy of this register will get set to 0.
|
#
554f812d |
|
08-Nov-2016 |
Anna Lyons <Anna.Lyons@data61.csiro.au> |
mcs: scheduling context donation over ipc After this commit, threads blocked on an endpoint can recieve a scheduling context from the thread that wakes the blocked thread.
|
#
952134d1 |
|
27-Oct-2016 |
Anna Lyons <Anna.Lyons@data61.csiro.au> |
mcs: Add a scheduling context object This is the first part of the seL4 MCS. This commit: * adds a scheduling context object. Threads without scheduling context objects cannot be scheduled. * replaces tcbTimeSlice with the scheduling context object * adds seL4_SchedControl caps for each core * adds seL4_SchedControl_Configure which allows users to configure amount of ticks a scheduling context has, and set a core for the scheduling context. * adds seL4_SchedContext_Bind, Unbind and UnbindObject, which allows a tcb to be bound to a scheduling context.
|
#
bc61a7f3 |
|
24-Jun-2019 |
Anna Lyons <anna@gh.st> |
python2 --> python3 Update all scripts and build system to call python3, given python2's upcoming doom. Use sys.maxsize instead of sys.maxint in one script (maxint does not exist in python3).
|
#
d1153fbe |
|
16-Jul-2019 |
Anna Lyons <anna@gh.st> |
aarch64: abstract vspace in libsel4 Depending on the physical address range the top level translation table may be a page upper directory or a page global directory. Rename in libsel4 the invocations on top level structures to be on an seL4_ARM_VSpace rather than an seL4_ARM_PageGlobalDirectory.
|
#
5646f774 |
|
20-Mar-2019 |
Curtis Millar <curtis.millar@data61.csiro.au> |
RFC-3: Update user context for ARM with thread IDs Switched appropriate naming conventions. Was using the aarch64, have switched to aarch64 names. TIPDRURW -> tpidr_el0 TPIDRURO -> tpidrro_el0 TPIDRPRW -> tpidr_el1 Switch TLS register on aarch32 from TPIDURO (tpidrro_el0) to tpidr_ro so that it can be written to from user-land. Thread ID registers tpidr_el0 have been added to the user context for aarch32 and aarch64. Only the thread ID that is writeable from EL0 is saved in the TCB and saved/restored on context switch. Thread IDs that are only changed within a VM (the read-only thread ID for exception level 0 and the thread ID for exception level 1) are stored in the VCPU and saved and stored as part of VM enable/disable. Thread IDs that are only changed with VMs have been separated out into hypervisor code.
|
#
3207abee |
|
20-Mar-2019 |
Curtis Millar <curtis.millar@data61.csiro.au> |
RFC-3: Update context for x86 to use FS and GS. TLS_BASE virtual register is replaced with FS_BASE and GS_BASE virtual registers. The FS_BASE and GS_BASE virtual registers are moved to the end of the context so they need not be considered in the kernel exit and entry implementation. Removed tracking of ES, DS, FS, and GS segment selectors on kernel entry and exit. ES and DS are clobbered on kernel entry with the RPL 3 selector for a DPL 3 linear data segment. FS is clobbered on exit with the RPL 3 selector for the DPL 3 segment with FS_BASE as the base. This is done on exit to reload the value from the GDT. GS is clobbered on exit with the RPL 3 selector for the DPL 3 segment with GS_BASE as the base. This is done on exit to reload the value from the GDT. Kernel entry and exit code is refactored, simplified, and improved in light of the above changes. x64: update verified config to use fsgsbase instr The verification platform for x64 relies on the fsgsbase instruction.
|
#
cf57914c |
|
26-Mar-2019 |
Anna Lyons <Anna.Lyons@data61.csiro.au> |
style: run autopep8 on python files
|
#
4ea62e51 |
|
04-Dec-2018 |
Edward Pierzchalski <ed.pierzchalski@data61.csiro.au> |
riscv: add remaining registers to user context. The registers a7, s2-11, and t3-6 were missing from seL4_UserContext. We also add these to frameRegisters and gpRegisters, which are used to implement the TCB invocations for reading and writing these registers. Zero-length arrays aren't valid expressions or types in ISO C, so to keep the c parser happy we need to either remove gpRegisters or provide some contents for it. In the past, frameRegisters and gpRegisters distinguished between those registers preserved across a syscall and those that weren't. TCB_CopyRegisters allows the caller to choose which set to copy. Since we preserve all non-return registers, this distinction isn't relevant anymore and there's no easy way to justify the members of frameRegisters and gpRegisters. We arbitrarily choose to put the 'last' register t6 in gpRegisters, for consistency with the register list in registerset.h and with the order that registers are restored.
|
#
b5ee12f0 |
|
09-May-2018 |
Anna Lyons <Anna.Lyons@data61.csiro.au> |
manual: group generated API methods by object type This change generates doxygen groups for each object type, which allows us to create sections in output documents for each object. This has the advantage that we can later label those sections and link to them from the main document. Additionally, it improves nagivation of the API docs.
|
#
de42f826 |
|
05-Feb-2018 |
Adrian Danis <Adrian.Danis@data61.csiro.au> |
x86: Introduce IO port control caps Changes the way IO ports work such that instead of 'minting' IO port caps down into new IO port caps with smaller ranges new IO port ranges must be allocated centrally from an IO port control cap. This mechanism acts in a very similar fashion as IRQ handler/control capabilities and ensures that allocated IO ports do not overlap. Disallowing overlapping IO ports is necessary to ensure the CDT remains valid as capabilities are deleted.
|
#
83ba0847 |
|
20-Feb-2018 |
Hesham Almatary <hesham.almatary@unsw.edu.au> |
[SELFOUR-1156] RISC-V Port Experimental release that supports both RV32 and RV64
|
#
6bfc4631 |
|
26-Mar-2018 |
Yanyan Shen <yanyan.shen@data61.csiro.au> |
libsel4/armv8: Add seL4_ARM_VCPU for aarch64
|
#
05b83acd |
|
14-Dec-2017 |
Anna Lyons <Anna.Lyons@data61.csiro.au> |
SELFOUR-1016: Require auth cap to set prio/mcp This fixes confused deputy problem when setting priorities/mcps.
|
#
8108c811 |
|
02-Oct-2017 |
Adrian Danis <Adrian.Danis@data61.csiro.au> |
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.
|
#
8fb06eec |
|
21-Aug-2017 |
Anna Lyons <Anna.Lyons@data61.csiro.au> |
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.
|
#
64cf2308 |
|
18-Jun-2017 |
Anna Lyons <Anna.Lyons@data61.csiro.au> |
tools: fix licenses
|
#
07f94833 |
|
18-Jun-2017 |
Anna Lyons <Anna.Lyons@data61.csiro.au> |
libsel4: fix licenses - some were incorrectly marked GPL (libsel4 is BSD) - update NICTA --> DATA61 etc - fix tags D61 --> DATA61 - update year to 2017
|
#
f39f9256 |
|
02-Jun-2017 |
Stephen Sherratt <Stephen.Sherratt@data61.csiro.au> |
manual: Better inference of method manual labels Manual labels for methods are inferred unless specified in the api description. This change extends this inference to prevent slashes appearing in method labels. It also refactors the logic for label inference to be more readable.
|
#
d8e6a001 |
|
24-May-2017 |
Stephen Sherratt <Stephen.Sherratt@data61.csiro.au> |
manual: Improve handling of return type docs If no documentation is provided for the return value of a function, the documentation generator will attempt to infer the documentation based on the return type.
|
#
447e9243 |
|
24-May-2017 |
Stephen Sherratt <Stephen.Sherratt@data61.csiro.au> |
manual: Undocumented return defaults to error enum
|
#
c662c2ef |
|
23-May-2017 |
Stephen Sherratt <Stephen.Sherratt@data61.csiro.au> |
manual: Tweak manual label inference
|
#
ec3b6402 |
|
23-May-2017 |
Stephen Sherratt <Stephen.Sherratt@data61.csiro.au> |
manual: Add label_prefix to method names
|
#
cb952a2b |
|
21-Feb-2017 |
Stephen Sherratt <Stephen.Sherratt@data61.csiro.au> |
Replace division with int division in py scripts
|
#
8c93b71c |
|
21-Feb-2017 |
Stephen Sherratt <Stephen.Sherratt@data61.csiro.au> |
Import reduce from functools in python scripts
|
#
7337f9e8 |
|
21-Feb-2017 |
Stephen Sherratt <Stephen.Sherratt@data61.csiro.au> |
Parens around print args in python scripts
|
#
6428e959 |
|
12-Jan-2017 |
amrzar <azarrabi@nicta.com.au> |
aarch64: Add aarch64 libsel4 implementation
|
#
1f1a5ad4 |
|
14-Dec-2016 |
Stephen Sherratt <Stephen.Sherratt@data61.csiro.au> |
manual: Removed default cap description
|
#
78009dd2 |
|
28-Nov-2016 |
Adrian Danis <Adrian.Danis@data61.csiro.au> |
SELFOUR-675: x64: Increase message registers from 2 to 4
|
#
08bca15c |
|
28-Nov-2016 |
Stephen Sherratt <Stephen.Sherratt@data61.csiro.au> |
manual: Obj inv stub gen generates doxy comments This modifies the object invocations stub generator to generate doxygen comments based on documentation in the xml files it parses. JIRA: SELFOUR-606
|
#
2fea9a0f |
|
18-Jul-2016 |
Anna Lyons <Anna.Lyons@nicta.com.au> |
SELFOUR-567: use seL4_CapRights_t from libsel4 This change * changes seL4_CapRights from the kernel to be seL4_CapRights_t in libsel4 * deprecates the duplicated seL4_CapRights in libsel4, which is now the bitfield generated type seL4_CapRights_t. * fixes all usages in kernel and libsel4 Impact: for verification, this will require the type to change name from cap_rights to seL4_CapRights_t. This is a breaking libsel4 API change, although most code uses seL4_AllRights or similar constants, which will not break at a source level as these constants have been updated.
|
#
dc3d5341 |
|
26-Oct-2016 |
Jeff Waugh <jdub@bethesignal.org> |
Retain in-register error descriptions when not using IPC buffer - Fixes "lost" error descriptions when using *WithMRs system call variants [1]. - Only stores real registers to IPC buffer if there's an error. - If there's an error in a struct-returning function, return early without setting any struct members. - Passes the sabre/qemu test suite... with and without --buffer! [1] https://sel4.systems/pipermail/devel/2016-October/001079.html
|
#
48f99701 |
|
27-Oct-2016 |
Adrian Danis <Adrian.Danis@data61.csiro.au> |
libsel4: Move vt-x definitions into common x86
|
#
7fbde1bb |
|
14-Jun-2016 |
Adrian Danis <Adrian.Danis@data61.csiro.au> |
SELFOUR-287: 32-bit vt-x implementation This is an implementation of vt-x for x86 kernels running in ia32 mode.
|
#
59d48b77 |
|
26-Oct-2016 |
Jeff Waugh <jdub@bethesignal.org> |
Let x86_64 CallWithMRs * `syscall_stub_gen.py` now works on x86_64 without passing `--buffer`
|
#
ee75f086 |
|
16-Oct-2016 |
amrzar <azarrabi@nicta.com.au> |
update #ifdef to #if in auto generated files
|
#
067b71ca |
|
26-Sep-2016 |
Adrian Danis <Adrian.Danis@data61.csiro.au> |
x64/libsel4: Add x64 libsel4 implementation
|
#
7336303b |
|
08-Jun-2016 |
Anna Lyons <Anna.Lyons@nicta.com.au> |
SELFOUR-276: Add MCP field to threads. Where MCP = Maximum Controlled Priority This commit adds: * seL4_TCB_SetMCPriority and changes the arguments to * seL4_TCB_Configure As of this commit, a thread cannot create or set a threads priority (including itself) above its mcp. Previously the kernel did this check against a threads priority, which prevented a thread from setting it's own priority down and then up again.
|
#
9fc8194b |
|
06-Jul-2016 |
Alexander Boettcher <alexander.boettcher@genode-labs.com> |
fix "syscall_stub_gen.py --word-size" invocation Fixes #29
|
#
ce8dfb15 |
|
20-Jun-2016 |
Adrian Danis <Adrian.Danis@data61.csiro.au> |
tools: Further support for conditional invocation labels Condition invocation labels where added in commit 73837c8aceabdb1a986bcc2e179f55bf9ee0de3a This commit guards usage of conditionally generated labels during generation of the syscall stubs.
|
#
6d6b047b |
|
06-Jun-2016 |
Adrian Danis <Adrian.Danis@data61.csiro.au> |
Minor fixes for other ARM platforms
|
#
41603a26 |
|
01-Jun-2016 |
Adrian Danis <Adrian.Danis@data61.csiro.au> |
Correct merge of master
|
#
879d9724 |
|
13-May-2016 |
Yanyan Shen <yanyan.shen@nicta.com.au> |
arm/tk1: a checkpoint for SMMU implementation
|
#
12efee6a |
|
27-Apr-2016 |
Anna Lyons <Anna.Lyons@nicta.com.au> |
SELFOUR-404: fix bug related to double words They would get shifted by the size of the type rather than the size of the word. This wasn't detected initially as the master branch of the kernel does not have any double word types in the API.
|
#
f186c71b |
|
03-Apr-2016 |
Partha Susarla <parthasarathi.susarla@nicta.com.au> |
SELFOUR-404: Remove hardcoded constants in stub generator. `syscall_stub_gen` has hardcoded constants for word size, this patch removes that constraint and makes the word size an argument to the program instead. The word size can either be passed either as command line arugmemt (-w option) or a path to the build configuration file can be given(-c option) and the generator will use the value of `CONFIG_WORD_SIZE` instead. The `Makefile` in `libsel4` calls the generator with the configuration file as an option. Ideally, the architecture should be determined from the configration file, but since we don't have unit tests for the generator, I will make one change at a time. This commit also includes a few changes to make it Python 2.7 compliant.
|
#
53492824 |
|
06-Jan-2016 |
Adrian Danis <Adrian.Danis@nicta.com.au> |
x86/libsel4: Rename ia32->x86 Rename all functions, constants and types in libsel4 that are in the general x86 architecture to have an X86 name instead of an IA32 name. As libsel4 and the kernel share names this requires changing those in the kernel as well. All the original IA32 names can still be used for the moment, but are marked as deprecated.
|
#
1a85b409 |
|
08-Sep-2015 |
Adrian Danis <Adrian.Danis@nicta.com.au> |
libsel4: Change syscall_stub_gen to cast constants to the correct word size
|
#
1a1110a0 |
|
14-Jan-2016 |
amrzar <azarrabi@nicta.com.au> |
Modify Kconfig and Makefile for aach32 as sel4_arch libsel4: updates to include aarch32 as sel4_arch
|
#
380697ab |
|
18-Jan-2016 |
Adrian Danis <Adrian.Danis@nicta.com.au> |
Fixes for recent merge with master branch
|
#
54529413 |
|
20-Aug-2015 |
Adrian Danis <Adrian.Danis@nicta.com.au> |
libsel4: Allow WORD_SIZE_BITS to be changed in the syscall stub generator
|
#
44a522dc |
|
18-Aug-2015 |
Adrian Danis <Adrian.Danis@nicta.com.au> |
libsel4: Generate libsel4 definitions from the current ARCH as well as the SEL4_ARCH
|
#
dbe3e41a |
|
08-Dec-2015 |
Ramana Kumar <Ramana.Kumar@nicta.com.au> |
libsel4: Generate non inlined syscall invocations For performing verification on libsel4 the syscall invocations need to not be inlined. This provides a (somewhat hacky) way of doing that.
|
#
135bdbbf |
|
03-Sep-2015 |
Matthew Fernandez <matthew.fernandez@nicta.com.au> |
libsel4/tools: Fix: Remove incorrect usage message.
|
#
17463526 |
|
29-Jul-2015 |
Anna Lyons <Anna.Lyons@nicta.com.au> |
fix syscall stub gen to shift by the size of the type not the type itself when outputting double word values
|
#
c8e4f9bd |
|
27-Jul-2015 |
Adrian Danis <Adrian.Danis@nicta.com.au> |
Correctly generate a 64-bit type in unmarshalling code in syscall_stub_gen This was introduced in changeset e653f8f65a916c1babe38a13d1f29e5dfb67390d where hard coded size types were replaced with an indirection. This corrects a case where a 'uint64_t' was replaced with a '%s', but there is no corresponding 'TYPES[64]' in the argument list, resulting in too few arguments when processing the string
|
#
e653f8f6 |
|
09-Jul-2015 |
Wink Saville <wink@saville.com> |
Streamline libsel4 and remove its libc dependencies. There are now separate libs for benchmark, assert, printf, putchar start/stop: libs/libsel4benchmark libs/libsel4assert libs/libsel4printf libs/libsel4putchar libs/libsel4startstop The primary changes are introducing sel4/sel4.h and removing std* types plus porting assert and IO code from the kernel to libsel4assert, libsel4printf, libsel4putchar. This means the code within libsel4 and the newlibs do not overload any typical libc entities. Instead the libraries use types like seL4_Uint32 ... instead of uint32_t. And printf is now seL4_Printf and assert is seL4_Assert .... Finally, the only file modified that effects kernel code is kernel/tools/bitfield_gen.py. It needed to be modified as it generates files for both kernel and user space. And for user space the generated code (types_gen.h) needed to use the new types and asserts. The changes should not change what is generated for the kernel and I did a comparison of kernel_final.{c|s} before and after my change and the only differences were time stamps. Bug: #15 Streamline kernel/libsel4 and remove its libc dependencies
|
#
914741ea |
|
27-May-2015 |
Adrian Danis <Adrian.Danis@nicta.com.au> |
x86: Make x86 the name of the architecture instead of IA32 IA32 is 32bit version of the x86 architecture. Whilst only IA32 is supported, much of the code is generic x86. Using a generic x86 architecture will aid in future 64bit support
|
#
a9111d4b |
|
09-Mar-2015 |
Adrian Danis <Adrian.Danis@nicta.com.au> |
libsel4: Support multiple struct types for the generated syscall stubs
|
#
c317d5b8 |
|
26-Jan-2015 |
Matthew Fernandez <matthew.fernandez@nicta.com.au> |
libsel4: Fix trivial comment typos.
|
#
9e8636dd |
|
12-Oct-2014 |
Anna Lyons <Anna.Lyons@nicta.com.au> |
syscall stub generator: change CapDataType into a generic BitFieldType for using bitfield generated types in generated invocations
|
#
da5ec79c |
|
03-Aug-2014 |
Max R.D. Parmer <maxp@trystero.is> |
Use usr/bin/env for all python bangpaths to enable virtualenv use. Very useful with python3 as the default platform.
|
#
a318446f |
|
07-Jul-2014 |
TrustworthySystems <gatekeeper@sel4.systems> |
Recommit of arm_hyp branch on release snapshot
|
#
91b7da86 |
|
17-Jul-2014 |
TrusthworthySystems <gatekeeper@sel4.systems> |
Release snapshot
|