Merge with Linux 2.5.48.
[linux-2.6/linux-mips.git] / arch / i386 / vmlinux.lds.S
blob8be909d2b94f17d41d450108da8b98cc3d1a7cd1
1 /* ld script to make i386 Linux kernel
2  * Written by Martin Mares <mj@atrey.karlin.mff.cuni.cz>;
3  */
4 OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386")
5 OUTPUT_ARCH(i386)
6 ENTRY(_start)
7 jiffies = jiffies_64;
8 SECTIONS
10   . = 0xC0000000 + 0x100000;
11   /* read-only */
12   _text = .;                    /* Text and read-only data */
13   .text : {
14         *(.text)
15         *(.fixup)
16         *(.gnu.warning)
17         } = 0x9090
19   _etext = .;                   /* End of text section */
21   .rodata : { *(.rodata) *(.rodata.*) }
22   .kstrtab : { *(.kstrtab) }
24   . = ALIGN(16);                /* Exception table */
25   __start___ex_table = .;
26   __ex_table : { *(__ex_table) }
27   __stop___ex_table = .;
29   . = ALIGN(64);
30   __start___ksymtab = .;        /* Kernel symbol table */
31   __ksymtab : { *(__ksymtab) }
32   __stop___ksymtab = .;
34   __start___kallsyms = .;       /* All kernel symbols */
35   __kallsyms : { *(__kallsyms) }
36   __stop___kallsyms = .;
38   /* writeable */
39   .data : {                     /* Data */
40         *(.data)
41         CONSTRUCTORS
42         }
44   . = ALIGN(4096);
45   __nosave_begin = .;
46   .data_nosave : { *(.data.nosave) }
47   . = ALIGN(4096);
48   __nosave_end = .;
50   . = ALIGN(4096);
51   .data.page_aligned : { *(.data.idt) }
53   . = ALIGN(32);
54   .data.cacheline_aligned : { *(.data.cacheline_aligned) }
56   _edata = .;                   /* End of data section */
58   . = ALIGN(8192);              /* init_task */
59   .data.init_task : { *(.data.init_task) }
61   /* will be freed after init */
62   . = ALIGN(4096);              /* Init code and data */
63   __init_begin = .;
64   .init.text : { *(.init.text) }
65   .init.data : { *(.init.data) }
66   . = ALIGN(16);
67   __setup_start = .;
68   .init.setup : { *(.init.setup) }
69   __setup_end = .;
70   __initcall_start = .;
71   .initcall.init : {
72         *(.initcall1.init) 
73         *(.initcall2.init) 
74         *(.initcall3.init) 
75         *(.initcall4.init) 
76         *(.initcall5.init) 
77         *(.initcall6.init) 
78         *(.initcall7.init)
79   }
80   __initcall_end = .;
81   . = ALIGN(4096);
82   __initramfs_start = .;
83   .init.ramfs : { *(.init.ramfs) }
84   __initramfs_end = .;
85   . = ALIGN(32);
86   __per_cpu_start = .;
87   .data.percpu  : { *(.data.percpu) }
88   __per_cpu_end = .;
89   . = ALIGN(4096);
90   __init_end = .;
91   /* freed after init ends here */
92         
93   __bss_start = .;              /* BSS */
94   .bss : { *(.bss) }
95   __bss_stop = .; 
97   _end = . ;
99   /* Sections to be discarded */
100   /DISCARD/ : {
101         *(.exit.text)
102         *(.exit.data)
103         *(.exitcall.exit)
104         }
106   /* Stabs debugging sections.  */
107   .stab 0 : { *(.stab) }
108   .stabstr 0 : { *(.stabstr) }
109   .stab.excl 0 : { *(.stab.excl) }
110   .stab.exclstr 0 : { *(.stab.exclstr) }
111   .stab.index 0 : { *(.stab.index) }
112   .stab.indexstr 0 : { *(.stab.indexstr) }
113   .comment 0 : { *(.comment) }