| /** | 
 |  * This file has no copyright assigned and is placed in the Public Domain. | 
 |  * This file is part of the mingw-w64 runtime package. | 
 |  * No warranty is given; refer to the file DISCLAIMER.PD within this package. | 
 |  */ | 
 | #ifndef _INC_SETJMP | 
 | #define _INC_SETJMP | 
 |  | 
 | #include <crtdefs.h> | 
 |  | 
 | #pragma pack(push,_CRT_PACKING) | 
 |  | 
 | #ifndef NULL | 
 | #ifdef __cplusplus | 
 | #ifndef _WIN64 | 
 | #define NULL 0 | 
 | #else | 
 | #define NULL 0LL | 
 | #endif  /* W64 */ | 
 | #else | 
 | #define NULL ((void *)0) | 
 | #endif | 
 | #endif | 
 |  | 
 | #ifdef __cplusplus | 
 | extern "C" { | 
 | #endif | 
 |  | 
 | #if (defined(_X86_) && !defined(__x86_64)) | 
 |  | 
 | #define _JBLEN 16 | 
 | #define _JBTYPE int | 
 |  | 
 |   typedef struct __JUMP_BUFFER { | 
 |     unsigned long Ebp; | 
 |     unsigned long Ebx; | 
 |     unsigned long Edi; | 
 |     unsigned long Esi; | 
 |     unsigned long Esp; | 
 |     unsigned long Eip; | 
 |     unsigned long Registration; | 
 |     unsigned long TryLevel; | 
 |     unsigned long Cookie; | 
 |     unsigned long UnwindFunc; | 
 |     unsigned long UnwindData[6]; | 
 |   } _JUMP_BUFFER; | 
 |  | 
 | #elif defined(__ia64__) | 
 |  | 
 |   typedef _CRT_ALIGN(16) struct _SETJMP_FLOAT128 { | 
 |     __MINGW_EXTENSION __int64 LowPart; | 
 |     __MINGW_EXTENSION __int64 HighPart; | 
 |   } SETJMP_FLOAT128; | 
 |  | 
 | #define _JBLEN 33 | 
 |   typedef SETJMP_FLOAT128 _JBTYPE; | 
 |  | 
 |   typedef struct __JUMP_BUFFER { | 
 |  | 
 |     unsigned long iAReserved[6]; | 
 |  | 
 |     unsigned long Registration; | 
 |     unsigned long TryLevel; | 
 |     unsigned long Cookie; | 
 |     unsigned long UnwindFunc; | 
 |  | 
 |     unsigned long UnwindData[6]; | 
 |  | 
 |     SETJMP_FLOAT128 FltS0; | 
 |     SETJMP_FLOAT128 FltS1; | 
 |     SETJMP_FLOAT128 FltS2; | 
 |     SETJMP_FLOAT128 FltS3; | 
 |     SETJMP_FLOAT128 FltS4; | 
 |     SETJMP_FLOAT128 FltS5; | 
 |     SETJMP_FLOAT128 FltS6; | 
 |     SETJMP_FLOAT128 FltS7; | 
 |     SETJMP_FLOAT128 FltS8; | 
 |     SETJMP_FLOAT128 FltS9; | 
 |     SETJMP_FLOAT128 FltS10; | 
 |     SETJMP_FLOAT128 FltS11; | 
 |     SETJMP_FLOAT128 FltS12; | 
 |     SETJMP_FLOAT128 FltS13; | 
 |     SETJMP_FLOAT128 FltS14; | 
 |     SETJMP_FLOAT128 FltS15; | 
 |     SETJMP_FLOAT128 FltS16; | 
 |     SETJMP_FLOAT128 FltS17; | 
 |     SETJMP_FLOAT128 FltS18; | 
 |     SETJMP_FLOAT128 FltS19; | 
 |     __MINGW_EXTENSION __int64 FPSR; | 
 |     __MINGW_EXTENSION __int64 StIIP; | 
 |     __MINGW_EXTENSION __int64 BrS0; | 
 |     __MINGW_EXTENSION __int64 BrS1; | 
 |     __MINGW_EXTENSION __int64 BrS2; | 
 |     __MINGW_EXTENSION __int64 BrS3; | 
 |     __MINGW_EXTENSION __int64 BrS4; | 
 |     __MINGW_EXTENSION __int64 IntS0; | 
 |     __MINGW_EXTENSION __int64 IntS1; | 
 |     __MINGW_EXTENSION __int64 IntS2; | 
 |     __MINGW_EXTENSION __int64 IntS3; | 
 |     __MINGW_EXTENSION __int64 RsBSP; | 
 |     __MINGW_EXTENSION __int64 RsPFS; | 
 |     __MINGW_EXTENSION __int64 ApUNAT; | 
 |     __MINGW_EXTENSION __int64 ApLC; | 
 |     __MINGW_EXTENSION __int64 IntSp; | 
 |     __MINGW_EXTENSION __int64 IntNats; | 
 |     __MINGW_EXTENSION __int64 Preds; | 
 |  | 
 |   } _JUMP_BUFFER; | 
 |  | 
 | #elif defined(__x86_64) | 
 |  | 
 |   typedef _CRT_ALIGN(16) struct _SETJMP_FLOAT128 { | 
 |     __MINGW_EXTENSION unsigned __int64 Part[2]; | 
 |   } SETJMP_FLOAT128; | 
 |  | 
 | #define _JBLEN 16 | 
 |   typedef SETJMP_FLOAT128 _JBTYPE; | 
 |  | 
 |   typedef struct _JUMP_BUFFER { | 
 |     __MINGW_EXTENSION unsigned __int64 Frame; | 
 |     __MINGW_EXTENSION unsigned __int64 Rbx; | 
 |     __MINGW_EXTENSION unsigned __int64 Rsp; | 
 |     __MINGW_EXTENSION unsigned __int64 Rbp; | 
 |     __MINGW_EXTENSION unsigned __int64 Rsi; | 
 |     __MINGW_EXTENSION unsigned __int64 Rdi; | 
 |     __MINGW_EXTENSION unsigned __int64 R12; | 
 |     __MINGW_EXTENSION unsigned __int64 R13; | 
 |     __MINGW_EXTENSION unsigned __int64 R14; | 
 |     __MINGW_EXTENSION unsigned __int64 R15; | 
 |     __MINGW_EXTENSION unsigned __int64 Rip; | 
 |     __MINGW_EXTENSION unsigned __int64 Spare; | 
 |     SETJMP_FLOAT128 Xmm6; | 
 |     SETJMP_FLOAT128 Xmm7; | 
 |     SETJMP_FLOAT128 Xmm8; | 
 |     SETJMP_FLOAT128 Xmm9; | 
 |     SETJMP_FLOAT128 Xmm10; | 
 |     SETJMP_FLOAT128 Xmm11; | 
 |     SETJMP_FLOAT128 Xmm12; | 
 |     SETJMP_FLOAT128 Xmm13; | 
 |     SETJMP_FLOAT128 Xmm14; | 
 |     SETJMP_FLOAT128 Xmm15; | 
 |   } _JUMP_BUFFER; | 
 |  | 
 | #elif defined(_ARM_) | 
 |  | 
 | #define _JBLEN 28 | 
 | #define _JBTYPE int | 
 |  | 
 |   typedef struct __JUMP_BUFFER { | 
 |     unsigned long Frame; | 
 |     unsigned long R4; | 
 |     unsigned long R5; | 
 |     unsigned long R6; | 
 |     unsigned long R7; | 
 |     unsigned long R8; | 
 |     unsigned long R9; | 
 |     unsigned long R10; | 
 |     unsigned long R11; | 
 |     unsigned long Sp; | 
 |     unsigned long Pc; | 
 |     unsigned long Fpscr; | 
 |     unsigned long long D[8]; | 
 |   } _JUMP_BUFFER; | 
 |  | 
 | #endif | 
 |  | 
 | #ifndef _JMP_BUF_DEFINED | 
 |   typedef _JBTYPE jmp_buf[_JBLEN]; | 
 | #define _JMP_BUF_DEFINED | 
 | #endif | 
 |  | 
 | void * __cdecl __attribute__ ((__nothrow__)) mingw_getsp (void); | 
 |  | 
 | #ifndef USE_NO_MINGW_SETJMP_TWO_ARGS | 
 | #  ifndef _INC_SETJMPEX | 
 | #    ifdef _WIN64 | 
 | #     if (__MINGW_GCC_VERSION < 40702) | 
 | #      define setjmp(BUF) _setjmp((BUF), mingw_getsp()) | 
 | #     else | 
 | #      define setjmp(BUF) _setjmp((BUF), __builtin_frame_address (0)) | 
 | #     endif | 
 | #    else | 
 | #      define setjmp(BUF) _setjmp3((BUF), NULL) | 
 | #    endif | 
 |   int __cdecl __attribute__ ((__nothrow__,__returns_twice__)) _setjmp(jmp_buf _Buf, void *_Ctx); | 
 |   int __cdecl __attribute__ ((__nothrow__,__returns_twice__)) _setjmp3(jmp_buf _Buf, void *_Ctx); | 
 | #  else | 
 | #    undef setjmp | 
 | #    ifdef _WIN64 | 
 | #     if (__MINGW_GCC_VERSION < 40702) | 
 | #      define setjmp(BUF) _setjmpex((BUF), mingw_getsp()) | 
 | #      define setjmpex(BUF) _setjmpex((BUF), mingw_getsp()) | 
 | #     else | 
 | #      define setjmp(BUF) _setjmpex((BUF), __builtin_frame_address (0)) | 
 | #      define setjmpex(BUF) _setjmpex((BUF), __builtin_frame_address (0)) | 
 | #     endif | 
 | #    else | 
 | #      define setjmp(BUF) _setjmpex((BUF), NULL) | 
 | #      define setjmpex(BUF) _setjmpex((BUF), NULL) | 
 | #    endif | 
 |   int __cdecl __attribute__ ((__nothrow__,__returns_twice__)) _setjmpex(jmp_buf _Buf,void *_Ctx); | 
 | #  endif | 
 |  | 
 | #else | 
 |  | 
 | #  ifndef _INC_SETJMPEX | 
 | #    define setjmp _setjmp | 
 | #  endif | 
 |  | 
 |   int __cdecl __attribute__ ((__nothrow__,__returns_twice__)) setjmp(jmp_buf _Buf); | 
 | #endif | 
 |  | 
 |   __MINGW_ATTRIB_NORETURN __attribute__ ((__nothrow__)) void __cdecl ms_longjmp(jmp_buf _Buf,int _Value)/* throw(...)*/; | 
 |   __MINGW_ATTRIB_NORETURN __attribute__ ((__nothrow__)) void __cdecl longjmp(jmp_buf _Buf,int _Value); | 
 |  | 
 | #ifdef __cplusplus | 
 | } | 
 | #endif | 
 |  | 
 | #pragma pack(pop) | 
 | #endif |