#
512a0200 |
|
19-Mar-2020 |
Qian Ge <qian.ge@data61.csiro.au> |
replacing all ifndef with pargma once All the kernel header files now use pargma once rather than the ifndef, as the pre-processed C files do not change while header files are protected with pargma once. This will also solve any naming issues caused by ifndef.
|
#
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.
|
#
acfc3c52 |
|
31-Oct-2016 |
Anna Lyons <Anna.Lyons@data61.csiro.au> |
mcs: tickless driver for x86 Add a tickless timer driver for x86. The driver defaults to using TSC_DEADLINE mode, but falls back to the apic if that feature is not available.
|
#
15091664 |
|
20-Mar-2019 |
Curtis Millar <curtis.millar@data61.csiro.au> |
Add syscall for setting the current TLS register. 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.
|
#
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.
|
#
761006e0 |
|
18-Mar-2019 |
Anna Lyons <Anna.Lyons@data61.csiro.au> |
style: consistently align pointer with name Run astyle with align-pointer=name
|
#
3d10ef0c |
|
18-Mar-2019 |
Anna Lyons <Anna.Lyons@data61.csiro.au> |
style: correct parenthesis padding Use astyle's unpad-paren to unpad all parentheses that are not included by pad-header, pad-oper, and pad-comma.
|
#
bae90533 |
|
05-Feb-2018 |
Adrian Danis <Adrian.Danis@data61.csiro.au> |
x86: Fix flush RSB The previous assembly is syntactically wrong and managed to somehow not get tested originally
|
#
3900515c |
|
28-Jan-2018 |
Adrian Danis <Adrian.Danis@data61.csiro.au> |
x86: Helpers for using the speculation MSRs
|
#
fe1302cb |
|
28-Jan-2018 |
Adrian Danis <Adrian.Danis@data61.csiro.au> |
x86: Define MSRs for speculation control These MSRs provide access to the IBRS feature and the IBPB command
|
#
caf456dd |
|
28-Jan-2018 |
Adrian Danis <Adrian.Danis@data61.csiro.au> |
x86: Helper for flushing RSB
|
#
4a22471a |
|
16-Jan-2018 |
Adrian Danis <Adrian.Danis@data61.csiro.au> |
x86: MSR for IA32_ARCH_CAPABILITIES and CPUID flag Adds definitions for the IA32_ARCH_CAPABILITIES msr, as well as the CPUID leaf that contains the feature flag for its existance.
|
#
092042f7 |
|
08-Nov-2017 |
Joel Beeren <joel.beeren@data61.csiro.au> |
x64: add MODIFIES statements for extern functions The CParser can't deduce modifies rules for functions without definitions (like in8, out8 et al and interrupt handler functions). This adds explicit modifies rules for these functions.
|
#
ee28936d |
|
18-Jun-2017 |
Hesham Almatary <hesham.almatary@data61.csiro.au> |
SMP: Introduce ENABLE_SMP_SUPPORT - Make it more readable and less confusing compared to the 'CONFIG_MAX_NUM_NODES > 1' check
|
#
50995b4c |
|
15-Feb-2017 |
Jack Suann <Jack.Suann@data61.csiro.au> |
Replace Arch_handleInterrupt with Arch_finaliseInterrupt
|
#
9f67d21c |
|
14-Feb-2017 |
Jack Suann <Jack.Suann@data61.csiro.au> |
x86: Handle pending interrupt before scheduling thread in handleSyscall In handleSyscall the current thread may be preempted to handle a pending interrupt. With kernel mode interrupts in x86 this handling was delayed until we were about to switch back to user mode. This change unifies the handling with ARM, where the interrupt is handled prior to calling the thread scheduler.
|
#
d5f8fe01 |
|
16-Jan-2017 |
Hesham Almatary <hesham.almatary@data61.csiro.au> |
SMP: guard arch_pause() with #ifdef for verification purposes
|
#
5845659e |
|
16-Jan-2017 |
Bamboo <bamboo@keg.ertos.in.nicta.com.au> |
[STYLE_FIX]
|
#
af02927b |
|
12-Jan-2017 |
Hesham Almatary <hesham.almatary@data61.csiro.au> |
SMP: move lock.h to architecture-independent include/smp s/__sync_lock_test_and_set/__atomic_exchange_n in lock.h
|
#
6cd48520 |
|
11-Dec-2016 |
Donny Yang <work@kota.moe> |
x86: Add Skylake-related info
|
#
f99ce0e2 |
|
07-Dec-2016 |
Adrian Danis <Adrian.Danis@data61.csiro.au> |
x86: Load actual EFER MSR on vmexit Previously we threw away any modifications the kernel may have made to the EFER when a VM exit happens. In x86-64 there are modifications to the EFER that must be preserved
|
#
564b9839 |
|
05-Dec-2016 |
Donny Yang <work@kota.moe> |
x86: Avoid writing the fs/gs base if we don't have to
|
#
a0cb9e67 |
|
09-Nov-2016 |
Adrian Danis <Adrian.Danis@data61.csiro.au> |
x64: Support multiple kernel stacks Adds support for per-core kernel stacks through the use of thread local storage and swapgs. In addition to the main kernel stack the IRQ stack also needs to be made per core
|
#
846254be |
|
07-Nov-2016 |
Bamboo <bamboo@keg.ertos.in.nicta.com.au> |
[STYLE_FIX]
|
#
c86669df |
|
31-Oct-2016 |
Anna Lyons <Anna.Lyons@data61.csiro.au> |
x86: export tsc freq in bootinfo We read the frequency from the platform info MSR and export it to the user for accurate timing (for platforms that support platform into)
|
#
6a86cbf5 |
|
26-Oct-2016 |
Bamboo <bamboo@keg.ertos.in.nicta.com.au> |
[STYLE_FIX]
|
#
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.
|
#
3f9eb7c8 |
|
06-Oct-2016 |
amrzar <azarrabi@nicta.com.au> |
SELFOUR-632: implement cores non-architecture dependent structres
|
#
bebfcf6d |
|
23-Jun-2016 |
Kofi Doku Atuah <kofi.dokuatuah@nicta.com.au> |
SELFOUR-499: X86, ARM: Add userspace invocations for hardware debugging This commit implements the body of SELFOUR-499. The API exposes the x86 DR0-7 and ARM coprocessor 14 features to userspace by virtualizing them as context- switched registers in the TCB. Implemented as TCB invocations. This feature is only built when CONFIG_HARDWARE_DEBUG_API is selected. * Add low-level support routines for setting, unsetting, getting, enabling and disabling breakpoints. * Add support for single-stepping as well. ^ Single-stepping is not supported on ARMv6 since the hardware doesn't have support. ^ ARM implements single-stepping as instruction breakpoints configured to fault on every instruction -- this is achieved through the "mismatch" mode, which is only supported from ARMv7 onwards. * Also support explicit software break requests, a la "BKPT" and "INT $3". * New invocations: * seL4_TCB_SetBreakpoint(). * seL4_TCB_GetBreakpoint(). * seL4_TCB_UnsetBreakpoint(). * seL4_TCB_ConfigureSingleStepping(). * New constants: ^ Event types: ^ seL4_InstructionBreakpoint. ^ seL4_DataBreakpoint. ^ seL4_SoftwareBreakRequest. ^ Access types: ^ seL4_BreakOnRead. ^ seL4_BreakOnWrite. ^ seL4_BreakOnReadWrite. ^ Exports: ^ seL4_NumHWBreakpoints. ^ seL4_NumExclusiveBreakpoints. ^ seL4_NumExclusiveWatchpoints. ^ seL4_NumDualFunctionMonitors. ^ seL4_FirstBreakpoint. ^ seL4_FirstWatchpoint. ^ seL4_FirstDualFunctionMonitor. See documentation in the seL4 API manual.
|
#
4044e204 |
|
21-Sep-2016 |
Adrian Danis <Adrian.Danis@data61.csiro.au> |
Revert "Merge pull request #358 in SEL4/sel4 from ~AZARRABI/sel4:multicore to master" This reverts commit ce2f666bb811c5e4c779829fcb09d5a189ebcdbb, reversing changes made to dc183f96b81f2344d7d0d910fc430f924eaae940.
|
#
8ffc3531 |
|
21-Sep-2016 |
Adrian Danis <Adrian.Danis@data61.csiro.au> |
Revert "[STYLE_FIX]" This reverts commit d29f743bbcc3acff2f61b40dedb4fe0839db38b8.
|
#
d29f743b |
|
21-Sep-2016 |
Bamboo <bamboo@keg.ertos.in.nicta.com.au> |
[STYLE_FIX]
|
#
fbc071b4 |
|
12-Sep-2016 |
amrzar <azarrabi@nicta.com.au> |
SELFOUR-630:preliminary booting application processors - update core detection code and Kconfig file - update kernel stack managment so that BSP does not use boot stack before IPI APs - move arch dependant data to a single structure - add cache line size to Kconfig - add cpu indexing and apic id mapping - boot APs to halting state - add guard for kernel stack if there is only one core
|
#
56030fc3 |
|
06-Jul-2016 |
Kofi Doku Atuah <kofi.dokuatuah@nicta.com.au> |
x86: Fix cpuid family/model composition Fixes a bug where previously MODEL_ID() was defined as: `#define MODEL_ID(x) ( ((x & 0xf0000) >> 16) + (x & 0xf0) )` This was incorrect because (1) it didn't take into account the conditional nature of the extended_model_ID, and (2) it's actually shifting the extended_model_ID into the low bits and keeping the model_ID in the high bits, when it should be the other way around. This patch also introduces a foundation for more sane testing of CPU vendor, family, model and brand_ID.
|
#
58f26d2f |
|
01-Jun-2016 |
Adrian Danis <Adrian.Danis@data61.csiro.au> |
x86: Add missing CPUID functions
|
#
2516e65c |
|
01-Jun-2016 |
Adrian Danis <Adrian.Danis@data61.csiro.au> |
x86: Add XSS MSR definition
|
#
0c1d959b |
|
22-May-2016 |
Adrian Danis <Adrian.Danis@data61.csiro.au> |
x86: Define Additional MSRs Define these MSRs in preparation for their use on the x86_64 port
|
#
1c1e976d |
|
17-May-2016 |
Adrian Danis <Adrian.Danis@data61.csiro.au> |
x86: Improve translation invalidation x86_64 (with PCIDs enabled) supports a more fine grained invalidation approach for the TLB and Page Structure Cache. This change expands the number and kinds of information passed for certain invalidations, and provides an implementation of this for ia32.
|
#
be6b6be1 |
|
24-Nov-2015 |
Adrian Danis <Adrian.Danis@nicta.com.au> |
x86: FS/GS base MSRs when FS/GS_BASE_MSR are used to set the base addreses, user applications should not touch FS/GS regiters; so the kernel should load proper selectors once, establishing limits and other attributes for the segments.
|
#
75153a08 |
|
06-Sep-2015 |
Adrian Danis <Adrian.Danis@nicta.com.au> |
x86: Do not use A constraint in inline assembly as it does not work correctly between 32 and 64 bit code
|
#
371a891d |
|
03-Sep-2015 |
Adrian Danis <Adrian.Danis@nicta.com.au> |
x86: Move getFaultAddr to general hardware.h, as the read_cr2 is already specialized by the machine mode
|
#
fc27f47f |
|
28-Jun-2015 |
Adrian Danis <Adrian.Danis@nicta.com.au> |
x86: Move general x86 functions to common header
|
#
6729ce78 |
|
05-Nov-2015 |
Adrian Danis <Adrian.Danis@nicta.com.au> |
x86: Make parts of what have become 32-bit specific headers common The reason these were not made common to begin with is so that there was a commit that was just a rename of these files to make any merges with other branches that might exist easier
|
#
022287c3 |
|
01-Jul-2015 |
Adrian Danis <Adrian.Danis@nicta.com.au> |
x86: Minimal changes to fix previous commit that renamed headers
|
#
0ecff9f3 |
|
09-Nov-2015 |
Adrian Danis <Adrian.Danis@nicta.com.au> |
unsigned int -> word_t
|
#
c99c1b79 |
|
15-Jun-2015 |
Stephen Sherratt <stephen.sherratt@nicta.com.au> |
Added a wordRadix constant to x86 kernel.
|
#
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
|