aboutsummaryrefslogtreecommitdiffstats
path: root/arch/blackfin/kernel/vmlinux.lds.S
diff options
context:
space:
mode:
Diffstat (limited to 'arch/blackfin/kernel/vmlinux.lds.S')
-rw-r--r--arch/blackfin/kernel/vmlinux.lds.S54
1 files changed, 25 insertions, 29 deletions
diff --git a/arch/blackfin/kernel/vmlinux.lds.S b/arch/blackfin/kernel/vmlinux.lds.S
index cb01a9de2680..3ecc64cab3be 100644
--- a/arch/blackfin/kernel/vmlinux.lds.S
+++ b/arch/blackfin/kernel/vmlinux.lds.S
@@ -56,6 +56,10 @@ SECTIONS
56 *(.text.*) 56 *(.text.*)
57 *(.fixup) 57 *(.fixup)
58 58
59#if !L1_CODE_LENGTH
60 *(.l1.text)
61#endif
62
59 . = ALIGN(16); 63 . = ALIGN(16);
60 ___start___ex_table = .; 64 ___start___ex_table = .;
61 *(__ex_table) 65 *(__ex_table)
@@ -73,6 +77,12 @@ SECTIONS
73 ___bss_start = .; 77 ___bss_start = .;
74 *(.bss .bss.*) 78 *(.bss .bss.*)
75 *(COMMON) 79 *(COMMON)
80#if !L1_DATA_A_LENGTH
81 *(.l1.bss)
82#endif
83#if !L1_DATA_B_LENGTH
84 *(.l1.bss.B)
85#endif
76 ___bss_stop = .; 86 ___bss_stop = .;
77 } 87 }
78 88
@@ -83,6 +93,15 @@ SECTIONS
83 . = ALIGN(32); 93 . = ALIGN(32);
84 *(.data.cacheline_aligned) 94 *(.data.cacheline_aligned)
85 95
96#if !L1_DATA_A_LENGTH
97 . = ALIGN(32);
98 *(.data_l1.cacheline_aligned)
99 *(.l1.data)
100#endif
101#if !L1_DATA_B_LENGTH
102 *(.l1.data.B)
103#endif
104
86 DATA_DATA 105 DATA_DATA
87 *(.data.*) 106 *(.data.*)
88 CONSTRUCTORS 107 CONSTRUCTORS
@@ -147,64 +166,43 @@ SECTIONS
147 166
148 __l1_lma_start = .; 167 __l1_lma_start = .;
149 168
150#if L1_CODE_LENGTH
151# define LDS_L1_CODE *(.l1.text)
152#else
153# define LDS_L1_CODE
154#endif
155 .text_l1 L1_CODE_START : AT(LOADADDR(.init.ramfs) + SIZEOF(.init.ramfs)) 169 .text_l1 L1_CODE_START : AT(LOADADDR(.init.ramfs) + SIZEOF(.init.ramfs))
156 { 170 {
157 . = ALIGN(4); 171 . = ALIGN(4);
158 __stext_l1 = .; 172 __stext_l1 = .;
159 LDS_L1_CODE 173 *(.l1.text)
160 . = ALIGN(4); 174 . = ALIGN(4);
161 __etext_l1 = .; 175 __etext_l1 = .;
162 } 176 }
163 177
164#if L1_DATA_A_LENGTH
165# define LDS_L1_A_DATA *(.l1.data)
166# define LDS_L1_A_BSS *(.l1.bss)
167# define LDS_L1_A_CACHE *(.data_l1.cacheline_aligned)
168#else
169# define LDS_L1_A_DATA
170# define LDS_L1_A_BSS
171# define LDS_L1_A_CACHE
172#endif
173 .data_l1 L1_DATA_A_START : AT(LOADADDR(.text_l1) + SIZEOF(.text_l1)) 178 .data_l1 L1_DATA_A_START : AT(LOADADDR(.text_l1) + SIZEOF(.text_l1))
174 { 179 {
175 . = ALIGN(4); 180 . = ALIGN(4);
176 __sdata_l1 = .; 181 __sdata_l1 = .;
177 LDS_L1_A_DATA 182 *(.l1.data)
178 __edata_l1 = .; 183 __edata_l1 = .;
179 184
180 . = ALIGN(4); 185 . = ALIGN(4);
181 __sbss_l1 = .; 186 __sbss_l1 = .;
182 LDS_L1_A_BSS 187 *(.l1.bss)
183 188
184 . = ALIGN(32); 189 . = ALIGN(32);
185 LDS_L1_A_CACHE 190 *(.data_l1.cacheline_aligned)
186 191
187 . = ALIGN(4); 192 . = ALIGN(4);
188 __ebss_l1 = .; 193 __ebss_l1 = .;
189 } 194 }
190 195
191#if L1_DATA_B_LENGTH
192# define LDS_L1_B_DATA *(.l1.data.B)
193# define LDS_L1_B_BSS *(.l1.bss.B)
194#else
195# define LDS_L1_B_DATA
196# define LDS_L1_B_BSS
197#endif
198 .data_b_l1 L1_DATA_B_START : AT(LOADADDR(.data_l1) + SIZEOF(.data_l1)) 196 .data_b_l1 L1_DATA_B_START : AT(LOADADDR(.data_l1) + SIZEOF(.data_l1))
199 { 197 {
200 . = ALIGN(4); 198 . = ALIGN(4);
201 __sdata_b_l1 = .; 199 __sdata_b_l1 = .;
202 LDS_L1_B_DATA 200 *(.l1.data.B)
203 __edata_b_l1 = .; 201 __edata_b_l1 = .;
204 202
205 . = ALIGN(4); 203 . = ALIGN(4);
206 __sbss_b_l1 = .; 204 __sbss_b_l1 = .;
207 LDS_L1_B_BSS 205 *(.l1.bss.B)
208 206
209 . = ALIGN(4); 207 . = ALIGN(4);
210 __ebss_b_l1 = .; 208 __ebss_b_l1 = .;
@@ -223,8 +221,6 @@ SECTIONS
223 221
224 DWARF_DEBUG 222 DWARF_DEBUG
225 223
226 NOTES
227
228 /DISCARD/ : 224 /DISCARD/ :
229 { 225 {
230 EXIT_TEXT 226 EXIT_TEXT