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)
17 #if (defined(_X86_) && !defined(__x86_64))
22 typedef struct __JUMP_BUFFER
{
29 unsigned long Registration
;
30 unsigned long TryLevel
;
32 unsigned long UnwindFunc
;
33 unsigned long UnwindData
[6];
35 #elif defined(__ia64__)
36 typedef _CRT_ALIGN(16) struct _SETJMP_FLOAT128
{
42 typedef SETJMP_FLOAT128 _JBTYPE
;
44 typedef struct __JUMP_BUFFER
{
46 unsigned long iAReserved
[6];
48 unsigned long Registration
;
49 unsigned long TryLevel
;
51 unsigned long UnwindFunc
;
53 unsigned long UnwindData
[6];
55 SETJMP_FLOAT128 FltS0
;
56 SETJMP_FLOAT128 FltS1
;
57 SETJMP_FLOAT128 FltS2
;
58 SETJMP_FLOAT128 FltS3
;
59 SETJMP_FLOAT128 FltS4
;
60 SETJMP_FLOAT128 FltS5
;
61 SETJMP_FLOAT128 FltS6
;
62 SETJMP_FLOAT128 FltS7
;
63 SETJMP_FLOAT128 FltS8
;
64 SETJMP_FLOAT128 FltS9
;
65 SETJMP_FLOAT128 FltS10
;
66 SETJMP_FLOAT128 FltS11
;
67 SETJMP_FLOAT128 FltS12
;
68 SETJMP_FLOAT128 FltS13
;
69 SETJMP_FLOAT128 FltS14
;
70 SETJMP_FLOAT128 FltS15
;
71 SETJMP_FLOAT128 FltS16
;
72 SETJMP_FLOAT128 FltS17
;
73 SETJMP_FLOAT128 FltS18
;
74 SETJMP_FLOAT128 FltS19
;
95 #elif defined(__x86_64)
96 typedef _CRT_ALIGN(16) struct _SETJMP_FLOAT128
{
97 unsigned __int64 Part
[2];
101 typedef SETJMP_FLOAT128 _JBTYPE
;
103 typedef struct _JUMP_BUFFER
{
104 unsigned __int64 Frame
;
105 unsigned __int64 Rbx
;
106 unsigned __int64 Rsp
;
107 unsigned __int64 Rbp
;
108 unsigned __int64 Rsi
;
109 unsigned __int64 Rdi
;
110 unsigned __int64 R12
;
111 unsigned __int64 R13
;
112 unsigned __int64 R14
;
113 unsigned __int64 R15
;
114 unsigned __int64 Rip
;
115 unsigned __int64 Spare
;
116 SETJMP_FLOAT128 Xmm6
;
117 SETJMP_FLOAT128 Xmm7
;
118 SETJMP_FLOAT128 Xmm8
;
119 SETJMP_FLOAT128 Xmm9
;
120 SETJMP_FLOAT128 Xmm10
;
121 SETJMP_FLOAT128 Xmm11
;
122 SETJMP_FLOAT128 Xmm12
;
123 SETJMP_FLOAT128 Xmm13
;
124 SETJMP_FLOAT128 Xmm14
;
125 SETJMP_FLOAT128 Xmm15
;
128 #ifndef _JMP_BUF_DEFINED
129 typedef _JBTYPE
jmp_buf[_JBLEN
];
130 #define _JMP_BUF_DEFINED
133 void * __cdecl
__attribute__ ((__nothrow__
)) mingw_getsp(void);
135 #ifdef USE_MINGW_SETJMP_TWO_ARGS
136 #ifndef _INC_SETJMPEX
137 #define setjmp(BUF) _setjmp((BUF),mingw_getsp())
138 int __cdecl
__attribute__ ((__nothrow__
)) _setjmp(jmp_buf _Buf
,void *_Ctx
);
141 #define setjmp(BUF) _setjmpex((BUF),mingw_getsp())
142 #define setjmpex(BUF) _setjmpex((BUF),mingw_getsp())
143 int __cdecl
__attribute__ ((__nothrow__
)) _setjmpex(jmp_buf _Buf
,void *_Ctx
);
146 #ifndef _INC_SETJMPEX
147 #define setjmp _setjmp
149 int __cdecl
__attribute__ ((__nothrow__
)) setjmp(jmp_buf _Buf
);
152 __declspec(noreturn
) __attribute__ ((__nothrow__
)) void __cdecl
ms_longjmp(jmp_buf _Buf
,int _Value
)/* throw(...)*/;
153 __declspec(noreturn
) __attribute__ ((__nothrow__
)) void __cdecl
longjmp(jmp_buf _Buf
,int _Value
);