blob: 3b629f47eb65b4a51f6399ad153d44f9b5c24b0d [file] [log] [blame]
Adrian Bunk7e02cb92007-10-17 18:04:38 +02001#ifdef __ASSEMBLY__
2
Jan Beulich4625cd62011-07-19 12:59:51 +01003#include <asm/asm.h>
Andi Kleenecaf45e2006-09-26 10:52:29 +02004#include <asm/dwarf2.h>
5
6/* The annotation hides the frame from the unwinder and makes it look
7 like a ordinary ebp save/restore. This avoids some special cases for
8 frame pointer later */
9#ifdef CONFIG_FRAME_POINTER
10 .macro FRAME
Jan Beulich4625cd62011-07-19 12:59:51 +010011 __ASM_SIZE(push,_cfi) %__ASM_REG(bp)
12 CFI_REL_OFFSET __ASM_REG(bp), 0
13 __ASM_SIZE(mov) %__ASM_REG(sp), %__ASM_REG(bp)
Andi Kleenecaf45e2006-09-26 10:52:29 +020014 .endm
15 .macro ENDFRAME
Jan Beulich4625cd62011-07-19 12:59:51 +010016 __ASM_SIZE(pop,_cfi) %__ASM_REG(bp)
17 CFI_RESTORE __ASM_REG(bp)
Andi Kleenecaf45e2006-09-26 10:52:29 +020018 .endm
19#else
20 .macro FRAME
21 .endm
22 .macro ENDFRAME
23 .endm
24#endif
Adrian Bunk7e02cb92007-10-17 18:04:38 +020025
26#endif /* __ASSEMBLY__ */