229 lines
6.0 KiB
Plaintext
229 lines
6.0 KiB
Plaintext
/* SPDX-License-Identifier: Apache-2.0 */
|
|
|
|
SECTION_PROLOGUE(initlevel,,)
|
|
{
|
|
/*
|
|
* link in initialization objects for all objects that are
|
|
* automatically initialized by the kernel; the objects are
|
|
* sorted in the order they will be initialized (i.e. ordered
|
|
* by level, sorted by priority within a level)
|
|
*/
|
|
__init_start = .;
|
|
CREATE_OBJ_LEVEL(init, PRE_KERNEL_1)
|
|
CREATE_OBJ_LEVEL(init, PRE_KERNEL_2)
|
|
CREATE_OBJ_LEVEL(init, POST_KERNEL)
|
|
CREATE_OBJ_LEVEL(init, APPLICATION)
|
|
CREATE_OBJ_LEVEL(init, SMP)
|
|
__init_end = .;
|
|
} GROUP_ROM_LINK_IN(RAMABLE_REGION, ROMABLE_REGION)
|
|
|
|
SECTION_PROLOGUE(devices,,)
|
|
{
|
|
/* Link in devices objects, which are tied to the init ones;
|
|
* the objects are thus sorted the same way as their init
|
|
* object parent. See above and include/device.h.
|
|
*/
|
|
__device_start = .;
|
|
CREATE_OBJ_LEVEL(device, PRE_KERNEL_1)
|
|
CREATE_OBJ_LEVEL(device, PRE_KERNEL_2)
|
|
CREATE_OBJ_LEVEL(device, POST_KERNEL)
|
|
CREATE_OBJ_LEVEL(device, APPLICATION)
|
|
CREATE_OBJ_LEVEL(device, SMP)
|
|
__device_end = .;
|
|
} GROUP_ROM_LINK_IN(RAMABLE_REGION, ROMABLE_REGION)
|
|
|
|
#if defined(CONFIG_GEN_SW_ISR_TABLE) && !defined(CONFIG_DYNAMIC_INTERRUPTS)
|
|
SECTION_PROLOGUE(sw_isr_table,,)
|
|
{
|
|
/*
|
|
* Some arch requires an entry to be aligned to arch
|
|
* specific boundary for using double word load
|
|
* instruction. See include/sw_isr_table.h.
|
|
*/
|
|
. = ALIGN(CONFIG_ARCH_SW_ISR_TABLE_ALIGN);
|
|
*(_SW_ISR_TABLE_SECTION_SYMS)
|
|
} GROUP_ROM_LINK_IN(RAMABLE_REGION, ROMABLE_REGION)
|
|
#endif
|
|
|
|
/* verify we don't have rogue .z_init_<something> initlevel sections */
|
|
SECTION_PROLOGUE(initlevel_error,,)
|
|
{
|
|
KEEP(*(SORT(.z_init_[_A-Z0-9]*)))
|
|
}
|
|
ASSERT(SIZEOF(initlevel_error) == 0, "Undefined initialization levels used.")
|
|
|
|
#ifdef CONFIG_CPP_STATIC_INIT_GNU
|
|
SECTION_PROLOGUE(_CTOR_SECTION_NAME,,)
|
|
{
|
|
/*
|
|
* The compiler fills the constructor pointers table below,
|
|
* hence symbol __CTOR_LIST__ must be aligned on word
|
|
* boundary. To align with the C++ standard, the first elment
|
|
* of the array contains the number of actual constructors. The
|
|
* last element is NULL.
|
|
*/
|
|
#ifdef CONFIG_64BIT
|
|
. = ALIGN(8);
|
|
__CTOR_LIST__ = .;
|
|
QUAD((__CTOR_END__ - __CTOR_LIST__) / 8 - 2)
|
|
KEEP(*(SORT_BY_NAME(".ctors*")))
|
|
QUAD(0)
|
|
__CTOR_END__ = .;
|
|
#else
|
|
. = ALIGN(4);
|
|
__CTOR_LIST__ = .;
|
|
LONG((__CTOR_END__ - __CTOR_LIST__) / 4 - 2)
|
|
KEEP(*(SORT_BY_NAME(".ctors*")))
|
|
LONG(0)
|
|
__CTOR_END__ = .;
|
|
#endif
|
|
} GROUP_ROM_LINK_IN(RAMABLE_REGION, ROMABLE_REGION)
|
|
|
|
SECTION_PROLOGUE(init_array,,)
|
|
{
|
|
. = ALIGN(4);
|
|
__init_array_start = .;
|
|
KEEP(*(SORT_BY_NAME(".init_array*")))
|
|
__init_array_end = .;
|
|
} GROUP_ROM_LINK_IN(RAMABLE_REGION, ROMABLE_REGION)
|
|
#endif
|
|
#ifdef CONFIG_USERSPACE
|
|
/* Build-time assignment of permissions to kernel objects to
|
|
* threads declared with K_THREAD_DEFINE()
|
|
*/
|
|
ITERABLE_SECTION_ROM(z_object_assignment, 4)
|
|
#endif
|
|
|
|
SECTION_DATA_PROLOGUE(app_shmem_regions,,)
|
|
{
|
|
__app_shmem_regions_start = .;
|
|
KEEP(*(SORT(.app_regions.*)));
|
|
__app_shmem_regions_end = .;
|
|
} GROUP_ROM_LINK_IN(RAMABLE_REGION, ROMABLE_REGION)
|
|
|
|
#if defined(CONFIG_NET_SOCKETS)
|
|
ITERABLE_SECTION_ROM(net_socket_register, 4)
|
|
#endif
|
|
|
|
#if defined(CONFIG_NET_L2_PPP)
|
|
ITERABLE_SECTION_ROM(ppp_protocol_handler, 4)
|
|
#endif
|
|
|
|
ITERABLE_SECTION_ROM(bt_l2cap_fixed_chan, 4)
|
|
|
|
#if defined(CONFIG_BT_BREDR)
|
|
ITERABLE_SECTION_ROM(bt_l2cap_br_fixed_chan, 4)
|
|
#endif
|
|
|
|
#if defined(CONFIG_BT_CONN)
|
|
ITERABLE_SECTION_ROM(bt_conn_cb, 4)
|
|
#endif
|
|
|
|
ITERABLE_SECTION_ROM(bt_gatt_service_static, 4)
|
|
|
|
#if defined(CONFIG_BT_MESH)
|
|
ITERABLE_SECTION_ROM(bt_mesh_subnet_cb, 4)
|
|
ITERABLE_SECTION_ROM(bt_mesh_app_key_cb, 4)
|
|
|
|
ITERABLE_SECTION_ROM(bt_mesh_hb_cb, 4)
|
|
#endif
|
|
|
|
#if defined(CONFIG_BT_MESH_FRIEND)
|
|
ITERABLE_SECTION_ROM(bt_mesh_friend_cb, 4)
|
|
#endif
|
|
|
|
#if defined(CONFIG_BT_MESH_LOW_POWER)
|
|
ITERABLE_SECTION_ROM(bt_mesh_lpn_cb, 4)
|
|
#endif
|
|
|
|
#if defined(CONFIG_BT_MESH_GATT_PROXY)
|
|
ITERABLE_SECTION_ROM(bt_mesh_proxy_cb, 4)
|
|
#endif
|
|
|
|
#if defined(CONFIG_EC_HOST_CMD)
|
|
ITERABLE_SECTION_ROM(ec_host_cmd_handler, 4)
|
|
#endif
|
|
|
|
#if defined(CONFIG_SETTINGS)
|
|
ITERABLE_SECTION_ROM(settings_handler_static, 4)
|
|
#endif
|
|
|
|
ITERABLE_SECTION_ROM(k_p4wq_initparam, 4)
|
|
|
|
#if defined(CONFIG_EMUL)
|
|
SECTION_DATA_PROLOGUE(emulators_section,,)
|
|
{
|
|
__emul_list_start = .;
|
|
KEEP(*(SORT_BY_NAME(".emulators")));
|
|
__emul_list_end = .;
|
|
} GROUP_LINK_IN(ROMABLE_REGION)
|
|
#endif /* CONFIG_EMUL */
|
|
|
|
#if defined(CONFIG_DNS_SD)
|
|
ITERABLE_SECTION_ROM(dns_sd_rec, 4)
|
|
#endif
|
|
|
|
#if defined(CONFIG_PCIE)
|
|
SECTION_DATA_PROLOGUE(irq_alloc,,)
|
|
{
|
|
__irq_alloc_start = .;
|
|
KEEP(*(SORT_BY_NAME("._irq_alloc*")));
|
|
__irq_alloc_end = .;
|
|
} GROUP_LINK_IN(ROMABLE_REGION)
|
|
#endif /* CONFIG_PCIE */
|
|
|
|
SECTION_DATA_PROLOGUE(log_strings_sections,,)
|
|
{
|
|
__log_strings_start = .;
|
|
KEEP(*(SORT(.log_strings*)));
|
|
__log_strings_end = .;
|
|
} GROUP_ROM_LINK_IN(RAMABLE_REGION, ROMABLE_REGION)
|
|
|
|
SECTION_DATA_PROLOGUE(log_const_sections,,)
|
|
{
|
|
__log_const_start = .;
|
|
KEEP(*(SORT(.log_const_*)));
|
|
__log_const_end = .;
|
|
} GROUP_ROM_LINK_IN(RAMABLE_REGION, ROMABLE_REGION)
|
|
|
|
SECTION_DATA_PROLOGUE(log_backends_sections,,)
|
|
{
|
|
__log_backends_start = .;
|
|
KEEP(*("._log_backend.*"));
|
|
__log_backends_end = .;
|
|
} GROUP_ROM_LINK_IN(RAMABLE_REGION, ROMABLE_REGION)
|
|
|
|
ITERABLE_SECTION_ROM(shell, 4)
|
|
|
|
SECTION_DATA_PROLOGUE(shell_root_cmds_sections,,)
|
|
{
|
|
__shell_root_cmds_start = .;
|
|
KEEP(*(SORT(.shell_root_cmd_*)));
|
|
__shell_root_cmds_end = .;
|
|
} GROUP_ROM_LINK_IN(RAMABLE_REGION, ROMABLE_REGION)
|
|
|
|
SECTION_DATA_PROLOGUE(font_entry_sections,,)
|
|
{
|
|
__font_entry_start = .;
|
|
KEEP(*(SORT_BY_NAME("._cfb_font.*")))
|
|
__font_entry_end = .;
|
|
} GROUP_ROM_LINK_IN(RAMABLE_REGION, ROMABLE_REGION)
|
|
|
|
ITERABLE_SECTION_ROM(tracing_backend, 4)
|
|
|
|
SECTION_DATA_PROLOGUE(zephyr_dbg_info,,)
|
|
{
|
|
KEEP(*(".dbg_thread_info"));
|
|
} GROUP_ROM_LINK_IN(RAMABLE_REGION, ROMABLE_REGION)
|
|
|
|
SECTION_DATA_PROLOGUE(device_handles,,)
|
|
{
|
|
__device_handles_start = .;
|
|
#ifdef LINKER_ZEPHYR_FINAL
|
|
KEEP(*(SORT(.__device_handles_pass2*)));
|
|
#else /* LINKER_ZEPHYR_FINAL */
|
|
KEEP(*(SORT(.__device_handles_pass1*)));
|
|
#endif /* LINKER_ZEPHYR_FINAL */
|
|
__device_handles_end = .;
|
|
} GROUP_ROM_LINK_IN(RAMABLE_REGION, ROMABLE_REGION)
|