drm/panthor: Don't add write fences to the shared BOs
[drm/drm-misc.git] / arch / riscv / include / asm / scs.h
blob0e45db78b24bf201c7f70c1819d95d258323b8bd
1 /* SPDX-License-Identifier: GPL-2.0 */
2 #ifndef _ASM_SCS_H
3 #define _ASM_SCS_H
5 #ifdef __ASSEMBLY__
6 #include <asm/asm-offsets.h>
8 #ifdef CONFIG_SHADOW_CALL_STACK
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
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
21 /* Load task_scs_sp(current) to gp. */
22 .macro scs_load_current
23 REG_L gp, TASK_TI_SCS_SP(tp)
24 .endm
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
33 /* Save gp to task_scs_sp(current). */
34 .macro scs_save_current
35 REG_S gp, TASK_TI_SCS_SP(tp)
36 .endm
38 #else /* CONFIG_SHADOW_CALL_STACK */
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
51 #endif /* CONFIG_SHADOW_CALL_STACK */
52 #endif /* __ASSEMBLY__ */
54 #endif /* _ASM_SCS_H */