diff options
author | Bernd Schmidt <bernd.schmidt@analog.com> | 2007-07-24 22:19:59 -0400 |
---|---|---|
committer | Bryan Wu <bryan.wu@analog.com> | 2007-07-24 22:19:59 -0400 |
commit | 0fa63ad7d1450a7ea2b5e5f60bbc64f5ed5a5adc (patch) | |
tree | 4a9fb8359d41d652d8c1a5f1580c75cb3f87204d /arch/blackfin/kernel/vmlinux.lds.S | |
parent | f1b927dc851a2eb1e13a8d21aca18036f6cb8629 (diff) |
Blackfin arch: fix bug which unaligns the init thread's stack and causes the current macro to fail.
switch to using proper defines this time (THREAD_SIZE and PAGE_SIZE)
instead of just PAGE_SIZE everywhere
Signed-off-by: Mike Frysinger <michael.frysinger@analog.com>
Signed-off-by: Bernd Schmidt <bernd.schmidt@analog.com>
Signed-off-by: Bryan Wu <bryan.wu@analog.com>
Diffstat (limited to 'arch/blackfin/kernel/vmlinux.lds.S')
-rw-r--r-- | arch/blackfin/kernel/vmlinux.lds.S | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/arch/blackfin/kernel/vmlinux.lds.S b/arch/blackfin/kernel/vmlinux.lds.S index d06f860f4790..fb53780247bc 100644 --- a/arch/blackfin/kernel/vmlinux.lds.S +++ b/arch/blackfin/kernel/vmlinux.lds.S | |||
@@ -32,6 +32,7 @@ | |||
32 | #include <asm-generic/vmlinux.lds.h> | 32 | #include <asm-generic/vmlinux.lds.h> |
33 | #include <asm/mem_map.h> | 33 | #include <asm/mem_map.h> |
34 | #include <asm/page.h> | 34 | #include <asm/page.h> |
35 | #include <asm/thread_info.h> | ||
35 | 36 | ||
36 | OUTPUT_FORMAT("elf32-bfin") | 37 | OUTPUT_FORMAT("elf32-bfin") |
37 | ENTRY(__start) | 38 | ENTRY(__start) |
@@ -64,8 +65,12 @@ SECTIONS | |||
64 | 65 | ||
65 | .data : | 66 | .data : |
66 | { | 67 | { |
67 | . = ALIGN(PAGE_SIZE); | 68 | /* make sure the init_task is aligned to the |
69 | * kernel thread size so we can locate the kernel | ||
70 | * stack properly and quickly. | ||
71 | */ | ||
68 | __sdata = .; | 72 | __sdata = .; |
73 | . = ALIGN(THREAD_SIZE); | ||
69 | *(.data.init_task) | 74 | *(.data.init_task) |
70 | DATA_DATA | 75 | DATA_DATA |
71 | CONSTRUCTORS | 76 | CONSTRUCTORS |
@@ -73,14 +78,14 @@ SECTIONS | |||
73 | . = ALIGN(32); | 78 | . = ALIGN(32); |
74 | *(.data.cacheline_aligned) | 79 | *(.data.cacheline_aligned) |
75 | 80 | ||
76 | . = ALIGN(PAGE_SIZE); | 81 | . = ALIGN(THREAD_SIZE); |
77 | __edata = .; | 82 | __edata = .; |
78 | } | 83 | } |
79 | 84 | ||
80 | . = ALIGN(PAGE_SIZE); | ||
81 | ___init_begin = .; | 85 | ___init_begin = .; |
82 | .init : | 86 | .init : |
83 | { | 87 | { |
88 | . = ALIGN(PAGE_SIZE); | ||
84 | __sinittext = .; | 89 | __sinittext = .; |
85 | *(.init.text) | 90 | *(.init.text) |
86 | __einittext = .; | 91 | __einittext = .; |
@@ -153,10 +158,9 @@ SECTIONS | |||
153 | __ebss_b_l1 = .; | 158 | __ebss_b_l1 = .; |
154 | } | 159 | } |
155 | 160 | ||
156 | . = LOADADDR(.data_b_l1) + SIZEOF(.data_b_l1); | 161 | ___init_end = LOADADDR(.data_b_l1) + SIZEOF(.data_b_l1); |
157 | ___init_end = ALIGN(PAGE_SIZE); | ||
158 | 162 | ||
159 | .bss ___init_end : | 163 | .bss LOADADDR(.data_b_l1) + SIZEOF(.data_b_l1) : |
160 | { | 164 | { |
161 | . = ALIGN(4); | 165 | . = ALIGN(4); |
162 | ___bss_start = .; | 166 | ___bss_start = .; |