xref: /linux/arch/alpha/kernel/vmlinux.lds.S (revision cc9b94029e9ef51787af908e9856b1eed314bc00)
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		CPUIDLE_TEXT
26		LOCK_TEXT
27		*(.fixup)
28		*(.gnu.warning)
29	} :kernel
30	swapper_pg_dir = SWAPPER_PGD;
31	_etext = .;	/* End of text section */
32
33	NOTES :kernel :note
34	.dummy : {
35		*(.dummy)
36	} :kernel
37
38	RODATA
39	EXCEPTION_TABLE(16)
40
41	/* Will be freed after init */
42	__init_begin = ALIGN(PAGE_SIZE);
43	INIT_TEXT_SECTION(PAGE_SIZE)
44	INIT_DATA_SECTION(16)
45	PERCPU_SECTION(L1_CACHE_BYTES)
46	/* Align to THREAD_SIZE rather than PAGE_SIZE here so any padding page
47	   needed for the THREAD_SIZE aligned init_task gets freed after init */
48	. = ALIGN(THREAD_SIZE);
49	__init_end = .;
50	/* Freed after init ends here */
51
52	_sdata = .;	/* Start of rw data section */
53	_data = .;
54	RW_DATA_SECTION(L1_CACHE_BYTES, PAGE_SIZE, THREAD_SIZE)
55
56	.got : {
57		*(.got)
58	}
59	.sdata : {
60		*(.sdata)
61	}
62	_edata = .;	/* End of data section */
63
64	BSS_SECTION(0, 0, 0)
65	_end = .;
66
67	.mdebug 0 : {
68		*(.mdebug)
69	}
70	.note 0 : {
71		*(.note)
72	}
73
74	STABS_DEBUG
75	DWARF_DEBUG
76
77	DISCARDS
78}
79