summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'arch/m32r/kernel/vmlinux.lds.S')
-rw-r--r--arch/m32r/kernel/vmlinux.lds.S143
1 files changed, 143 insertions, 0 deletions
diff --git a/arch/m32r/kernel/vmlinux.lds.S b/arch/m32r/kernel/vmlinux.lds.S
new file mode 100644
index 000000000000..729a2645a03f
--- /dev/null
+++ b/arch/m32r/kernel/vmlinux.lds.S
@@ -0,0 +1,143 @@
1/* ld script to make M32R Linux kernel
2 */
3
4#include <linux/config.h>
5#include <asm-generic/vmlinux.lds.h>
6#include <asm/addrspace.h>
7#include <asm/page.h>
8
9OUTPUT_ARCH(m32r)
10ENTRY(startup_32)
11#if defined(__LITTLE_ENDIAN__)
12 jiffies = jiffies_64;
13#else
14 jiffies = jiffies_64 + 4;
15#endif
16SECTIONS
17{
18 . = CONFIG_MEMORY_START + __PAGE_OFFSET;
19 eit_vector = .;
20
21 . = . + 0x1000;
22 .empty_zero_page : { *(.empty_zero_page) } = 0
23
24 /* read-only */
25 _text = .; /* Text and read-only data */
26 .boot : { *(.boot) } = 0
27 .text : {
28 *(.text)
29 SCHED_TEXT
30 LOCK_TEXT
31 *(.fixup)
32 *(.gnu.warning)
33 } = 0x9090
34#ifdef CONFIG_SMP
35 . = ALIGN(65536);
36 .eit_vector4 : { *(.eit_vector4) }
37#endif
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 RODATA
46
47 /* writeable */
48 .data : { /* Data */
49 *(.spu)
50 *(.spi)
51 *(.data)
52 CONSTRUCTORS
53 }
54
55 . = ALIGN(4096);
56 __nosave_begin = .;
57 .data_nosave : { *(.data.nosave) }
58 . = ALIGN(4096);
59 __nosave_end = .;
60
61 . = ALIGN(4096);
62 .data.page_aligned : { *(.data.idt) }
63
64 . = ALIGN(32);
65 .data.cacheline_aligned : { *(.data.cacheline_aligned) }
66
67 _edata = .; /* End of data section */
68
69 . = ALIGN(8192); /* init_task */
70 .data.init_task : { *(.data.init_task) }
71
72 /* will be freed after init */
73 . = ALIGN(4096); /* Init code and data */
74 __init_begin = .;
75 .init.text : {
76 _sinittext = .;
77 *(.init.text)
78 _einittext = .;
79 }
80 .init.data : { *(.init.data) }
81 . = ALIGN(16);
82 __setup_start = .;
83 .init.setup : { *(.init.setup) }
84 __setup_end = .;
85 __initcall_start = .;
86 .initcall.init : {
87 *(.initcall1.init)
88 *(.initcall2.init)
89 *(.initcall3.init)
90 *(.initcall4.init)
91 *(.initcall5.init)
92 *(.initcall6.init)
93 *(.initcall7.init)
94 }
95 __initcall_end = .;
96 __con_initcall_start = .;
97 .con_initcall.init : { *(.con_initcall.init) }
98 __con_initcall_end = .;
99 SECURITY_INIT
100 . = ALIGN(4);
101 __alt_instructions = .;
102 .altinstructions : { *(.altinstructions) }
103 __alt_instructions_end = .;
104 .altinstr_replacement : { *(.altinstr_replacement) }
105 /* .exit.text is discard at runtime, not link time, to deal with references
106 from .altinstructions and .eh_frame */
107 .exit.text : { *(.exit.text) }
108 .exit.data : { *(.exit.data) }
109 . = ALIGN(4096);
110 __initramfs_start = .;
111 .init.ramfs : { *(.init.ramfs) }
112 __initramfs_end = .;
113 . = ALIGN(32);
114 __per_cpu_start = .;
115 .data.percpu : { *(.data.percpu) }
116 __per_cpu_end = .;
117 . = ALIGN(4096);
118 __init_end = .;
119 /* freed after init ends here */
120
121 __bss_start = .; /* BSS */
122 .bss : { *(.bss) }
123 . = ALIGN(4);
124 __bss_stop = .;
125
126 _end = . ;
127
128 /* Sections to be discarded */
129 /DISCARD/ : {
130 *(.exit.text)
131 *(.exit.data)
132 *(.exitcall.exit)
133 }
134
135 /* Stabs debugging sections. */
136 .stab 0 : { *(.stab) }
137 .stabstr 0 : { *(.stabstr) }
138 .stab.excl 0 : { *(.stab.excl) }
139 .stab.exclstr 0 : { *(.stab.exclstr) }
140 .stab.index 0 : { *(.stab.index) }
141 .stab.indexstr 0 : { *(.stab.indexstr) }
142 .comment 0 : { *(.comment) }
143}