aboutsummaryrefslogtreecommitdiffstats
path: root/arch/alpha
diff options
context:
space:
mode:
Diffstat (limited to 'arch/alpha')
-rw-r--r--arch/alpha/kernel/init_task.c5
-rw-r--r--arch/alpha/kernel/vmlinux.lds.S95
2 files changed, 12 insertions, 88 deletions
diff --git a/arch/alpha/kernel/init_task.c b/arch/alpha/kernel/init_task.c
index 19b86328ffd7..6f80ca4f9766 100644
--- a/arch/alpha/kernel/init_task.c
+++ b/arch/alpha/kernel/init_task.c
@@ -13,6 +13,5 @@ static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand);
13struct task_struct init_task = INIT_TASK(init_task); 13struct task_struct init_task = INIT_TASK(init_task);
14EXPORT_SYMBOL(init_task); 14EXPORT_SYMBOL(init_task);
15 15
16union thread_union init_thread_union 16union thread_union init_thread_union __init_task_data =
17 __attribute__((section(".data.init_thread"))) 17 { INIT_THREAD_INFO(init_task) };
18 = { INIT_THREAD_INFO(init_task) };
diff --git a/arch/alpha/kernel/vmlinux.lds.S b/arch/alpha/kernel/vmlinux.lds.S
index 55c3b23612a8..ecf4d488333d 100644
--- a/arch/alpha/kernel/vmlinux.lds.S
+++ b/arch/alpha/kernel/vmlinux.lds.S
@@ -1,6 +1,7 @@
1#include <asm-generic/vmlinux.lds.h> 1#include <asm-generic/vmlinux.lds.h>
2#include <asm/thread_info.h> 2#include <asm/thread_info.h>
3#include <asm/page.h> 3#include <asm/page.h>
4#include <asm/thread_info.h>
4 5
5OUTPUT_FORMAT("elf64-alpha") 6OUTPUT_FORMAT("elf64-alpha")
6OUTPUT_ARCH(alpha) 7OUTPUT_ARCH(alpha)
@@ -32,88 +33,21 @@ SECTIONS
32 } :kernel 33 } :kernel
33 34
34 RODATA 35 RODATA
35 36 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 37
44 /* Will be freed after init */ 38 /* Will be freed after init */
45 . = ALIGN(PAGE_SIZE); 39 __init_begin = ALIGN(PAGE_SIZE);
46 /* Init code and data */ 40 INIT_TEXT_SECTION(PAGE_SIZE)
47 __init_begin = .; 41 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) 42 PERCPU(PAGE_SIZE)
91 43 /* Align to THREAD_SIZE rather than PAGE_SIZE here so any padding page
92 . = ALIGN(2 * PAGE_SIZE); 44 needed for the THREAD_SIZE aligned init_task gets freed after init */
45 . = ALIGN(THREAD_SIZE);
93 __init_end = .; 46 __init_end = .;
94 /* Freed after init ends here */ 47 /* Freed after init ends here */
95 48
96 /* Note 2 page alignment above. */
97 .data.init_thread : {
98 *(.data.init_thread)
99 }
100
101 . = ALIGN(PAGE_SIZE);
102 .data.page_aligned : {
103 *(.data.page_aligned)
104 }
105
106 . = ALIGN(64);
107 .data.cacheline_aligned : {
108 *(.data.cacheline_aligned)
109 }
110
111 _data = .; 49 _data = .;
112 /* Data */ 50 RW_DATA_SECTION(64, PAGE_SIZE, THREAD_SIZE)
113 .data : {
114 DATA_DATA
115 CONSTRUCTORS
116 }
117 51
118 .got : { 52 .got : {
119 *(.got) 53 *(.got)
@@ -123,16 +57,7 @@ SECTIONS
123 } 57 }
124 _edata = .; /* End of data section */ 58 _edata = .; /* End of data section */
125 59
126 __bss_start = .; 60 BSS_SECTION(0, 0, 0)
127 .sbss : {
128 *(.sbss)
129 *(.scommon)
130 }
131 .bss : {
132 *(.bss)
133 *(COMMON)
134 }
135 __bss_stop = .;
136 _end = .; 61 _end = .;
137 62
138 .mdebug 0 : { 63 .mdebug 0 : {