aboutsummaryrefslogtreecommitdiffstats
path: root/arch/blackfin/kernel/vmlinux.lds.S
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--arch/blackfin/kernel/vmlinux.lds.S47
1 files changed, 19 insertions, 28 deletions
diff --git a/arch/blackfin/kernel/vmlinux.lds.S b/arch/blackfin/kernel/vmlinux.lds.S
index 5bdc0f79bb1a..9b75bc83c71f 100644
--- a/arch/blackfin/kernel/vmlinux.lds.S
+++ b/arch/blackfin/kernel/vmlinux.lds.S
@@ -41,9 +41,6 @@ _jiffies = _jiffies_64;
SECTIONS
{
. = CONFIG_BOOT_LOAD;
- /* Neither the text, ro_data or bss section need to be aligned
- * So pack them back to back
- */
.text :
{
__text = .;
@@ -61,25 +58,22 @@ SECTIONS
*(__ex_table)
___stop___ex_table = .;
+ . = ALIGN(4);
__etext = .;
}
- /* Just in case the first read only is a 32-bit access */
- RO_DATA(4)
-
- .bss :
- {
- . = ALIGN(4);
- ___bss_start = .;
- *(.bss .bss.*)
- *(COMMON)
- ___bss_stop = .;
- }
+ RO_DATA(PAGE_SIZE)
.data :
{
+ /* make sure the init_task is aligned to the
+ * kernel thread size so we can locate the kernel
+ * stack properly and quickly.
+ */
__sdata = .;
- /* This gets done first, so the glob doesn't suck it in */
+ . = ALIGN(THREAD_SIZE);
+ *(.data.init_task)
+
. = ALIGN(32);
*(.data.cacheline_aligned)
@@ -87,22 +81,10 @@ SECTIONS
*(.data.*)
CONSTRUCTORS
- /* make sure the init_task is aligned to the
- * kernel thread size so we can locate the kernel
- * stack properly and quickly.
- */
. = ALIGN(THREAD_SIZE);
- *(.init_task.data)
-
__edata = .;
}
- /* The init section should be last, so when we free it, it goes into
- * the general memory pool, and (hopefully) will decrease fragmentation
- * a tiny bit. The init section has a _requirement_ that it be
- * PAGE_SIZE aligned
- */
- . = ALIGN(PAGE_SIZE);
___init_begin = .;
.init.text :
@@ -197,7 +179,16 @@ SECTIONS
. = ALIGN(PAGE_SIZE);
___init_end = .;
- __end =.;
+ .bss :
+ {
+ . = ALIGN(4);
+ ___bss_start = .;
+ *(.bss .bss.*)
+ *(COMMON)
+ . = ALIGN(4);
+ ___bss_stop = .;
+ __end = .;
+ }
STABS_DEBUG