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