diff options
author | Nelson Elhage <nelhage@ksplice.com> | 2009-09-18 15:52:08 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-09-18 16:57:18 -0400 |
commit | 9c88b25bcfde51eccf2cca13d933a2948d0ca4eb (patch) | |
tree | 01802b8aaeba42f5a4435eb6b0a39e924bc5fc72 /arch/frv | |
parent | 88ddb81e0f56cc7b603174d9666ecc80237425a0 (diff) |
frv: clean up linker script using new linker script macros.
This is largely a straightforward conversion. The patch results in
fewer output sections, and some data being reordered, but should have
no functional impact.
Also, note that this patch moves some data (namely, init_task and
cacheline-aligned) inside [_sdata,_edata].
Because frv already builds using -ffunction-sections -fdata-sections,
we can't use BSS_SECTION or RW_DATA_SECTION yet, since they do not
currently include the required .bss.* and .data.* sections.
Signed-off-by: Nelson Elhage <nelhage@ksplice.com>
Acked-by: David Howells <dhowells@redhat.com>
Signed-off-by: Tim Abbott <tabbott@ksplice.com>
Acked-by: Sam Ravnborg <sam@ravnborg.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'arch/frv')
-rw-r--r-- | arch/frv/kernel/vmlinux.lds.S | 61 |
1 files changed, 7 insertions, 54 deletions
diff --git a/arch/frv/kernel/vmlinux.lds.S b/arch/frv/kernel/vmlinux.lds.S index cfb41813193c..cbe811fccfcc 100644 --- a/arch/frv/kernel/vmlinux.lds.S +++ b/arch/frv/kernel/vmlinux.lds.S | |||
@@ -35,45 +35,13 @@ SECTIONS | |||
35 | #endif | 35 | #endif |
36 | } | 36 | } |
37 | _einittext = .; | 37 | _einittext = .; |
38 | .init.data : { INIT_DATA } | ||
39 | |||
40 | . = ALIGN(8); | ||
41 | __setup_start = .; | ||
42 | .setup.init : { KEEP(*(.init.setup)) } | ||
43 | __setup_end = .; | ||
44 | |||
45 | __initcall_start = .; | ||
46 | .initcall.init : { | ||
47 | INITCALLS | ||
48 | } | ||
49 | __initcall_end = .; | ||
50 | __con_initcall_start = .; | ||
51 | .con_initcall.init : { *(.con_initcall.init) } | ||
52 | __con_initcall_end = .; | ||
53 | SECURITY_INIT | ||
54 | 38 | ||
39 | INIT_DATA_SECTION(8) | ||
55 | PERCPU(4096) | 40 | PERCPU(4096) |
56 | 41 | ||
57 | #ifdef CONFIG_BLK_DEV_INITRD | 42 | . = ALIGN(PAGE_SIZE); |
58 | . = ALIGN(4096); | ||
59 | __initramfs_start = .; | ||
60 | .init.ramfs : { *(.init.ramfs) } | ||
61 | __initramfs_end = .; | ||
62 | #endif | ||
63 | |||
64 | . = ALIGN(THREAD_SIZE); | ||
65 | __init_end = .; | 43 | __init_end = .; |
66 | 44 | ||
67 | /* put sections together that have massive alignment issues */ | ||
68 | . = ALIGN(THREAD_SIZE); | ||
69 | .data.init_task : { | ||
70 | /* init task record & stack */ | ||
71 | *(.data.init_task) | ||
72 | } | ||
73 | |||
74 | . = ALIGN(L1_CACHE_BYTES); | ||
75 | .data.cacheline_aligned : { *(.data.cacheline_aligned) } | ||
76 | |||
77 | .trap : { | 45 | .trap : { |
78 | /* trap table management - read entry-table.S before modifying */ | 46 | /* trap table management - read entry-table.S before modifying */ |
79 | . = ALIGN(8192); | 47 | . = ALIGN(8192); |
@@ -119,13 +87,12 @@ SECTIONS | |||
119 | 87 | ||
120 | } | 88 | } |
121 | 89 | ||
122 | . = ALIGN(8); /* Exception table */ | 90 | EXCEPTION_TABLE(8) |
123 | __start___ex_table = .; | ||
124 | __ex_table : { KEEP(*(__ex_table)) } | ||
125 | __stop___ex_table = .; | ||
126 | 91 | ||
127 | _sdata = .; | 92 | _sdata = .; |
128 | .data : { /* Data */ | 93 | .data : { /* Data */ |
94 | INIT_TASK_DATA(THREAD_SIZE) | ||
95 | CACHELINE_ALIGNED_DATA(L1_CACHE_BYTES) | ||
129 | DATA_DATA | 96 | DATA_DATA |
130 | *(.data.*) | 97 | *(.data.*) |
131 | EXIT_DATA | 98 | EXIT_DATA |
@@ -154,22 +121,8 @@ SECTIONS | |||
154 | . = ALIGN(PAGE_SIZE); | 121 | . = ALIGN(PAGE_SIZE); |
155 | __kernel_image_end = .; | 122 | __kernel_image_end = .; |
156 | 123 | ||
157 | /* Stabs debugging sections. */ | 124 | STABS_DEBUG |
158 | .stab 0 : { *(.stab) } | 125 | DWARF_DEBUG |
159 | .stabstr 0 : { *(.stabstr) } | ||
160 | .stab.excl 0 : { *(.stab.excl) } | ||
161 | .stab.exclstr 0 : { *(.stab.exclstr) } | ||
162 | .stab.index 0 : { *(.stab.index) } | ||
163 | .stab.indexstr 0 : { *(.stab.indexstr) } | ||
164 | |||
165 | .debug_line 0 : { *(.debug_line) } | ||
166 | .debug_info 0 : { *(.debug_info) } | ||
167 | .debug_abbrev 0 : { *(.debug_abbrev) } | ||
168 | .debug_aranges 0 : { *(.debug_aranges) } | ||
169 | .debug_frame 0 : { *(.debug_frame) } | ||
170 | .debug_pubnames 0 : { *(.debug_pubnames) } | ||
171 | .debug_str 0 : { *(.debug_str) } | ||
172 | .debug_ranges 0 : { *(.debug_ranges) } | ||
173 | 126 | ||
174 | .comment 0 : { *(.comment) } | 127 | .comment 0 : { *(.comment) } |
175 | 128 | ||