xref: /openbmc/linux/arch/sparc/kernel/vmlinux.lds.S (revision 96de0e252cedffad61b3cb5e05662c591898e69a)
1/* ld script to make SparcLinux kernel */
2
3#include <asm-generic/vmlinux.lds.h>
4#include <asm/page.h>
5
6OUTPUT_FORMAT("elf32-sparc", "elf32-sparc", "elf32-sparc")
7OUTPUT_ARCH(sparc)
8ENTRY(_start)
9jiffies = jiffies_64 + 4;
10SECTIONS
11{
12	. = 0x10000 + SIZEOF_HEADERS;
13	.text 0xf0004000 :
14	{
15		_text = .;
16		TEXT_TEXT
17		SCHED_TEXT
18		LOCK_TEXT
19		*(.gnu.warning)
20	} = 0
21	_etext = .;
22	PROVIDE (etext = .);
23	RODATA
24	.data :	{
25		DATA_DATA
26		CONSTRUCTORS
27	}
28	.data1 : {
29		*(.data1)
30	}
31	_edata = .;
32	PROVIDE (edata = .);
33
34	.fixup : {
35		__start___fixup = .;
36		*(.fixup)
37		__stop___fixup = .;
38	}
39	__ex_table : {
40		__start___ex_table = .;
41		*(__ex_table)
42		__stop___ex_table = .;
43	}
44
45	NOTES
46
47	. = ALIGN(PAGE_SIZE);
48	__init_begin = .;
49	.init.text : {
50		_sinittext = .;
51		*(.init.text)
52		_einittext = .;
53	}
54	__init_text_end = .;
55	.init.data : {
56		*(.init.data)
57	}
58	. = ALIGN(16);
59	.init.setup : {
60		__setup_start = .;
61		*(.init.setup)
62		__setup_end = .;
63	}
64	.initcall.init : {
65		__initcall_start = .;
66		INITCALLS
67	__initcall_end = .;
68	}
69	.con_initcall.init : {
70		__con_initcall_start = .;
71		*(.con_initcall.init)
72		__con_initcall_end = .;
73	}
74	SECURITY_INIT
75
76#ifdef CONFIG_BLK_DEV_INITRD
77	. = ALIGN(PAGE_SIZE);
78	.init.ramfs : {
79	__initramfs_start = .;
80		*(.init.ramfs)
81	__initramfs_end = .;
82	}
83#endif
84
85	PERCPU(PAGE_SIZE)
86	. = ALIGN(PAGE_SIZE);
87	__init_end = .;
88	. = ALIGN(32);
89	.data.cacheline_aligned : {
90		*(.data.cacheline_aligned)
91	}
92
93	__bss_start = .;
94	.sbss : {
95		*(.sbss)
96		*(.scommon) }
97	.bss : {
98		*(.dynbss)
99		*(.bss)
100		*(COMMON)
101	}
102	_end = . ;
103	PROVIDE (end = .);
104	/DISCARD/ : {
105		*(.exit.text)
106		*(.exit.data)
107		*(.exitcall.exit)
108	}
109
110	STABS_DEBUG
111	DWARF_DEBUG
112}
113