Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu
[pandora-kernel.git] / arch / arm / kernel / vmlinux.lds.S
index 065d35d..1953e3d 100644 (file)
@@ -8,6 +8,19 @@
 #include <asm/memory.h>
 #include <asm/page.h>
        
+#define PROC_INFO                                                      \
+       VMLINUX_SYMBOL(__proc_info_begin) = .;                          \
+       *(.proc.info.init)                                              \
+       VMLINUX_SYMBOL(__proc_info_end) = .;
+
+#ifdef CONFIG_HOTPLUG_CPU
+#define ARM_CPU_DISCARD(x)
+#define ARM_CPU_KEEP(x)                x
+#else
+#define ARM_CPU_DISCARD(x)     x
+#define ARM_CPU_KEEP(x)
+#endif
+
 OUTPUT_ARCH(arm)
 ENTRY(stext)
 
@@ -31,9 +44,7 @@ SECTIONS
                        HEAD_TEXT
                        INIT_TEXT
                _einittext = .;
-               __proc_info_begin = .;
-                       *(.proc.info.init)
-               __proc_info_end = .;
+               ARM_CPU_DISCARD(PROC_INFO)
                __arch_info_begin = .;
                        *(.arch.info.init)
                __arch_info_end = .;
@@ -73,10 +84,8 @@ SECTIONS
        /DISCARD/ : {
                *(.ARM.exidx.exit.text)
                *(.ARM.extab.exit.text)
-#ifndef CONFIG_HOTPLUG_CPU
-               *(.ARM.exidx.cpuexit.text)
-               *(.ARM.extab.cpuexit.text)
-#endif
+               ARM_CPU_DISCARD(*(.ARM.exidx.cpuexit.text))
+               ARM_CPU_DISCARD(*(.ARM.extab.cpuexit.text))
 #ifndef CONFIG_HOTPLUG
                *(.ARM.exidx.devexit.text)
                *(.ARM.extab.devexit.text)
@@ -105,6 +114,7 @@ SECTIONS
                        *(.glue_7)
                        *(.glue_7t)
                *(.got)                 /* Global offset table          */
+                       ARM_CPU_KEEP(PROC_INFO)
        }
 
        RO_DATA(PAGE_SIZE)