Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6
[safe/jmp/linux-2.6] / include / asm-generic / vmlinux.lds.h
index e0a56fb..7440a0d 100644 (file)
@@ -29,8 +29,7 @@
 #define CPU_DISCARD(sec) *(.cpu##sec)
 #endif
 
-#if defined(CONFIG_MEMORY_HOTPLUG) || defined(CONFIG_ACPI_HOTPLUG_MEMORY) \
-       || defined(CONFIG_ACPI_HOTPLUG_MEMORY_MODULE)
+#if defined(CONFIG_MEMORY_HOTPLUG)
 #define MEM_KEEP(sec)    *(.mem##sec)
 #define MEM_DISCARD(sec)
 #else
@@ -43,6 +42,7 @@
 #define DATA_DATA                                                      \
        *(.data)                                                        \
        *(.data.init.refok)                                             \
+       *(.ref.data)                                                    \
        DEV_KEEP(init.data)                                             \
        DEV_KEEP(exit.data)                                             \
        CPU_KEEP(init.data)                                             \
@@ -67,6 +67,8 @@
                *(.rodata1)                                             \
        }                                                               \
                                                                        \
+       BUG_TABLE                                                       \
+                                                                       \
        /* PCI quirks */                                                \
        .pci_fixup        : AT(ADDR(.pci_fixup) - LOAD_OFFSET) {        \
                VMLINUX_SYMBOL(__start_pci_fixups_early) = .;           \
                VMLINUX_SYMBOL(__start_pci_fixups_resume) = .;          \
                *(.pci_fixup_resume)                                    \
                VMLINUX_SYMBOL(__end_pci_fixups_resume) = .;            \
+               VMLINUX_SYMBOL(__start_pci_fixups_resume_early) = .;    \
+               *(.pci_fixup_resume_early)                              \
+               VMLINUX_SYMBOL(__end_pci_fixups_resume_early) = .;      \
+               VMLINUX_SYMBOL(__start_pci_fixups_suspend) = .;         \
+               *(.pci_fixup_suspend)                                   \
+               VMLINUX_SYMBOL(__end_pci_fixups_suspend) = .;           \
+       }                                                               \
+                                                                       \
+       /* Built-in firmware blobs */                                   \
+       .builtin_fw        : AT(ADDR(.builtin_fw) - LOAD_OFFSET) {      \
+               VMLINUX_SYMBOL(__start_builtin_fw) = .;                 \
+               *(.builtin_fw)                                          \
+               VMLINUX_SYMBOL(__end_builtin_fw) = .;                   \
        }                                                               \
                                                                        \
        /* RapidIO route ops */                                         \
                VMLINUX_SYMBOL(__end_rio_route_ops) = .;                \
        }                                                               \
                                                                        \
+       TRACEDATA                                                       \
+                                                                       \
        /* Kernel symbol table: Normal symbols */                       \
        __ksymtab         : AT(ADDR(__ksymtab) - LOAD_OFFSET) {         \
                VMLINUX_SYMBOL(__start___ksymtab) = .;                  \
                                                                        \
        /* __*init sections */                                          \
        __init_rodata : AT(ADDR(__init_rodata) - LOAD_OFFSET) {         \
+               *(.ref.rodata)                                          \
                DEV_KEEP(init.rodata)                                   \
                DEV_KEEP(exit.rodata)                                   \
                CPU_KEEP(init.rodata)                                   \
                VMLINUX_SYMBOL(__start___param) = .;                    \
                *(__param)                                              \
                VMLINUX_SYMBOL(__stop___param) = .;                     \
+               . = ALIGN((align));                                     \
                VMLINUX_SYMBOL(__end_rodata) = .;                       \
        }                                                               \
        . = ALIGN((align));
  * during second ld run in second ld pass when generating System.map */
 #define TEXT_TEXT                                                      \
                ALIGN_FUNCTION();                                       \
+               *(.text.hot)                                            \
                *(.text)                                                \
+               *(.ref.text)                                            \
                *(.text.init.refok)                                     \
                *(.exit.text.refok)                                     \
        DEV_KEEP(init.text)                                             \
        CPU_KEEP(init.text)                                             \
        CPU_KEEP(exit.text)                                             \
        MEM_KEEP(init.text)                                             \
-       MEM_KEEP(exit.text)
+       MEM_KEEP(exit.text)                                             \
+               *(.text.unlikely)
 
 
 /* sched.text is aling to function alignment to secure we have same
                *(.kprobes.text)                                        \
                VMLINUX_SYMBOL(__kprobes_text_end) = .;
 
+/* Section used for early init (in .S files) */
+#define HEAD_TEXT  *(.head.text)
+
 /* init and exit section handling */
 #define INIT_DATA                                                      \
        *(.init.data)                                                   \
                .stab.indexstr 0 : { *(.stab.indexstr) }                \
                .comment 0 : { *(.comment) }
 
+#ifdef CONFIG_GENERIC_BUG
 #define BUG_TABLE                                                      \
        . = ALIGN(8);                                                   \
        __bug_table : AT(ADDR(__bug_table) - LOAD_OFFSET) {             \
-               __start___bug_table = .;                                \
+               VMLINUX_SYMBOL(__start___bug_table) = .;                \
                *(__bug_table)                                          \
-               __stop___bug_table = .;                                 \
+               VMLINUX_SYMBOL(__stop___bug_table) = .;                 \
        }
+#else
+#define BUG_TABLE
+#endif
+
+#ifdef CONFIG_PM_TRACE
+#define TRACEDATA                                                      \
+       . = ALIGN(4);                                                   \
+       .tracedata : AT(ADDR(.tracedata) - LOAD_OFFSET) {               \
+               VMLINUX_SYMBOL(__tracedata_start) = .;                  \
+               *(.tracedata)                                           \
+               VMLINUX_SYMBOL(__tracedata_end) = .;                    \
+       }
+#else
+#define TRACEDATA
+#endif
 
 #define NOTES                                                          \
        .notes : AT(ADDR(.notes) - LOAD_OFFSET) {                       \
        }
 
 #define INITCALLS                                                      \
+       *(.initcallearly.init)                                          \
+       VMLINUX_SYMBOL(__early_initcall_end) = .;                       \
        *(.initcall0.init)                                              \
        *(.initcall0s.init)                                             \
        *(.initcall1.init)                                              \
 
 #define PERCPU(align)                                                  \
        . = ALIGN(align);                                               \
-       __per_cpu_start = .;                                            \
+       VMLINUX_SYMBOL(__per_cpu_start) = .;                            \
        .data.percpu  : AT(ADDR(.data.percpu) - LOAD_OFFSET) {          \
+               *(.data.percpu.page_aligned)                            \
                *(.data.percpu)                                         \
                *(.data.percpu.shared_aligned)                          \
        }                                                               \
-       __per_cpu_end = .;
+       VMLINUX_SYMBOL(__per_cpu_end) = .;