Linux Audio

Check our new training course

Loading...
Note: File does not exist in v4.6.
  1/* SPDX-License-Identifier: GPL-2.0 */
  2#include <asm-generic/vmlinux.lds.h>
  3#include <asm/vmlinux.lds.h>
  4#include <asm/thread_info.h>
  5#include <asm/page.h>
  6#include <asm/sclp.h>
  7#include "boot.h"
  8
  9OUTPUT_FORMAT("elf64-s390", "elf64-s390", "elf64-s390")
 10OUTPUT_ARCH(s390:64-bit)
 11
 12ENTRY(startup)
 13
 14SECTIONS
 15{
 16	. = 0;
 17	.ipldata : {
 18		*(.ipldata)
 19	}
 20	. = IPL_START;
 21	.head.text : {
 22		_head = . ;
 23		HEAD_TEXT
 24		_ehead = . ;
 25	}
 26	. = PARMAREA;
 27	.parmarea : {
 28		*(.parmarea)
 29	}
 30	.text :	{
 31		_text = .;	/* Text */
 32		*(.text)
 33		*(.text.*)
 34		INIT_TEXT
 35		_etext = . ;
 36	}
 37	.rodata : {
 38		_rodata = . ;
 39		*(.rodata)	 /* read-only data */
 40		*(.rodata.*)
 41		_erodata = . ;
 42	}
 43	.got : {
 44		*(.got)
 45	}
 46	NOTES
 47	.data :	{
 48		_data = . ;
 49		*(.data)
 50		*(.data.*)
 51		_edata = . ;
 52	}
 53
 54	BOOT_DATA
 55	BOOT_DATA_PRESERVED
 56
 57	/*
 58	 * This is the BSS section of the decompressor and not of the decompressed Linux kernel.
 59	 * It will consume place in the decompressor's image.
 60	 */
 61	. = ALIGN(8);
 62	.bss : {
 63		_bss = . ;
 64		*(.bss)
 65		*(.bss.*)
 66		*(COMMON)
 67		/*
 68		 * Stacks for the decompressor
 69		 */
 70		. = ALIGN(PAGE_SIZE);
 71		_dump_info_stack_start = .;
 72		. += PAGE_SIZE;
 73		_dump_info_stack_end = .;
 74		. = ALIGN(PAGE_SIZE);
 75		_stack_start = .;
 76		. += BOOT_STACK_SIZE;
 77		_stack_end = .;
 78		_ebss = .;
 79	}
 80
 81	/*
 82	 * uncompressed image info used by the decompressor it should match
 83	 * struct vmlinux_info. It comes from .vmlinux.info section of
 84	 * uncompressed vmlinux in a form of info.o
 85	 */
 86	. = ALIGN(8);
 87	.vmlinux.info : {
 88		_vmlinux_info = .;
 89		*(.vmlinux.info)
 90	}
 91
 92	.decompressor.syms : {
 93		. += 1; /* make sure we have \0 before the first entry */
 94		. = ALIGN(2);
 95		_decompressor_syms_start = .;
 96		*(.decompressor.syms)
 97		_decompressor_syms_end = .;
 98	}
 99
100	_decompressor_end = .;
101
102	. = ALIGN(4);
103	.vmlinux.relocs : {
104		__vmlinux_relocs_64_start = .;
105		*(.vmlinux.relocs_64)
106		__vmlinux_relocs_64_end = .;
107	}
108
109#ifdef CONFIG_KERNEL_UNCOMPRESSED
110	. = ALIGN(PAGE_SIZE);
111	. += AMODE31_SIZE;		/* .amode31 section */
112
113	/*
114	 * Make sure the location counter is not less than TEXT_OFFSET.
115	 * _SEGMENT_SIZE is not available, use ALIGN(1 << 20) instead.
116	 */
117	. = MAX(TEXT_OFFSET, ALIGN(1 << 20));
118#else
119	. = ALIGN(8);
120#endif
121	.rodata.compressed : {
122		_compressed_start = .;
123		*(.vmlinux.bin.compressed)
124		_compressed_end = .;
125	}
126
127#define SB_TRAILER_SIZE 32
128	/* Trailer needed for Secure Boot */
129	. += SB_TRAILER_SIZE; /* make sure .sb.trailer does not overwrite the previous section */
130	. = ALIGN(4096) - SB_TRAILER_SIZE;
131	.sb.trailer : {
132		QUAD(0)
133		QUAD(0)
134		QUAD(0)
135		QUAD(0x000000207a49504c)
136	}
137	_end = .;
138
139	DWARF_DEBUG
140	ELF_DETAILS
141
142	/*
143	 * Make sure that the .got.plt is either completely empty or it
144	 * contains only the three reserved double words.
145	 */
146	.got.plt : {
147		*(.got.plt)
148	}
149	ASSERT(SIZEOF(.got.plt) == 0 || SIZEOF(.got.plt) == 0x18, "Unexpected GOT/PLT entries detected!")
150
151	/*
152	 * Sections that should stay zero sized, which is safer to
153	 * explicitly check instead of blindly discarding.
154	 */
155	.plt : {
156		*(.plt) *(.plt.*) *(.iplt) *(.igot .igot.plt)
157	}
158	ASSERT(SIZEOF(.plt) == 0, "Unexpected run-time procedure linkages detected!")
159	.rela.dyn : {
160		*(.rela.*) *(.rela_*)
161	}
162	ASSERT(SIZEOF(.rela.dyn) == 0, "Unexpected run-time relocations (.rela) detected!")
163
164	/* Sections to be discarded */
165	/DISCARD/ : {
166		COMMON_DISCARDS
167		*(.eh_frame)
168		*(__ex_table)
169		*(*__ksymtab*)
170		*(___kcrctab*)
171	}
172}