]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - arch/powerpc/kernel/vmlinux.lds.S
[PATCH] powerpc: Merge signal.h
[karo-tx-linux.git] / arch / powerpc / kernel / vmlinux.lds.S
index 0587d9c4609d4e01696da915a7a3f582d5c3156c..7fa7b15fd8e69f7065080855f18d59ef7405db84 100644 (file)
@@ -1,9 +1,14 @@
 #include <linux/config.h>
 #ifdef CONFIG_PPC64
 #include <asm/page.h>
+#else
+#define PAGE_SIZE      4096
+#define KERNELBASE     CONFIG_KERNEL_START
 #endif
 #include <asm-generic/vmlinux.lds.h>
 
+ENTRY(_stext)
+
 #ifdef CONFIG_PPC64
 OUTPUT_ARCH(powerpc:common64)
 jiffies = jiffies_64;
@@ -16,49 +21,17 @@ SECTIONS
   /* Sections to be discarded. */
   /DISCARD/ : {
     *(.exitcall.exit)
-#ifdef CONFIG_PPC32
     *(.exit.data)
-#endif
   }
 
+  . = KERNELBASE;
 
   /* Read-only sections, merged into text segment: */
-#ifdef CONFIG_PPC32
-  . = + SIZEOF_HEADERS;
-  .interp : { *(.interp) }
-  .hash          : { *(.hash)          }
-  .dynsym        : { *(.dynsym)                }
-  .dynstr        : { *(.dynstr)                }
-  .rel.text      : { *(.rel.text)              }
-  .rela.text     : { *(.rela.text)     }
-  .rel.data      : { *(.rel.data)              }
-  .rela.data     : { *(.rela.data)     }
-  .rel.rodata    : { *(.rel.rodata)    }
-  .rela.rodata   : { *(.rela.rodata)   }
-  .rel.got       : { *(.rel.got)               }
-  .rela.got      : { *(.rela.got)              }
-  .rel.ctors     : { *(.rel.ctors)     }
-  .rela.ctors    : { *(.rela.ctors)    }
-  .rel.dtors     : { *(.rel.dtors)     }
-  .rela.dtors    : { *(.rela.dtors)    }
-  .rel.bss       : { *(.rel.bss)               }
-  .rela.bss      : { *(.rela.bss)              }
-  .rel.plt       : { *(.rel.plt)               }
-  .rela.plt      : { *(.rela.plt)              }
-/*  .init          : { *(.init)        } =0*/
-  .plt : { *(.plt) }
-#endif
   .text : {
-#ifdef CONFIG_PPC64
     *(.text .text.*)
-#else
-    *(.text)
-#endif
     SCHED_TEXT
     LOCK_TEXT
-#ifdef CONFIG_PPC64
     KPROBES_TEXT
-#endif
     *(.fixup)
 #ifdef CONFIG_PPC32
     *(.got1)
@@ -106,7 +79,8 @@ SECTIONS
 
 #ifdef CONFIG_PPC32
   /* Read-write section, merged into data segment: */
-  . = ALIGN(4096);
+  . = ALIGN(PAGE_SIZE);
+  _sdata = .;
   .data    :
   {
     *(.data)
@@ -118,10 +92,10 @@ SECTIONS
     CONSTRUCTORS
   }
 
-  . = ALIGN(4096);
+  . = ALIGN(PAGE_SIZE);
   __nosave_begin = .;
   .data_nosave : { *(.data.nosave) }
-  . = ALIGN(4096);
+  . = ALIGN(PAGE_SIZE);
   __nosave_end = .;
 
   . = ALIGN(32);
@@ -132,12 +106,10 @@ SECTIONS
 
   . = ALIGN(8192);
   .data.init_task : { *(.data.init_task) }
+#endif
 
-  . = ALIGN(4096);
-#else
   /* will be freed after init */
   . = ALIGN(PAGE_SIZE);
-#endif
   __init_begin = .;
   .init.text : {
        _sinittext = .;
@@ -150,9 +122,6 @@ SECTIONS
   .exit.text : { *(.exit.text) }
 #endif
   .init.data : {
-#ifdef CONFIG_PPC64
-    *(.init.data)
-#else
     *(.init.data);
     __vtop_table_begin = .;
     *(.vtop_fixup);
@@ -160,31 +129,17 @@ SECTIONS
     __ptov_table_begin = .;
     *(.ptov_fixup);
     __ptov_table_end = .;
-#endif
   }
 
   . = ALIGN(16);
-#ifdef CONFIG_PPC32
-  __setup_start = .;
-#endif
   .init.setup : {
-#ifdef CONFIG_PPC64
     __setup_start = .;
-#endif
     *(.init.setup)
-#ifdef CONFIG_PPC64
     __setup_end = .;
-#endif
   }
-#ifdef CONFIG_PPC32
-  __setup_end = .;
 
-  __initcall_start = .;
-#endif
   .initcall.init : {
-#ifdef CONFIG_PPC64
        __initcall_start = .;
-#endif
        *(.initcall1.init)
        *(.initcall2.init)
        *(.initcall3.init)
@@ -192,27 +147,14 @@ SECTIONS
        *(.initcall5.init)
        *(.initcall6.init)
        *(.initcall7.init)
-#ifdef CONFIG_PPC64
        __initcall_end = .;
-#endif
   }
-#ifdef CONFIG_PPC32
-  __initcall_end = .;
 
-  __con_initcall_start = .;
-#endif
   .con_initcall.init : {
-#ifdef CONFIG_PPC64
     __con_initcall_start = .;
-#endif
     *(.con_initcall.init)
-#ifdef CONFIG_PPC64
     __con_initcall_end = .;
-#endif
   }
-#ifdef CONFIG_PPC32
-  __con_initcall_end = .;
-#endif
 
   SECURITY_INIT
 
@@ -231,31 +173,23 @@ SECTIONS
 
 #ifdef CONFIG_PPC32
   . = ALIGN(32);
-  __per_cpu_start = .;
 #endif
   .data.percpu : {
-#ifdef CONFIG_PPC64
     __per_cpu_start = .;
-#endif
     *(.data.percpu)
-#ifdef CONFIG_PPC64
     __per_cpu_end = .;
-#endif
   }
-#ifdef CONFIG_PPC32
-  __per_cpu_end = .;
-#endif
 
-#ifdef CONFIG_PPC64
  . = ALIGN(PAGE_SIZE);
+#ifdef CONFIG_PPC64
  . = ALIGN(16384);
  __init_end = .;
  /* freed after init ends here */
 
-
  /* Read/write sections */
  . = ALIGN(PAGE_SIZE);
  . = ALIGN(16384);
+ _sdata = .;
  /* The initial task and kernel stack */
  .data.init_task : {
       *(.data.init_task)
@@ -287,10 +221,8 @@ SECTIONS
       _edata = .;
       }
 
-
   . = ALIGN(PAGE_SIZE);
 #else
-  . = ALIGN(4096);
   __initramfs_start = .;
   .init.ramfs : {
     *(.init.ramfs)
@@ -306,23 +238,15 @@ SECTIONS
 
   __bss_start = .;
 #endif
+
   .bss : {
-#ifdef CONFIG_PPC64
     __bss_start = .;
-#else
    *(.sbss) *(.scommon)
    *(.dynbss)
-#endif
    *(.bss)
-#ifdef CONFIG_PPC32
    *(COMMON)
-#else
   __bss_stop = .;
-#endif
   }
-#ifdef CONFIG_PPC32
-  __bss_stop = .;
-#endif
 
 #ifdef CONFIG_PPC64
   . = ALIGN(PAGE_SIZE);