/* SPDX-License-Identifier: GPL-2.0 */ #ifndef _ASM_X86_FRAME_H #define _ASM_X86_FRAME_H #include /* * These are stack frame creation macros. They should be used by every * callable non-leaf asm function to make kernel stack traces more reliable. */ #ifdef CONFIG_FRAME_POINTER #ifdef __ASSEMBLY__ .macro FRAME_BEGIN push %_ASM_BP _ASM_MOV %_ASM_SP, %_ASM_BP .endm .macro FRAME_END pop %_ASM_BP .endm #else /* !__ASSEMBLY__ */ #define FRAME_BEGIN \ "push %" _ASM_BP "\n" \ _ASM_MOV "%" _ASM_SP ", %" _ASM_BP "\n" #define FRAME_END "pop %" _ASM_BP "\n" #endif /* __ASSEMBLY__ */ #define FRAME_OFFSET __ASM_SEL(4, 8) #else /* !CONFIG_FRAME_POINTER */ #define FRAME_BEGIN #define FRAME_END #define FRAME_OFFSET 0 #endif /* CONFIG_FRAME_POINTER */ #endif /* _ASM_X86_FRAME_H */