19#ifndef ZEPHYR_INCLUDE_LINKER_LINKER_DEFS_H_
20#define ZEPHYR_INCLUDE_LINKER_LINKER_DEFS_H_
26#include <zephyr/offsets.h>
34#define DT_NODE_HAS_STATUS(node, status) 0
35#define DT_NODE_HAS_STATUS_OKAY(node) 0
45#define PLACE_SYMBOL_HERE(symbol) \
47 PROVIDE(_CONCAT(_, symbol) = symbol)
49#define PLACE_SYMBOL_HERE(symbol) symbol = .
61#define CREATE_OBJ_LEVEL(object, level) \
62 PLACE_SYMBOL_HERE(__##object##_##level##_start);\
63 KEEP(*(SORT(.z_##object##_##level##_P_?_*))); \
64 KEEP(*(SORT(.z_##object##_##level##_P_??_*))); \
65 KEEP(*(SORT(.z_##object##_##level##_P_???_*)));
73#elif defined(_ASMLANGUAGE)
79GDATA(__data_region_load_start)
80GDATA(__data_region_start)
81GDATA(__data_region_num_words)
98extern char _app_smem_start[];
99extern char _app_smem_end[];
100extern char _app_smem_size[];
101extern char _app_smem_rom_start[];
102extern char _app_smem_num_words[];
104#ifdef CONFIG_LINKER_USE_PINNED_SECTION
105extern char _app_smem_pinned_start[];
106extern char _app_smem_pinned_end[];
107extern char _app_smem_pinned_size[];
108extern char _app_smem_pinned_num_words[];
121extern char __kernel_ram_start[];
122extern char __kernel_ram_end[];
123extern char __kernel_ram_size[];
126extern char __bss_start[];
127extern char __bss_end[];
131extern char __data_region_load_start[];
132extern char __data_region_start[];
133extern char __data_region_end[];
138extern char z_mapped_start[];
139extern char z_mapped_end[];
143extern char __rom_region_start[];
144extern char __rom_region_end[];
145extern char __rom_region_size[];
148extern char _flash_used[];
151extern char _image_ram_start[];
152extern char _image_ram_end[];
153extern char _image_ram_size[];
155extern char __text_region_start[];
156extern char __text_region_end[];
157extern char __text_region_size[];
159extern char __rodata_region_start[];
160extern char __rodata_region_end[];
161extern char __rodata_region_size[];
163extern char _vector_start[];
164extern char _vector_end[];
166#ifdef CONFIG_SW_VECTOR_RELAY
167extern char __vector_relay_table[];
170#ifdef CONFIG_SRAM_VECTOR_TABLE
171extern char _sram_vector_start[];
172extern char _sram_vector_end[];
173extern char _sram_vector_size[];
176#ifdef CONFIG_COVERAGE_GCOV
177extern char __gcov_bss_start[];
178extern char __gcov_bss_end[];
179extern char __gcov_bss_size[];
185#if (DT_NODE_HAS_STATUS_OKAY(DT_CHOSEN(zephyr_ccm)))
186extern char __ccm_data_load_start[];
187extern char __ccm_start[];
188extern char __ccm_data_start[];
189extern char __ccm_data_end[];
190extern char __ccm_bss_start[];
191extern char __ccm_bss_end[];
192extern char __ccm_noinit_start[];
193extern char __ccm_noinit_end[];
194extern char __ccm_end[];
197#if (DT_NODE_HAS_STATUS_OKAY(DT_CHOSEN(zephyr_itcm)))
198extern char __itcm_start[];
199extern char __itcm_end[];
200extern char __itcm_size[];
201extern char __itcm_load_start[];
204#if (DT_NODE_HAS_STATUS_OKAY(DT_CHOSEN(zephyr_dtcm)))
205extern char __dtcm_data_start[];
206extern char __dtcm_data_end[];
207extern char __dtcm_bss_start[];
208extern char __dtcm_bss_end[];
209extern char __dtcm_noinit_start[];
210extern char __dtcm_noinit_end[];
211extern char __dtcm_data_load_start[];
212extern char __dtcm_start[];
213extern char __dtcm_end[];
216#if (DT_NODE_HAS_STATUS_OKAY(DT_CHOSEN(zephyr_ocm)))
217extern char __ocm_data_start[];
218extern char __ocm_data_end[];
219extern char __ocm_bss_start[];
220extern char __ocm_bss_end[];
221extern char __ocm_start[];
222extern char __ocm_end[];
223extern char __ocm_size[];
229#ifdef CONFIG_ARM_FIRMWARE_HAS_SECURE_ENTRY_FUNCS
230extern char __sg_start[];
231extern char __sg_end[];
232extern char __sg_size[];
243#ifdef CONFIG_NOCACHE_MEMORY
244extern char _nocache_ram_start[];
245extern char _nocache_ram_end[];
246extern char _nocache_ram_size[];
247extern char _nocache_load_start[];
256#ifdef CONFIG_ARCH_HAS_RAMFUNC_SUPPORT
257extern char __ramfunc_region_start[];
258extern char __ramfunc_start[];
259extern char __ramfunc_end[];
260extern char __ramfunc_size[];
261extern char __ramfunc_load_start[];
270#ifdef CONFIG_USERSPACE
271extern char z_priv_stacks_ram_start[];
272extern char z_priv_stacks_ram_end[];
273extern char z_user_stacks_start[];
274extern char z_user_stacks_end[];
275extern char z_kobject_data_begin[];
278#ifdef CONFIG_THREAD_LOCAL_STORAGE
279extern char __tdata_start[];
280extern char __tdata_end[];
281extern char __tdata_size[];
282extern char __tdata_align[];
283extern char __tbss_start[];
284extern char __tbss_end[];
285extern char __tbss_size[];
286extern char __tbss_align[];
287extern char __tls_start[];
288extern char __tls_end[];
289extern char __tls_size[];
292#ifdef CONFIG_LINKER_USE_BOOT_SECTION
296extern char lnkr_boot_start[];
297extern char lnkr_boot_end[];
299extern char lnkr_boot_text_start[];
300extern char lnkr_boot_text_end[];
301extern char lnkr_boot_text_size[];
302extern char lnkr_boot_data_start[];
303extern char lnkr_boot_data_end[];
304extern char lnkr_boot_data_size[];
305extern char lnkr_boot_rodata_start[];
306extern char lnkr_boot_rodata_end[];
307extern char lnkr_boot_rodata_size[];
308extern char lnkr_boot_bss_start[];
309extern char lnkr_boot_bss_end[];
310extern char lnkr_boot_bss_size[];
311extern char lnkr_boot_noinit_start[];
312extern char lnkr_boot_noinit_end[];
313extern char lnkr_boot_noinit_size[];
316#ifdef CONFIG_LINKER_USE_PINNED_SECTION
322extern char lnkr_pinned_start[];
323extern char lnkr_pinned_end[];
325extern char lnkr_pinned_text_start[];
326extern char lnkr_pinned_text_end[];
327extern char lnkr_pinned_text_size[];
328extern char lnkr_pinned_data_start[];
329extern char lnkr_pinned_data_end[];
330extern char lnkr_pinned_data_size[];
331extern char lnkr_pinned_rodata_start[];
332extern char lnkr_pinned_rodata_end[];
333extern char lnkr_pinned_rodata_size[];
334extern char lnkr_pinned_bss_start[];
335extern char lnkr_pinned_bss_end[];
336extern char lnkr_pinned_bss_size[];
337extern char lnkr_pinned_noinit_start[];
338extern char lnkr_pinned_noinit_end[];
339extern char lnkr_pinned_noinit_size[];
342static inline bool lnkr_is_pinned(
uint8_t *addr)
344 if ((addr >= (
uint8_t *)lnkr_pinned_start) &&
345 (addr < (
uint8_t *)lnkr_pinned_end)) {
353static inline bool lnkr_is_region_pinned(
uint8_t *addr,
size_t sz)
355 if ((addr >= (
uint8_t *)lnkr_pinned_start) &&
356 ((addr + sz) < (
uint8_t *)lnkr_pinned_end)) {
365#ifdef CONFIG_LINKER_USE_ONDEMAND_SECTION
371extern char lnkr_ondemand_start[];
372extern char lnkr_ondemand_end[];
373extern char lnkr_ondemand_load_start[];
375extern char lnkr_ondemand_text_start[];
376extern char lnkr_ondemand_text_end[];
377extern char lnkr_ondemand_text_size[];
378extern char lnkr_ondemand_rodata_start[];
379extern char lnkr_ondemand_rodata_end[];
380extern char lnkr_ondemand_rodata_size[];
386#undef DT_NODE_HAS_STATUS
387#undef DT_NODE_HAS_STATUS_OKAY
Definitions of various linker Sections.
__UINT8_TYPE__ uint8_t
Definition stdint.h:88