Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6
[sfrench/cifs-2.6.git] / arch / blackfin / kernel / vmlinux.lds.S
index d06f860f47900a5b6e09edf4b6629b6c9908c9e7..eec43674a46589a05411566d009ccc585e699904 100644 (file)
@@ -32,6 +32,7 @@
 #include <asm-generic/vmlinux.lds.h>
 #include <asm/mem_map.h>
 #include <asm/page.h>
+#include <asm/thread_info.h>
 
 OUTPUT_FORMAT("elf32-bfin")
 ENTRY(__start)
@@ -48,7 +49,8 @@ SECTIONS
                TEXT_TEXT
                SCHED_TEXT
                LOCK_TEXT
-               *(.text.lock)
+               KPROBES_TEXT
+               *(.text.*)
                *(.fixup)
 
                . = ALIGN(16);
@@ -60,57 +62,74 @@ SECTIONS
                __etext = .;
        }
 
-       RODATA
+       RO_DATA(PAGE_SIZE)
 
        .data :
        {
-               . = ALIGN(PAGE_SIZE);
+               /* make sure the init_task is aligned to the
+                * kernel thread size so we can locate the kernel
+                * stack properly and quickly.
+                */
                __sdata = .;
+               . = ALIGN(THREAD_SIZE);
                *(.data.init_task)
-               DATA_DATA
-               CONSTRUCTORS
 
                . = ALIGN(32);
                *(.data.cacheline_aligned)
 
-               . = ALIGN(PAGE_SIZE);
+               DATA_DATA
+               *(.data.*)
+               CONSTRUCTORS
+
+               . = ALIGN(THREAD_SIZE);
                __edata = .;
        }
 
-       . = ALIGN(PAGE_SIZE);
        ___init_begin = .;
-       .init :
+
+       .init.text :
        {
+               . = ALIGN(PAGE_SIZE);
                __sinittext = .;
                *(.init.text)
                __einittext = .;
+       }
+       .init.data :
+       {
+               . = ALIGN(16);
                *(.init.data)
+       }
+       .init.setup :
+       {
                . = ALIGN(16);
                ___setup_start = .;
                *(.init.setup)
                ___setup_end = .;
-               ___start___param = .;
-               *(__param)
-               ___stop___param = .;
+       }
+       .initcall.init :
+       {
                ___initcall_start = .;
                INITCALLS
                ___initcall_end = .;
+       }
+       .con_initcall.init :
+       {
                ___con_initcall_start = .;
                *(.con_initcall.init)
                ___con_initcall_end = .;
-               ___security_initcall_start = .;
-               *(.security_initcall.init)
-               ___security_initcall_end = .;
+       }
+       SECURITY_INIT
+       .init.ramfs :
+       {
                . = ALIGN(4);
                ___initramfs_start = .;
                *(.init.ramfs)
                ___initramfs_end = .;
-               . = ALIGN(4);
        }
 
        __l1_lma_start = .;
 
-       .text_l1 L1_CODE_START : AT(LOADADDR(.init) + SIZEOF(.init))
+       .text_l1 L1_CODE_START : AT(LOADADDR(.init.ramfs) + SIZEOF(.init.ramfs))
        {
                . = ALIGN(4);
                __stext_l1 = .;
@@ -153,20 +172,25 @@ SECTIONS
                __ebss_b_l1 = .;
        }
 
-       . = LOADADDR(.data_b_l1) + SIZEOF(.data_b_l1);
-       ___init_end = ALIGN(PAGE_SIZE);
+       ___init_end = LOADADDR(.data_b_l1) + SIZEOF(.data_b_l1);
 
-       .bss ___init_end :
+       .bss LOADADDR(.data_b_l1) + SIZEOF(.data_b_l1) :
        {
                . = ALIGN(4);
                ___bss_start = .;
-               *(.bss)
+               *(.bss .bss.*)
                *(COMMON)
                . = ALIGN(4);
                ___bss_stop = .;
                __end = .;
        }
 
+       STABS_DEBUG
+
+       DWARF_DEBUG
+
+       NOTES
+
        /DISCARD/ :
        {
                *(.exit.text)