diff options
Diffstat (limited to 'arch/alpha')
-rw-r--r-- | arch/alpha/kernel/init_task.c | 5 | ||||
-rw-r--r-- | arch/alpha/kernel/vmlinux.lds.S | 95 |
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); | |||
13 | struct task_struct init_task = INIT_TASK(init_task); | 13 | struct task_struct init_task = INIT_TASK(init_task); |
14 | EXPORT_SYMBOL(init_task); | 14 | EXPORT_SYMBOL(init_task); |
15 | 15 | ||
16 | union thread_union init_thread_union | 16 | union 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 | ||
5 | OUTPUT_FORMAT("elf64-alpha") | 6 | OUTPUT_FORMAT("elf64-alpha") |
6 | OUTPUT_ARCH(alpha) | 7 | OUTPUT_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 : { |