1/* ld script to make ARM Linux kernel
2 * taken from the i386 version by Russell King
3 * Written by Martin Mares <mj@atrey.karlin.mff.cuni.cz>
4 */
5OUTPUT_ARCH(arm)
6ENTRY(stext)
7SECTIONS
8{
9	. = TEXTADDR;
10
11	.init : {
12		_stext = .;
13		__init_begin = .;	/* Init code and data		*/
14			*(.text.init)
15		__proc_info_begin = .;
16			*(.proc.info)
17		__proc_info_end = .;
18		__arch_info_begin = .;
19			*(.arch.info)
20		__arch_info_end = .;
21		__tagtable_begin = .;
22			*(.taglist)
23		__tagtable_end = .;
24			*(.data.init)
25		. = ALIGN(16);
26		__setup_start = .;
27			*(.setup.init)
28		__setup_end = .;
29		__initcall_start = .;
30			*(.initcall.init)
31		__initcall_end = .;
32		. = ALIGN(32768);
33		__init_end = .;
34	}
35
36	.init.task : {
37		*(.init.task)
38	}
39
40	/DISCARD/ : {			/* Exit code and data		*/
41		*(.text.exit)
42		*(.data.exit)
43		*(.exitcall.exit)
44	}
45
46	.text : {
47		_text = .;		/* Text and read-only data	*/
48			*(.text)
49			*(.fixup)
50			*(.gnu.warning)
51			*(.rodata)
52			*(.rodata.*)
53			*(.glue_7)
54			*(.glue_7t)
55			*(.kstrtab)
56		. = ALIGN(16);		/* Exception table		*/
57		__start___ex_table = .;
58			*(__ex_table)
59		__stop___ex_table = .;
60
61		__start___ksymtab = .;	/* Kernel symbol table		*/
62			*(__ksymtab)
63		__stop___ksymtab = .;
64
65		*(.got)			/* Global offset table		*/
66
67		_etext = .;		/* End of text section		*/
68	}
69
70	.data : {
71		/*
72		 * The cacheline aligned data
73		 */
74		. = ALIGN(32);
75		*(.data.cacheline_aligned)
76
77		/*
78		 * and the usual data section
79		 */
80		*(.data)
81		CONSTRUCTORS
82
83		_edata = .;
84	}
85
86
87	.bss : {
88		__bss_start = .;	/* BSS				*/
89		*(.bss)
90		*(COMMON)
91		_end = . ;
92	}
93
94					/* Stabs debugging sections.	*/
95	.stab 0 : { *(.stab) }
96	.stabstr 0 : { *(.stabstr) }
97	.stab.excl 0 : { *(.stab.excl) }
98	.stab.exclstr 0 : { *(.stab.exclstr) }
99	.stab.index 0 : { *(.stab.index) }
100	.stab.indexstr 0 : { *(.stab.indexstr) }
101	.comment 0 : { *(.comment) }
102}
103