diff options
-rw-r--r-- | arch/blackfin/kernel/vmlinux.lds.S | 47 |
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 = .; |