diff options
Diffstat (limited to 'arch/sh/kernel/vmlinux.lds.S')
-rw-r--r-- | arch/sh/kernel/vmlinux.lds.S | 94 |
1 files changed, 12 insertions, 82 deletions
diff --git a/arch/sh/kernel/vmlinux.lds.S b/arch/sh/kernel/vmlinux.lds.S index 0ce254bca92f..a1e4ec24f1f5 100644 --- a/arch/sh/kernel/vmlinux.lds.S +++ b/arch/sh/kernel/vmlinux.lds.S | |||
@@ -12,7 +12,7 @@ OUTPUT_ARCH(sh) | |||
12 | 12 | ||
13 | #include <asm/thread_info.h> | 13 | #include <asm/thread_info.h> |
14 | #include <asm/cache.h> | 14 | #include <asm/cache.h> |
15 | #include <asm-generic/vmlinux.lds.h> | 15 | #include <asm/vmlinux.lds.h> |
16 | 16 | ||
17 | ENTRY(_start) | 17 | ENTRY(_start) |
18 | SECTIONS | 18 | SECTIONS |
@@ -50,12 +50,7 @@ SECTIONS | |||
50 | _etext = .; /* End of text section */ | 50 | _etext = .; /* End of text section */ |
51 | } = 0x0009 | 51 | } = 0x0009 |
52 | 52 | ||
53 | . = ALIGN(16); /* Exception table */ | 53 | EXCEPTION_TABLE(16) |
54 | __ex_table : AT(ADDR(__ex_table) - LOAD_OFFSET) { | ||
55 | __start___ex_table = .; | ||
56 | *(__ex_table) | ||
57 | __stop___ex_table = .; | ||
58 | } | ||
59 | 54 | ||
60 | NOTES | 55 | NOTES |
61 | RO_DATA(PAGE_SIZE) | 56 | RO_DATA(PAGE_SIZE) |
@@ -71,69 +66,16 @@ SECTIONS | |||
71 | __uncached_end = .; | 66 | __uncached_end = .; |
72 | } | 67 | } |
73 | 68 | ||
74 | . = ALIGN(THREAD_SIZE); | 69 | RW_DATA_SECTION(L1_CACHE_BYTES, PAGE_SIZE, THREAD_SIZE) |
75 | .data : AT(ADDR(.data) - LOAD_OFFSET) { /* Data */ | ||
76 | *(.data.init_task) | ||
77 | |||
78 | . = ALIGN(L1_CACHE_BYTES); | ||
79 | *(.data.cacheline_aligned) | ||
80 | |||
81 | . = ALIGN(L1_CACHE_BYTES); | ||
82 | *(.data.read_mostly) | ||
83 | |||
84 | . = ALIGN(PAGE_SIZE); | ||
85 | *(.data.page_aligned) | ||
86 | |||
87 | __nosave_begin = .; | ||
88 | *(.data.nosave) | ||
89 | . = ALIGN(PAGE_SIZE); | ||
90 | __nosave_end = .; | ||
91 | |||
92 | DATA_DATA | ||
93 | CONSTRUCTORS | ||
94 | } | ||
95 | 70 | ||
96 | _edata = .; /* End of data section */ | 71 | _edata = .; /* End of data section */ |
97 | 72 | ||
98 | . = ALIGN(PAGE_SIZE); /* Init code and data */ | 73 | DWARF_EH_FRAME |
99 | .init.text : AT(ADDR(.init.text) - LOAD_OFFSET) { | ||
100 | __init_begin = .; | ||
101 | _sinittext = .; | ||
102 | INIT_TEXT | ||
103 | _einittext = .; | ||
104 | } | ||
105 | |||
106 | .init.data : AT(ADDR(.init.data) - LOAD_OFFSET) { INIT_DATA } | ||
107 | |||
108 | . = ALIGN(16); | ||
109 | .init.setup : AT(ADDR(.init.setup) - LOAD_OFFSET) { | ||
110 | __setup_start = .; | ||
111 | *(.init.setup) | ||
112 | __setup_end = .; | ||
113 | } | ||
114 | |||
115 | .initcall.init : AT(ADDR(.initcall.init) - LOAD_OFFSET) { | ||
116 | __initcall_start = .; | ||
117 | INITCALLS | ||
118 | __initcall_end = .; | ||
119 | } | ||
120 | |||
121 | .con_initcall.init : AT(ADDR(.con_initcall.init) - LOAD_OFFSET) { | ||
122 | __con_initcall_start = .; | ||
123 | *(.con_initcall.init) | ||
124 | __con_initcall_end = .; | ||
125 | } | ||
126 | |||
127 | SECURITY_INIT | ||
128 | 74 | ||
129 | #ifdef CONFIG_BLK_DEV_INITRD | 75 | . = ALIGN(PAGE_SIZE); /* Init code and data */ |
130 | . = ALIGN(PAGE_SIZE); | 76 | __init_begin = .; |
131 | .init.ramfs : AT(ADDR(.init.ramfs) - LOAD_OFFSET) { | 77 | INIT_TEXT_SECTION(PAGE_SIZE) |
132 | __initramfs_start = .; | 78 | INIT_DATA_SECTION(16) |
133 | *(.init.ramfs) | ||
134 | __initramfs_end = .; | ||
135 | } | ||
136 | #endif | ||
137 | 79 | ||
138 | . = ALIGN(4); | 80 | . = ALIGN(4); |
139 | .machvec.init : AT(ADDR(.machvec.init) - LOAD_OFFSET) { | 81 | .machvec.init : AT(ADDR(.machvec.init) - LOAD_OFFSET) { |
@@ -152,25 +94,13 @@ SECTIONS | |||
152 | .exit.data : AT(ADDR(.exit.data) - LOAD_OFFSET) { EXIT_DATA } | 94 | .exit.data : AT(ADDR(.exit.data) - LOAD_OFFSET) { EXIT_DATA } |
153 | 95 | ||
154 | . = ALIGN(PAGE_SIZE); | 96 | . = ALIGN(PAGE_SIZE); |
155 | .bss : AT(ADDR(.bss) - LOAD_OFFSET) { | 97 | __init_end = .; |
156 | __init_end = .; | 98 | BSS_SECTION(0, PAGE_SIZE, 4) |
157 | __bss_start = .; /* BSS */ | 99 | _ebss = .; /* uClinux MTD sucks */ |
158 | *(.bss.page_aligned) | 100 | _end = . ; |
159 | *(.bss) | ||
160 | *(COMMON) | ||
161 | . = ALIGN(4); | ||
162 | _ebss = .; /* uClinux MTD sucks */ | ||
163 | _end = . ; | ||
164 | } | ||
165 | 101 | ||
166 | STABS_DEBUG | 102 | STABS_DEBUG |
167 | DWARF_DEBUG | 103 | DWARF_DEBUG |
168 | 104 | ||
169 | /* | ||
170 | * When something in the kernel is NOT compiled as a module, the | ||
171 | * module cleanup code and data are put into these segments. Both | ||
172 | * can then be thrown away, as cleanup code is never called unless | ||
173 | * it's a module. | ||
174 | */ | ||
175 | DISCARDS | 105 | DISCARDS |
176 | } | 106 | } |