This project is mirrored from https://github.com/seL4/seL4.git.
Pull mirroring failed .
Repository mirroring has been paused due to too many failed attempts. It can be resumed by a project maintainer or owner.
Last successful update .
Repository mirroring has been paused due to too many failed attempts. It can be resumed by a project maintainer or owner.
Last successful update .
- Jul 01, 2019
-
-
Kent McLeod authored
This is in preparation for providing this driver as a generic GIC v3 driver.
-
Kent McLeod authored
Separate system register initialisation from redistributor register initialisation
-
Kent McLeod authored
- Use array for storing per-core mapping of the redistributor register mappings. - Locate the base address of each of these mappings based on iterating through the full device mappings looking for matchin MPIDR values. - When accessing redistributor registers, index into the array based on current logical core id. - On single core configurations these arrays only have one element.
-
Kent McLeod authored
mpidr_map is used to store a lookup from seL4 logical core to mpidr value for that core. mpidr_to_gic_affinity correctly transforms the mpidr value stored in mpidr_map to an appropriate GICD_IROUTER register value.
-
Jesse Millwood authored
Some ARMv8 cores do not have a GIC that has backwards compatibility. This adds ARM GIC 500 (GICv3 and GICv4) support to seL4. It should also be noted that there are much more distributor and redistributor registers than in previous version. The platform implementor that needs a GIC500 should take care to set up the kernel devices properly. Change-Id: Ia7c546f7874a758ecd1ee8a29dd749eb3a2444f3
-
Yanyan Shen authored
This is required for Arm devices that have more registers and require larger memory mappings.
-
Curtis Millar authored
-
Curtis Millar authored
Some platforms and configurations do not allow user code to change the value of the register used for TLS. On these architectures a syscall can be used to allow the kernel to update the register on their behalf. This does not immediately update the value in the user context on many configurations as the values are only stored in the user context on a context switch.
-
Curtis Millar authored
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.
-
Curtis Millar authored
The globals frame no longer serves its original purpose of informing a thread of its IPC buffer address, and instead as a virtual implementation of thread ID registers.
-
Curtis Millar authored
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.
-
Curtis Millar authored
-
Curtis Millar authored
This removes the assumption that each platform sotres the IPC buffer address in a platform-specific register. The IPC buffer address is instead stored in a thread-local variable in libsel4 which must be initialised by the runtime.
-
- Jun 28, 2019
-
-
Kent McLeod authored
Instead of processing each platform CMake file during the arch's config.cmake file, we process all of the platform CMake files first. This is primarily motivated by wanting to move platform configuration into a config file that is processed via a -C argument to the initial build initialisation command. Now a platform config is responsible for setting the kernel architecture and it's own platform/arch specific config settings. Where previously a platform was chosen in an arch specific way via either setting KernelARMPlatform or KernelX86Sel4Arch or KernelRiscVPlatform, a platform can now be set by KernelPlatform. In cases where a platform may further parameterise its configuration it is free to choose its own config options to query. Platforms that support multiple seL4 architectures should use KernelSel4Arch to query this. Platforms that provide sub platforms such as exynos5 and subplatforms exynos5250, exynos5410 and exynos5422 can be selected by specifying KernelPlatform=exynos5, KernelARMPlatform=exynos5410 for example.
-
Jimmy Brush authored
It is 16 bytes on 32-bit systems and 32 bytes on 64-bit systems
-
- Jun 27, 2019
-
-
Kent McLeod authored
INTERNAL implies FORCE but in some versions of CMake if a config option has been passed in via a -D option the INTERNAL set doesn't override the value when it should. See: https://gitlab.kitware.com/cmake/cmake/issues/19015 INTERNAL does not imply FORCE for CACHE
-
Kent McLeod authored
All options that get unset are based on the selected platform and are not allowed to be in the public config cache.
-
Kent McLeod authored
Instead of setting this option on each platform that supports aarch64, we set it for all aarch64 platforms. It is expected that every valid aarch64 platform has an FPU and will be correctly context switched by the kernel.
-
Kent McLeod authored
These values are specified by the platform and not user configurable
-
Kent McLeod authored
At the stage where this is processed, Kernel32 hasn't been defined yet.
-
Kent McLeod authored
The UL_CONST macro was leading to a macro definition that didn't have brackets around the addition and using the constant in negative arithmetic operations was leading to incorrect results.
-
- Jun 26, 2019
-
-
Siwei Zhuang authored
This change adds support for Hifive unleashed board. It also removes the outdated hifive suport from the spike platform.
-
Siwei Zhuang authored
There is a different DTS file for 32bit spike platform.
-
Siwei Zhuang authored
The DTS compilation was arm platforms only. Moving it to the top level config file, making it available to RISCV platforms. The generated files are almost identical with minor differences. A new argument(--arch) is added to the hardware_gen.py for the differences.
-
- Jun 24, 2019
-
-
James Ye authored
-
James Ye authored
BeagleBone Blue is a BeagleBone variant aimed at robotics applications. Device Tree generated from Linux 4.20.17
-
James Ye authored
Overlay the incorrect memory size in the device tree, and enlarge the kernel window appropriately. BeagleBone Black has 512MiB memory.
-
James Ye authored
Device Tree generated from Linux 4.20.17
-
James Ye authored
There are other am335x boards which require different platform configurations, such as the BeagleBone Blue.
-
- Jun 20, 2019
-
-
Anna Lyons authored
The tk1 SMMU implementation does not need to dynamically allocate memory as the PDs are not managed by user-level. Convert to static.
-
Anna Lyons authored
Add a device tree overlay such that all memory on the exynos4 fits in the kernel window. It's unknown if the memory past 0x50000000 is valid, when the elf-loader attempts to write to it it hangs.
-
Matthew Brecknell authored
This is workaround for part of binary verification, which currently cannot handle some modes of array access.
-
Anna Lyons authored
If we place the user image at the end of memory, the user image can be beyond the kernel window. Handle this in arch_init_freemem by comparing to paddr's not pptrs.
-
Anna Lyons authored
This change allows us to know, from just the kernel and dtb, where user level untyped objects start being allocated from. - allocate rootserver objects from last available freemem region. - move create_rootserver_objects call into init_freemem.
-
Anna Lyons authored
The user image could be on either side of mode_reserved_region. Fix this by assuming there is 1 or 0 mode_reserved_regions, and checking if the user image is either side.
-
Japheth Lim authored
This fails early if the build process failed to calculate a suitable MAX_NUM_FREEMEM_REG.
-
Japheth Lim authored
Previously, the boot allocator would do dynamic calculations to minimise fragmentation, then throw away the smallest regions. With the new boot allocator, we can reasonably predict that fragmentation will create at most one extra region, so this commit adds one freemem slot for ARM.
-
Anna Lyons authored
-
Anna Lyons authored
Prior to this change, the boot process would dynamically allocate memory for root server objects based on the order of initialisation. Allocation was a best-fit algorithm. This change preallocates all memory for root server objects to an aligned untyped just after the user image. By allocating the objects in order of size, allocation is greatly simplified and the ability to reproduce the allocation offline based on the kernel and user image sizes is increased.
-
Anna Lyons authored
Prior to this change, seL4_MappingFailedLookupLevel() would retrun '22' after any failed EPT mapping operation. This change fixes this to return the correct amount of unresolved bits in the address.
-