aboutsummaryrefslogtreecommitdiffstats
path: root/arch/alpha/kernel/vmlinux.lds.S
diff options
context:
space:
mode:
Diffstat (limited to 'arch/alpha/kernel/vmlinux.lds.S')
-rw-r--r--arch/alpha/kernel/vmlinux.lds.S95
1 files changed, 10 insertions, 85 deletions
diff --git a/arch/alpha/kernel/vmlinux.lds.S b/arch/alpha/kernel/vmlinux.lds.S
index 6dc03c35caa0..2906665b1c10 100644
--- a/arch/alpha/kernel/vmlinux.lds.S
+++ b/arch/alpha/kernel/vmlinux.lds.S
@@ -1,5 +1,6 @@
1#include <asm-generic/vmlinux.lds.h> 1#include <asm-generic/vmlinux.lds.h>
2#include <asm/page.h> 2#include <asm/page.h>
3#include <asm/thread_info.h>
3 4
4OUTPUT_FORMAT("elf64-alpha") 5OUTPUT_FORMAT("elf64-alpha")
5OUTPUT_ARCH(alpha) 6OUTPUT_ARCH(alpha)
@@ -31,88 +32,21 @@ SECTIONS
31 } :kernel 32 } :kernel
32 33
33 RODATA 34 RODATA
34 35 EXCEPTION_TABLE(16)
35 /* Exception table */
36 . = ALIGN(16);
37 __ex_table : {
38 __start___ex_table = .;
39 *(__ex_table)
40 __stop___ex_table = .;
41 }
42 36
43 /* Will be freed after init */ 37 /* Will be freed after init */
44 . = ALIGN(PAGE_SIZE); 38 __init_begin = ALIGN(PAGE_SIZE);
45 /* Init code and data */ 39 INIT_TEXT_SECTION(PAGE_SIZE)
46 __init_begin = .; 40 INIT_DATA_SECTION(16)
47 .init.text : {
48 _sinittext = .;
49 INIT_TEXT
50 _einittext = .;
51 }
52 .init.data : {
53 INIT_DATA
54 }
55
56 . = ALIGN(16);
57 .init.setup : {
58 __setup_start = .;
59 *(.init.setup)
60 __setup_end = .;
61 }
62
63 . = ALIGN(8);
64 .initcall.init : {
65 __initcall_start = .;
66 INITCALLS
67 __initcall_end = .;
68 }
69
70#ifdef CONFIG_BLK_DEV_INITRD
71 . = ALIGN(PAGE_SIZE);
72 .init.ramfs : {
73 __initramfs_start = .;
74 *(.init.ramfs)
75 __initramfs_end = .;
76 }
77#endif
78
79 . = ALIGN(8);
80 .con_initcall.init : {
81 __con_initcall_start = .;
82 *(.con_initcall.init)
83 __con_initcall_end = .;
84 }
85
86 . = ALIGN(8);
87 SECURITY_INIT
88
89 PERCPU(PAGE_SIZE) 41 PERCPU(PAGE_SIZE)
90 42 /* Align to THREAD_SIZE rather than PAGE_SIZE here so any padding page
91 . = ALIGN(2 * PAGE_SIZE); 43 needed for the THREAD_SIZE aligned init_task gets freed after init */
44 . = ALIGN(THREAD_SIZE);
92 __init_end = .; 45 __init_end = .;
93 /* Freed after init ends here */ 46 /* Freed after init ends here */
94 47
95 /* Note 2 page alignment above. */
96 .data.init_thread : {
97 *(.data.init_thread)
98 }
99
100 . = ALIGN(PAGE_SIZE);
101 .data.page_aligned : {
102 *(.data.page_aligned)
103 }
104
105 . = ALIGN(64);
106 .data.cacheline_aligned : {
107 *(.data.cacheline_aligned)
108 }
109
110 _data = .; 48 _data = .;
111 /* Data */ 49 RW_DATA_SECTION(64, PAGE_SIZE, THREAD_SIZE)
112 .data : {
113 DATA_DATA
114 CONSTRUCTORS
115 }
116 50
117 .got : { 51 .got : {
118 *(.got) 52 *(.got)
@@ -122,16 +56,7 @@ SECTIONS
122 } 56 }
123 _edata = .; /* End of data section */ 57 _edata = .; /* End of data section */
124 58
125 __bss_start = .; 59 BSS_SECTION(0, 0, 0)
126 .sbss : {
127 *(.sbss)
128 *(.scommon)
129 }
130 .bss : {
131 *(.bss)
132 *(COMMON)
133 }
134 __bss_stop = .;
135 _end = .; 60 _end = .;
136 61
137 .mdebug 0 : { 62 .mdebug 0 : {