calling.h (29a6d7964d6853f5bcd84dfb92c074fb41d00563) | calling.h (946c191161cef10c667b5ee3179db1714fa5b7c0) |
---|---|
1#include <linux/jump_label.h> 2 3/* 4 5 x86 function call convention, 64-bit: 6 ------------------------------------- 7 arguments | callee-saved | extra caller-saved | return 8 [callee-clobbered] | | [callee-clobbered] | --- 178 unchanged lines hidden (view full) --- 187 .macro REMOVE_PT_GPREGS_FROM_STACK addskip=0 188 subq $-(15*8+\addskip), %rsp 189 .endm 190 191 .macro icebp 192 .byte 0xf1 193 .endm 194 | 1#include <linux/jump_label.h> 2 3/* 4 5 x86 function call convention, 64-bit: 6 ------------------------------------- 7 arguments | callee-saved | extra caller-saved | return 8 [callee-clobbered] | | [callee-clobbered] | --- 178 unchanged lines hidden (view full) --- 187 .macro REMOVE_PT_GPREGS_FROM_STACK addskip=0 188 subq $-(15*8+\addskip), %rsp 189 .endm 190 191 .macro icebp 192 .byte 0xf1 193 .endm 194 |
195/* 196 * This is a sneaky trick to help the unwinder find pt_regs on the stack. The 197 * frame pointer is replaced with an encoded pointer to pt_regs. The encoding 198 * is just setting the LSB, which makes it an invalid stack address and is also 199 * a signal to the unwinder that it's a pt_regs pointer in disguise. 200 * 201 * NOTE: This macro must be used *after* SAVE_EXTRA_REGS because it corrupts 202 * the original rbp. 203 */ 204.macro ENCODE_FRAME_POINTER ptregs_offset=0 205#ifdef CONFIG_FRAME_POINTER 206 .if \ptregs_offset 207 leaq \ptregs_offset(%rsp), %rbp 208 .else 209 mov %rsp, %rbp 210 .endif 211 orq $0x1, %rbp 212#endif 213.endm 214 |
|
195#endif /* CONFIG_X86_64 */ 196 197/* 198 * This does 'call enter_from_user_mode' unless we can avoid it based on 199 * kernel config or using the static jump infrastructure. 200 */ 201.macro CALL_enter_from_user_mode 202#ifdef CONFIG_CONTEXT_TRACKING 203#ifdef HAVE_JUMP_LABEL 204 STATIC_JUMP_IF_FALSE .Lafter_call_\@, context_tracking_enabled, def=0 205#endif 206 call enter_from_user_mode 207.Lafter_call_\@: 208#endif 209.endm | 215#endif /* CONFIG_X86_64 */ 216 217/* 218 * This does 'call enter_from_user_mode' unless we can avoid it based on 219 * kernel config or using the static jump infrastructure. 220 */ 221.macro CALL_enter_from_user_mode 222#ifdef CONFIG_CONTEXT_TRACKING 223#ifdef HAVE_JUMP_LABEL 224 STATIC_JUMP_IF_FALSE .Lafter_call_\@, context_tracking_enabled, def=0 225#endif 226 call enter_from_user_mode 227.Lafter_call_\@: 228#endif 229.endm |