19#ifndef ZEPHYR_INCLUDE_LINKER_LINKER_DEFS_H_ 
   20#define ZEPHYR_INCLUDE_LINKER_LINKER_DEFS_H_ 
   34#define DT_NODE_HAS_STATUS(node, status) 0 
   46#define Z_LINK_ITERABLE(struct_type) \ 
   47        _CONCAT(_##struct_type, _list_start) = .; \ 
   48        KEEP(*(SORT_BY_NAME(._##struct_type.static.*))); \ 
   49        _CONCAT(_##struct_type, _list_end) = . 
   51#define Z_LINK_ITERABLE_ALIGNED(struct_type, align) \ 
   53        Z_LINK_ITERABLE(struct_type); 
   55#define Z_LINK_ITERABLE_GC_ALLOWED(struct_type) \ 
   56        _CONCAT(_##struct_type, _list_start) = .; \ 
   57        *(SORT_BY_NAME(._##struct_type.static.*)); \ 
   58        _CONCAT(_##struct_type, _list_end) = . 
   74#define ITERABLE_SECTION_ROM(struct_type, subalign) \ 
   75        SECTION_PROLOGUE(struct_type##_area,,SUBALIGN(subalign)) \ 
   77                Z_LINK_ITERABLE(struct_type); \ 
   78        } GROUP_ROM_LINK_IN(RAMABLE_REGION, ROMABLE_REGION) 
   92#define ITERABLE_SECTION_ROM_GC_ALLOWED(struct_type, subalign) \ 
   93        SECTION_PROLOGUE(struct_type##_area,,SUBALIGN(subalign)) \ 
   95                Z_LINK_ITERABLE_GC_ALLOWED(struct_type); \ 
   96        } GROUP_LINK_IN(ROMABLE_REGION) 
  112#define ITERABLE_SECTION_RAM(struct_type, subalign) \ 
  113        SECTION_DATA_PROLOGUE(struct_type##_area,,SUBALIGN(subalign)) \ 
  115                Z_LINK_ITERABLE(struct_type); \ 
  116        } GROUP_DATA_LINK_IN(RAMABLE_REGION, ROMABLE_REGION) 
  130#define ITERABLE_SECTION_RAM_GC_ALLOWED(struct_type, subalign) \ 
  131        SECTION_DATA_PROLOGUE(struct_type##_area,,SUBALIGN(subalign)) \ 
  133                Z_LINK_ITERABLE_GC_ALLOWED(struct_type); \ 
  134        } GROUP_DATA_LINK_IN(RAMABLE_REGION, ROMABLE_REGION) 
  146#define CREATE_OBJ_LEVEL(object, level)                         \ 
  147                __##object##_##level##_start = .;               \ 
  148                KEEP(*(SORT(.z_##object##_##level[0-9]_*)));            \ 
  149                KEEP(*(SORT(.z_##object##_##level[1-9][0-9]_*))); 
  156#elif defined(_ASMLANGUAGE) 
  160GDATA(__bss_num_words)
 
  162GDATA(__data_region_load_start)
 
  163GDATA(__data_region_start)
 
  164GDATA(__data_region_num_words)
 
  181extern char _app_smem_start[];
 
  182extern char _app_smem_end[];
 
  183extern char _app_smem_size[];
 
  184extern char _app_smem_rom_start[];
 
  185extern char _app_smem_num_words[];
 
  187#ifdef CONFIG_LINKER_USE_PINNED_SECTION 
  188extern char _app_smem_pinned_start[];
 
  189extern char _app_smem_pinned_end[];
 
  190extern char _app_smem_pinned_size[];
 
  191extern char _app_smem_pinned_num_words[];
 
  204extern char __kernel_ram_start[];
 
  205extern char __kernel_ram_end[];
 
  206extern char __kernel_ram_size[];
 
  209extern char __bss_start[];
 
  210extern char __bss_end[];
 
  214extern char __data_region_load_start[];
 
  215extern char __data_region_start[];
 
  216extern char __data_region_end[];
 
  221extern char z_mapped_start[];
 
  222extern char z_mapped_end[];
 
  226extern char __rom_region_start[];
 
  227extern char __rom_region_end[];
 
  228extern char __rom_region_size[];
 
  231extern char _flash_used[];
 
  234extern char _image_ram_start[];
 
  235extern char _image_ram_end[];
 
  237extern char __text_region_start[];
 
  238extern char __text_region_end[];
 
  239extern char __text_region_size[];
 
  241extern char __rodata_region_start[];
 
  242extern char __rodata_region_end[];
 
  243extern char __rodata_region_size[];
 
  245extern char _vector_start[];
 
  246extern char _vector_end[];
 
  248#ifdef CONFIG_SW_VECTOR_RELAY 
  249extern char __vector_relay_table[];
 
  252#ifdef CONFIG_COVERAGE_GCOV 
  253extern char __gcov_bss_start[];
 
  254extern char __gcov_bss_end[];
 
  255extern char __gcov_bss_size[];
 
  261#if DT_NODE_HAS_STATUS(DT_CHOSEN(zephyr_ccm), okay) 
  262extern char __ccm_data_rom_start[];
 
  263extern char __ccm_start[];
 
  264extern char __ccm_data_start[];
 
  265extern char __ccm_data_end[];
 
  266extern char __ccm_bss_start[];
 
  267extern char __ccm_bss_end[];
 
  268extern char __ccm_noinit_start[];
 
  269extern char __ccm_noinit_end[];
 
  270extern char __ccm_end[];
 
  273#if DT_NODE_HAS_STATUS(DT_CHOSEN(zephyr_itcm), okay) 
  274extern char __itcm_start[];
 
  275extern char __itcm_end[];
 
  276extern char __itcm_size[];
 
  277extern char __itcm_load_start[];
 
  280#if DT_NODE_HAS_STATUS(DT_CHOSEN(zephyr_dtcm), okay) 
  281extern char __dtcm_data_start[];
 
  282extern char __dtcm_data_end[];
 
  283extern char __dtcm_bss_start[];
 
  284extern char __dtcm_bss_end[];
 
  285extern char __dtcm_noinit_start[];
 
  286extern char __dtcm_noinit_end[];
 
  287extern char __dtcm_data_load_start[];
 
  288extern char __dtcm_start[];
 
  289extern char __dtcm_end[];
 
  292#if DT_NODE_HAS_STATUS(DT_CHOSEN(zephyr_ocm), okay) 
  293extern char __ocm_data_start[];
 
  294extern char __ocm_data_end[];
 
  295extern char __ocm_bss_start[];
 
  296extern char __ocm_bss_end[];
 
  297extern char __ocm_start[];
 
  298extern char __ocm_end[];
 
  299extern char __ocm_size[];
 
  305#ifdef CONFIG_ARM_FIRMWARE_HAS_SECURE_ENTRY_FUNCS 
  306extern char __sg_start[];
 
  307extern char __sg_end[];
 
  308extern char __sg_size[];
 
  319#ifdef CONFIG_NOCACHE_MEMORY 
  320extern char _nocache_ram_start[];
 
  321extern char _nocache_ram_end[];
 
  322extern char _nocache_ram_size[];
 
  331#ifdef CONFIG_ARCH_HAS_RAMFUNC_SUPPORT 
  332extern char __ramfunc_start[];
 
  333extern char __ramfunc_end[];
 
  334extern char __ramfunc_size[];
 
  335extern char __ramfunc_load_start[];
 
  344#ifdef CONFIG_USERSPACE 
  345extern char z_priv_stacks_ram_start[];
 
  346extern char z_priv_stacks_ram_end[];
 
  347extern char z_user_stacks_start[];
 
  348extern char z_user_stacks_end[];
 
  349extern char z_kobject_data_begin[];
 
  352#ifdef CONFIG_THREAD_LOCAL_STORAGE 
  353extern char __tdata_start[];
 
  354extern char __tdata_end[];
 
  355extern char __tdata_size[];
 
  356extern char __tdata_align[];
 
  357extern char __tbss_start[];
 
  358extern char __tbss_end[];
 
  359extern char __tbss_size[];
 
  360extern char __tbss_align[];
 
  361extern char __tls_start[];
 
  362extern char __tls_end[];
 
  363extern char __tls_size[];
 
  366#ifdef CONFIG_LINKER_USE_BOOT_SECTION 
  370extern char lnkr_boot_start[];
 
  371extern char lnkr_boot_end[];
 
  373extern char lnkr_boot_text_start[];
 
  374extern char lnkr_boot_text_end[];
 
  375extern char lnkr_boot_text_size[];
 
  376extern char lnkr_boot_data_start[];
 
  377extern char lnkr_boot_data_end[];
 
  378extern char lnkr_boot_data_size[];
 
  379extern char lnkr_boot_rodata_start[];
 
  380extern char lnkr_boot_rodata_end[];
 
  381extern char lnkr_boot_rodata_size[];
 
  382extern char lnkr_boot_bss_start[];
 
  383extern char lnkr_boot_bss_end[];
 
  384extern char lnkr_boot_bss_size[];
 
  385extern char lnkr_boot_noinit_start[];
 
  386extern char lnkr_boot_noinit_end[];
 
  387extern char lnkr_boot_noinit_size[];
 
  390#ifdef CONFIG_LINKER_USE_PINNED_SECTION 
  396extern char lnkr_pinned_start[];
 
  397extern char lnkr_pinned_end[];
 
  399extern char lnkr_pinned_text_start[];
 
  400extern char lnkr_pinned_text_end[];
 
  401extern char lnkr_pinned_text_size[];
 
  402extern char lnkr_pinned_data_start[];
 
  403extern char lnkr_pinned_data_end[];
 
  404extern char lnkr_pinned_data_size[];
 
  405extern char lnkr_pinned_rodata_start[];
 
  406extern char lnkr_pinned_rodata_end[];
 
  407extern char lnkr_pinned_rodata_size[];
 
  408extern char lnkr_pinned_bss_start[];
 
  409extern char lnkr_pinned_bss_end[];
 
  410extern char lnkr_pinned_bss_size[];
 
  411extern char lnkr_pinned_noinit_start[];
 
  412extern char lnkr_pinned_noinit_end[];
 
  413extern char lnkr_pinned_noinit_size[];
 
  416static inline bool lnkr_is_pinned(
uint8_t *addr)
 
  418        if ((addr >= (
uint8_t *)lnkr_pinned_start) &&
 
  419            (addr < (
uint8_t *)lnkr_pinned_end)) {
 
  427static inline bool lnkr_is_region_pinned(
uint8_t *addr, 
size_t sz)
 
  429        if ((addr >= (
uint8_t *)lnkr_pinned_start) &&
 
  430            ((addr + sz) < (
uint8_t *)lnkr_pinned_end)) {
 
Common toolchain abstraction.
 
Definitions of various linker Sections.
 
__UINT8_TYPE__ uint8_t
Definition: stdint.h:88