diff options
Diffstat (limited to 'arch/alpha/kernel/vmlinux.lds.S')
-rw-r--r-- | arch/alpha/kernel/vmlinux.lds.S | 95 |
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 | ||
4 | OUTPUT_FORMAT("elf64-alpha") | 5 | OUTPUT_FORMAT("elf64-alpha") |
5 | OUTPUT_ARCH(alpha) | 6 | OUTPUT_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 : { |