Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2f181e0b authored by Nicolas Pitre's avatar Nicolas Pitre
Browse files

ARM: linker script: factor out some common definitions between XIP and non-XIP



Lots of duplications between vmlinux.lds.S and vmlinux-xip.lds.S.
This may lead to one file being updated but not the other. For example,
SOFTIRQENTRY_TEXT and HYPERVISOR_TEXT were missing from the XIP version.

This creates vmlinux.lds.h where a bunch of common defines are moved.

Signed-off-by: default avatarNicolas Pitre <nico@linaro.org>
Tested-by: default avatarChris Brandt <Chris.Brandt@renesas.com>
parent 91ab883e
Loading
Loading
Loading
Loading
+3 −32
Original line number Diff line number Diff line
@@ -15,38 +15,7 @@
#include <asm/memory.h>
#include <asm/page.h>

#define PROC_INFO							\
	. = ALIGN(4);							\
	VMLINUX_SYMBOL(__proc_info_begin) = .;				\
	*(.proc.info.init)						\
	VMLINUX_SYMBOL(__proc_info_end) = .;

#define IDMAP_TEXT							\
	ALIGN_FUNCTION();						\
	VMLINUX_SYMBOL(__idmap_text_start) = .;				\
	*(.idmap.text)							\
	VMLINUX_SYMBOL(__idmap_text_end) = .;				\
	. = ALIGN(PAGE_SIZE);						\
	VMLINUX_SYMBOL(__hyp_idmap_text_start) = .;			\
	*(.hyp.idmap.text)						\
	VMLINUX_SYMBOL(__hyp_idmap_text_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

#if (defined(CONFIG_SMP_ON_UP) && !defined(CONFIG_DEBUG_SPINLOCK)) || \
	defined(CONFIG_GENERIC_BUG)
#define ARM_EXIT_KEEP(x)	x
#define ARM_EXIT_DISCARD(x)
#else
#define ARM_EXIT_KEEP(x)
#define ARM_EXIT_DISCARD(x)	x
#endif
#include "vmlinux.lds.h"

OUTPUT_ARCH(arm)
ENTRY(stext)
@@ -100,10 +69,12 @@ SECTIONS
			*(.entry.text)
			__entry_text_end = .;
			IRQENTRY_TEXT
			SOFTIRQENTRY_TEXT
			TEXT_TEXT
			SCHED_TEXT
			CPUIDLE_TEXT
			LOCK_TEXT
			HYPERVISOR_TEXT
			KPROBES_TEXT
			*(.gnu.warning)
			*(.glue_7)
+1 −37
Original line number Diff line number Diff line
@@ -15,43 +15,7 @@
#include <asm/page.h>
#include <asm/pgtable.h>

#define PROC_INFO							\
	. = ALIGN(4);							\
	VMLINUX_SYMBOL(__proc_info_begin) = .;				\
	*(.proc.info.init)						\
	VMLINUX_SYMBOL(__proc_info_end) = .;

#define HYPERVISOR_TEXT							\
	VMLINUX_SYMBOL(__hyp_text_start) = .;				\
	*(.hyp.text)							\
	VMLINUX_SYMBOL(__hyp_text_end) = .;

#define IDMAP_TEXT							\
	ALIGN_FUNCTION();						\
	VMLINUX_SYMBOL(__idmap_text_start) = .;				\
	*(.idmap.text)							\
	VMLINUX_SYMBOL(__idmap_text_end) = .;				\
	. = ALIGN(PAGE_SIZE);						\
	VMLINUX_SYMBOL(__hyp_idmap_text_start) = .;			\
	*(.hyp.idmap.text)						\
	VMLINUX_SYMBOL(__hyp_idmap_text_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

#if (defined(CONFIG_SMP_ON_UP) && !defined(CONFIG_DEBUG_SPINLOCK)) || \
	defined(CONFIG_GENERIC_BUG) || defined(CONFIG_JUMP_LABEL)
#define ARM_EXIT_KEEP(x)	x
#define ARM_EXIT_DISCARD(x)
#else
#define ARM_EXIT_KEEP(x)
#define ARM_EXIT_DISCARD(x)	x
#endif
#include "vmlinux.lds.h"

OUTPUT_ARCH(arm)
ENTRY(stext)
+40 −0
Original line number Diff line number Diff line
/* SPDX-License-Identifier: GPL-2.0 */

#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

#if (defined(CONFIG_SMP_ON_UP) && !defined(CONFIG_DEBUG_SPINLOCK)) || \
	defined(CONFIG_GENERIC_BUG) || defined(CONFIG_JUMP_LABEL)
#define ARM_EXIT_KEEP(x)	x
#define ARM_EXIT_DISCARD(x)
#else
#define ARM_EXIT_KEEP(x)
#define ARM_EXIT_DISCARD(x)	x
#endif

#define PROC_INFO							\
		. = ALIGN(4);						\
		VMLINUX_SYMBOL(__proc_info_begin) = .;			\
		*(.proc.info.init)					\
		VMLINUX_SYMBOL(__proc_info_end) = .;

#define HYPERVISOR_TEXT							\
		VMLINUX_SYMBOL(__hyp_text_start) = .;			\
		*(.hyp.text)						\
		VMLINUX_SYMBOL(__hyp_text_end) = .;

#define IDMAP_TEXT							\
		ALIGN_FUNCTION();					\
		VMLINUX_SYMBOL(__idmap_text_start) = .;			\
		*(.idmap.text)						\
		VMLINUX_SYMBOL(__idmap_text_end) = .;			\
		. = ALIGN(PAGE_SIZE);					\
		VMLINUX_SYMBOL(__hyp_idmap_text_start) = .;		\
		*(.hyp.idmap.text)					\
		VMLINUX_SYMBOL(__hyp_idmap_text_end) = .;