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