aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/blackfin/kernel/vmlinux.lds.S47
1 files changed, 20 insertions, 27 deletions
diff --git a/arch/blackfin/kernel/vmlinux.lds.S b/arch/blackfin/kernel/vmlinux.lds.S
index 288dfdbfb611..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
@@ -86,6 +96,10 @@ SECTIONS
86#if !L1_DATA_A_LENGTH 96#if !L1_DATA_A_LENGTH
87 . = ALIGN(32); 97 . = ALIGN(32);
88 *(.data_l1.cacheline_aligned) 98 *(.data_l1.cacheline_aligned)
99 *(.l1.data)
100#endif
101#if !L1_DATA_B_LENGTH
102 *(.l1.data.B)
89#endif 103#endif
90 104
91 DATA_DATA 105 DATA_DATA
@@ -152,64 +166,43 @@ SECTIONS
152 166
153 __l1_lma_start = .; 167 __l1_lma_start = .;
154 168
155#if L1_CODE_LENGTH
156# define LDS_L1_CODE *(.l1.text)
157#else
158# define LDS_L1_CODE
159#endif
160 .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))
161 { 170 {
162 . = ALIGN(4); 171 . = ALIGN(4);
163 __stext_l1 = .; 172 __stext_l1 = .;
164 LDS_L1_CODE 173 *(.l1.text)
165 . = ALIGN(4); 174 . = ALIGN(4);
166 __etext_l1 = .; 175 __etext_l1 = .;
167 } 176 }
168 177
169#if L1_DATA_A_LENGTH
170# define LDS_L1_A_DATA *(.l1.data)
171# define LDS_L1_A_BSS *(.l1.bss)
172# define LDS_L1_A_CACHE *(.data_l1.cacheline_aligned)
173#else
174# define LDS_L1_A_DATA
175# define LDS_L1_A_BSS
176# define LDS_L1_A_CACHE
177#endif
178 .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))
179 { 179 {
180 . = ALIGN(4); 180 . = ALIGN(4);
181 __sdata_l1 = .; 181 __sdata_l1 = .;
182 LDS_L1_A_DATA 182 *(.l1.data)
183 __edata_l1 = .; 183 __edata_l1 = .;
184 184
185 . = ALIGN(4); 185 . = ALIGN(4);
186 __sbss_l1 = .; 186 __sbss_l1 = .;
187 LDS_L1_A_BSS 187 *(.l1.bss)
188 188
189 . = ALIGN(32); 189 . = ALIGN(32);
190 LDS_L1_A_CACHE 190 *(.data_l1.cacheline_aligned)
191 191
192 . = ALIGN(4); 192 . = ALIGN(4);
193 __ebss_l1 = .; 193 __ebss_l1 = .;
194 } 194 }
195 195
196#if L1_DATA_B_LENGTH
197# define LDS_L1_B_DATA *(.l1.data.B)
198# define LDS_L1_B_BSS *(.l1.bss.B)
199#else
200# define LDS_L1_B_DATA
201# define LDS_L1_B_BSS
202#endif
203 .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))
204 { 197 {
205 . = ALIGN(4); 198 . = ALIGN(4);
206 __sdata_b_l1 = .; 199 __sdata_b_l1 = .;
207 LDS_L1_B_DATA 200 *(.l1.data.B)
208 __edata_b_l1 = .; 201 __edata_b_l1 = .;
209 202
210 . = ALIGN(4); 203 . = ALIGN(4);
211 __sbss_b_l1 = .; 204 __sbss_b_l1 = .;
212 LDS_L1_B_BSS 205 *(.l1.bss.B)
213 206
214 . = ALIGN(4); 207 . = ALIGN(4);
215 __ebss_b_l1 = .; 208 __ebss_b_l1 = .;