blob: b4f67293610d6f1b90a98974b4f4c1c9fe4a77b7 [file] [log] [blame]
/* SPDX-License-Identifier: Apache-2.0 */
#include <zephyr/linker/iterable_sections.h>
#if defined(CONFIG_NETWORKING)
#ifndef NETWORK_RAM_SECTIONS
#define NETWORK_RAM_SECTIONS \
ITERABLE_SECTION_RAM(net_if, 4) \
ITERABLE_SECTION_RAM(net_if_dev, 4) \
ITERABLE_SECTION_RAM(net_l2, 4) \
ITERABLE_SECTION_RAM(eth_bridge, 4)
#endif
#endif /* NETWORKING */
#if defined(CONFIG_BT_MESH)
ITERABLE_SECTION_RAM(bt_mesh_ext_adv, 4)
#endif
#if defined(CONFIG_GEN_SW_ISR_TABLE) && defined(CONFIG_DYNAMIC_INTERRUPTS)
SECTION_DATA_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_DATA_LINK_IN(RAMABLE_REGION, ROMABLE_REGION)
#endif
SECTION_DATA_PROLOGUE(device_states,,)
{
/* Device states used by the device objects. */
__device_states_start = .;
KEEP(*(".z_devstate"));
KEEP(*(".z_devstate.*"));
__device_states_end = .;
} GROUP_DATA_LINK_IN(RAMABLE_REGION, ROMABLE_REGION)
#if CONFIG_PM_DEVICE
ITERABLE_SECTION_RAM(pm_device_slots, 4)
#endif
#if defined(CONFIG_HAS_DYNAMIC_DEVICE_HANDLES)
SECTION_DATA_PROLOGUE(device_handles,,)
{
#include "device-handles.ld"
} GROUP_DATA_LINK_IN(RAMABLE_REGION, ROMABLE_REGION)
#endif /* CONFIG_HAS_DYNAMIC_DEVICE_HANDLES */
ITERABLE_SECTION_RAM_GC_ALLOWED(log_mpsc_pbuf, 4)
ITERABLE_SECTION_RAM(log_msg_ptr, 4)
ITERABLE_SECTION_RAM(log_dynamic, 4)
#ifdef CONFIG_USERSPACE
/* All kernel objects within are assumed to be either completely
* initialized at build time, or initialized automatically at runtime
* via iteration before the POST_KERNEL phase.
*
* These two symbols only used by gen_kobject_list.py
*/
_static_kernel_objects_begin = .;
#endif /* CONFIG_USERSPACE */
ITERABLE_SECTION_RAM_GC_ALLOWED(k_timer, 4)
ITERABLE_SECTION_RAM_GC_ALLOWED(k_mem_slab, 4)
ITERABLE_SECTION_RAM_GC_ALLOWED(k_heap, 4)
ITERABLE_SECTION_RAM_GC_ALLOWED(k_mutex, 4)
ITERABLE_SECTION_RAM_GC_ALLOWED(k_stack, 4)
ITERABLE_SECTION_RAM_GC_ALLOWED(k_msgq, 4)
ITERABLE_SECTION_RAM_GC_ALLOWED(k_mbox, 4)
ITERABLE_SECTION_RAM_GC_ALLOWED(k_pipe, 4)
ITERABLE_SECTION_RAM_GC_ALLOWED(k_sem, 4)
ITERABLE_SECTION_RAM_GC_ALLOWED(k_event, 4)
ITERABLE_SECTION_RAM_GC_ALLOWED(k_queue, 4)
ITERABLE_SECTION_RAM_GC_ALLOWED(k_condvar, 4)
ITERABLE_SECTION_RAM(net_buf_pool, 4)
#if defined(CONFIG_NETWORKING)
NETWORK_RAM_SECTIONS
#endif /* NETWORKING */
#if defined(CONFIG_PCIE)
ITERABLE_SECTION_RAM(pcie_dev, 4)
#endif /* PCIE */
#if defined(CONFIG_UART_MUX)
ITERABLE_SECTION_RAM(uart_mux, 4)
#endif
#if defined(CONFIG_USB_DEVICE_STACK)
SECTION_DATA_PROLOGUE(usb_descriptor,,SUBALIGN(1))
{
__usb_descriptor_start = .;
*(".usb.descriptor")
KEEP(*(SORT_BY_NAME(".usb.descriptor*")))
__usb_descriptor_end = .;
} GROUP_DATA_LINK_IN(RAMABLE_REGION, ROMABLE_REGION)
ITERABLE_SECTION_RAM(usb_cfg_data, 4)
#endif /* CONFIG_USB_DEVICE_STACK */
#if defined(CONFIG_USB_DEVICE_BOS)
SECTION_DATA_PROLOGUE(usb_bos_desc,,SUBALIGN(1))
{
__usb_bos_desc_start = .;
*(".usb.bos_desc")
KEEP(*(SORT_BY_NAME(".usb.bos_desc*")))
__usb_bos_desc_end = .;
} GROUP_DATA_LINK_IN(RAMABLE_REGION, ROMABLE_REGION)
#endif /* CONFIG_USB_DEVICE_BOS */
#if defined(CONFIG_RTIO)
ITERABLE_SECTION_RAM(rtio, 4)
ITERABLE_SECTION_RAM(rtio_iodev, 4)
ITERABLE_SECTION_RAM(rtio_sqe_pool, 4)
ITERABLE_SECTION_RAM(rtio_cqe_pool, 4)
#endif /* CONFIG_RTIO */
#ifdef CONFIG_USERSPACE
_static_kernel_objects_end = .;
#endif