Viewing file: scs.h (1.08 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
/* SPDX-License-Identifier: GPL-2.0 */ #ifndef _ASM_SCS_H #define _ASM_SCS_H
#ifdef __ASSEMBLY__ #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 /* __ASSEMBLY__ */
#endif /* _ASM_SCS_H */
|