1# SPDX-License-Identifier: Apache-2.0
2# The contents of this file is based on include/zephyr/linker/common-ram.ld
3# Please keep in sync
4
5if(CONFIG_GEN_SW_ISR_TABLE AND CONFIG_SRAM_SW_ISR_TABLE)
6  # ld align has been changed to subalign to provide identical behavior scatter vs. ld.
7  zephyr_linker_section(NAME sw_isr_table
8    GROUP DATA_REGION
9    ${XIP_ALIGN_WITH_INPUT} SUBALIGN ${CONFIG_ARCH_SW_ISR_TABLE_ALIGN}
10  )
11  zephyr_linker_section_configure(
12    SECTION sw_isr_table
13    INPUT ".gnu.linkonce.sw_isr_table*"
14  )
15  if(CONFIG_SHARED_INTERRUPTS)
16    zephyr_linker_section_configure(
17      SECTION sw_isr_table
18      INPUT ".gnu.linkonce.shared_sw_isr_table*"
19    )
20  endif()
21endif()
22
23zephyr_linker_section(NAME device_states GROUP DATA_REGION NOINPUT ${XIP_ALIGN_WITH_INPUT})
24zephyr_linker_section_configure(SECTION device_states
25  KEEP INPUT ".z_devstate" ".z_devstate.*"
26)
27
28if(CONFIG_PM_DEVICE)
29  zephyr_iterable_section(NAME pm_device_slots GROUP DATA_REGION ${XIP_ALIGN_WITH_INPUT})
30endif()
31
32zephyr_iterable_section(NAME log_dynamic GROUP DATA_REGION ${XIP_ALIGN_WITH_INPUT})
33
34if(CONFIG_USERSPACE)
35  set(K_OBJECTS_GROUP "K_OBJECTS_IN_DATA_REGION")
36  # All kernel objects within are assumed to be either completely
37  # initialized at build time, or initialized automatically at runtime
38  # via iteration before the POST_KERNEL phase.
39  #
40  zephyr_linker_group(NAME ${K_OBJECTS_GROUP} GROUP DATA_REGION SYMBOL SECTION)
41
42  # gen_kobject_list.py expects the start and end symbols to be called
43  # _static_kernel_objects_begin and _static_kernel_objects_end respectively...
44  zephyr_linker_symbol(
45    SYMBOL
46    _static_kernel_objects_begin
47    EXPR
48    "(@__k_objects_in_data_region_start@)"
49    )
50  zephyr_linker_symbol(
51    SYMBOL
52    _static_kernel_objects_end
53    EXPR
54    "(@__k_objects_in_data_region_end@)"
55    )
56else()
57  set(K_OBJECTS_GROUP "DATA_REGION")
58endif()
59
60zephyr_iterable_section(NAME k_timer GROUP ${K_OBJECTS_GROUP} ${XIP_ALIGN_WITH_INPUT})
61zephyr_iterable_section(NAME k_mem_slab GROUP ${K_OBJECTS_GROUP} ${XIP_ALIGN_WITH_INPUT})
62zephyr_iterable_section(NAME k_heap GROUP ${K_OBJECTS_GROUP} ${XIP_ALIGN_WITH_INPUT})
63zephyr_iterable_section(NAME k_mutex GROUP ${K_OBJECTS_GROUP} ${XIP_ALIGN_WITH_INPUT})
64zephyr_iterable_section(NAME k_stack GROUP ${K_OBJECTS_GROUP} ${XIP_ALIGN_WITH_INPUT})
65zephyr_iterable_section(NAME k_msgq GROUP ${K_OBJECTS_GROUP} ${XIP_ALIGN_WITH_INPUT})
66zephyr_iterable_section(NAME k_mbox GROUP ${K_OBJECTS_GROUP} ${XIP_ALIGN_WITH_INPUT})
67zephyr_iterable_section(NAME k_pipe GROUP ${K_OBJECTS_GROUP} ${XIP_ALIGN_WITH_INPUT})
68zephyr_iterable_section(NAME k_sem GROUP ${K_OBJECTS_GROUP} ${XIP_ALIGN_WITH_INPUT})
69zephyr_iterable_section(NAME k_event GROUP ${K_OBJECTS_GROUP} ${XIP_ALIGN_WITH_INPUT})
70zephyr_iterable_section(NAME k_queue GROUP ${K_OBJECTS_GROUP} ${XIP_ALIGN_WITH_INPUT})
71zephyr_iterable_section(NAME k_fifo GROUP ${K_OBJECTS_GROUP} ${XIP_ALIGN_WITH_INPUT})
72zephyr_iterable_section(NAME k_lifo GROUP ${K_OBJECTS_GROUP} ${XIP_ALIGN_WITH_INPUT})
73zephyr_iterable_section(NAME k_condvar GROUP ${K_OBJECTS_GROUP} ${XIP_ALIGN_WITH_INPUT})
74zephyr_iterable_section(NAME sys_mem_blocks_ptr GROUP ${K_OBJECTS_GROUP} ${XIP_ALIGN_WITH_INPUT})
75
76zephyr_iterable_section(NAME net_buf_pool GROUP ${K_OBJECTS_GROUP} ${XIP_ALIGN_WITH_INPUT})
77
78if(CONFIG_NETWORKING)
79  zephyr_iterable_section(NAME net_if     GROUP ${K_OBJECTS_GROUP} ${XIP_ALIGN_WITH_INPUT})
80  zephyr_iterable_section(NAME net_if_dev GROUP ${K_OBJECTS_GROUP} ${XIP_ALIGN_WITH_INPUT})
81  zephyr_iterable_section(NAME net_l2     GROUP ${K_OBJECTS_GROUP} ${XIP_ALIGN_WITH_INPUT})
82  zephyr_iterable_section(NAME eth_bridge GROUP ${K_OBJECTS_GROUP} ${XIP_ALIGN_WITH_INPUT})
83endif()
84
85if(CONFIG_ARM_SCMI)
86  zephyr_iterable_section(NAME scmi_protocol GROUP ${K_OBJECTS_GROUP} ${XIP_ALIGN_WITH_INPUT})
87endif()
88
89if(CONFIG_SENSING)
90  zephyr_iterable_section(NAME sensing_sensor GROUP ${K_OBJECTS_GROUP} ${XIP_ALIGN_WITH_INPUT})
91endif()
92
93if(CONFIG_USB_DEVICE_STACK)
94  zephyr_linker_section(NAME usb_descriptor GROUP ${K_OBJECTS_GROUP} NOINPUT ${XIP_ALIGN_WITH_INPUT} SUBALIGN 1)
95  zephyr_linker_section_configure(SECTION usb_descriptor
96    KEEP SORT NAME INPUT ".usb.descriptor*"
97  )
98
99  zephyr_iterable_section(NAME usb_cfg_data GROUP ${K_OBJECTS_GROUP} ${XIP_ALIGN_WITH_INPUT})
100endif()
101
102if(CONFIG_USB_DEVICE_BOS)
103  zephyr_linker_section(NAME usb_bos_desc GROUP ${K_OBJECTS_GROUP} NOINPUT ${XIP_ALIGN_WITH_INPUT} SUBALIGN 1)
104  zephyr_linker_section_configure(SECTION usb_data
105    KEEP SORT NAME INPUT ".usb.bos_desc"
106  )
107endif()
108
109if(CONFIG_RTIO)
110  zephyr_iterable_section(NAME rtio GROUP ${K_OBJECTS_GROUP} ${XIP_ALIGN_WITH_INPUT})
111  zephyr_iterable_section(NAME rtio_iodev GROUP ${K_OBJECTS_GROUP} ${XIP_ALIGN_WITH_INPUT})
112  zephyr_iterable_section(NAME rtio_sqe_pool GROUP ${K_OBJECTS_GROUP} ${XIP_ALIGN_WITH_INPUT})
113  zephyr_iterable_section(NAME rtio_cqe_pool GROUP ${K_OBJECTS_GROUP} ${XIP_ALIGN_WITH_INPUT})
114endif()
115
116if(CONFIG_SENSING)
117  zephyr_iterable_section(NAME sensing_sensor GROUP ${K_OBJECTS_GROUP} ${XIP_ALIGN_WITH_INPUT})
118endif()
119
120if(CONFIG_ZBUS)
121  zephyr_iterable_section(NAME zbus_channel_observation_mask GROUP DATA_REGION ${XIP_ALIGN_WITH_INPUT})
122endif()
123
124if(CONFIG_UVB)
125  zephyr_iterable_section(NAME uvb_node GROUP DATA_REGION ${XIP_ALIGN_WITH_INPUT})
126endif()
127
128if(CONFIG_VIDEO)
129  zephyr_iterable_section(NAME video_device GROUP DATA_REGION ${XIP_ALIGN_WITH_INPUT})
130endif()
131
132if(CONFIG_LOG)
133  zephyr_iterable_section(NAME log_mpsc_pbuf GROUP DATA_REGION ${XIP_ALIGN_WITH_INPUT})
134  zephyr_iterable_section(NAME log_msg_ptr GROUP DATA_REGION ${XIP_ALIGN_WITH_INPUT})
135endif()
136
137if(CONFIG_PCIE)
138  zephyr_iterable_section(NAME pcie_dev GROUP DATA_REGION ${XIP_ALIGN_WITH_INPUT})
139endif()
140
141if(CONFIG_USB_DEVICE_STACK OR CONFIG_USB_DEVICE_STACK_NEXT)
142  zephyr_iterable_section(NAME usbd_context GROUP DATA_REGION ${XIP_ALIGN_WITH_INPUT})
143  zephyr_iterable_section(NAME usbd_class_fs GROUP DATA_REGION ${XIP_ALIGN_WITH_INPUT})
144  zephyr_iterable_section(NAME usbd_class_hs GROUP DATA_REGION ${XIP_ALIGN_WITH_INPUT})
145endif()
146
147if(CONFIG_USB_HOST_STACK)
148  zephyr_iterable_section(NAME usbh_contex GROUP DATA_REGION ${XIP_ALIGN_WITH_INPUT})
149  zephyr_iterable_section(NAME usbh_class_data GROUP DATA_REGION ${XIP_ALIGN_WITH_INPUT})
150endif()
151
152if(CONFIG_DEVICE_MUTABLE)
153  zephyr_iterable_section(NAME device_mutable GROUP DATA_REGION ${XIP_ALIGN_WITH_INPUT})
154endif()
155