xref: /linux/arch/alpha/kernel/vmlinux.lds.S (revision f4cdf7ca9a1fdcca413157df19753f388a5a224e)
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		LOCK_TEXT
31		IRQENTRY_TEXT
32		SOFTIRQENTRY_TEXT
33		*(.fixup)
34		*(.gnu.warning)
35	} :text
36	swapper_pg_dir = SWAPPER_PGD;
37	_etext = .;	/* End of text section */
38
39	RO_DATA(4096)
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(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	MODINFO
77	ELF_DETAILS
78
79	DISCARDS
80}
81