linkage.h
上传用户:jlfgdled
上传日期:2013-04-10
资源大小:33168k
文件大小:1k
源码类别:

Linux/Unix编程

开发平台:

Unix_Linux

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