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_SDRAM1_SECTION_NAME .stm32_sdram1
73 : #define _STM32_SDRAM2_SECTION_NAME .stm32_sdram2
74 : #define _STM32_PSRAM_SECTION_NAME .stm32_psram
75 :
76 : #define _STM32_BACKUP_SRAM_SECTION_NAME .stm32_backup_sram
77 :
78 : #ifdef CONFIG_NOCACHE_MEMORY
79 : #define _NOCACHE_SECTION_NAME nocache
80 : #define _NOCACHE_LOAD_SECTION_NAME nocache_load
81 : #endif
82 :
83 : /* Symbol table section */
84 : #if defined(CONFIG_SYMTAB)
85 : #define _SYMTAB_INFO_SECTION_NAME .gnu.linkonce.symtab.info
86 : #define _SYMTAB_ENTRY_SECTION_NAME .gnu.linkonce.symtab.entry
87 : #define _SYMTAB_SECTION_SYMS .gnu.linkonce.symtab*
88 : #endif /* CONFIG_SYMTAB */
89 :
90 : #if defined(CONFIG_LINKER_USE_BOOT_SECTION)
91 : #define BOOT_TEXT_SECTION_NAME boot_text
92 : #define BOOT_BSS_SECTION_NAME boot_bss
93 : #define BOOT_RODATA_SECTION_NAME boot_rodata
94 : #define BOOT_DATA_SECTION_NAME boot_data
95 : #define BOOT_NOINIT_SECTION_NAME boot_noinit
96 : #endif
97 :
98 : #if defined(CONFIG_LINKER_USE_PINNED_SECTION)
99 : #define PINNED_TEXT_SECTION_NAME pinned_text
100 : #define PINNED_BSS_SECTION_NAME pinned_bss
101 : #define PINNED_RODATA_SECTION_NAME pinned_rodata
102 : #define PINNED_DATA_SECTION_NAME pinned_data
103 : #define PINNED_NOINIT_SECTION_NAME pinned_noinit
104 : #endif
105 :
106 : #if defined(CONFIG_LINKER_USE_ONDEMAND_SECTION)
107 : #define ONDEMAND_TEXT_SECTION_NAME ondemand_text
108 : #define ONDEMAND_RODATA_SECTION_NAME ondemand_rodata
109 : #endif
110 :
111 : /* Short section references for use in ASM files */
112 : #if defined(_ASMLANGUAGE)
113 : /* Various text section names */
114 : #define TEXT text
115 :
116 : /* Various data type section names */
117 : #define BSS bss
118 : #define RODATA rodata
119 : #define DATA data
120 : #define NOINIT noinit
121 :
122 : #if defined(CONFIG_LINKER_USE_BOOT_SECTION)
123 : #define BOOT_TEXT BOOT_TEXT_SECTION_NAME
124 : #define BOOT_BSS BOOT_BSS_SECTION_NAME
125 : #define BOOT_RODATA BOOT_RODATA_SECTION_NAME
126 : #define BOOT_DATA BOOT_DATA_SECTION_NAME
127 : #define BOOT_NOINIT BOOT_NOINIT_SECTION_NAME
128 : #else
129 : #define BOOT_TEXT TEXT
130 : #define BOOT_BSS BSS
131 : #define BOOT_RODATA RODATA
132 : #define BOOT_DATA DATA
133 : #define BOOT_NOINIT NOINIT
134 : #endif /* CONFIG_LINKER_USE_BOOT_SECTION */
135 :
136 : #if defined(CONFIG_LINKER_USE_PINNED_SECTION)
137 : #define PINNED_TEXT PINNED_TEXT_SECTION_NAME
138 : #define PINNED_BSS PINNED_BSS_SECTION_NAME
139 : #define PINNED_RODATA PINNED_RODATA_SECTION_NAME
140 : #define PINNED_DATA PINNED_DATA_SECTION_NAME
141 : #define PINNED_NOINIT PINNED_NOINIT_SECTION_NAME
142 : #else
143 : #define PINNED_TEXT TEXT
144 : #define PINNED_BSS BSS
145 : #define PINNED_RODATA RODATA
146 : #define PINNED_DATA DATA
147 : #define PINNED_NOINIT NOINIT
148 : #endif /* CONFIG_LINKER_USE_PINNED_SECTION */
149 :
150 : #if defined(CONFIG_LINKER_USE_ONDEMAND_SECTION)
151 : #define ONDEMAND_TEXT ONDEMAND_TEXT_SECTION_NAME
152 : #define ONDEMAND_RODATA ONDEMAND_RODATA_SECTION_NAME
153 : #else
154 : #define ONDEMAND_TEXT TEXT
155 : #define ONDEMAND_RODATA RODATA
156 : #endif /* CONFIG_LINKER_USE_ONDEMAND_SECTION */
157 :
158 : #endif /* _ASMLANGUAGE */
159 :
160 : #include <zephyr/linker/section_tags.h>
161 :
162 : #endif /* ZEPHYR_INCLUDE_LINKER_SECTIONS_H_ */
|