blob: e24e0a0c90c9b18702f051de7e64825f5170534c [file] [log] [blame]
Tim Abbott1dc818c2009-09-16 16:44:27 -04001#include <asm-generic/vmlinux.lds.h>
2
Linus Torvalds51b26ad2009-04-26 10:12:47 -07003OUTPUT_FORMAT(CONFIG_OUTPUT_FORMAT, CONFIG_OUTPUT_FORMAT, CONFIG_OUTPUT_FORMAT)
4
Sam Ravnborg83c48322009-04-30 12:03:16 +02005#undef i386
6
Jan Beulich350f8f52009-11-13 11:54:40 +00007#include <asm/cache.h>
H. Peter Anvin5b11f1c2009-05-08 16:20:34 -07008#include <asm/page_types.h>
9
Linus Torvalds51b26ad2009-04-26 10:12:47 -070010#ifdef CONFIG_X86_64
Vivek Goyal1ab60e02007-05-02 19:27:07 +020011OUTPUT_ARCH(i386:x86-64)
12ENTRY(startup_64)
Linus Torvalds51b26ad2009-04-26 10:12:47 -070013#else
14OUTPUT_ARCH(i386)
15ENTRY(startup_32)
16#endif
17
Vivek Goyal1ab60e02007-05-02 19:27:07 +020018SECTIONS
19{
Yinghai Lu32ed9372008-02-01 17:49:41 +010020 /* Be careful parts of head_64.S assume startup_32 is at
Ian Campbellafe0bc62008-01-30 13:33:37 +010021 * address 0.
Vivek Goyal1ab60e02007-05-02 19:27:07 +020022 */
23 . = 0;
Tim Abbott1dc818c2009-09-16 16:44:27 -040024 .head.text : {
Vivek Goyal1ab60e02007-05-02 19:27:07 +020025 _head = . ;
Tim Abbott1dc818c2009-09-16 16:44:27 -040026 HEAD_TEXT
Vivek Goyal1ab60e02007-05-02 19:27:07 +020027 _ehead = . ;
Ian Campbell20514e92008-01-30 13:33:38 +010028 }
Denys Vlasenko041d5f92010-02-20 01:03:46 +010029 .rodata..compressed : {
30 *(.rodata..compressed)
Ian Campbell20514e92008-01-30 13:33:38 +010031 }
32 .text : {
Vivek Goyal1ab60e02007-05-02 19:27:07 +020033 _text = .; /* Text */
34 *(.text)
35 *(.text.*)
36 _etext = . ;
37 }
38 .rodata : {
39 _rodata = . ;
40 *(.rodata) /* read-only data */
41 *(.rodata.*)
42 _erodata = . ;
43 }
H. Peter Anvin22a57f52010-08-02 15:34:44 -070044 .got : {
45 _got = .;
46 KEEP(*(.got.plt))
47 KEEP(*(.got))
48 _egot = .;
49 }
Vivek Goyal1ab60e02007-05-02 19:27:07 +020050 .data : {
51 _data = . ;
52 *(.data)
53 *(.data.*)
54 _edata = . ;
55 }
Jan Beulich350f8f52009-11-13 11:54:40 +000056 . = ALIGN(L1_CACHE_BYTES);
Vivek Goyal1ab60e02007-05-02 19:27:07 +020057 .bss : {
58 _bss = . ;
59 *(.bss)
60 *(.bss.*)
61 *(COMMON)
H. Peter Anvin5b11f1c2009-05-08 16:20:34 -070062 . = ALIGN(8); /* For convenience during zeroing */
Yinghai Lu4a9f54c2008-04-10 15:06:38 -070063 _ebss = .;
Vivek Goyal1ab60e02007-05-02 19:27:07 +020064 }
H. Peter Anvin5b11f1c2009-05-08 16:20:34 -070065#ifdef CONFIG_X86_64
66 . = ALIGN(PAGE_SIZE);
67 .pgtable : {
68 _pgtable = . ;
69 *(.pgtable)
70 _epgtable = . ;
71 }
72#endif
Yinghai Lu974f2212016-04-28 17:09:04 -070073 . = ALIGN(PAGE_SIZE); /* keep ZO size page aligned */
H. Peter Anvin5b11f1c2009-05-08 16:20:34 -070074 _end = .;
Vivek Goyal1ab60e02007-05-02 19:27:07 +020075}