ARM: linker script: factor out stuff for the DISCARD section
authorNicolas Pitre <nicolas.pitre@linaro.org>
Mon, 5 Mar 2018 21:34:03 +0000 (16:34 -0500)
committerNicolas Pitre <nicolas.pitre@linaro.org>
Sat, 10 Mar 2018 01:19:35 +0000 (20:19 -0500)
Move common entries to vmlinux.lds.h and leave XIP and non-XIP entries
in their respective file. The ARM_NOMMU_KEEP() and ARM_NOMMU_DISCARD()
macros are added to be usable within the definition of ARM_DISCARD macro.

Signed-off-by: Nicolas Pitre <nico@linaro.org>
Tested-by: Chris Brandt <Chris.Brandt@renesas.com>
arch/arm/kernel/vmlinux-xip.lds.S
arch/arm/kernel/vmlinux.lds.S
arch/arm/kernel/vmlinux.lds.h

index 0a8922b6161301d8fad34e545f2e4d32356fc7d1..4bd422966d92f8eda96748c2b89cc8376b4978d5 100644 (file)
@@ -38,20 +38,9 @@ SECTIONS
         * unwind sections get included.
         */
        /DISCARD/ : {
-               *(.ARM.exidx.exit.text)
-               *(.ARM.extab.exit.text)
-               ARM_CPU_DISCARD(*(.ARM.exidx.cpuexit.text))
-               ARM_CPU_DISCARD(*(.ARM.extab.cpuexit.text))
-               ARM_EXIT_DISCARD(EXIT_TEXT)
-               ARM_EXIT_DISCARD(EXIT_DATA)
-               EXIT_CALL
-#ifndef CONFIG_MMU
-               *(.text.fixup)
-               *(__ex_table)
-#endif
+               ARM_DISCARD
                *(.alt.smp.init)
-               *(.discard)
-               *(.discard.*)
+               *(.pv_table)
        }
 
        . = XIP_VIRT_ADDR(CONFIG_XIP_PHYS_ADDR);
@@ -89,9 +78,7 @@ SECTIONS
        . = ALIGN(4);
        __ex_table : AT(ADDR(__ex_table) - LOAD_OFFSET) {
                __start___ex_table = .;
-#ifdef CONFIG_MMU
-               *(__ex_table)
-#endif
+               ARM_MMU_KEEP(*(__ex_table))
                __stop___ex_table = .;
        }
 
index 6a6eb483d92c007069da7bb96cb1dd27a8a1f6f0..b34fbafd543a69d6e12d26768c2cbf383f20e25b 100644 (file)
@@ -38,22 +38,10 @@ SECTIONS
         * unwind sections get included.
         */
        /DISCARD/ : {
-               *(.ARM.exidx.exit.text)
-               *(.ARM.extab.exit.text)
-               ARM_CPU_DISCARD(*(.ARM.exidx.cpuexit.text))
-               ARM_CPU_DISCARD(*(.ARM.extab.cpuexit.text))
-               ARM_EXIT_DISCARD(EXIT_TEXT)
-               ARM_EXIT_DISCARD(EXIT_DATA)
-               EXIT_CALL
-#ifndef CONFIG_MMU
-               *(.text.fixup)
-               *(__ex_table)
-#endif
+               ARM_DISCARD
 #ifndef CONFIG_SMP_ON_UP
                *(.alt.smp.init)
 #endif
-               *(.discard)
-               *(.discard.*)
        }
 
        . = PAGE_OFFSET + TEXT_OFFSET;
@@ -98,9 +86,7 @@ SECTIONS
        . = ALIGN(4);
        __ex_table : AT(ADDR(__ex_table) - LOAD_OFFSET) {
                __start___ex_table = .;
-#ifdef CONFIG_MMU
-               *(__ex_table)
-#endif
+               ARM_MMU_KEEP(*(__ex_table))
                __stop___ex_table = .;
        }
 
index 0a86e8a1119e189589c130912b50f367bb2111ef..1258b66487b22b6c534630461b0981599c28eec6 100644 (file)
 #define ARM_EXIT_DISCARD(x)    x
 #endif
 
+#ifdef CONFIG_MMU
+#define ARM_MMU_KEEP(x)                x
+#define ARM_MMU_DISCARD(x)
+#else
+#define ARM_MMU_KEEP(x)
+#define ARM_MMU_DISCARD(x)     x
+#endif
+
 #define PROC_INFO                                                      \
                . = ALIGN(4);                                           \
                VMLINUX_SYMBOL(__proc_info_begin) = .;                  \
                *(.hyp.idmap.text)                                      \
                VMLINUX_SYMBOL(__hyp_idmap_text_end) = .;
 
+#define ARM_DISCARD                                                    \
+               *(.ARM.exidx.exit.text)                                 \
+               *(.ARM.extab.exit.text)                                 \
+               ARM_CPU_DISCARD(*(.ARM.exidx.cpuexit.text))             \
+               ARM_CPU_DISCARD(*(.ARM.extab.cpuexit.text))             \
+               ARM_EXIT_DISCARD(EXIT_TEXT)                             \
+               ARM_EXIT_DISCARD(EXIT_DATA)                             \
+               EXIT_CALL                                               \
+               ARM_MMU_DISCARD(*(.text.fixup))                         \
+               ARM_MMU_DISCARD(*(__ex_table))                          \
+               *(.discard)                                             \
+               *(.discard.*)