2 * This file has no copyright assigned and is placed in the Public Domain.
3 * This file is part of the w64 mingw-runtime package.
4 * No warranty is given; refer to the file DISCLAIMER within this package.
11 #pragma pack(push,_CRT_PACKING)
18 #define setjmp _setjmp
21 #if (defined(_X86_) && !defined(__x86_64))
26 typedef struct __JUMP_BUFFER
{
33 unsigned long Registration
;
34 unsigned long TryLevel
;
36 unsigned long UnwindFunc
;
37 unsigned long UnwindData
[6];
40 #elif defined(__ia64__)
42 typedef _CRT_ALIGN(16) struct _SETJMP_FLOAT128
{
48 typedef SETJMP_FLOAT128 _JBTYPE
;
50 typedef struct __JUMP_BUFFER
{
52 unsigned long iAReserved
[6];
54 unsigned long Registration
;
55 unsigned long TryLevel
;
57 unsigned long UnwindFunc
;
59 unsigned long UnwindData
[6];
61 SETJMP_FLOAT128 FltS0
;
62 SETJMP_FLOAT128 FltS1
;
63 SETJMP_FLOAT128 FltS2
;
64 SETJMP_FLOAT128 FltS3
;
65 SETJMP_FLOAT128 FltS4
;
66 SETJMP_FLOAT128 FltS5
;
67 SETJMP_FLOAT128 FltS6
;
68 SETJMP_FLOAT128 FltS7
;
69 SETJMP_FLOAT128 FltS8
;
70 SETJMP_FLOAT128 FltS9
;
71 SETJMP_FLOAT128 FltS10
;
72 SETJMP_FLOAT128 FltS11
;
73 SETJMP_FLOAT128 FltS12
;
74 SETJMP_FLOAT128 FltS13
;
75 SETJMP_FLOAT128 FltS14
;
76 SETJMP_FLOAT128 FltS15
;
77 SETJMP_FLOAT128 FltS16
;
78 SETJMP_FLOAT128 FltS17
;
79 SETJMP_FLOAT128 FltS18
;
80 SETJMP_FLOAT128 FltS19
;
102 #elif defined(__x86_64)
104 typedef _CRT_ALIGN(16) struct _SETJMP_FLOAT128
{
105 unsigned __int64 Part
[2];
109 typedef SETJMP_FLOAT128 _JBTYPE
;
111 typedef struct _JUMP_BUFFER
{
112 unsigned __int64 Frame
;
113 unsigned __int64 Rbx
;
114 unsigned __int64 Rsp
;
115 unsigned __int64 Rbp
;
116 unsigned __int64 Rsi
;
117 unsigned __int64 Rdi
;
118 unsigned __int64 R12
;
119 unsigned __int64 R13
;
120 unsigned __int64 R14
;
121 unsigned __int64 R15
;
122 unsigned __int64 Rip
;
123 unsigned __int64 Spare
;
124 SETJMP_FLOAT128 Xmm6
;
125 SETJMP_FLOAT128 Xmm7
;
126 SETJMP_FLOAT128 Xmm8
;
127 SETJMP_FLOAT128 Xmm9
;
128 SETJMP_FLOAT128 Xmm10
;
129 SETJMP_FLOAT128 Xmm11
;
130 SETJMP_FLOAT128 Xmm12
;
131 SETJMP_FLOAT128 Xmm13
;
132 SETJMP_FLOAT128 Xmm14
;
133 SETJMP_FLOAT128 Xmm15
;
138 #ifndef _JMP_BUF_DEFINED
139 typedef _JBTYPE
jmp_buf[_JBLEN
];
140 #define _JMP_BUF_DEFINED
144 void * __cdecl
__attribute__ ((__nothrow__
)) mingw_getsp(void);
146 #ifdef USE_MINGW_SETJMP_TWO_ARGS
147 #ifndef _INC_SETJMPEX
148 #define setjmp(BUF) _setjmp((BUF),mingw_getsp())
149 int __cdecl
__attribute__ ((__nothrow__
)) _setjmp(jmp_buf _Buf
,void *_Ctx
);
152 #define setjmp(BUF) _setjmpex((BUF),mingw_getsp())
153 #define setjmpex(BUF) _setjmpex((BUF),mingw_getsp())
154 int __cdecl
__attribute__ ((__nothrow__
)) _setjmpex(jmp_buf _Buf
,void *_Ctx
);
157 #ifndef _INC_SETJMPEX
158 #define setjmp _setjmp
160 int __cdecl
__attribute__ ((__nothrow__
)) setjmp(jmp_buf _Buf
);
165 int __cdecl
setjmp(jmp_buf _Buf
);
167 __declspec(noreturn
) __attribute__ ((__nothrow__
)) void __cdecl
ms_longjmp(jmp_buf _Buf
,int _Value
)/* throw(...)*/;
168 __declspec(noreturn
) __attribute__ ((__nothrow__
)) void __cdecl
longjmp(jmp_buf _Buf
,int _Value
);