Merge branch 'picoxcell/timer' into next/timer
[deliverable/linux.git] / arch / mips / kernel / vmlinux.lds.S
1 #include <asm/asm-offsets.h>
2 #include <asm/page.h>
3 #include <asm-generic/vmlinux.lds.h>
4
5 #undef mips
6 #define mips mips
7 OUTPUT_ARCH(mips)
8 ENTRY(kernel_entry)
9 PHDRS {
10 text PT_LOAD FLAGS(7); /* RWX */
11 note PT_NOTE FLAGS(4); /* R__ */
12 }
13
14 #ifdef CONFIG_32BIT
15 #ifdef CONFIG_CPU_LITTLE_ENDIAN
16 jiffies = jiffies_64;
17 #else
18 jiffies = jiffies_64 + 4;
19 #endif
20 #else
21 jiffies = jiffies_64;
22 #endif
23
24 SECTIONS
25 {
26 #ifdef CONFIG_BOOT_ELF64
27 /* Read-only sections, merged into text segment: */
28 /* . = 0xc000000000000000; */
29
30 /* This is the value for an Origin kernel, taken from an IRIX kernel. */
31 /* . = 0xc00000000001c000; */
32
33 /* Set the vaddr for the text segment to a value
34 * >= 0xa800 0000 0001 9000 if no symmon is going to configured
35 * >= 0xa800 0000 0030 0000 otherwise
36 */
37
38 /* . = 0xa800000000300000; */
39 . = 0xffffffff80300000;
40 #endif
41 . = VMLINUX_LOAD_ADDRESS;
42 /* read-only */
43 _text = .; /* Text and read-only data */
44 .text : {
45 TEXT_TEXT
46 SCHED_TEXT
47 LOCK_TEXT
48 KPROBES_TEXT
49 IRQENTRY_TEXT
50 *(.text.*)
51 *(.fixup)
52 *(.gnu.warning)
53 } :text = 0
54 _etext = .; /* End of text section */
55
56 EXCEPTION_TABLE(16)
57
58 /* Exception table for data bus errors */
59 __dbe_table : {
60 __start___dbe_table = .;
61 *(__dbe_table)
62 __stop___dbe_table = .;
63 }
64
65 NOTES :text :note
66 .dummy : { *(.dummy) } :text
67
68 _sdata = .; /* Start of data section */
69 RODATA
70
71 /* writeable */
72 .data : { /* Data */
73 . = . + DATAOFFSET; /* for CONFIG_MAPPED_KERNEL */
74
75 INIT_TASK_DATA(PAGE_SIZE)
76 NOSAVE_DATA
77 CACHELINE_ALIGNED_DATA(1 << CONFIG_MIPS_L1_CACHE_SHIFT)
78 READ_MOSTLY_DATA(1 << CONFIG_MIPS_L1_CACHE_SHIFT)
79 DATA_DATA
80 CONSTRUCTORS
81 }
82 _gp = . + 0x8000;
83 .lit8 : {
84 *(.lit8)
85 }
86 .lit4 : {
87 *(.lit4)
88 }
89 /* We want the small data sections together, so single-instruction offsets
90 can access them all, and initialized data all before uninitialized, so
91 we can shorten the on-disk segment size. */
92 .sdata : {
93 *(.sdata)
94 }
95 _edata = .; /* End of data section */
96
97 /* will be freed after init */
98 . = ALIGN(PAGE_SIZE); /* Init code and data */
99 __init_begin = .;
100 INIT_TEXT_SECTION(PAGE_SIZE)
101 INIT_DATA_SECTION(16)
102
103 . = ALIGN(4);
104 .mips.machines.init : AT(ADDR(.mips.machines.init) - LOAD_OFFSET) {
105 __mips_machines_start = .;
106 *(.mips.machines.init)
107 __mips_machines_end = .;
108 }
109
110 /* .exit.text is discarded at runtime, not link time, to deal with
111 * references from .rodata
112 */
113 .exit.text : {
114 EXIT_TEXT
115 }
116 .exit.data : {
117 EXIT_DATA
118 }
119
120 PERCPU_SECTION(1 << CONFIG_MIPS_L1_CACHE_SHIFT)
121 . = ALIGN(PAGE_SIZE);
122 __init_end = .;
123 /* freed after init ends here */
124
125 BSS_SECTION(0, 0, 0)
126
127 _end = . ;
128
129 /* These mark the ABI of the kernel for debuggers. */
130 .mdebug.abi32 : {
131 KEEP(*(.mdebug.abi32))
132 }
133 .mdebug.abi64 : {
134 KEEP(*(.mdebug.abi64))
135 }
136
137 /* This is the MIPS specific mdebug section. */
138 .mdebug : {
139 *(.mdebug)
140 }
141
142 STABS_DEBUG
143 DWARF_DEBUG
144
145 /* These must appear regardless of . */
146 .gptab.sdata : {
147 *(.gptab.data)
148 *(.gptab.sdata)
149 }
150 .gptab.sbss : {
151 *(.gptab.bss)
152 *(.gptab.sbss)
153 }
154
155 /* Sections to be discarded */
156 DISCARDS
157 /DISCARD/ : {
158 /* ABI crap starts here */
159 *(.MIPS.options)
160 *(.options)
161 *(.pdr)
162 *(.reginfo)
163 }
164 }
This page took 0.037178 seconds and 5 git commands to generate.