xref: /linux/arch/alpha/kernel/vmlinux.lds.S (revision 0d456bad36d42d16022be045c8a53ddbb59ee478)
1#include <asm-generic/vmlinux.lds.h>
2#include <asm/thread_info.h>
3#include <asm/cache.h>
4#include <asm/page.h>
5#include <asm/setup.h>
6
7OUTPUT_FORMAT("elf64-alpha")
8OUTPUT_ARCH(alpha)
9ENTRY(__start)
10PHDRS { kernel PT_LOAD; note PT_NOTE; }
11jiffies = jiffies_64;
12SECTIONS
13{
14#ifdef CONFIG_ALPHA_LEGACY_START_ADDRESS
15	. = 0xfffffc0000310000;
16#else
17	. = 0xfffffc0001010000;
18#endif
19
20	_text = .;	/* Text and read-only data */
21	.text : {
22		HEAD_TEXT
23		TEXT_TEXT
24		SCHED_TEXT
25		LOCK_TEXT
26		*(.fixup)
27		*(.gnu.warning)
28	} :kernel
29	swapper_pg_dir = SWAPPER_PGD;
30	_etext = .;	/* End of text section */
31
32	NOTES :kernel :note
33	.dummy : {
34		*(.dummy)
35	} :kernel
36
37	RODATA
38	EXCEPTION_TABLE(16)
39
40	/* Will be freed after init */
41	__init_begin = ALIGN(PAGE_SIZE);
42	INIT_TEXT_SECTION(PAGE_SIZE)
43	INIT_DATA_SECTION(16)
44	PERCPU_SECTION(L1_CACHE_BYTES)
45	/* Align to THREAD_SIZE rather than PAGE_SIZE here so any padding page
46	   needed for the THREAD_SIZE aligned init_task gets freed after init */
47	. = ALIGN(THREAD_SIZE);
48	__init_end = .;
49	/* Freed after init ends here */
50
51	_sdata = .;	/* Start of rw data section */
52	_data = .;
53	RW_DATA_SECTION(L1_CACHE_BYTES, PAGE_SIZE, THREAD_SIZE)
54
55	.got : {
56		*(.got)
57	}
58	.sdata : {
59		*(.sdata)
60	}
61	_edata = .;	/* End of data section */
62
63	BSS_SECTION(0, 0, 0)
64	_end = .;
65
66	.mdebug 0 : {
67		*(.mdebug)
68	}
69	.note 0 : {
70		*(.note)
71	}
72
73	STABS_DEBUG
74	DWARF_DEBUG
75
76	DISCARDS
77}
78