19#ifndef ZEPHYR_INCLUDE_LINKER_LINKER_DEFS_H_
20#define ZEPHYR_INCLUDE_LINKER_LINKER_DEFS_H_
26#include <zephyr/offsets.h>
36#ifdef DT_NODE_HAS_STATUS
37#undef DT_NODE_HAS_STATUS
39#define DT_NODE_HAS_STATUS(node, status) 0
41#ifdef DT_NODE_HAS_STATUS_OKAY
42#undef DT_NODE_HAS_STATUS_OKAY
44#define DT_NODE_HAS_STATUS_OKAY(node) 0
54#define PLACE_SYMBOL_HERE(symbol) \
56 PROVIDE(_CONCAT(_, symbol) = symbol)
58#define PLACE_SYMBOL_HERE(symbol) symbol = .
70#define CREATE_OBJ_LEVEL(object, level) \
71 PLACE_SYMBOL_HERE(__##object##_##level##_start);\
72 KEEP(*(SORT(.z_##object##_##level##_P_?_*))); \
73 KEEP(*(SORT(.z_##object##_##level##_P_??_*))); \
74 KEEP(*(SORT(.z_##object##_##level##_P_???_*)));
82#elif defined(_ASMLANGUAGE)
88GDATA(__data_region_load_start)
89GDATA(__data_region_start)
90GDATA(__data_region_num_words)
107extern char _app_smem_start[];
108extern char _app_smem_end[];
109extern char _app_smem_size[];
110extern char _app_smem_rom_start[];
111extern char _app_smem_num_words[];
113#ifdef CONFIG_LINKER_USE_PINNED_SECTION
114extern char _app_smem_pinned_start[];
115extern char _app_smem_pinned_end[];
116extern char _app_smem_pinned_size[];
117extern char _app_smem_pinned_num_words[];
130extern char __kernel_ram_start[];
131extern char __kernel_ram_end[];
132extern char __kernel_ram_size[];
135extern char __bss_start[];
136extern char __bss_end[];
140extern char __data_region_load_start[];
141extern char __data_region_start[];
142extern char __data_region_end[];
147extern char z_mapped_start[];
148extern char z_mapped_end[];
152extern char __rom_region_start[];
153extern char __rom_region_end[];
154extern char __rom_region_size[];
157extern char _flash_used[];
160extern char _image_ram_start[];
161extern char _image_ram_end[];
162extern char _image_ram_size[];
164extern char __text_region_start[];
165extern char __text_region_end[];
166extern char __text_region_size[];
168extern char __rodata_region_start[];
169extern char __rodata_region_end[];
170extern char __rodata_region_size[];
172extern char _vector_start[];
173extern char _vector_end[];
175#ifdef CONFIG_SW_VECTOR_RELAY
176extern char __vector_relay_table[];
179#ifdef CONFIG_SRAM_VECTOR_TABLE
180extern char _sram_vector_start[];
181extern char _sram_vector_end[];
182extern char _sram_vector_size[];
185#ifdef CONFIG_COVERAGE_GCOV
186extern char __gcov_bss_start[];
187extern char __gcov_bss_end[];
188extern char __gcov_bss_size[];
194#if (DT_NODE_HAS_STATUS_OKAY(DT_CHOSEN(zephyr_ccm)))
195extern char __ccm_data_load_start[];
196extern char __ccm_start[];
197extern char __ccm_data_start[];
198extern char __ccm_data_end[];
199extern char __ccm_bss_start[];
200extern char __ccm_bss_end[];
201extern char __ccm_noinit_start[];
202extern char __ccm_noinit_end[];
203extern char __ccm_end[];
206#if (DT_NODE_HAS_STATUS_OKAY(DT_CHOSEN(zephyr_itcm)))
207extern char __itcm_start[];
208extern char __itcm_end[];
209extern char __itcm_size[];
210extern char __itcm_load_start[];
213#if (DT_NODE_HAS_STATUS_OKAY(DT_CHOSEN(zephyr_dtcm)))
214extern char __dtcm_data_start[];
215extern char __dtcm_data_end[];
216extern char __dtcm_bss_start[];
217extern char __dtcm_bss_end[];
218extern char __dtcm_noinit_start[];
219extern char __dtcm_noinit_end[];
220extern char __dtcm_data_load_start[];
221extern char __dtcm_start[];
222extern char __dtcm_end[];
225#if (DT_NODE_HAS_STATUS_OKAY(DT_CHOSEN(zephyr_ocm)))
226extern char __ocm_data_start[];
227extern char __ocm_data_end[];
228extern char __ocm_bss_start[];
229extern char __ocm_bss_end[];
230extern char __ocm_start[];
231extern char __ocm_end[];
232extern char __ocm_size[];
238#ifdef CONFIG_ARM_FIRMWARE_HAS_SECURE_ENTRY_FUNCS
239extern char __sg_start[];
240extern char __sg_end[];
241extern char __sg_size[];
253#ifdef CONFIG_NOCACHE_MEMORY
254extern char _nocache_ram_start[];
255extern char _nocache_ram_end[];
256extern char _nocache_ram_size[];
257extern char _nocache_noload_ram_start[];
258extern char _nocache_noload_ram_end[];
259extern char _nocache_noload_ram_size[];
260extern char _nocache_load_ram_start[];
261extern char _nocache_load_ram_end[];
262extern char _nocache_load_ram_size[];
263extern char _nocache_load_rom_start[];
272#ifdef CONFIG_ARCH_HAS_RAMFUNC_SUPPORT
273extern char __ramfunc_region_start[];
274extern char __ramfunc_start[];
275extern char __ramfunc_end[];
276extern char __ramfunc_size[];
277extern char __ramfunc_load_start[];
286#ifdef CONFIG_USERSPACE
287extern char z_priv_stacks_ram_start[];
288extern char z_priv_stacks_ram_end[];
289extern char z_user_stacks_start[];
290extern char z_user_stacks_end[];
291extern char z_kobject_data_begin[];
294#ifdef CONFIG_THREAD_LOCAL_STORAGE
295extern char __tdata_start[];
296extern char __tdata_end[];
297extern char __tdata_size[];
298extern char __tdata_align[];
299extern char __tbss_start[];
300extern char __tbss_end[];
301extern char __tbss_size[];
302extern char __tbss_align[];
303extern char __tls_start[];
304extern char __tls_end[];
305extern char __tls_size[];
308#ifdef CONFIG_LINKER_USE_BOOT_SECTION
312extern char lnkr_boot_start[];
313extern char lnkr_boot_end[];
315extern char lnkr_boot_text_start[];
316extern char lnkr_boot_text_end[];
317extern char lnkr_boot_text_size[];
318extern char lnkr_boot_data_start[];
319extern char lnkr_boot_data_end[];
320extern char lnkr_boot_data_size[];
321extern char lnkr_boot_rodata_start[];
322extern char lnkr_boot_rodata_end[];
323extern char lnkr_boot_rodata_size[];
324extern char lnkr_boot_bss_start[];
325extern char lnkr_boot_bss_end[];
326extern char lnkr_boot_bss_size[];
327extern char lnkr_boot_noinit_start[];
328extern char lnkr_boot_noinit_end[];
329extern char lnkr_boot_noinit_size[];
332#ifdef CONFIG_LINKER_USE_PINNED_SECTION
338extern char lnkr_pinned_start[];
339extern char lnkr_pinned_end[];
341extern char lnkr_pinned_text_start[];
342extern char lnkr_pinned_text_end[];
343extern char lnkr_pinned_text_size[];
344extern char lnkr_pinned_data_start[];
345extern char lnkr_pinned_data_end[];
346extern char lnkr_pinned_data_size[];
347extern char lnkr_pinned_rodata_start[];
348extern char lnkr_pinned_rodata_end[];
349extern char lnkr_pinned_rodata_size[];
350extern char lnkr_pinned_bss_start[];
351extern char lnkr_pinned_bss_end[];
352extern char lnkr_pinned_bss_size[];
353extern char lnkr_pinned_noinit_start[];
354extern char lnkr_pinned_noinit_end[];
355extern char lnkr_pinned_noinit_size[];
358static inline bool lnkr_is_pinned(
uint8_t *addr)
360 if ((addr >= (
uint8_t *)lnkr_pinned_start) &&
361 (addr < (
uint8_t *)lnkr_pinned_end)) {
369static inline bool lnkr_is_region_pinned(
uint8_t *addr,
size_t sz)
371 if ((addr >= (
uint8_t *)lnkr_pinned_start) &&
372 ((addr + sz) < (
uint8_t *)lnkr_pinned_end)) {
381#ifdef CONFIG_LINKER_USE_ONDEMAND_SECTION
387extern char lnkr_ondemand_start[];
388extern char lnkr_ondemand_end[];
389extern char lnkr_ondemand_load_start[];
391extern char lnkr_ondemand_text_start[];
392extern char lnkr_ondemand_text_end[];
393extern char lnkr_ondemand_text_size[];
394extern char lnkr_ondemand_rodata_start[];
395extern char lnkr_ondemand_rodata_end[];
396extern char lnkr_ondemand_rodata_size[];
402#undef DT_NODE_HAS_STATUS
403#undef DT_NODE_HAS_STATUS_OKAY
Definitions of various linker Sections.
__UINT8_TYPE__ uint8_t
Definition stdint.h:88