File Index
Files and directories
Sign in
FILE

scs.h

File preview with syntax highlighting.

linux-6.19.14/arch/riscv/include/asm/scs.h C
 1/* SPDX-License-Identifier: GPL-2.0 */
 2#ifndef _ASM_SCS_H
 3#define _ASM_SCS_H
 4
 5#ifdef __ASSEMBLER__
 6#include <asm/asm-offsets.h>
 7
 8#ifdef CONFIG_SHADOW_CALL_STACK
 9
10/* Load init_shadow_call_stack to gp. */
11.macro scs_load_init_stack
12	la	gp, init_shadow_call_stack
13	XIP_FIXUP_OFFSET gp
14.endm
15
16/* Load the per-CPU IRQ shadow call stack to gp. */
17.macro scs_load_irq_stack tmp
18	load_per_cpu gp, irq_shadow_call_stack_ptr, \tmp
19.endm
20
21/* Load task_scs_sp(current) to gp. */
22.macro scs_load_current
23	REG_L	gp, TASK_TI_SCS_SP(tp)
24.endm
25
26/* Load task_scs_sp(current) to gp, but only if tp has changed. */
27.macro scs_load_current_if_task_changed prev
28	beq	\prev, tp, _skip_scs
29	scs_load_current
30_skip_scs:
31.endm
32
33/* Save gp to task_scs_sp(current). */
34.macro scs_save_current
35	REG_S	gp, TASK_TI_SCS_SP(tp)
36.endm
37
38#else /* CONFIG_SHADOW_CALL_STACK */
39
40.macro scs_load_init_stack
41.endm
42.macro scs_load_irq_stack tmp
43.endm
44.macro scs_load_current
45.endm
46.macro scs_load_current_if_task_changed prev
47.endm
48.macro scs_save_current
49.endm
50
51#endif /* CONFIG_SHADOW_CALL_STACK */
52#endif /* __ASSEMBLER__ */
53
54#endif /* _ASM_SCS_H */
~/ Read-only file preview.