diff options
author | Tim Abbott <tabbott@ksplice.com> | 2009-09-18 16:32:49 -0400 |
---|---|---|
committer | Hirokazu Takata <takata@linux-m32r.org> | 2009-09-22 11:29:40 -0400 |
commit | 85233c43f7fece10a3ea8ed34f0d546b8dd3a435 (patch) | |
tree | 71038c0278a9d8f834f39764ba2813f40803ec1a /arch/m32r | |
parent | 743486dff1d03eb4a67bd75402699629f70cd5b4 (diff) |
m32r: Cleanup linker script using new linker script macros.
This patch is largely a straightforward conversion. One thing to note
is that the new macros use fewer separate output sections than the old
code; this should have no functional impact but is relevant for people
objdumping vmlinux files.
Also note that it moves the .data.init_task output sections inside
_edata.
Signed-off-by: Tim Abbott <tabbott@ksplice.com>
Signed-off-by: Hirokazu Takata <takata@linux-m32r.org>
Diffstat (limited to 'arch/m32r')
-rw-r--r-- | arch/m32r/kernel/vmlinux.lds.S | 67 |
1 files changed, 9 insertions, 58 deletions
diff --git a/arch/m32r/kernel/vmlinux.lds.S b/arch/m32r/kernel/vmlinux.lds.S index aadb24eacf08..8ceb6181d805 100644 --- a/arch/m32r/kernel/vmlinux.lds.S +++ b/arch/m32r/kernel/vmlinux.lds.S | |||
@@ -4,6 +4,7 @@ | |||
4 | #include <asm-generic/vmlinux.lds.h> | 4 | #include <asm-generic/vmlinux.lds.h> |
5 | #include <asm/addrspace.h> | 5 | #include <asm/addrspace.h> |
6 | #include <asm/page.h> | 6 | #include <asm/page.h> |
7 | #include <asm/thread_info.h> | ||
7 | 8 | ||
8 | OUTPUT_ARCH(m32r) | 9 | OUTPUT_ARCH(m32r) |
9 | #if defined(__LITTLE_ENDIAN__) | 10 | #if defined(__LITTLE_ENDIAN__) |
@@ -40,72 +41,22 @@ SECTIONS | |||
40 | #endif | 41 | #endif |
41 | _etext = .; /* End of text section */ | 42 | _etext = .; /* End of text section */ |
42 | 43 | ||
43 | . = ALIGN(16); /* Exception table */ | 44 | EXCEPTION_TABLE(16) |
44 | __start___ex_table = .; | ||
45 | __ex_table : { *(__ex_table) } | ||
46 | __stop___ex_table = .; | ||
47 | |||
48 | RODATA | 45 | RODATA |
49 | 46 | RW_DATA_SECTION(32, PAGE_SIZE, THREAD_SIZE) | |
50 | /* writeable */ | ||
51 | .data : { /* Data */ | ||
52 | DATA_DATA | ||
53 | CONSTRUCTORS | ||
54 | } | ||
55 | |||
56 | . = ALIGN(4096); | ||
57 | __nosave_begin = .; | ||
58 | .data_nosave : { *(.data.nosave) } | ||
59 | . = ALIGN(4096); | ||
60 | __nosave_end = .; | ||
61 | |||
62 | . = ALIGN(32); | ||
63 | .data.cacheline_aligned : { *(.data.cacheline_aligned) } | ||
64 | |||
65 | _edata = .; /* End of data section */ | 47 | _edata = .; /* End of data section */ |
66 | 48 | ||
67 | . = ALIGN(8192); /* init_task */ | ||
68 | .data.init_task : { *(.data.init_task) } | ||
69 | |||
70 | /* will be freed after init */ | 49 | /* will be freed after init */ |
71 | . = ALIGN(4096); /* Init code and data */ | 50 | . = ALIGN(PAGE_SIZE); /* Init code and data */ |
72 | __init_begin = .; | 51 | __init_begin = .; |
73 | .init.text : { | 52 | INIT_TEXT_SECTION(PAGE_SIZE) |
74 | _sinittext = .; | 53 | INIT_DATA_SECTION(16) |
75 | INIT_TEXT | 54 | PERCPU(PAGE_SIZE) |
76 | _einittext = .; | 55 | . = ALIGN(PAGE_SIZE); |
77 | } | ||
78 | .init.data : { INIT_DATA } | ||
79 | . = ALIGN(16); | ||
80 | __setup_start = .; | ||
81 | .init.setup : { *(.init.setup) } | ||
82 | __setup_end = .; | ||
83 | __initcall_start = .; | ||
84 | .initcall.init : { | ||
85 | INITCALLS | ||
86 | } | ||
87 | __initcall_end = .; | ||
88 | __con_initcall_start = .; | ||
89 | .con_initcall.init : { *(.con_initcall.init) } | ||
90 | __con_initcall_end = .; | ||
91 | SECURITY_INIT | ||
92 | |||
93 | #ifdef CONFIG_BLK_DEV_INITRD | ||
94 | . = ALIGN(4096); | ||
95 | __initramfs_start = .; | ||
96 | .init.ramfs : { *(.init.ramfs) } | ||
97 | __initramfs_end = .; | ||
98 | #endif | ||
99 | |||
100 | PERCPU(4096) | ||
101 | . = ALIGN(4096); | ||
102 | __init_end = .; | 56 | __init_end = .; |
103 | /* freed after init ends here */ | 57 | /* freed after init ends here */ |
104 | 58 | ||
105 | __bss_start = .; /* BSS */ | 59 | BSS_SECTION(0, 0, 4) |
106 | .bss : { *(.bss) } | ||
107 | . = ALIGN(4); | ||
108 | __bss_stop = .; | ||
109 | 60 | ||
110 | _end = . ; | 61 | _end = . ; |
111 | 62 | ||