GNU Linux-libre 4.14.290-gnu1
[releases.git] / arch / x86 / boot / compressed / vmlinux.lds.S
1 /* SPDX-License-Identifier: GPL-2.0 */
2 #include <asm-generic/vmlinux.lds.h>
3
4 OUTPUT_FORMAT(CONFIG_OUTPUT_FORMAT, CONFIG_OUTPUT_FORMAT, CONFIG_OUTPUT_FORMAT)
5
6 #undef i386
7
8 #include <asm/cache.h>
9 #include <asm/page_types.h>
10
11 #ifdef CONFIG_X86_64
12 OUTPUT_ARCH(i386:x86-64)
13 ENTRY(startup_64)
14 #else
15 OUTPUT_ARCH(i386)
16 ENTRY(startup_32)
17 #endif
18
19 SECTIONS
20 {
21         /* Be careful parts of head_64.S assume startup_32 is at
22          * address 0.
23          */
24         . = 0;
25         .head.text : {
26                 _head = . ;
27                 HEAD_TEXT
28                 _ehead = . ;
29         }
30         .rodata..compressed : {
31                 *(.rodata..compressed)
32         }
33         .text : {
34                 _text = .;      /* Text */
35                 *(.text)
36                 *(.text.*)
37                 _etext = . ;
38         }
39         .rodata : {
40                 _rodata = . ;
41                 *(.rodata)       /* read-only data */
42                 *(.rodata.*)
43                 _erodata = . ;
44         }
45         .got : {
46                 _got = .;
47                 KEEP(*(.got.plt))
48                 KEEP(*(.got))
49                 _egot = .;
50         }
51         .data : {
52                 _data = . ;
53                 *(.data)
54                 *(.data.*)
55                 _edata = . ;
56         }
57         . = ALIGN(L1_CACHE_BYTES);
58         .bss : {
59                 _bss = . ;
60                 *(.bss)
61                 *(.bss.*)
62                 *(COMMON)
63                 . = ALIGN(8);   /* For convenience during zeroing */
64                 _ebss = .;
65         }
66 #ifdef CONFIG_X86_64
67        . = ALIGN(PAGE_SIZE);
68        .pgtable : {
69                 _pgtable = . ;
70                 *(.pgtable)
71                 _epgtable = . ;
72         }
73 #endif
74         . = ALIGN(PAGE_SIZE);   /* keep ZO size page aligned */
75         _end = .;
76 }