1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- #ifndef _ASM_X86_FRAME_H
- #define _ASM_X86_FRAME_H
- #include <asm/asm.h>
- /*
- * 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 */
|