Linux Audio

Check our new training course

Yocto / OpenEmbedded training

Mar 24-27, 2025, special US time zones
Register
Loading...
Note: File does not exist in v4.6.
  1/* SPDX-License-Identifier: GPL-2.0 */
  2
  3#ifdef CONFIG_HOTPLUG_CPU
  4#define ARM_CPU_DISCARD(x)
  5#define ARM_CPU_KEEP(x)		x
  6#else
  7#define ARM_CPU_DISCARD(x)	x
  8#define ARM_CPU_KEEP(x)
  9#endif
 10
 11#if (defined(CONFIG_SMP_ON_UP) && !defined(CONFIG_DEBUG_SPINLOCK)) || \
 12	defined(CONFIG_GENERIC_BUG) || defined(CONFIG_JUMP_LABEL)
 13#define ARM_EXIT_KEEP(x)	x
 14#define ARM_EXIT_DISCARD(x)
 15#else
 16#define ARM_EXIT_KEEP(x)
 17#define ARM_EXIT_DISCARD(x)	x
 18#endif
 19
 20#ifdef CONFIG_MMU
 21#define ARM_MMU_KEEP(x)		x
 22#define ARM_MMU_DISCARD(x)
 23#else
 24#define ARM_MMU_KEEP(x)
 25#define ARM_MMU_DISCARD(x)	x
 26#endif
 27
 28#define PROC_INFO							\
 29		. = ALIGN(4);						\
 30		__proc_info_begin = .;					\
 31		*(.proc.info.init)					\
 32		__proc_info_end = .;
 33
 34#define IDMAP_TEXT							\
 35		ALIGN_FUNCTION();					\
 36		__idmap_text_start = .;					\
 37		*(.idmap.text)						\
 38		__idmap_text_end = .;					\
 39
 40#define ARM_DISCARD							\
 41		*(.ARM.exidx.exit.text)					\
 42		*(.ARM.extab.exit.text)					\
 43		*(.ARM.exidx.text.exit)					\
 44		*(.ARM.extab.text.exit)					\
 45		ARM_CPU_DISCARD(*(.ARM.exidx.cpuexit.text))		\
 46		ARM_CPU_DISCARD(*(.ARM.extab.cpuexit.text))		\
 47		ARM_EXIT_DISCARD(EXIT_TEXT)				\
 48		ARM_EXIT_DISCARD(EXIT_DATA)				\
 49		EXIT_CALL						\
 50		ARM_MMU_DISCARD(*(.text.fixup))				\
 51		ARM_MMU_DISCARD(*(__ex_table))				\
 52		*(.discard)						\
 53		*(.discard.*)
 54
 55#define ARM_TEXT							\
 56		IDMAP_TEXT						\
 57		__entry_text_start = .;					\
 58		*(.entry.text)						\
 59		__entry_text_end = .;					\
 60		IRQENTRY_TEXT						\
 61		SOFTIRQENTRY_TEXT					\
 62		TEXT_TEXT						\
 63		SCHED_TEXT						\
 64		CPUIDLE_TEXT						\
 65		LOCK_TEXT						\
 66		KPROBES_TEXT						\
 67		*(.gnu.warning)						\
 68		*(.glue_7)						\
 69		*(.glue_7t)						\
 70		. = ALIGN(4);						\
 71		*(.got)			/* Global offset table */	\
 72		ARM_CPU_KEEP(PROC_INFO)
 73
 74/* Stack unwinding tables */
 75#define ARM_UNWIND_SECTIONS						\
 76	. = ALIGN(8);							\
 77	.ARM.unwind_idx : {						\
 78		__start_unwind_idx = .;					\
 79		*(.ARM.exidx*)						\
 80		__stop_unwind_idx = .;					\
 81	}								\
 82	.ARM.unwind_tab : {						\
 83		__start_unwind_tab = .;					\
 84		*(.ARM.extab*)						\
 85		__stop_unwind_tab = .;					\
 86	}
 87
 88/*
 89 * The vectors and stubs are relocatable code, and the
 90 * only thing that matters is their relative offsets
 91 */
 92#define ARM_VECTORS							\
 93	__vectors_start = .;						\
 94	.vectors 0xffff0000 : AT(__vectors_start) {			\
 95		*(.vectors)						\
 96	}								\
 97	. = __vectors_start + SIZEOF(.vectors);				\
 98	__vectors_end = .;						\
 99									\
100	__stubs_start = .;						\
101	.stubs ADDR(.vectors) + 0x1000 : AT(__stubs_start) {		\
102		*(.stubs)						\
103	}								\
104	. = __stubs_start + SIZEOF(.stubs);				\
105	__stubs_end = .;						\
106									\
107	PROVIDE(vector_fiq_offset = vector_fiq - ADDR(.vectors));
108
109#define ARM_TCM								\
110	__itcm_start = ALIGN(4);					\
111	.text_itcm ITCM_OFFSET : AT(__itcm_start - LOAD_OFFSET) {	\
112		__sitcm_text = .;					\
113		*(.tcm.text)						\
114		*(.tcm.rodata)						\
115		. = ALIGN(4);						\
116		__eitcm_text = .;					\
117	}								\
118	. = __itcm_start + SIZEOF(.text_itcm);				\
119									\
120	__dtcm_start = .;						\
121	.data_dtcm DTCM_OFFSET : AT(__dtcm_start - LOAD_OFFSET) {	\
122		__sdtcm_data = .;					\
123		*(.tcm.data)						\
124		. = ALIGN(4);						\
125		__edtcm_data = .;					\
126	}								\
127	. = __dtcm_start + SIZEOF(.data_dtcm);