Subversion Repositories Kolibri OS

Rev

Rev 2828 | Go to most recent revision | Blame | Last modification | View Log | Download | RSS feed

  1. /*  This file was based on the modified setjmp.S performed by
  2.  *  Joel Sherill (joel@OARcorp.com) which specified the use
  3.  *  of the __USER_LABEL_PREFIX__ and __REGISTER_PREFIX__ macros.
  4.  **
  5.  ** This file is distributed WITHOUT ANY WARRANTY; without even the implied
  6.  ** warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  7.  */
  8.  
  9. /* These are predefined by new versions of GNU cpp.  */
  10.  
  11. #ifndef __USER_LABEL_PREFIX__
  12. #define __USER_LABEL_PREFIX__ _
  13. #endif
  14.  
  15. #define __REG_PREFIX__ %
  16.  
  17. /* ANSI concatenation macros.  */
  18.  
  19. #define CONCAT1(a, b) CONCAT2(a, b)
  20. #define CONCAT2(a, b) a##b
  21.  
  22. /* Use the right prefix for global labels.  */
  23.  
  24. #define SYM(x) CONCAT1(__USER_LABEL_PREFIX__, x)
  25.  
  26. /* Use the right prefix for registers.  */
  27.  
  28. #define REG(x) CONCAT1(__REG_PREFIX__, x)
  29.  
  30. #define eax REG(eax)
  31. #define ebx REG(ebx)
  32. #define ecx REG(ecx)
  33. #define edx REG(edx)
  34. #define esi REG(esi)
  35. #define edi REG(edi)
  36. #define ebp REG(ebp)
  37. #define esp REG(esp)
  38.  
  39. #define st0 REG(st)
  40. #define st1 REG(st(1))
  41. #define st2 REG(st(2))
  42. #define st3 REG(st(3))
  43. #define st4 REG(st(4))
  44. #define st5 REG(st(5))
  45. #define st6 REG(st(6))
  46. #define st7 REG(st(7))
  47.  
  48. #define ax REG(ax)
  49. #define bx REG(bx)
  50. #define cx REG(cx)
  51. #define dx REG(dx)
  52.  
  53. #define ah REG(ah)
  54. #define bh REG(bh)
  55. #define ch REG(ch)
  56. #define dh REG(dh)
  57.  
  58. #define al REG(al)
  59. #define bl REG(bl)
  60. #define cl REG(cl)
  61. #define dl REG(dl)
  62.  
  63. #define mm1 REG(mm1)
  64. #define mm2 REG(mm2)
  65. #define mm3 REG(mm3)
  66. #define mm4 REG(mm4)
  67. #define mm5 REG(mm5)
  68. #define mm6 REG(mm6)
  69. #define mm7 REG(mm7)
  70.  
  71. #ifdef _I386MACH_NEED_SOTYPE_FUNCTION
  72. #define SOTYPE_FUNCTION(sym) .type SYM(sym),@function
  73. #else
  74. #define SOTYPE_FUNCTION(sym)
  75. #endif
  76.  
  77. #ifdef _I386MACH_ALLOW_HW_INTERRUPTS
  78. #define        __CLI
  79. #define        __STI
  80. #else
  81. #define __CLI  cli
  82. #define __STI  sti
  83. #endif
  84.