Commit | Line | Data |
---|---|---|
1da177e4 | 1 | #include <linux/config.h> |
dbee90b7 | 2 | #include <asm/asm-offsets.h> |
1da177e4 LT |
3 | #include <asm-generic/vmlinux.lds.h> |
4 | ||
41c594ab | 5 | #undef mips |
1da177e4 LT |
6 | #define mips mips |
7 | OUTPUT_ARCH(mips) | |
8 | ENTRY(kernel_entry) | |
9 | jiffies = JIFFIES; | |
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 | ||
42a3b4f2 | 19 | /* Set the vaddr for the text segment to a value |
1da177e4 LT |
20 | >= 0xa800 0000 0001 9000 if no symmon is going to configured |
21 | >= 0xa800 0000 0030 0000 otherwise */ | |
22 | ||
23 | /* . = 0xa800000000300000; */ | |
24 | /* . = 0xa800000000300000; */ | |
25 | . = 0xffffffff80300000; | |
26 | #endif | |
27 | . = LOADADDR; | |
28 | /* read-only */ | |
29 | _text = .; /* Text and read-only data */ | |
30 | .text : { | |
31 | *(.text) | |
32 | SCHED_TEXT | |
33 | LOCK_TEXT | |
34 | *(.fixup) | |
35 | *(.gnu.warning) | |
36 | } =0 | |
37 | ||
38 | _etext = .; /* End of text section */ | |
39 | ||
40 | . = ALIGN(16); /* Exception table */ | |
41 | __start___ex_table = .; | |
42 | __ex_table : { *(__ex_table) } | |
43 | __stop___ex_table = .; | |
44 | ||
45 | __start___dbe_table = .; /* Exception table for data bus errors */ | |
46 | __dbe_table : { *(__dbe_table) } | |
47 | __stop___dbe_table = .; | |
48 | ||
49 | RODATA | |
50 | ||
51 | /* writeable */ | |
52 | .data : { /* Data */ | |
53 | . = . + DATAOFFSET; /* for CONFIG_MAPPED_KERNEL */ | |
54 | *(.data.init_task) | |
55 | ||
56 | *(.data) | |
57 | ||
1da177e4 LT |
58 | CONSTRUCTORS |
59 | } | |
60 | _gp = . + 0x8000; | |
61 | .lit8 : { *(.lit8) } | |
62 | .lit4 : { *(.lit4) } | |
63 | /* We want the small data sections together, so single-instruction offsets | |
64 | can access them all, and initialized data all before uninitialized, so | |
65 | we can shorten the on-disk segment size. */ | |
66 | .sdata : { *(.sdata) } | |
67 | ||
dbee90b7 | 68 | . = ALIGN(_PAGE_SIZE); |
1da177e4 LT |
69 | __nosave_begin = .; |
70 | .data_nosave : { *(.data.nosave) } | |
dbee90b7 | 71 | . = ALIGN(_PAGE_SIZE); |
1da177e4 LT |
72 | __nosave_end = .; |
73 | ||
74 | . = ALIGN(32); | |
75 | .data.cacheline_aligned : { *(.data.cacheline_aligned) } | |
76 | ||
77 | _edata = .; /* End of data section */ | |
78 | ||
79 | /* will be freed after init */ | |
dbee90b7 | 80 | . = ALIGN(_PAGE_SIZE); /* Init code and data */ |
1da177e4 LT |
81 | __init_begin = .; |
82 | .init.text : { | |
83 | _sinittext = .; | |
84 | *(.init.text) | |
85 | _einittext = .; | |
86 | } | |
87 | .init.data : { *(.init.data) } | |
88 | . = ALIGN(16); | |
89 | __setup_start = .; | |
90 | .init.setup : { *(.init.setup) } | |
91 | __setup_end = .; | |
92 | ||
1da177e4 LT |
93 | __initcall_start = .; |
94 | .initcall.init : { | |
95 | *(.initcall1.init) | |
96 | *(.initcall2.init) | |
97 | *(.initcall3.init) | |
98 | *(.initcall4.init) | |
99 | *(.initcall5.init) | |
100 | *(.initcall6.init) | |
101 | *(.initcall7.init) | |
102 | } | |
103 | __initcall_end = .; | |
104 | ||
105 | __con_initcall_start = .; | |
106 | .con_initcall.init : { *(.con_initcall.init) } | |
107 | __con_initcall_end = .; | |
108 | SECURITY_INIT | |
bb7d83f7 RB |
109 | /* .exit.text is discarded at runtime, not link time, to deal with |
110 | references from .rodata */ | |
111 | .exit.text : { *(.exit.text) } | |
dbee90b7 | 112 | . = ALIGN(_PAGE_SIZE); |
1da177e4 LT |
113 | __initramfs_start = .; |
114 | .init.ramfs : { *(.init.ramfs) } | |
115 | __initramfs_end = .; | |
116 | . = ALIGN(32); | |
117 | __per_cpu_start = .; | |
118 | .data.percpu : { *(.data.percpu) } | |
119 | __per_cpu_end = .; | |
dbee90b7 | 120 | . = ALIGN(_PAGE_SIZE); |
1da177e4 LT |
121 | __init_end = .; |
122 | /* freed after init ends here */ | |
123 | ||
124 | __bss_start = .; /* BSS */ | |
125 | .sbss : { | |
126 | *(.sbss) | |
127 | *(.scommon) | |
128 | } | |
129 | .bss : { | |
130 | *(.bss) | |
131 | *(COMMON) | |
132 | } | |
133 | __bss_stop = .; | |
134 | ||
135 | _end = . ; | |
136 | ||
137 | /* Sections to be discarded */ | |
138 | /DISCARD/ : { | |
1da177e4 LT |
139 | *(.exit.data) |
140 | *(.exitcall.exit) | |
141 | ||
142 | /* ABI crap starts here */ | |
143 | *(.comment) | |
144 | *(.MIPS.options) | |
145 | *(.note) | |
146 | *(.options) | |
147 | *(.pdr) | |
148 | *(.reginfo) | |
149 | *(.mdebug*) | |
150 | } | |
151 | ||
152 | /* This is the MIPS specific mdebug section. */ | |
153 | .mdebug : { *(.mdebug) } | |
78665aaa AN |
154 | |
155 | STABS_DEBUG | |
04b6b3b6 AN |
156 | |
157 | DWARF_DEBUG | |
158 | ||
1da177e4 LT |
159 | /* These must appear regardless of . */ |
160 | .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) } | |
161 | .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) } | |
1da177e4 LT |
162 | .note : { *(.note) } |
163 | } |