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