xref: /linux/arch/alpha/boot/compressed/vmlinux.lds.S (revision 742f62b63904cdc20a364a49d2861e32464a0af7)
1*c437950dSMatt Turner/* SPDX-License-Identifier: GPL-2.0 */
2*c437950dSMatt Turner#include <asm-generic/vmlinux.lds.h>
3*c437950dSMatt Turner#include <asm/page.h>
4*c437950dSMatt Turner#include <asm/setup.h>
5*c437950dSMatt Turner
6*c437950dSMatt TurnerOUTPUT_FORMAT("elf64-alpha")
7*c437950dSMatt TurnerOUTPUT_ARCH(alpha)
8*c437950dSMatt TurnerENTRY(__start)
9*c437950dSMatt Turner
10*c437950dSMatt TurnerSECTIONS
11*c437950dSMatt Turner{
12*c437950dSMatt Turner	/*
13*c437950dSMatt Turner	 * Link the stub at the address the real, uncompressed vmlinux has
14*c437950dSMatt Turner	 * always occupied. aboot derives the OSF/1 parameter-page
15*c437950dSMatt Turner	 * (ZERO_PGE) and initial stack (INIT_STACK) addresses from the
16*c437950dSMatt Turner	 * loaded image's own p_vaddr, so a stub linked anywhere else would
17*c437950dSMatt Turner	 * hand the real kernel a parameter page it does not expect.
18*c437950dSMatt Turner	 */
19*c437950dSMatt Turner	. = START_ADDR;
20*c437950dSMatt Turner
21*c437950dSMatt Turner	.head.text : {
22*c437950dSMatt Turner		_head = .;
23*c437950dSMatt Turner		HEAD_TEXT
24*c437950dSMatt Turner		_ehead = .;
25*c437950dSMatt Turner	}
26*c437950dSMatt Turner
27*c437950dSMatt Turner	. = ALIGN(8);
28*c437950dSMatt Turner	.rodata.compressed : {
29*c437950dSMatt Turner		*(.rodata.compressed)
30*c437950dSMatt Turner	}
31*c437950dSMatt Turner
32*c437950dSMatt Turner	. = ALIGN(PAGE_SIZE);
33*c437950dSMatt Turner	.text : {
34*c437950dSMatt Turner		_text = .;
35*c437950dSMatt Turner		*(.text)
36*c437950dSMatt Turner		*(.text.*)
37*c437950dSMatt Turner		_etext = .;
38*c437950dSMatt Turner	}
39*c437950dSMatt Turner	. = ALIGN(8);
40*c437950dSMatt Turner	.rodata : {
41*c437950dSMatt Turner		*(.rodata)
42*c437950dSMatt Turner		*(.rodata.*)
43*c437950dSMatt Turner	}
44*c437950dSMatt Turner	. = ALIGN(8);
45*c437950dSMatt Turner	.data : {
46*c437950dSMatt Turner		*(.data)
47*c437950dSMatt Turner		*(.data.*)
48*c437950dSMatt Turner	}
49*c437950dSMatt Turner	.got : {
50*c437950dSMatt Turner		*(.got)
51*c437950dSMatt Turner	}
52*c437950dSMatt Turner	.sdata : {
53*c437950dSMatt Turner		*(.sdata)
54*c437950dSMatt Turner	}
55*c437950dSMatt Turner	/*
56*c437950dSMatt Turner	 * misc.c decompresses to _ebss, so nothing that the stub still
57*c437950dSMatt Turner	 * needs may be placed after .bss. --orphan-handling=warn keeps a
58*c437950dSMatt Turner	 * new section from silently landing there.
59*c437950dSMatt Turner	 */
60*c437950dSMatt Turner	. = ALIGN(8);
61*c437950dSMatt Turner	.bss : {
62*c437950dSMatt Turner		_bss = .;
63*c437950dSMatt Turner		*(.sbss)
64*c437950dSMatt Turner		*(.scommon)
65*c437950dSMatt Turner		*(.bss)
66*c437950dSMatt Turner		*(.bss.*)
67*c437950dSMatt Turner		*(COMMON)
68*c437950dSMatt Turner		. = ALIGN(8);
69*c437950dSMatt Turner		_ebss = .;
70*c437950dSMatt Turner	}
71*c437950dSMatt Turner
72*c437950dSMatt Turner	STABS_DEBUG
73*c437950dSMatt Turner	DWARF_DEBUG
74*c437950dSMatt Turner	ELF_DETAILS
75*c437950dSMatt Turner
76*c437950dSMatt Turner	DISCARDS
77*c437950dSMatt Turner	/DISCARD/ : {
78*c437950dSMatt Turner		*(.eh_frame)
79*c437950dSMatt Turner		*(.modinfo)
80*c437950dSMatt Turner		*(.note)
81*c437950dSMatt Turner		*(.note.*)
82*c437950dSMatt Turner	}
83*c437950dSMatt Turner}
84