mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-06-13 06:00:13 -04:00
While the GCC and Clang compilers already define __ASSEMBLER__ automatically when compiling assembly code, __ASSEMBLY__ is a macro that only gets defined by the Makefiles in the kernel. This can be very confusing when switching between userspace and kernelspace coding, or when dealing with uapi headers that rather should use __ASSEMBLER__ instead. So let's standardize on the __ASSEMBLER__ macro that is provided by the compilers now. This originally was a completely mechanical patch (done with a simple "sed -i" statement), with some manual fixups during rebasing of the patch later. Cc: Paul Walmsley <paul.walmsley@sifive.com> Cc: Palmer Dabbelt <palmer@dabbelt.com> Cc: Albert Ou <aou@eecs.berkeley.edu> Cc: Alexandre Ghiti <alex@ghiti.fr> Cc: linux-riscv@lists.infradead.org Signed-off-by: Thomas Huth <thuth@redhat.com> Link: https://lore.kernel.org/r/20250606070952.498274-3-thuth@redhat.com Signed-off-by: Paul Walmsley <pjw@kernel.org>
55 lines
1.1 KiB
C
55 lines
1.1 KiB
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
#ifndef _ASM_SCS_H
|
|
#define _ASM_SCS_H
|
|
|
|
#ifdef __ASSEMBLER__
|
|
#include <asm/asm-offsets.h>
|
|
|
|
#ifdef CONFIG_SHADOW_CALL_STACK
|
|
|
|
/* Load init_shadow_call_stack to gp. */
|
|
.macro scs_load_init_stack
|
|
la gp, init_shadow_call_stack
|
|
XIP_FIXUP_OFFSET gp
|
|
.endm
|
|
|
|
/* Load the per-CPU IRQ shadow call stack to gp. */
|
|
.macro scs_load_irq_stack tmp
|
|
load_per_cpu gp, irq_shadow_call_stack_ptr, \tmp
|
|
.endm
|
|
|
|
/* Load task_scs_sp(current) to gp. */
|
|
.macro scs_load_current
|
|
REG_L gp, TASK_TI_SCS_SP(tp)
|
|
.endm
|
|
|
|
/* Load task_scs_sp(current) to gp, but only if tp has changed. */
|
|
.macro scs_load_current_if_task_changed prev
|
|
beq \prev, tp, _skip_scs
|
|
scs_load_current
|
|
_skip_scs:
|
|
.endm
|
|
|
|
/* Save gp to task_scs_sp(current). */
|
|
.macro scs_save_current
|
|
REG_S gp, TASK_TI_SCS_SP(tp)
|
|
.endm
|
|
|
|
#else /* CONFIG_SHADOW_CALL_STACK */
|
|
|
|
.macro scs_load_init_stack
|
|
.endm
|
|
.macro scs_load_irq_stack tmp
|
|
.endm
|
|
.macro scs_load_current
|
|
.endm
|
|
.macro scs_load_current_if_task_changed prev
|
|
.endm
|
|
.macro scs_save_current
|
|
.endm
|
|
|
|
#endif /* CONFIG_SHADOW_CALL_STACK */
|
|
#endif /* __ASSEMBLER__ */
|
|
|
|
#endif /* _ASM_SCS_H */
|