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