xref: /openbmc/linux/arch/x86/include/asm/linkage.h (revision 1d61a298)
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