[MIPS] vmlinux.lds.S: Remove duplicate comment.
[cascardo/linux.git] / arch / mips / kernel / vmlinux.lds.S
1 #include <asm/asm-offsets.h>
2 #include <asm-generic/vmlinux.lds.h>
3
4 #undef mips
5 #define mips mips
6 OUTPUT_ARCH(mips)
7 ENTRY(kernel_entry)
8 jiffies = JIFFIES;
9
10 SECTIONS
11 {
12 #ifdef CONFIG_BOOT_ELF64
13         /* Read-only sections, merged into text segment: */
14         /* . = 0xc000000000000000; */
15
16         /* This is the value for an Origin kernel, taken from an IRIX kernel.  */
17         /* . = 0xc00000000001c000; */
18
19         /* Set the vaddr for the text segment to a value
20          *   >= 0xa800 0000 0001 9000 if no symmon is going to configured
21          *   >= 0xa800 0000 0030 0000 otherwise
22          */
23
24         /* . = 0xa800000000300000; */
25         . = 0xffffffff80300000;
26 #endif
27         . = LOADADDR;
28         /* read-only */
29         _text = .;      /* Text and read-only data */
30         .text : {
31                 TEXT_TEXT
32                 SCHED_TEXT
33                 LOCK_TEXT
34                 *(.fixup)
35                 *(.gnu.warning)
36         } =0
37         _etext = .;     /* End of text section */
38
39         /* Exception table */
40         . = ALIGN(16);
41         __ex_table : {
42                 __start___ex_table = .;
43                 *(__ex_table)
44                 __stop___ex_table = .;
45         }
46
47         /* Exception table for data bus errors */
48         __dbe_table : {
49                 __start___dbe_table = .;
50                 *(__dbe_table)
51                 __stop___dbe_table = .;
52         }
53         RODATA
54
55         /* writeable */
56         .data : {       /* Data */
57           . = . + DATAOFFSET;           /* for CONFIG_MAPPED_KERNEL */
58           /*
59            * This ALIGN is needed as a workaround for a bug a gcc bug upto 4.1 which
60            * limits the maximum alignment to at most 32kB and results in the following
61            * warning:
62            *
63            *  CC      arch/mips/kernel/init_task.o
64            * arch/mips/kernel/init_task.c:30: warning: alignment of ‘init_thread_union’
65            * is greater than maximum object file alignment.  Using 32768
66            */
67           . = ALIGN(_PAGE_SIZE);
68           *(.data.init_task)
69
70           DATA_DATA
71           CONSTRUCTORS
72         }
73         _gp = . + 0x8000;
74         .lit8 : {
75                 *(.lit8)
76         }
77         .lit4 : {
78                 *(.lit4)
79         }
80         /* We want the small data sections together, so single-instruction offsets
81            can access them all, and initialized data all before uninitialized, so
82            we can shorten the on-disk segment size.  */
83         .sdata : {
84                 *(.sdata)
85         }
86
87         . = ALIGN(_PAGE_SIZE);
88         .data_nosave : {
89                 __nosave_begin = .;
90                 *(.data.nosave)
91         }
92         . = ALIGN(_PAGE_SIZE);
93         __nosave_end = .;
94
95         . = ALIGN(32);
96         .data.cacheline_aligned : {
97                 *(.data.cacheline_aligned)
98         }
99         _edata =  .;                    /* End of data section */
100
101         /* will be freed after init */
102         . = ALIGN(_PAGE_SIZE);          /* Init code and data */
103         __init_begin = .;
104         .init.text : {
105                 _sinittext = .;
106                 *(.init.text)
107                 _einittext = .;
108         }
109         .init.data : {
110                 *(.init.data)
111         }
112         . = ALIGN(16);
113         .init.setup : {
114                 __setup_start = .;
115                 *(.init.setup)
116                 __setup_end = .;
117         }
118
119         .initcall.init : {
120                 __initcall_start = .;
121                 INITCALLS
122                 __initcall_end = .;
123         }
124
125         .con_initcall.init : {
126                 __con_initcall_start = .;
127                 *(.con_initcall.init)
128                 __con_initcall_end = .;
129         }
130         SECURITY_INIT
131
132         /* .exit.text is discarded at runtime, not link time, to deal with
133          * references from .rodata
134          */
135         .exit.text : {
136                 *(.exit.text)
137         }
138         .exit.data : {
139                 *(.exit.data)
140         }
141 #if defined(CONFIG_BLK_DEV_INITRD)
142         . = ALIGN(_PAGE_SIZE);
143         .init.ramfs : {
144                 __initramfs_start = .;
145                 *(.init.ramfs)
146                 __initramfs_end = .;
147         }
148 #endif
149         PERCPU(_PAGE_SIZE)
150         . = ALIGN(_PAGE_SIZE);
151         __init_end = .;
152         /* freed after init ends here */
153
154         __bss_start = .;        /* BSS */
155         .sbss  : {
156                 *(.sbss)
157                 *(.scommon)
158         }
159         .bss : {
160                 *(.bss)
161                 *(COMMON)
162         }
163         __bss_stop = .;
164
165         _end = . ;
166
167         /* Sections to be discarded */
168         /DISCARD/ : {
169                 *(.exitcall.exit)
170
171                 /* ABI crap starts here */
172                 *(.MIPS.options)
173                 *(.options)
174                 *(.pdr)
175                 *(.reginfo)
176         }
177
178         /* These mark the ABI of the kernel for debuggers.  */
179         .mdebug.abi32 : {
180                 KEEP(*(.mdebug.abi32))
181         }
182         .mdebug.abi64 : {
183                 KEEP(*(.mdebug.abi64))
184         }
185
186         /* This is the MIPS specific mdebug section.  */
187         .mdebug : {
188                 *(.mdebug)
189         }
190
191         STABS_DEBUG
192         DWARF_DEBUG
193
194         /* These must appear regardless of  .  */
195         .gptab.sdata : {
196                 *(.gptab.data)
197                 *(.gptab.sdata)
198         }
199         .gptab.sbss : {
200                 *(.gptab.bss)
201                 *(.gptab.sbss)
202         }
203         .note : {
204                 *(.note)
205         }
206 }