xref: /linux/arch/mips/kernel/vmlinux.lds.S (revision 14b42963f64b98ab61fa9723c03d71aa5ef4f862)
1#include <asm/asm-offsets.h>
2#include <asm-generic/vmlinux.lds.h>
3
4#undef mips
5#define mips mips
6OUTPUT_ARCH(mips)
7ENTRY(kernel_entry)
8jiffies = JIFFIES;
9SECTIONS
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)
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  RODATA
49
50  /* writeable */
51  .data : {			/* Data */
52    . = . + DATAOFFSET;		/* for CONFIG_MAPPED_KERNEL */
53    *(.data.init_task)
54
55    *(.data)
56
57    CONSTRUCTORS
58  }
59  _gp = . + 0x8000;
60  .lit8 : { *(.lit8) }
61  .lit4 : { *(.lit4) }
62  /* We want the small data sections together, so single-instruction offsets
63     can access them all, and initialized data all before uninitialized, so
64     we can shorten the on-disk segment size.  */
65  .sdata     : { *(.sdata) }
66
67  . = ALIGN(_PAGE_SIZE);
68  __nosave_begin = .;
69  .data_nosave : { *(.data.nosave) }
70  . = ALIGN(_PAGE_SIZE);
71  __nosave_end = .;
72
73  . = ALIGN(32);
74  .data.cacheline_aligned : { *(.data.cacheline_aligned) }
75
76  _edata =  .;			/* End of data section */
77
78  /* will be freed after init */
79  . = ALIGN(_PAGE_SIZE);		/* Init code and data */
80  __init_begin = .;
81  .init.text : {
82	_sinittext = .;
83	*(.init.text)
84	_einittext = .;
85  }
86  .init.data : { *(.init.data) }
87  . = ALIGN(16);
88  __setup_start = .;
89  .init.setup : { *(.init.setup) }
90  __setup_end = .;
91
92  __initcall_start = .;
93  .initcall.init : {
94	*(.initcall1.init)
95	*(.initcall2.init)
96	*(.initcall3.init)
97	*(.initcall4.init)
98	*(.initcall5.init)
99	*(.initcall6.init)
100	*(.initcall7.init)
101  }
102  __initcall_end = .;
103
104  __con_initcall_start = .;
105  .con_initcall.init : { *(.con_initcall.init) }
106  __con_initcall_end = .;
107  SECURITY_INIT
108    /* .exit.text is discarded at runtime, not link time, to deal with
109     references from .rodata */
110  .exit.text : { *(.exit.text) }
111  . = ALIGN(_PAGE_SIZE);
112  __initramfs_start = .;
113  .init.ramfs : { *(.init.ramfs) }
114  __initramfs_end = .;
115  . = ALIGN(32);
116  __per_cpu_start = .;
117  .data.percpu  : { *(.data.percpu) }
118  __per_cpu_end = .;
119  . = ALIGN(_PAGE_SIZE);
120  __init_end = .;
121  /* freed after init ends here */
122
123  __bss_start = .;		/* BSS */
124  .sbss      : {
125    *(.sbss)
126    *(.scommon)
127  }
128  .bss : {
129    *(.bss)
130    *(COMMON)
131  }
132  __bss_stop = .;
133
134  _end = . ;
135
136  /* Sections to be discarded */
137  /DISCARD/ : {
138        *(.exit.data)
139        *(.exitcall.exit)
140
141	/* ABI crap starts here */
142	*(.comment)
143	*(.MIPS.options)
144	*(.note)
145	*(.options)
146	*(.pdr)
147	*(.reginfo)
148	*(.mdebug*)
149  }
150
151  /* This is the MIPS specific mdebug section.  */
152  .mdebug : { *(.mdebug) }
153
154  STABS_DEBUG
155
156  DWARF_DEBUG
157
158  /* These must appear regardless of  .  */
159  .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) }
160  .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) }
161  .note : { *(.note) }
162}
163