Line data Source code
1 1 : /*
2 : * Copyright (c) 2013-2014, Wind River Systems, Inc.
3 : *
4 : * SPDX-License-Identifier: Apache-2.0
5 : */
6 :
7 : /**
8 : * @file
9 : * @brief Definitions of various linker Sections.
10 : *
11 : * Linker Section declarations used by linker script, C files and Assembly
12 : * files.
13 : */
14 :
15 : #ifndef ZEPHYR_INCLUDE_LINKER_SECTIONS_H_
16 : #define ZEPHYR_INCLUDE_LINKER_SECTIONS_H_
17 :
18 : #define _TEXT_SECTION_NAME text
19 : #define _RODATA_SECTION_NAME rodata
20 : #define _CTOR_SECTION_NAME ctors
21 : /* Linker issue with XIP where the name "data" cannot be used */
22 : #define _DATA_SECTION_NAME datas
23 : #define _BSS_SECTION_NAME bss
24 : #define _NOINIT_SECTION_NAME noinit
25 :
26 : #define _APP_SMEM_SECTION_NAME app_smem
27 : #define _APP_DATA_SECTION_NAME app_datas
28 : #define _APP_BSS_SECTION_NAME app_bss
29 : #define _APP_NOINIT_SECTION_NAME app_noinit
30 :
31 : #define _APP_SMEM_PINNED_SECTION_NAME app_smem_pinned
32 :
33 : #define _UNDEFINED_SECTION_NAME undefined
34 :
35 : /* Interrupts */
36 : #define _IRQ_VECTOR_TABLE_SECTION_NAME .gnu.linkonce.irq_vector_table
37 : #define _IRQ_VECTOR_TABLE_SECTION_SYMS .gnu.linkonce.irq_vector_table*
38 :
39 : #define _SW_ISR_TABLE_SECTION_NAME .gnu.linkonce.sw_isr_table
40 : #define _SW_ISR_TABLE_SECTION_SYMS .gnu.linkonce.sw_isr_table*
41 :
42 : #ifdef CONFIG_SHARED_INTERRUPTS
43 : #define _SHARED_SW_ISR_TABLE_SECTION_NAME .gnu.linkonce.shared_sw_isr_table
44 : #define _SHARED_SW_ISR_TABLE_SECTION_SYMS .gnu.linkonce.shared_sw_isr_table*
45 : #endif /* CONFIG_SHARED_INTERRUPTS */
46 :
47 : /* Architecture-specific sections */
48 : #if defined(CONFIG_ARM)
49 : #define _KINETIS_FLASH_CONFIG_SECTION_NAME kinetis_flash_config
50 : #define _TI_CCFG_SECTION_NAME .ti_ccfg
51 :
52 : #define _CCM_DATA_SECTION_NAME .ccm_data
53 : #define _CCM_BSS_SECTION_NAME .ccm_bss
54 : #define _CCM_NOINIT_SECTION_NAME .ccm_noinit
55 :
56 : #define _ITCM_SECTION_NAME .itcm
57 :
58 : #define _DTCM_DATA_SECTION_NAME .dtcm_data
59 : #define _DTCM_BSS_SECTION_NAME .dtcm_bss
60 : #define _DTCM_NOINIT_SECTION_NAME .dtcm_noinit
61 :
62 : #define _OCM_DATA_SECTION_NAME .ocm_data
63 : #define _OCM_BSS_SECTION_NAME .ocm_bss
64 : #endif
65 :
66 : #define _IMX_BOOT_CONF_SECTION_NAME .boot_hdr.conf
67 : #define _IMX_BOOT_DATA_SECTION_NAME .boot_hdr.data
68 : #define _IMX_BOOT_IVT_SECTION_NAME .boot_hdr.ivt
69 : #define _IMX_BOOT_DCD_SECTION_NAME .boot_hdr.dcd_data
70 : #define _IMX_BOOT_CONTAINER_SECTION_NAME .boot_hdr.container
71 :
72 : #define _STM32_BACKUP_SRAM_SECTION_NAME .stm32_backup_sram
73 :
74 : #ifdef CONFIG_NOCACHE_MEMORY
75 : #define _NOCACHE_SECTION_NAME nocache
76 : #define _NOCACHE_LOAD_SECTION_NAME nocache_load
77 : #endif
78 :
79 : /* Symbol table section */
80 : #if defined(CONFIG_SYMTAB)
81 : #define _SYMTAB_INFO_SECTION_NAME .gnu.linkonce.symtab.info
82 : #define _SYMTAB_ENTRY_SECTION_NAME .gnu.linkonce.symtab.entry
83 : #define _SYMTAB_SECTION_SYMS .gnu.linkonce.symtab*
84 : #endif /* CONFIG_SYMTAB */
85 :
86 : #if defined(CONFIG_LINKER_USE_BOOT_SECTION)
87 : #define BOOT_TEXT_SECTION_NAME boot_text
88 : #define BOOT_BSS_SECTION_NAME boot_bss
89 : #define BOOT_RODATA_SECTION_NAME boot_rodata
90 : #define BOOT_DATA_SECTION_NAME boot_data
91 : #define BOOT_NOINIT_SECTION_NAME boot_noinit
92 : #endif
93 :
94 : #if defined(CONFIG_LINKER_USE_PINNED_SECTION)
95 : #define PINNED_TEXT_SECTION_NAME pinned_text
96 : #define PINNED_BSS_SECTION_NAME pinned_bss
97 : #define PINNED_RODATA_SECTION_NAME pinned_rodata
98 : #define PINNED_DATA_SECTION_NAME pinned_data
99 : #define PINNED_NOINIT_SECTION_NAME pinned_noinit
100 : #endif
101 :
102 : #if defined(CONFIG_LINKER_USE_ONDEMAND_SECTION)
103 : #define ONDEMAND_TEXT_SECTION_NAME ondemand_text
104 : #define ONDEMAND_RODATA_SECTION_NAME ondemand_rodata
105 : #endif
106 :
107 : /* Short section references for use in ASM files */
108 : #if defined(_ASMLANGUAGE)
109 : /* Various text section names */
110 : #define TEXT text
111 :
112 : /* Various data type section names */
113 : #define BSS bss
114 : #define RODATA rodata
115 : #define DATA data
116 : #define NOINIT noinit
117 :
118 : #if defined(CONFIG_LINKER_USE_BOOT_SECTION)
119 : #define BOOT_TEXT BOOT_TEXT_SECTION_NAME
120 : #define BOOT_BSS BOOT_BSS_SECTION_NAME
121 : #define BOOT_RODATA BOOT_RODATA_SECTION_NAME
122 : #define BOOT_DATA BOOT_DATA_SECTION_NAME
123 : #define BOOT_NOINIT BOOT_NOINIT_SECTION_NAME
124 : #else
125 : #define BOOT_TEXT TEXT
126 : #define BOOT_BSS BSS
127 : #define BOOT_RODATA RODATA
128 : #define BOOT_DATA DATA
129 : #define BOOT_NOINIT NOINIT
130 : #endif /* CONFIG_LINKER_USE_BOOT_SECTION */
131 :
132 : #if defined(CONFIG_LINKER_USE_PINNED_SECTION)
133 : #define PINNED_TEXT PINNED_TEXT_SECTION_NAME
134 : #define PINNED_BSS PINNED_BSS_SECTION_NAME
135 : #define PINNED_RODATA PINNED_RODATA_SECTION_NAME
136 : #define PINNED_DATA PINNED_DATA_SECTION_NAME
137 : #define PINNED_NOINIT PINNED_NOINIT_SECTION_NAME
138 : #else
139 : #define PINNED_TEXT TEXT
140 : #define PINNED_BSS BSS
141 : #define PINNED_RODATA RODATA
142 : #define PINNED_DATA DATA
143 : #define PINNED_NOINIT NOINIT
144 : #endif /* CONFIG_LINKER_USE_PINNED_SECTION */
145 :
146 : #if defined(CONFIG_LINKER_USE_ONDEMAND_SECTION)
147 : #define ONDEMAND_TEXT ONDEMAND_TEXT_SECTION_NAME
148 : #define ONDEMAND_RODATA ONDEMAND_RODATA_SECTION_NAME
149 : #else
150 : #define ONDEMAND_TEXT TEXT
151 : #define ONDEMAND_RODATA RODATA
152 : #endif /* CONFIG_LINKER_USE_ONDEMAND_SECTION */
153 :
154 : #endif /* _ASMLANGUAGE */
155 :
156 : #include <zephyr/linker/section_tags.h>
157 :
158 : #endif /* ZEPHYR_INCLUDE_LINKER_SECTIONS_H_ */
|