Linux-libre 5.7.6-gnu
[librecmc/linux-libre.git] / arch / s390 / boot / compressed / vmlinux.lds.S
1 /* SPDX-License-Identifier: GPL-2.0 */
2 #include <asm-generic/vmlinux.lds.h>
3 #include <asm/vmlinux.lds.h>
4
5 OUTPUT_FORMAT("elf64-s390", "elf64-s390", "elf64-s390")
6 OUTPUT_ARCH(s390:64-bit)
7
8 ENTRY(startup)
9
10 SECTIONS
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 }