1 /* SPDX-License-Identifier: GPL-2.0 */ 2 #ifndef _ASM_X86_LINKAGE_H 3 #define _ASM_X86_LINKAGE_H 4 5 #include <linux/stringify.h> 6 7 #undef notrace 8 #define notrace __attribute__((no_instrument_function)) 9 10 #ifdef CONFIG_X86_32 11 #define asmlinkage CPP_ASMLINKAGE __attribute__((regparm(0))) 12 #endif /* CONFIG_X86_32 */ 13 14 #ifdef __ASSEMBLY__ 15 16 #if defined(CONFIG_X86_64) || defined(CONFIG_X86_ALIGNMENT_16) 17 #define __ALIGN .p2align 4, 0x90 18 #define __ALIGN_STR __stringify(__ALIGN) 19 #endif 20 21 #if defined(CONFIG_RETPOLINE) && !defined(__DISABLE_EXPORTS) && !defined(BUILD_VDSO) 22 #define RET jmp __x86_return_thunk 23 #else /* CONFIG_RETPOLINE */ 24 #ifdef CONFIG_SLS 25 #define RET ret; int3 26 #else 27 #define RET ret 28 #endif 29 #endif /* CONFIG_RETPOLINE */ 30 31 #else /* __ASSEMBLY__ */ 32 33 #if defined(CONFIG_RETPOLINE) && !defined(__DISABLE_EXPORTS) && !defined(BUILD_VDSO) 34 #define ASM_RET "jmp __x86_return_thunk\n\t" 35 #else /* CONFIG_RETPOLINE */ 36 #ifdef CONFIG_SLS 37 #define ASM_RET "ret; int3\n\t" 38 #else 39 #define ASM_RET "ret\n\t" 40 #endif 41 #endif /* CONFIG_RETPOLINE */ 42 43 #endif /* __ASSEMBLY__ */ 44 45 #endif /* _ASM_X86_LINKAGE_H */ 46 47