blob: dbe515e13fef2c290a65948d8da305ae7fedcc95 [file] [log] [blame]
Linus Torvalds51b26ad2009-04-26 10:12:47 -07001OUTPUT_FORMAT(CONFIG_OUTPUT_FORMAT, CONFIG_OUTPUT_FORMAT, CONFIG_OUTPUT_FORMAT)
2
Sam Ravnborg83c48322009-04-30 12:03:16 +02003#undef i386
4
Linus Torvalds51b26ad2009-04-26 10:12:47 -07005#ifdef CONFIG_X86_64
Vivek Goyal1ab60e02007-05-02 19:27:07 +02006OUTPUT_ARCH(i386:x86-64)
7ENTRY(startup_64)
Linus Torvalds51b26ad2009-04-26 10:12:47 -07008#else
9OUTPUT_ARCH(i386)
10ENTRY(startup_32)
11#endif
12
Vivek Goyal1ab60e02007-05-02 19:27:07 +020013SECTIONS
14{
Yinghai Lu32ed9372008-02-01 17:49:41 +010015 /* Be careful parts of head_64.S assume startup_32 is at
Ian Campbellafe0bc62008-01-30 13:33:37 +010016 * address 0.
Vivek Goyal1ab60e02007-05-02 19:27:07 +020017 */
18 . = 0;
Ian Campbell20514e92008-01-30 13:33:38 +010019 .text.head : {
Vivek Goyal1ab60e02007-05-02 19:27:07 +020020 _head = . ;
21 *(.text.head)
22 _ehead = . ;
Ian Campbell20514e92008-01-30 13:33:38 +010023 }
24 .rodata.compressed : {
25 *(.rodata.compressed)
26 }
27 .text : {
Vivek Goyal1ab60e02007-05-02 19:27:07 +020028 _text = .; /* Text */
29 *(.text)
30 *(.text.*)
31 _etext = . ;
32 }
33 .rodata : {
34 _rodata = . ;
35 *(.rodata) /* read-only data */
36 *(.rodata.*)
37 _erodata = . ;
38 }
39 .data : {
40 _data = . ;
41 *(.data)
42 *(.data.*)
43 _edata = . ;
44 }
H. Peter Anvin0b4eb462009-04-30 17:59:36 -070045 . = ALIGN(CONFIG_X86_L1_CACHE_BYTES);
Vivek Goyal1ab60e02007-05-02 19:27:07 +020046 .bss : {
47 _bss = . ;
48 *(.bss)
49 *(.bss.*)
50 *(COMMON)
Linus Torvalds51b26ad2009-04-26 10:12:47 -070051#ifdef CONFIG_X86_64
Vivek Goyal1ab60e02007-05-02 19:27:07 +020052 . = ALIGN(8);
Yinghai Lu4a9f54c2008-04-10 15:06:38 -070053 _end_before_pgt = . ;
Vivek Goyal1ab60e02007-05-02 19:27:07 +020054 . = ALIGN(4096);
55 pgtable = . ;
56 . = . + 4096 * 6;
Linus Torvalds51b26ad2009-04-26 10:12:47 -070057#endif
Yinghai Lu4a9f54c2008-04-10 15:06:38 -070058 _ebss = .;
Vivek Goyal1ab60e02007-05-02 19:27:07 +020059 }
60}