1#ifndef _LINUX_LINKAGE_H 2#define _LINUX_LINKAGE_H 3 4#include <linux/config.h> 5 6#ifdef __cplusplus 7#define CPP_ASMLINKAGE extern "C" 8#else 9#define CPP_ASMLINKAGE 10#endif 11 12#if defined __i386__ 13#define asmlinkage CPP_ASMLINKAGE __attribute__((regparm(0))) 14#elif defined __ia64__ 15#define asmlinkage CPP_ASMLINKAGE __attribute__((syscall_linkage)) 16#else 17#define asmlinkage CPP_ASMLINKAGE 18#endif 19 20#ifdef __arm__ 21#define __ALIGN .align 0 22#define __ALIGN_STR ".align 0" 23#else 24#ifdef __mc68000__ 25#define __ALIGN .align 4 26#define __ALIGN_STR ".align 4" 27#else 28#ifdef __sh__ 29#define __ALIGN .balign 4 30#define __ALIGN_STR ".balign 4" 31#else 32#if defined(__i386__) && defined(CONFIG_X86_ALIGNMENT_16) 33#define __ALIGN .align 16,0x90 34#define __ALIGN_STR ".align 16,0x90" 35#else 36#define __ALIGN .align 4,0x90 37#define __ALIGN_STR ".align 4,0x90" 38#endif 39#endif /* __sh__ */ 40#endif /* __mc68000__ */ 41#endif /* __arm__ */ 42 43#ifdef __ASSEMBLY__ 44 45#define ALIGN __ALIGN 46#define ALIGN_STR __ALIGN_STR 47 48#define ENTRY(name) \ 49 .globl name; \ 50 ALIGN; \ 51 name: 52 53#endif 54 55# define NORET_TYPE /**/ 56# define ATTRIB_NORET __attribute__((noreturn)) 57# define NORET_AND noreturn, 58 59#ifdef __i386__ 60#define FASTCALL(x) x __attribute__((regparm(3))) 61#else 62#define FASTCALL(x) x 63#endif 64 65#endif 66

