Blame view

arch/powerpc/kernel/vmlinux.lds.S 5.39 KB
c51e3a417   Paul Mackerras   powerpc: Fix vmli...
1
  #ifdef CONFIG_PPC64
e8222502e   Benjamin Herrenschmidt   [PATCH] powerpc: ...
2
  #define PROVIDE32(x)	PROVIDE(__unused__##x)
c51e3a417   Paul Mackerras   powerpc: Fix vmli...
3
  #else
e8222502e   Benjamin Herrenschmidt   [PATCH] powerpc: ...
4
  #define PROVIDE32(x)	PROVIDE(x)
c51e3a417   Paul Mackerras   powerpc: Fix vmli...
5
  #endif
4846c5deb   Kumar Gala   [POWERPC] Clean u...
6
  #include <asm/page.h>
14cf11af6   Paul Mackerras   powerpc: Merge en...
7
  #include <asm-generic/vmlinux.lds.h>
bd67fcf9b   Tony Breeds   [POWERPC] Add __r...
8
  #include <asm/cache.h>
62bef2885   Tim Abbott   powerpc: Cleanup ...
9
  #include <asm/thread_info.h>
14cf11af6   Paul Mackerras   powerpc: Merge en...
10

e19e4ab41   Michael Ellerman   powerpc: Set entr...
11
  ENTRY(_stext)
c69cccc95   Segher Boessenkool   powerpc: Fix buil...
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
  PHDRS {
  	kernel PT_LOAD FLAGS(7); /* RWX */
  	notes PT_NOTE FLAGS(0);
  	dummy PT_NOTE FLAGS(0);
  
  	/* binutils < 2.18 has a bug that makes it misbehave when taking an
  	   ELF file with all segments at load address 0 as input.  This
  	   happens when running "strip" on vmlinux, because of the AT() magic
  	   in this linker script.  People using GCC >= 4.2 won't run into
  	   this problem, because the "build-id" support will put some data
  	   into the "notes" segment (at a non-zero load address).
  
  	   To work around this, we force some data into both the "dummy"
  	   segment and the kernel segment, so the dummy segment will get a
  	   non-zero load address.  It's not enough to always create the
  	   "notes" segment, since if nothing gets assigned to it, its load
  	   address will be zero.  */
  }
cabb55871   Stephen Rothwell   powerpc: make iSe...
30
31
32
33
  #ifdef CONFIG_PPC64
  OUTPUT_ARCH(powerpc:common64)
  jiffies = jiffies_64;
  #else
14cf11af6   Paul Mackerras   powerpc: Merge en...
34
35
  OUTPUT_ARCH(powerpc:common)
  jiffies = jiffies_64 + 4;
cabb55871   Stephen Rothwell   powerpc: make iSe...
36
  #endif
14cf11af6   Paul Mackerras   powerpc: Merge en...
37
38
  SECTIONS
  {
d4703aefd   Rusty Russell   module: handle pp...
39
40
  	. = 0;
  	reloc_start = .;
e8222502e   Benjamin Herrenschmidt   [PATCH] powerpc: ...
41
  	. = KERNELBASE;
14cf11af6   Paul Mackerras   powerpc: Merge en...
42

e8222502e   Benjamin Herrenschmidt   [PATCH] powerpc: ...
43
44
45
46
47
  /*
   * Text, read only data and other permanent read-only sections
   */
  
  	/* Text and gots */
366234f65   Kumar Gala   [POWERPC] Update ...
48
  	.text : AT(ADDR(.text) - LOAD_OFFSET) {
748a76838   Kumar Gala   [POWERPC] Fix mod...
49
  		ALIGN_FUNCTION();
e70398458   Tim Abbott   powerpc: convert ...
50
  		HEAD_TEXT
fd593d127   Eric W. Biederman   [PATCH] relocatab...
51
  		_text = .;
13beadd91   Tim Abbott   powerpc: Revert s...
52
53
  		/* careful! __ftr_alt_* sections need to be close to .text */
  		*(.text .fixup __ftr_alt_* .ref.text)
e8222502e   Benjamin Herrenschmidt   [PATCH] powerpc: ...
54
55
56
  		SCHED_TEXT
  		LOCK_TEXT
  		KPROBES_TEXT
6794c7824   Steven Rostedt   powerpc64: port o...
57
  		IRQENTRY_TEXT
14cf11af6   Paul Mackerras   powerpc: Merge en...
58

e8222502e   Benjamin Herrenschmidt   [PATCH] powerpc: ...
59
60
61
62
63
64
  #ifdef CONFIG_PPC32
  		*(.got1)
  		__got2_start = .;
  		*(.got2)
  		__got2_end = .;
  #endif /* CONFIG_PPC32 */
c69cccc95   Segher Boessenkool   powerpc: Fix buil...
65
  	} :kernel
e8222502e   Benjamin Herrenschmidt   [PATCH] powerpc: ...
66

303996dac   Stephen Rothwell   powerpc: Make sur...
67
68
69
  	. = ALIGN(PAGE_SIZE);
  	_etext = .;
  	PROVIDE32 (etext = .);
e8222502e   Benjamin Herrenschmidt   [PATCH] powerpc: ...
70
71
  	/* Read-only data */
  	RODATA
62bef2885   Tim Abbott   powerpc: Cleanup ...
72
  	EXCEPTION_TABLE(0)
14cf11af6   Paul Mackerras   powerpc: Merge en...
73

c69cccc95   Segher Boessenkool   powerpc: Fix buil...
74
75
76
77
  	NOTES :kernel :notes
  
  	/* The dummy segment contents for the bug workaround mentioned above
  	   near PHDRS.  */
80c60bf9b   Segher Boessenkool   powerpc: Fix comp...
78
  	.dummy : AT(ADDR(.dummy) - LOAD_OFFSET) {
e16459c6b   Milton Miller   powerpc: Make dum...
79
80
81
  		LONG(0)
  		LONG(0)
  		LONG(0)
c69cccc95   Segher Boessenkool   powerpc: Fix buil...
82
  	} :kernel :dummy
8fb775ee5   Roland McGrath   powerpc: Put allo...
83

e8222502e   Benjamin Herrenschmidt   [PATCH] powerpc: ...
84
85
86
87
88
  /*
   * Init sections discarded at runtime
   */
  	. = ALIGN(PAGE_SIZE);
  	__init_begin = .;
62bef2885   Tim Abbott   powerpc: Cleanup ...
89
  	INIT_TEXT_SECTION(PAGE_SIZE) :kernel
e8222502e   Benjamin Herrenschmidt   [PATCH] powerpc: ...
90
91
92
93
  
  	/* .exit.text is discarded at runtime, not link time,
  	 * to deal with references from __bug_table
  	 */
366234f65   Kumar Gala   [POWERPC] Update ...
94
  	.exit.text : AT(ADDR(.exit.text) - LOAD_OFFSET) {
01ba2bdc6   Sam Ravnborg   all archs: consol...
95
96
  		EXIT_TEXT
  	}
e8222502e   Benjamin Herrenschmidt   [PATCH] powerpc: ...
97

366234f65   Kumar Gala   [POWERPC] Update ...
98
  	.init.data : AT(ADDR(.init.data) - LOAD_OFFSET) {
01ba2bdc6   Sam Ravnborg   all archs: consol...
99
  		INIT_DATA
e8222502e   Benjamin Herrenschmidt   [PATCH] powerpc: ...
100
101
102
103
104
105
  		__vtop_table_begin = .;
  		*(.vtop_fixup);
  		__vtop_table_end = .;
  		__ptov_table_begin = .;
  		*(.ptov_fixup);
  		__ptov_table_end = .;
c4e3ea255   Stephen Rothwell   [PATCH] powerpc: ...
106
107
108
109
110
  #ifdef CONFIG_PPC_ISERIES
  		__dt_strings_start = .;
  		*(.dt_strings);
  		__dt_strings_end = .;
  #endif
e8222502e   Benjamin Herrenschmidt   [PATCH] powerpc: ...
111
  	}
366234f65   Kumar Gala   [POWERPC] Update ...
112
  	.init.setup : AT(ADDR(.init.setup) - LOAD_OFFSET) {
62bef2885   Tim Abbott   powerpc: Cleanup ...
113
  		INIT_SETUP(16)
e8222502e   Benjamin Herrenschmidt   [PATCH] powerpc: ...
114
  	}
366234f65   Kumar Gala   [POWERPC] Update ...
115
  	.initcall.init : AT(ADDR(.initcall.init) - LOAD_OFFSET) {
62bef2885   Tim Abbott   powerpc: Cleanup ...
116
117
  		INIT_CALLS
  	}
e8222502e   Benjamin Herrenschmidt   [PATCH] powerpc: ...
118

366234f65   Kumar Gala   [POWERPC] Update ...
119
  	.con_initcall.init : AT(ADDR(.con_initcall.init) - LOAD_OFFSET) {
62bef2885   Tim Abbott   powerpc: Cleanup ...
120
  		CON_INITCALL
e8222502e   Benjamin Herrenschmidt   [PATCH] powerpc: ...
121
122
123
124
125
  	}
  
  	SECURITY_INIT
  
  	. = ALIGN(8);
366234f65   Kumar Gala   [POWERPC] Update ...
126
  	__ftr_fixup : AT(ADDR(__ftr_fixup) - LOAD_OFFSET) {
cabb55871   Stephen Rothwell   powerpc: make iSe...
127
128
129
130
  		__start___ftr_fixup = .;
  		*(__ftr_fixup)
  		__stop___ftr_fixup = .;
  	}
2d1b20276   Kumar Gala   powerpc: Fixup lw...
131
  	. = ALIGN(8);
7c03d653c   Benjamin Herrenschmidt   powerpc/mm: Intro...
132
133
134
135
136
137
  	__mmu_ftr_fixup : AT(ADDR(__mmu_ftr_fixup) - LOAD_OFFSET) {
  		__start___mmu_ftr_fixup = .;
  		*(__mmu_ftr_fixup)
  		__stop___mmu_ftr_fixup = .;
  	}
  	. = ALIGN(8);
2d1b20276   Kumar Gala   powerpc: Fixup lw...
138
139
140
141
142
  	__lwsync_fixup : AT(ADDR(__lwsync_fixup) - LOAD_OFFSET) {
  		__start___lwsync_fixup = .;
  		*(__lwsync_fixup)
  		__stop___lwsync_fixup = .;
  	}
3f639ee8c   Stephen Rothwell   [POWERPC] impleme...
143
144
  #ifdef CONFIG_PPC64
  	. = ALIGN(8);
366234f65   Kumar Gala   [POWERPC] Update ...
145
  	__fw_ftr_fixup : AT(ADDR(__fw_ftr_fixup) - LOAD_OFFSET) {
3f639ee8c   Stephen Rothwell   [POWERPC] impleme...
146
147
148
149
150
  		__start___fw_ftr_fixup = .;
  		*(__fw_ftr_fixup)
  		__stop___fw_ftr_fixup = .;
  	}
  #endif
366234f65   Kumar Gala   [POWERPC] Update ...
151
  	.init.ramfs : AT(ADDR(.init.ramfs) - LOAD_OFFSET) {
62bef2885   Tim Abbott   powerpc: Cleanup ...
152
  		INIT_RAM_FS
e8222502e   Benjamin Herrenschmidt   [PATCH] powerpc: ...
153
  	}
62bef2885   Tim Abbott   powerpc: Cleanup ...
154

0415b00d1   Tejun Heo   percpu: Always al...
155
  	PERCPU_SECTION(L1_CACHE_BYTES)
14cf11af6   Paul Mackerras   powerpc: Merge en...
156

e8222502e   Benjamin Herrenschmidt   [PATCH] powerpc: ...
157
  	. = ALIGN(8);
366234f65   Kumar Gala   [POWERPC] Update ...
158
  	.machine.desc : AT(ADDR(.machine.desc) - LOAD_OFFSET) {
e8222502e   Benjamin Herrenschmidt   [PATCH] powerpc: ...
159
160
161
162
  		__machine_desc_start = . ;
  		*(.machine.desc)
  		__machine_desc_end = . ;
  	}
2a4b9c5af   Paul Mackerras   powerpc: Work aro...
163
  #ifdef CONFIG_RELOCATABLE
549e8152d   Paul Mackerras   powerpc: Make the...
164
  	. = ALIGN(8);
9c5f7d39a   Suzuki Poulose   powerpc: Process ...
165
166
167
168
169
170
171
  	.dynsym : AT(ADDR(.dynsym) - LOAD_OFFSET)
  	{
  #ifdef CONFIG_RELOCATABLE_PPC32
  		__dynamic_symtab = .;
  #endif
  		*(.dynsym)
  	}
549e8152d   Paul Mackerras   powerpc: Make the...
172
173
174
175
176
177
178
179
180
181
182
183
184
  	.dynstr : AT(ADDR(.dynstr) - LOAD_OFFSET) { *(.dynstr) }
  	.dynamic : AT(ADDR(.dynamic) - LOAD_OFFSET)
  	{
  		__dynamic_start = .;
  		*(.dynamic)
  	}
  	.hash : AT(ADDR(.hash) - LOAD_OFFSET) { *(.hash) }
  	.interp : AT(ADDR(.interp) - LOAD_OFFSET) { *(.interp) }
  	.rela.dyn : AT(ADDR(.rela.dyn) - LOAD_OFFSET)
  	{
  		__rela_dyn_start = .;
  		*(.rela*)
  	}
2a4b9c5af   Paul Mackerras   powerpc: Work aro...
185
  #endif
e8222502e   Benjamin Herrenschmidt   [PATCH] powerpc: ...
186
187
188
189
190
191
192
193
194
195
196
  
  	/* freed after init ends here */
  	. = ALIGN(PAGE_SIZE);
  	__init_end = .;
  
  /*
   * And now the various read/write data
   */
  
  	. = ALIGN(PAGE_SIZE);
  	_sdata = .;
14cf11af6   Paul Mackerras   powerpc: Merge en...
197

cabb55871   Stephen Rothwell   powerpc: make iSe...
198
  #ifdef CONFIG_PPC32
366234f65   Kumar Gala   [POWERPC] Update ...
199
  	.data : AT(ADDR(.data) - LOAD_OFFSET) {
ca967258b   Sam Ravnborg   all-archs: consol...
200
  		DATA_DATA
e8222502e   Benjamin Herrenschmidt   [PATCH] powerpc: ...
201
202
203
  		*(.sdata)
  		*(.got.plt) *(.got)
  	}
cabb55871   Stephen Rothwell   powerpc: make iSe...
204
  #else
366234f65   Kumar Gala   [POWERPC] Update ...
205
  	.data : AT(ADDR(.data) - LOAD_OFFSET) {
3ae0aa9f4   Mathieu Desnoyers   powerpc: add miss...
206
207
208
  		DATA_DATA
  		*(.data.rel*)
  		*(.toc1)
e8222502e   Benjamin Herrenschmidt   [PATCH] powerpc: ...
209
210
  		*(.branch_lt)
  	}
14cf11af6   Paul Mackerras   powerpc: Merge en...
211

366234f65   Kumar Gala   [POWERPC] Update ...
212
  	.opd : AT(ADDR(.opd) - LOAD_OFFSET) {
e8222502e   Benjamin Herrenschmidt   [PATCH] powerpc: ...
213
214
  		*(.opd)
  	}
366234f65   Kumar Gala   [POWERPC] Update ...
215
  	.got : AT(ADDR(.got) - LOAD_OFFSET) {
e8222502e   Benjamin Herrenschmidt   [PATCH] powerpc: ...
216
217
218
219
  		__toc_start = .;
  		*(.got)
  		*(.toc)
  	}
cabb55871   Stephen Rothwell   powerpc: make iSe...
220
  #endif
14cf11af6   Paul Mackerras   powerpc: Merge en...
221

e8222502e   Benjamin Herrenschmidt   [PATCH] powerpc: ...
222
  	/* The initial task and kernel stack */
2af7687f1   Tim Abbott   Rename .data.init...
223
  	INIT_TASK_DATA_SECTION(THREAD_SIZE)
14cf11af6   Paul Mackerras   powerpc: Merge en...
224

75b134837   Tim Abbott   Rename .data.page...
225
  	.data..page_aligned : AT(ADDR(.data..page_aligned) - LOAD_OFFSET) {
62bef2885   Tim Abbott   powerpc: Cleanup ...
226
  		PAGE_ALIGNED_DATA(PAGE_SIZE)
e8222502e   Benjamin Herrenschmidt   [PATCH] powerpc: ...
227
  	}
14cf11af6   Paul Mackerras   powerpc: Merge en...
228

4af57b787   Tim Abbott   Rename .data.cach...
229
  	.data..cacheline_aligned : AT(ADDR(.data..cacheline_aligned) - LOAD_OFFSET) {
62bef2885   Tim Abbott   powerpc: Cleanup ...
230
  		CACHELINE_ALIGNED_DATA(L1_CACHE_BYTES)
e8222502e   Benjamin Herrenschmidt   [PATCH] powerpc: ...
231
  	}
14cf11af6   Paul Mackerras   powerpc: Merge en...
232

54cb27a71   Denys Vlasenko   Rename .data.read...
233
  	.data..read_mostly : AT(ADDR(.data..read_mostly) - LOAD_OFFSET) {
62bef2885   Tim Abbott   powerpc: Cleanup ...
234
  		READ_MOSTLY_DATA(L1_CACHE_BYTES)
bd67fcf9b   Tony Breeds   [POWERPC] Add __r...
235
  	}
5be2a213b   Sean MacLennan   powerpc: warning:...
236
  	. = ALIGN(PAGE_SIZE);
366234f65   Kumar Gala   [POWERPC] Update ...
237
  	.data_nosave : AT(ADDR(.data_nosave) - LOAD_OFFSET) {
62bef2885   Tim Abbott   powerpc: Cleanup ...
238
  		NOSAVE_DATA
e8222502e   Benjamin Herrenschmidt   [PATCH] powerpc: ...
239
  	}
4a2885630   Paul Mackerras   powerpc: Reduce t...
240

903444e42   Michael Ellerman   powerpc/vmlinux.l...
241
242
243
  	. = ALIGN(PAGE_SIZE);
  	_edata  =  .;
  	PROVIDE32 (edata = .);
e8222502e   Benjamin Herrenschmidt   [PATCH] powerpc: ...
244
245
246
  /*
   * And finally the bss
   */
62bef2885   Tim Abbott   powerpc: Cleanup ...
247
  	BSS_SECTION(0, 0, 0)
14cf11af6   Paul Mackerras   powerpc: Merge en...
248

e8222502e   Benjamin Herrenschmidt   [PATCH] powerpc: ...
249
250
251
  	. = ALIGN(PAGE_SIZE);
  	_end = . ;
  	PROVIDE32 (end = .);
023bf6f1b   Tejun Heo   linker script: un...
252
253
254
  
  	/* Sections to be discarded. */
  	DISCARDS
14cf11af6   Paul Mackerras   powerpc: Merge en...
255
  }