2017-08-23 04:15:23 +08:00
|
|
|
/*
|
|
|
|
* Copyright (c) 2017 Intel Corporation
|
|
|
|
*
|
|
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifdef CONFIG_USERSPACE
|
|
|
|
/* Constraints:
|
|
|
|
*
|
|
|
|
* - changes to the size of this section between build phases
|
|
|
|
* *must not* shift the memory address of any kernel obejcts,
|
|
|
|
* since it contains a hashtable of the memory addresses of those
|
|
|
|
* kernel objects
|
|
|
|
*
|
|
|
|
* - It is OK if this section itself is shifted in between builds; for
|
|
|
|
* example some arches may precede this section with generated MMU
|
|
|
|
* page tables which are also unpredictable in size.
|
|
|
|
*
|
|
|
|
* The size of the
|
|
|
|
* gperf tables is both a function of the number of kernel objects,
|
|
|
|
* *and* the specific memory addresses being hashed. It is not something
|
|
|
|
* that can be predicted without actually building and compling it.
|
|
|
|
*/
|
2019-03-15 07:39:36 +08:00
|
|
|
SECTION_DATA_PROLOGUE(kobject_data,,)
|
2017-08-23 04:15:23 +08:00
|
|
|
{
|
|
|
|
*(".kobject_data.data*")
|
|
|
|
|
2018-08-09 02:23:16 +08:00
|
|
|
#ifndef LINKER_PASS2
|
|
|
|
#ifdef CONFIG_DYNAMIC_OBJECTS
|
|
|
|
PROVIDE(_thread_idx_map = .);
|
|
|
|
. += CONFIG_MAX_THREAD_BYTES;
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
|
2017-08-23 04:15:23 +08:00
|
|
|
/* This is also unpredictable in size, and has the same constraints.
|
|
|
|
* On XIP systems this will get put at the very end of ROM.
|
|
|
|
*/
|
|
|
|
#ifndef CONFIG_XIP
|
|
|
|
*(".kobject_data.rodata*")
|
|
|
|
#endif
|
|
|
|
} GROUP_DATA_LINK_IN(RAMABLE_REGION, ROMABLE_REGION)
|
|
|
|
|
2020-03-12 01:56:19 +08:00
|
|
|
#ifdef CONFIG_GEN_PRIV_STACKS
|
|
|
|
SECTION_DATA_PROLOGUE(priv_stacks_noinit,,)
|
|
|
|
{
|
|
|
|
z_priv_stacks_ram_start = .;
|
|
|
|
*(".priv_stacks.noinit")
|
|
|
|
z_priv_stacks_ram_end = .;
|
|
|
|
} GROUP_DATA_LINK_IN(RAMABLE_REGION, ROMABLE_REGION)
|
|
|
|
#endif /* CONFIG_GEN_PRIV_STACKS */
|
|
|
|
#endif /* CONFIG_USERSPACE */
|