zephyr/include/linker
Andy Ross f6d32ab0a4 kernel: Add cache coherence management framework
Zephyr SMP kernels need to be able to run on architectures with
incoherent caches.  Naive implementation of synchronization on such
architectures requires extensive cache flushing (e.g. flush+invalidate
everything on every spin lock operation, flush on every unlock!) and
is a performance problem.

Instead, many of these systems will have access to separate "coherent"
(usually uncached) and "incoherent" regions of memory.  Where this is
available, place all writable data sections by default into the
coherent region.  An "__incoherent" attribute flag is defined for data
regions that are known to be CPU-local and which should use the cache.
By default, this is used for stack memory.

Stack memory will be incoherent by default, as by definition it is
local to its current thread.  This requires special cache management
on context switch, so an arch API has been added for that.

Also, when enabled, add assertions to strategic places to ensure that
shared kernel data is indeed coherent.  We check thread objects, the
_kernel struct, waitq's, timeouts and spinlocks.  In practice almost
all kernel synchronization is built on top of these structures, and
any shared data structs will contain at least one of them.

Signed-off-by: Andy Ross <andrew.j.ross@intel.com>
Signed-off-by: Anas Nashif <anas.nashif@intel.com>
2020-10-21 06:38:53 -04:00
..
app_smem_aligned.ld
app_smem_unaligned.ld
app_smem.ld
common-noinit.ld linker: tweak section naming to feet all linkers 2020-09-05 10:22:56 -05:00
common-ram.ld linker: do not force keep common kernel objects 2020-09-19 05:49:13 -04:00
common-rom.ld linker: use SECTION_DATA_PROLOGUE for app_smem 2020-09-30 14:14:07 -07:00
cplusplus-ram.ld linker: cxx: Include .gcc_except_table sections 2019-09-19 09:26:42 -05:00
cplusplus-rom.ld linker: cxx: Include .gcc_except_table sections 2019-09-19 09:26:42 -05:00
debug-sections.ld
intlist.ld linker: tweak section naming to feet all linkers 2020-09-05 10:22:56 -05:00
kobject-rom.ld
kobject-text.ld linker: kobject-text: align multiline string definition syntax 2020-09-18 09:49:09 -04:00
kobject.ld kernel: delete separate logic for priv stacks 2020-03-17 20:11:27 +02:00
linker-defs.h linker: add macros so iterable sections can be garbage collected 2020-09-19 05:49:13 -04:00
linker-tool-gcc.h arch: arm64: Support aarch64-gcc compiler 2020-02-01 08:08:43 -05:00
linker-tool-mwdt.h ARC: linker: implement linker related definition for MWDT 2020-09-05 10:22:56 -05:00
linker-tool.h ARC: linker: implement linker related definition for MWDT 2020-09-05 10:22:56 -05:00
rel-sections.ld
section_tags.h kernel: Add cache coherence management framework 2020-10-21 06:38:53 -04:00
sections.h linker: tweak section naming to feet all linkers 2020-09-05 10:22:56 -05:00