home *** CD-ROM | disk | FTP | other *** search
/ PC World 2005 June / PCWorld_2005-06_cd.bin / software / vyzkuste / firewally / firewally.exe / framework-2.3.exe / setjmp.h < prev    next >
C/C++ Source or Header  |  2004-01-30  |  4KB  |  232 lines

  1.  
  2. _BEGIN_STD_C
  3.  
  4. #if defined(__arm__) || defined(__thumb__)
  5. /*
  6.  * All callee preserved registers:
  7.  * v1 - v7, fp, ip, sp, lr, f4, f5, f6, f7
  8.  */
  9. #define _JBLEN 23
  10. #endif
  11.  
  12. #ifdef __sparc__
  13. /*
  14.  * onsstack,sigmask,sp,pc,npc,psr,g1,o0,wbcnt (sigcontext).
  15.  * All else recovered by under/over(flow) handling.
  16.  */
  17. #define    _JBLEN    13
  18. #endif
  19.  
  20. /* necv70 was 9 as well. */
  21.  
  22. #ifdef __mc68000__
  23. /*
  24.  * onsstack,sigmask,sp,pc,psl,d2-d7,a2-a6,
  25.  * fp2-fp7    for 68881.
  26.  * All else recovered by under/over(flow) handling.
  27.  */
  28. #define    _JBLEN    34
  29. #endif
  30.  
  31. #if defined(__mc68hc11__) || defined(__mc68hc12__) || defined(__mc68hc1x__)
  32. /*
  33.  * D, X, Y are not saved.
  34.  * Only take into account the pseudo soft registers (max 32).
  35.  */
  36. #define _JBLEN  32
  37. #endif
  38.  
  39. #if defined(__Z8001__) || defined(__Z8002__)
  40. /* 16 regs + pc */
  41. #define _JBLEN 20
  42. #endif
  43.  
  44. #ifdef _AM29K
  45. /*
  46.  * onsstack,sigmask,sp,pc,npc,psr,g1,o0,wbcnt (sigcontext).
  47.  * All else recovered by under/over(flow) handling.
  48.  */
  49. #define    _JBLEN    9
  50. #endif
  51.  
  52. #if defined(__CYGWIN__) && !defined (_JBLEN)
  53. #define _JBLEN (13 * 4)
  54. #elif defined (__i386__)
  55. #if defined(__unix__) || defined(__rtems__)
  56. # define _JBLEN    9
  57. #else
  58. #include "setjmp-dj.h"
  59. #endif
  60. #endif
  61.  
  62. #ifdef __i960__
  63. #define _JBLEN 35
  64. #endif
  65.  
  66. #ifdef __M32R__
  67. /* Only 8 words are currently needed.  10 gives us some slop if we need
  68.    to expand.  */
  69. #define _JBLEN 10
  70. #endif
  71.  
  72. #ifdef __mips__
  73. #ifdef __mips64
  74. #define _JBTYPE long long
  75. #endif
  76. #ifdef __mips_soft_float
  77. #define _JBLEN 11
  78. #else
  79. #define _JBLEN 23
  80. #endif
  81. #endif
  82.  
  83. #ifdef __m88000__
  84. #define _JBLEN 21
  85. #endif
  86.  
  87. #ifdef __H8300__
  88. #define _JBLEN 5
  89. typedef int jmp_buf[_JBLEN];
  90. #endif
  91.  
  92. #ifdef __H8300H__
  93. /* same as H8/300 but registers are twice as big */
  94. #define _JBLEN 5
  95. #define _JBTYPE long
  96. #endif
  97.  
  98. #ifdef __H8300S__
  99. /* same as H8/300 but registers are twice as big */
  100. #define _JBLEN 5
  101. #define _JBTYPE long
  102. #endif
  103.  
  104. #ifdef __H8500__
  105. #define _JBLEN 4
  106. #endif
  107.  
  108. #ifdef  __sh__
  109. #if __SH5__
  110. #define _JBLEN 50
  111. #define _JBTYPE long long
  112. #else
  113. #define _JBLEN 20
  114. #endif /* __SH5__ */
  115. #endif
  116.  
  117. #ifdef  __v800
  118. #define _JBLEN 28
  119. #endif
  120.  
  121. #ifdef __PPC__
  122. #ifdef __ALTIVEC__
  123. #define _JBLEN 64
  124. #else
  125. #define _JBLEN 32
  126. #endif
  127. #define _JBTYPE double
  128. #endif
  129.  
  130. #ifdef __hppa__
  131. /* %r30, %r2-%r18, %r27, pad, %fr12-%fr15.
  132.    Note space exists for the FP registers, but they are not
  133.    saved.  */
  134. #define _JBLEN 28
  135. #endif
  136.  
  137. #if defined(__mn10300__) || defined(__mn10200__)
  138. #ifdef __AM33_2__
  139. #define _JBLEN 26
  140. #else
  141. /* A guess */
  142. #define _JBLEN 10
  143. #endif
  144. #endif
  145.  
  146. #ifdef __v850
  147. /* I think our setjmp is saving 15 regs at the moment.  Gives us one word
  148.    slop if we need to expand.  */
  149. #define _JBLEN 16
  150. #endif
  151.  
  152. #ifdef __TIC80__
  153. #define _JBLEN 13
  154. #endif
  155.  
  156. #ifdef __D10V__
  157. #define _JBLEN 8
  158. #endif
  159.  
  160. #ifdef __D30V__
  161. #define _JBLEN ((64 /* GPR */ + (2*2) /* ACs */ + 18 /* CRs */) / 2)
  162. #define _JBTYPE double
  163. #endif
  164.  
  165. #ifdef __frv__
  166. #define _JBLEN (68/2)  /* room for 68 32-bit regs */
  167. #define _JBTYPE double
  168. #endif
  169.  
  170. #ifdef __fr30__
  171. #define _JBLEN 10
  172. #endif
  173.  
  174. #ifdef __iq2000__
  175. #define _JBLEN 32
  176. #endif
  177.  
  178. #ifdef __mcore__
  179. #define _JBLEN 16
  180. #endif
  181.  
  182. #ifdef __MMIX__
  183. /* Using a layout compatible with GCC's built-in.  */
  184. #define _JBLEN 5
  185. #define _JBTYPE unsigned long
  186. #endif
  187.  
  188. #ifdef __xstormy16__
  189. /* 4 GPRs plus SP plus PC. */
  190. #define _JBLEN 8
  191. #endif
  192.  
  193. #ifdef _JBLEN
  194. #ifdef _JBTYPE
  195. typedef    _JBTYPE jmp_buf[_JBLEN];
  196. #else
  197. typedef    int jmp_buf[_JBLEN];
  198. #endif
  199.  
  200. _END_STD_C
  201.  
  202. #if defined(__CYGWIN__) || defined(__rtems__)
  203. #include <signal.h>
  204.  
  205. #ifdef __cplusplus
  206. extern "C" {
  207. #endif
  208.  
  209. /* POSIX sigsetjmp/siglongjmp macros */
  210. typedef int sigjmp_buf[_JBLEN+2];
  211.  
  212. #define _SAVEMASK    _JBLEN
  213. #define _SIGMASK    (_JBLEN+1)
  214.  
  215. #ifdef __CYGWIN__
  216. # define _CYGWIN_WORKING_SIGSETJMP
  217. #endif
  218.  
  219. #define sigsetjmp(env, savemask) ((env)[_SAVEMASK] = savemask,\
  220.                sigprocmask (SIG_SETMASK, 0, (sigset_t *) ((env) + _SIGMASK)),\
  221.                setjmp (env))
  222.  
  223. #define siglongjmp(env, val) ((((env)[_SAVEMASK])?\
  224.                sigprocmask (SIG_SETMASK, (sigset_t *) ((env) + _SIGMASK), 0):0),\
  225.                longjmp (env, val))
  226.  
  227. #ifdef __cplusplus
  228. }
  229. #endif
  230. #endif /* __CYGWIN__ or __rtems__ */
  231. #endif
  232.