Merge branches 'release', 'asus', 'sony-laptop' and 'thinkpad' into release
[pandora-kernel.git] / arch / mips / kernel / vmlinux.lds.S
index 03ad46e..b5470ce 100644 (file)
@@ -5,6 +5,10 @@
 #define mips mips
 OUTPUT_ARCH(mips)
 ENTRY(kernel_entry)
+PHDRS {
+       text PT_LOAD FLAGS(7);  /* RWX */
+       note PT_NOTE FLAGS(4);  /* R__ */
+}
 jiffies = JIFFIES;
 
 SECTIONS
@@ -31,9 +35,10 @@ SECTIONS
                TEXT_TEXT
                SCHED_TEXT
                LOCK_TEXT
+               KPROBES_TEXT
                *(.fixup)
                *(.gnu.warning)
-       } =0
+       } :text = 0
        _etext = .;     /* End of text section */
 
        /* Exception table */
@@ -50,25 +55,31 @@ SECTIONS
                *(__dbe_table)
                __stop___dbe_table = .;
        }
+
+       NOTES :text :note
+       .dummy : { *(.dummy) } :text
+
        RODATA
 
        /* writeable */
        .data : {       /* Data */
-         . = . + DATAOFFSET;           /* for CONFIG_MAPPED_KERNEL */
-         /*
-          * This ALIGN is needed as a workaround for a bug a gcc bug upto 4.1 which
-          * limits the maximum alignment to at most 32kB and results in the following
-          * warning:
-          *
-          *  CC      arch/mips/kernel/init_task.o
-          * arch/mips/kernel/init_task.c:30: warning: alignment of ‘init_thread_union’
-          * is greater than maximum object file alignment.  Using 32768
-          */
-         . = ALIGN(_PAGE_SIZE);
-         *(.data.init_task)
-
-         DATA_DATA
-         CONSTRUCTORS
+               . = . + DATAOFFSET;             /* for CONFIG_MAPPED_KERNEL */
+               /*
+                * This ALIGN is needed as a workaround for a bug a
+                * gcc bug upto 4.1 which limits the maximum alignment
+                * to at most 32kB and results in the following
+                * warning:
+                *
+                *  CC      arch/mips/kernel/init_task.o
+                * arch/mips/kernel/init_task.c:30: warning: alignment
+                * of ‘init_thread_union’ is greater than maximum
+                * object file alignment.  Using 32768
+                */
+               . = ALIGN(_PAGE_SIZE);
+               *(.data.init_task)
+
+               DATA_DATA
+               CONSTRUCTORS
        }
        _gp = . + 0x8000;
        .lit8 : {
@@ -103,11 +114,11 @@ SECTIONS
        __init_begin = .;
        .init.text : {
                _sinittext = .;
-               *(.init.text)
+               INIT_TEXT
                _einittext = .;
        }
        .init.data : {
-               *(.init.data)
+               INIT_DATA
        }
        . = ALIGN(16);
        .init.setup : {
@@ -133,10 +144,10 @@ SECTIONS
         * references from .rodata
         */
        .exit.text : {
-               *(.exit.text)
+               EXIT_TEXT
        }
        .exit.data : {
-               *(.exit.data)
+               EXIT_DATA
        }
 #if defined(CONFIG_BLK_DEV_INITRD)
        . = ALIGN(_PAGE_SIZE);
@@ -200,7 +211,4 @@ SECTIONS
                *(.gptab.bss)
                *(.gptab.sbss)
        }
-       .note : {
-               *(.note)
-       }
 }