Home | History | Annotate | Download | only in linux
      1 #ifndef _LINUX_LINKAGE_H
      2 #define _LINUX_LINKAGE_H
      3 
      4 #include <asm/linkage.h>
      5 
      6 #ifdef __cplusplus
      7 #define CPP_ASMLINKAGE extern "C"
      8 #else
      9 #define CPP_ASMLINKAGE
     10 #endif
     11 
     12 #ifndef asmlinkage
     13 #define asmlinkage CPP_ASMLINKAGE
     14 #endif
     15 
     16 #ifndef prevent_tail_call
     17 # define prevent_tail_call(ret) do { } while (0)
     18 #endif
     19 
     20 #ifndef __ALIGN
     21 #define __ALIGN		.align 4,0x90
     22 #define __ALIGN_STR	".align 4,0x90"
     23 #endif
     24 
     25 #ifdef __ASSEMBLY__
     26 
     27 #define ALIGN __ALIGN
     28 #define ALIGN_STR __ALIGN_STR
     29 
     30 #ifndef ENTRY
     31 #define ENTRY(name) \
     32   .globl name; \
     33   ALIGN; \
     34   name:
     35 #endif
     36 
     37 #define KPROBE_ENTRY(name) \
     38   .section .kprobes.text, "ax"; \
     39   ENTRY(name)
     40 
     41 #ifndef END
     42 #define END(name) \
     43   .size name, .-name
     44 #endif
     45 
     46 #ifndef ENDPROC
     47 #define ENDPROC(name) \
     48   .type name, @function; \
     49   END(name)
     50 #endif
     51 
     52 #endif
     53 
     54 #define NORET_TYPE    /**/
     55 #define ATTRIB_NORET  __attribute__((noreturn))
     56 #define NORET_AND     noreturn,
     57 
     58 #ifndef FASTCALL
     59 #define FASTCALL(x)	x
     60 #define fastcall
     61 #endif
     62 
     63 #endif
     64