1/* SPDX-License-Identifier: GPL-2.0 */
2#include <asm-generic/vmlinux.lds.h>
3
4OUTPUT_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
12OUTPUT_ARCH(i386:x86-64)
13ENTRY(startup_64)
14#else
15OUTPUT_ARCH(i386)
16ENTRY(startup_32)
17#endif
18
19SECTIONS
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}
77