xref: /linux/arch/alpha/kernel/vmlinux.lds.S (revision 24bce201d79807b668bf9d9e0aca801c5c0d5f78)
1/* SPDX-License-Identifier: GPL-2.0 */
2
3#define EMITS_PT_NOTE
4#define RO_EXCEPTION_TABLE_ALIGN	16
5
6#include <asm-generic/vmlinux.lds.h>
7#include <asm/thread_info.h>
8#include <asm/cache.h>
9#include <asm/page.h>
10#include <asm/setup.h>
11
12OUTPUT_FORMAT("elf64-alpha")
13OUTPUT_ARCH(alpha)
14ENTRY(__start)
15PHDRS { text PT_LOAD; note PT_NOTE; }
16jiffies = jiffies_64;
17SECTIONS
18{
19#ifdef CONFIG_ALPHA_LEGACY_START_ADDRESS
20	. = 0xfffffc0000310000;
21#else
22	. = 0xfffffc0001010000;
23#endif
24
25	_text = .;	/* Text and read-only data */
26	.text : {
27		HEAD_TEXT
28		TEXT_TEXT
29		SCHED_TEXT
30		CPUIDLE_TEXT
31		LOCK_TEXT
32		*(.fixup)
33		*(.gnu.warning)
34	} :text
35	swapper_pg_dir = SWAPPER_PGD;
36	_etext = .;	/* End of text section */
37
38	RO_DATA(4096)
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(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	ELF_DETAILS
76
77	DISCARDS
78}
79