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.S166
1 files changed, 56 insertions, 110 deletions
diff --git a/arch/blackfin/kernel/vmlinux.lds.S b/arch/blackfin/kernel/vmlinux.lds.S
index 86fe67995802..1ef1e36b3957 100644
--- a/arch/blackfin/kernel/vmlinux.lds.S
+++ b/arch/blackfin/kernel/vmlinux.lds.S
@@ -7,7 +7,7 @@
7 * Description: Master linker script for blackfin architecture 7 * Description: Master linker script for blackfin architecture
8 * 8 *
9 * Modified: 9 * Modified:
10 * Copyright 2004-2006 Analog Devices Inc. 10 * Copyright 2004-2007 Analog Devices Inc.
11 * 11 *
12 * Bugs: Enter bugs at http://blackfin.uclinux.org/ 12 * Bugs: Enter bugs at http://blackfin.uclinux.org/
13 * 13 *
@@ -32,97 +32,54 @@
32#include <asm-generic/vmlinux.lds.h> 32#include <asm-generic/vmlinux.lds.h>
33#include <asm/mem_map.h> 33#include <asm/mem_map.h>
34 34
35
36OUTPUT_FORMAT("elf32-bfin") 35OUTPUT_FORMAT("elf32-bfin")
37ENTRY(__start) 36ENTRY(__start)
38_jiffies = _jiffies_64; 37_jiffies = _jiffies_64;
39 38
40MEMORY
41{
42 ram : ORIGIN = CONFIG_BOOT_LOAD, LENGTH = (CONFIG_MEM_SIZE * 1024 * 1024) - (CONFIG_BOOT_LOAD)
43 l1_data_a : ORIGIN = L1_DATA_A_START, LENGTH = L1_DATA_A_LENGTH
44 l1_data_b : ORIGIN = L1_DATA_B_START, LENGTH = L1_DATA_B_LENGTH
45 l1_code : ORIGIN = L1_CODE_START, LENGTH = L1_CODE_LENGTH
46 l1_scratch : ORIGIN = L1_SCRATCH_START, LENGTH = L1_SCRATCH_LENGTH
47}
48
49SECTIONS 39SECTIONS
50{ 40{
51 . = CONFIG_BOOT_LOAD; 41 . = CONFIG_BOOT_LOAD;
52
53 .text : 42 .text :
54 { 43 {
55 _text = .; 44 __text = .;
56 __stext = .; 45 _text = .;
46 __stext = .;
57 TEXT_TEXT 47 TEXT_TEXT
58 SCHED_TEXT 48 SCHED_TEXT
49 LOCK_TEXT
59 *(.text.lock) 50 *(.text.lock)
51 *(.fixup)
52
60 . = ALIGN(16); 53 . = ALIGN(16);
61 ___start___ex_table = .; 54 ___start___ex_table = .;
62 *(__ex_table) 55 *(__ex_table)
63 ___stop___ex_table = .; 56 ___stop___ex_table = .;
64
65 *($code)
66 *(.rodata)
67 *(.rodata.*)
68 *(__vermagic) /* Kernel version magic */
69 *(.rodata1)
70 *(.fixup)
71 *(.spinlock.text)
72 57
73 /* Kernel symbol table: Normal symbols */
74 . = ALIGN(4); 58 . = ALIGN(4);
75 ___start___ksymtab = .;
76 *(__ksymtab)
77 ___stop___ksymtab = .;
78
79 /* Kernel symbol table: GPL-only symbols */
80 ___start___ksymtab_gpl = .;
81 *(__ksymtab_gpl)
82 ___stop___ksymtab_gpl = .;
83
84 /* Kernel symbol table: Normal unused symbols */ \
85 ___start___ksymtab_unused = .;
86 *(__ksymtab_unused)
87 ___stop___ksymtab_unused = .;
88
89 /* Kernel symbol table: GPL-only unused symbols */
90 ___start___ksymtab_unused_gpl = .;
91 *(__ksymtab_unused_gpl)
92 ___stop___ksymtab_unused_gpl = .;
93
94
95 /* Kernel symbol table: GPL-future symbols */
96 ___start___ksymtab_gpl_future = .;
97 *(__ksymtab_gpl_future)
98 ___stop___ksymtab_gpl_future = .;
99
100 /* Kernel symbol table: Normal symbols */
101 ___start___kcrctab = .;
102 *(__kcrctab)
103 ___stop___kcrctab = .;
104
105 /* Kernel symbol table: GPL-only symbols */
106 ___start___kcrctab_gpl = .;
107 *(__kcrctab_gpl)
108 ___stop___kcrctab_gpl = .;
109
110 /* Kernel symbol table: GPL-future symbols */
111 ___start___kcrctab_gpl_future = .;
112 *(__kcrctab_gpl_future)
113 ___stop___kcrctab_gpl_future = .;
114
115 /* Kernel symbol table: strings */
116 *(__ksymtab_strings)
117
118 . = ALIGN(4);
119 __etext = .; 59 __etext = .;
120 } > ram 60 }
61
62 RODATA
63
64 .data :
65 {
66 __sdata = .;
67 . = ALIGN(0x2000);
68 *(.data.init_task)
69 DATA_DATA
70 CONSTRUCTORS
71
72 . = ALIGN(32);
73 *(.data.cacheline_aligned)
74
75 . = ALIGN(0x2000);
76 __edata = .;
77 }
121 78
79 ___init_begin = .;
122 .init : 80 .init :
123 { 81 {
124 . = ALIGN(4096); 82 . = ALIGN(4096);
125 ___init_begin = .;
126 __sinittext = .; 83 __sinittext = .;
127 *(.init.text) 84 *(.init.text)
128 __einittext = .; 85 __einittext = .;
@@ -148,39 +105,39 @@ SECTIONS
148 *(.init.ramfs) 105 *(.init.ramfs)
149 ___initramfs_end = .; 106 ___initramfs_end = .;
150 . = ALIGN(4); 107 . = ALIGN(4);
151 ___init_end = .; 108 }
152 } > ram
153 109
154 __l1_lma_start = .; 110 __l1_lma_start = .;
155 111
156 .text_l1 : 112 .text_l1 L1_CODE_START : AT(LOADADDR(.init) + SIZEOF(.init))
157 { 113 {
158 . = ALIGN(4); 114 . = ALIGN(4);
159 __stext_l1 = .; 115 __stext_l1 = .;
160 *(.l1.text) 116 *(.l1.text)
161 117
162 . = ALIGN(4); 118 . = ALIGN(4);
163 __etext_l1 = .; 119 __etext_l1 = .;
164 } > l1_code AT > ram 120 }
165 121
166 .data_l1 : 122 .data_l1 L1_DATA_A_START : AT(LOADADDR(.text_l1) + SIZEOF(.text_l1))
167 { 123 {
168 . = ALIGN(4); 124 . = ALIGN(4);
169 __sdata_l1 = .; 125 __sdata_l1 = .;
170 *(.l1.data) 126 *(.l1.data)
171 __edata_l1 = .; 127 __edata_l1 = .;
172 128
173 . = ALIGN(4); 129 . = ALIGN(4);
174 __sbss_l1 = .; 130 __sbss_l1 = .;
175 *(.l1.bss) 131 *(.l1.bss)
176 132
177 . = ALIGN(32); 133 . = ALIGN(32);
178 *(.data_l1.cacheline_aligned) 134 *(.data_l1.cacheline_aligned)
179 135
180 . = ALIGN(4); 136 . = ALIGN(4);
181 __ebss_l1 = .; 137 __ebss_l1 = .;
182 } > l1_data_a AT > ram 138 }
183 .data_b_l1 : 139
140 .data_b_l1 L1_DATA_B_START : AT(LOADADDR(.data_l1) + SIZEOF(.data_l1))
184 { 141 {
185 . = ALIGN(4); 142 . = ALIGN(4);
186 __sdata_b_l1 = .; 143 __sdata_b_l1 = .;
@@ -193,36 +150,25 @@ SECTIONS
193 150
194 . = ALIGN(4); 151 . = ALIGN(4);
195 __ebss_b_l1 = .; 152 __ebss_b_l1 = .;
196 } > l1_data_b AT > ram 153 }
197 154
198 .data : 155 ___init_end = LOADADDR(.data_b_l1) + SIZEOF(.data_b_l1);
199 {
200 __sdata = .;
201 . = ALIGN(0x2000);
202 *(.data.init_task)
203 DATA_DATA
204 156
205 . = ALIGN(32); 157 .bss LOADADDR(.data_b_l1) + SIZEOF(.data_b_l1) :
206 *(.data.cacheline_aligned)
207
208 . = ALIGN(0x2000);
209 __edata = .;
210 } > ram
211
212 /DISCARD/ : { /* Exit code and data*/
213 *(.exit.text)
214 *(.exit.data)
215 *(.exitcall.exit)
216 } > ram
217
218 .bss :
219 { 158 {
220 . = ALIGN(4); 159 . = ALIGN(4);
221 ___bss_start = .; 160 ___bss_start = .;
222 *(.bss) 161 *(.bss)
223 *(COMMON) 162 *(COMMON)
224 . = ALIGN(4); 163 . = ALIGN(4);
225 ___bss_stop = .; 164 ___bss_stop = .;
226 __end = . ; 165 __end = .;
227 } > ram 166 }
167
168 /DISCARD/ :
169 {
170 *(.exit.text)
171 *(.exit.data)
172 *(.exitcall.exit)
173 }
228} 174}