#ifndef _LINUX_LINKAGE_H #define _LINUX_LINKAGE_H #include #ifdef __cplusplus #define CPP_ASMLINKAGE extern "C" #else #define CPP_ASMLINKAGE #endif #if defined __i386__ #define asmlinkage CPP_ASMLINKAGE __attribute__((regparm(0))) #elif defined __ia64__ #define asmlinkage CPP_ASMLINKAGE __attribute__((syscall_linkage)) #else #define asmlinkage CPP_ASMLINKAGE #endif #ifdef __arm__ #define __ALIGN .align 0 #define __ALIGN_STR ".align 0" #else #ifdef __mc68000__ #define __ALIGN .align 4 #define __ALIGN_STR ".align 4" #else #ifdef __sh__ #define __ALIGN .balign 4 #define __ALIGN_STR ".balign 4" #else #if defined(__i386__) && defined(CONFIG_X86_ALIGNMENT_16) #define __ALIGN .align 16,0x90 #define __ALIGN_STR ".align 16,0x90" #else #define __ALIGN .align 4,0x90 #define __ALIGN_STR ".align 4,0x90" #endif #endif /* __sh__ */ #endif /* __mc68000__ */ #endif /* __arm__ */ #ifdef __ASSEMBLY__ #define ALIGN __ALIGN #define ALIGN_STR __ALIGN_STR #define ENTRY(name) \ .globl name; \ ALIGN; \ name: #endif # define NORET_TYPE /**/ # define ATTRIB_NORET __attribute__((noreturn)) # define NORET_AND noreturn, #ifdef __i386__ #define FASTCALL(x) x __attribute__((regparm(3))) #else #define FASTCALL(x) x #endif #endif