| /* 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 |
| |
| #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) = .; \ |
| *(.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) = .; |
| |
| #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.*) |
| |
| #define ARM_TEXT \ |
| IDMAP_TEXT \ |
| __entry_text_start = .; \ |
| *(.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) \ |
| *(.glue_7t) \ |
| . = ALIGN(4); \ |
| *(.got) /* Global offset table */ \ |
| ARM_CPU_KEEP(PROC_INFO) |
| |
| /* Stack unwinding tables */ |
| #define ARM_UNWIND_SECTIONS \ |
| . = ALIGN(8); \ |
| .ARM.unwind_idx : { \ |
| __start_unwind_idx = .; \ |
| *(.ARM.exidx*) \ |
| __stop_unwind_idx = .; \ |
| } \ |
| .ARM.unwind_tab : { \ |
| __start_unwind_tab = .; \ |
| *(.ARM.extab*) \ |
| __stop_unwind_tab = .; \ |
| } |