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