mirror of https://gitee.com/openkylin/linux.git
ARM: linker script: factor out stuff for the DISCARD section
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>
This commit is contained in:
parent
2f181e0ba8
commit
ab42fad009
|
@ -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 = .;
|
||||
}
|
||||
|
||||
|
|
|
@ -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 = .;
|
||||
}
|
||||
|
||||
|
|
|
@ -17,6 +17,14 @@
|
|||
#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) = .; \
|
||||
|
@ -38,3 +46,15 @@
|
|||
*(.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.*)
|
||||
|
|
Loading…
Reference in New Issue