diff options
author | Sam Ravnborg <sam@ravnborg.org> | 2008-12-27 00:34:41 -0800 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2008-12-27 00:34:41 -0800 |
commit | b74e34dbdeb39136e0557930a373392b7d644f43 (patch) | |
tree | bfe3fb0ba71031cc0a07ee8ee19761b555d5dfe2 /arch/sparc | |
parent | 92d9091f305cc32eb64edc1757d925b93acde6da (diff) | |
download | linux-b74e34dbdeb39136e0557930a373392b7d644f43.tar.gz linux-b74e34dbdeb39136e0557930a373392b7d644f43.tar.bz2 linux-b74e34dbdeb39136e0557930a373392b7d644f43.zip |
sparc: use .data.init_task section for init_thread_union
Use a dedicated aligned section for the init_thread_union
variable and declare this section in vmlinux.lds.
This align sparc with most other architectures. Eventually this allow
the init_task bits to be unified across all architectures.
Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'arch/sparc')
-rw-r--r-- | arch/sparc/kernel/init_task.c | 3 | ||||
-rw-r--r-- | arch/sparc/kernel/vmlinux.lds.S | 9 |
2 files changed, 10 insertions, 2 deletions
diff --git a/arch/sparc/kernel/init_task.c b/arch/sparc/kernel/init_task.c index 8e64ebc445ef..62126e4cec54 100644 --- a/arch/sparc/kernel/init_task.c +++ b/arch/sparc/kernel/init_task.c @@ -23,6 +23,5 @@ EXPORT_SYMBOL(init_task); * in etrap.S which assumes it. */ union thread_union init_thread_union - __attribute__((section (".text\"\n\t#"))) - __attribute__((aligned (THREAD_SIZE))) + __attribute__((section (".data.init_task"))) = { INIT_THREAD_INFO(init_task) }; diff --git a/arch/sparc/kernel/vmlinux.lds.S b/arch/sparc/kernel/vmlinux.lds.S index 4bfbeffb7320..59c8d090920c 100644 --- a/arch/sparc/kernel/vmlinux.lds.S +++ b/arch/sparc/kernel/vmlinux.lds.S @@ -1,7 +1,9 @@ /* ld script for sparc32/sparc64 kernel */ #include <asm-generic/vmlinux.lds.h> + #include <asm/page.h> +#include <asm/thread_info.h> #ifdef CONFIG_SPARC32 #define INITIAL_ADDRESS 0x10000 + SIZEOF_HEADERS @@ -65,8 +67,15 @@ SECTIONS .data.read_mostly : { *(.data.read_mostly) } + /* End of data section */ _edata = .; PROVIDE (edata = .); + + /* init_task */ + . = ALIGN(THREAD_SIZE); + .data.init_task : { + *(.data.init_task) + } .fixup : { __start___fixup = .; *(.fixup) |