aboutsummaryrefslogtreecommitdiffstats
path: root/arch/alpha
diff options
context:
space:
mode:
authorGeoffrey Thomas <geofft@ksplice.com>2009-09-24 10:36:26 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2009-09-24 20:16:22 -0400
commit9d93f00580243cc059510d9d6ac4d2f5e97e5b83 (patch)
tree6c9fb647d59bb091ab32c77c682fd319fa870c76 /arch/alpha
parentea12c2ed547f415ef9699cc67374d90924592c9b (diff)
alpha: Clean up linker script using new linker script macros.
Note that .data.page_aligned and .data.cacheline_aligned are now after _data; it was probably a bug that they were before it. Also, some explicit ALIGN(8)'s between various initcall sections were removed; this should be harmless as the implicit alignment of initcall_t was already 8. Signed-off-by: Geoffrey Thomas <geofft@ksplice.com> Signed-off-by: Tim Abbott <tabbott@ksplice.com> Cc: Ivan Kokshaysky <ink@jurassic.park.msu.ru> Cc: Sam Ravnborg <sam@ravnborg.org> Signed-off-by: Richard Henderson <rth@twiddle.net> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'arch/alpha')
-rw-r--r--arch/alpha/kernel/vmlinux.lds.S90
1 files changed, 9 insertions, 81 deletions
diff --git a/arch/alpha/kernel/vmlinux.lds.S b/arch/alpha/kernel/vmlinux.lds.S
index 82803df17977..2906665b1c10 100644
--- a/arch/alpha/kernel/vmlinux.lds.S
+++ b/arch/alpha/kernel/vmlinux.lds.S
@@ -32,84 +32,21 @@ SECTIONS
32 } :kernel 32 } :kernel
33 33
34 RODATA 34 RODATA
35 35 EXCEPTION_TABLE(16)
36 /* Exception table */
37 . = ALIGN(16);
38 __ex_table : {
39 __start___ex_table = .;
40 *(__ex_table)
41 __stop___ex_table = .;
42 }
43 36
44 /* Will be freed after init */ 37 /* Will be freed after init */
45 . = ALIGN(PAGE_SIZE); 38 __init_begin = ALIGN(PAGE_SIZE);
46 /* Init code and data */ 39 INIT_TEXT_SECTION(PAGE_SIZE)
47 __init_begin = .; 40 INIT_DATA_SECTION(16)
48 .init.text : {
49 _sinittext = .;
50 INIT_TEXT
51 _einittext = .;
52 }
53 .init.data : {
54 INIT_DATA
55 }
56
57 . = ALIGN(16);
58 .init.setup : {
59 __setup_start = .;
60 *(.init.setup)
61 __setup_end = .;
62 }
63
64 . = ALIGN(8);
65 .initcall.init : {
66 __initcall_start = .;
67 INITCALLS
68 __initcall_end = .;
69 }
70
71#ifdef CONFIG_BLK_DEV_INITRD
72 . = ALIGN(PAGE_SIZE);
73 .init.ramfs : {
74 __initramfs_start = .;
75 *(.init.ramfs)
76 __initramfs_end = .;
77 }
78#endif
79
80 . = ALIGN(8);
81 .con_initcall.init : {
82 __con_initcall_start = .;
83 *(.con_initcall.init)
84 __con_initcall_end = .;
85 }
86
87 . = ALIGN(8);
88 SECURITY_INIT
89
90 PERCPU(PAGE_SIZE) 41 PERCPU(PAGE_SIZE)
91 42 /* Align to THREAD_SIZE rather than PAGE_SIZE here so any padding page
92 . = ALIGN(2 * PAGE_SIZE); 43 needed for the THREAD_SIZE aligned init_task gets freed after init */
44 . = ALIGN(THREAD_SIZE);
93 __init_end = .; 45 __init_end = .;
94 /* Freed after init ends here */ 46 /* Freed after init ends here */
95 47
96 . = ALIGN(PAGE_SIZE);
97 .data.page_aligned : {
98 *(.data.page_aligned)
99 }
100
101 . = ALIGN(64);
102 .data.cacheline_aligned : {
103 *(.data.cacheline_aligned)
104 }
105
106 _data = .; 48 _data = .;
107 /* Data */ 49 RW_DATA_SECTION(64, PAGE_SIZE, THREAD_SIZE)
108 .data : {
109 INIT_TASK_DATA(THREAD_SIZE)
110 DATA_DATA
111 CONSTRUCTORS
112 }
113 50
114 .got : { 51 .got : {
115 *(.got) 52 *(.got)
@@ -119,16 +56,7 @@ SECTIONS
119 } 56 }
120 _edata = .; /* End of data section */ 57 _edata = .; /* End of data section */
121 58
122 __bss_start = .; 59 BSS_SECTION(0, 0, 0)
123 .sbss : {
124 *(.sbss)
125 *(.scommon)
126 }
127 .bss : {
128 *(.bss)
129 *(COMMON)
130 }
131 __bss_stop = .;
132 _end = .; 60 _end = .;
133 61
134 .mdebug 0 : { 62 .mdebug 0 : {