1/* SPDX-License-Identifier: GPL-2.0 */
2#include <asm-generic/vmlinux.lds.h>
3#include <asm/vmlinux.lds.h>
4
5OUTPUT_FORMAT("elf64-s390", "elf64-s390", "elf64-s390")
6OUTPUT_ARCH(s390:64-bit)
7
8ENTRY(startup)
9
10SECTIONS
11{
12	. = 0;
13	.head.text : {
14		_head = . ;
15		HEAD_TEXT
16		_ehead = . ;
17	}
18	.text :	{
19		_text = .;	/* Text */
20		*(.text)
21		*(.text.*)
22		_etext = . ;
23	}
24	.rodata : {
25		_rodata = . ;
26		*(.rodata)	 /* read-only data */
27		*(.rodata.*)
28		_erodata = . ;
29	}
30	.data :	{
31		_data = . ;
32		*(.data)
33		*(.data.*)
34		_edata = . ;
35	}
36	/*
37	* .dma section for code, data, ex_table that need to stay below 2 GB,
38	* even when the kernel is relocate: above 2 GB.
39	*/
40	. = ALIGN(PAGE_SIZE);
41	_sdma = .;
42	.dma.text : {
43		_stext_dma = .;
44		*(.dma.text)
45		. = ALIGN(PAGE_SIZE);
46		_etext_dma = .;
47	}
48	. = ALIGN(16);
49	.dma.ex_table : {
50		_start_dma_ex_table = .;
51		KEEP(*(.dma.ex_table))
52		_stop_dma_ex_table = .;
53	}
54	.dma.data : { *(.dma.data) }
55	. = ALIGN(PAGE_SIZE);
56	_edma = .;
57
58	BOOT_DATA
59	BOOT_DATA_PRESERVED
60
61	/*
62	 * uncompressed image info used by the decompressor it should match
63	 * struct vmlinux_info. It comes from .vmlinux.info section of
64	 * uncompressed vmlinux in a form of info.o
65	 */
66	. = ALIGN(8);
67	.vmlinux.info : {
68		_vmlinux_info = .;
69		*(.vmlinux.info)
70	}
71
72#ifdef CONFIG_KERNEL_UNCOMPRESSED
73	. = 0x100000;
74#else
75	. = ALIGN(8);
76#endif
77	.rodata.compressed : {
78		_compressed_start = .;
79		*(.vmlinux.bin.compressed)
80		_compressed_end = .;
81		FILL(0xff);
82		. = ALIGN(4096);
83	}
84	. = ALIGN(256);
85	.bss : {
86		_bss = . ;
87		*(.bss)
88		*(.bss.*)
89		*(COMMON)
90		. = ALIGN(8);	/* For convenience during zeroing */
91		_ebss = .;
92	}
93	_end = .;
94
95	/* Sections to be discarded */
96	/DISCARD/ : {
97		*(.eh_frame)
98		*(__ex_table)
99		*(*__ksymtab*)
100		*(___kcrctab*)
101	}
102}
103