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