cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

linkage.h (1679B)


      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#include <asm/ibt.h>
      7
      8#undef notrace
      9#define notrace __attribute__((no_instrument_function))
     10
     11#ifdef CONFIG_X86_32
     12#define asmlinkage CPP_ASMLINKAGE __attribute__((regparm(0)))
     13#endif /* CONFIG_X86_32 */
     14
     15#ifdef __ASSEMBLY__
     16
     17#if defined(CONFIG_X86_64) || defined(CONFIG_X86_ALIGNMENT_16)
     18#define __ALIGN		.p2align 4, 0x90
     19#define __ALIGN_STR	__stringify(__ALIGN)
     20#endif
     21
     22#ifdef CONFIG_SLS
     23#define RET	ret; int3
     24#else
     25#define RET	ret
     26#endif
     27
     28#else /* __ASSEMBLY__ */
     29
     30#ifdef CONFIG_SLS
     31#define ASM_RET	"ret; int3\n\t"
     32#else
     33#define ASM_RET	"ret\n\t"
     34#endif
     35
     36#endif /* __ASSEMBLY__ */
     37
     38/* SYM_FUNC_START -- use for global functions */
     39#define SYM_FUNC_START(name)				\
     40	SYM_START(name, SYM_L_GLOBAL, SYM_A_ALIGN)	\
     41	ENDBR
     42
     43/* SYM_FUNC_START_NOALIGN -- use for global functions, w/o alignment */
     44#define SYM_FUNC_START_NOALIGN(name)			\
     45	SYM_START(name, SYM_L_GLOBAL, SYM_A_NONE)	\
     46	ENDBR
     47
     48/* SYM_FUNC_START_LOCAL -- use for local functions */
     49#define SYM_FUNC_START_LOCAL(name)			\
     50	SYM_START(name, SYM_L_LOCAL, SYM_A_ALIGN)	\
     51	ENDBR
     52
     53/* SYM_FUNC_START_LOCAL_NOALIGN -- use for local functions, w/o alignment */
     54#define SYM_FUNC_START_LOCAL_NOALIGN(name)		\
     55	SYM_START(name, SYM_L_LOCAL, SYM_A_NONE)	\
     56	ENDBR
     57
     58/* SYM_FUNC_START_WEAK -- use for weak functions */
     59#define SYM_FUNC_START_WEAK(name)			\
     60	SYM_START(name, SYM_L_WEAK, SYM_A_ALIGN)	\
     61	ENDBR
     62
     63/* SYM_FUNC_START_WEAK_NOALIGN -- use for weak functions, w/o alignment */
     64#define SYM_FUNC_START_WEAK_NOALIGN(name)		\
     65	SYM_START(name, SYM_L_WEAK, SYM_A_NONE)		\
     66	ENDBR
     67
     68#endif /* _ASM_X86_LINKAGE_H */
     69