hid: Add HidD_GetManufacturerString stub.
[wine] / include / msvcrt / setjmp.h
1 /*
2  * Setjmp/Longjmp definitions
3  *
4  * Copyright 2001 Francois Gouget.
5  *
6  * This library is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU Lesser General Public
8  * License as published by the Free Software Foundation; either
9  * version 2.1 of the License, or (at your option) any later version.
10  *
11  * This library is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14  * Lesser General Public License for more details.
15  *
16  * You should have received a copy of the GNU Lesser General Public
17  * License along with this library; if not, write to the Free Software
18  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
19  */
20 #ifndef __WINE_SETJMP_H
21 #define __WINE_SETJMP_H
22
23 #include <crtdefs.h>
24
25 #include <pshpack8.h>
26
27 #ifdef __i386__
28
29 typedef struct __JUMP_BUFFER
30 {
31     unsigned long Ebp;
32     unsigned long Ebx;
33     unsigned long Edi;
34     unsigned long Esi;
35     unsigned long Esp;
36     unsigned long Eip;
37     unsigned long Registration;
38     unsigned long TryLevel;
39     /* Start of new struct members */
40     unsigned long Cookie;
41     unsigned long UnwindFunc;
42     unsigned long UnwindData[6];
43 } _JUMP_BUFFER;
44
45 #define _JBLEN 16
46 #define _JBTYPE int
47
48 #elif defined(__x86_64__)
49
50 typedef struct _SETJMP_FLOAT128
51 {
52     unsigned __int64 DECLSPEC_ALIGN(16) Part[2];
53 } SETJMP_FLOAT128;
54
55 typedef struct _JUMP_BUFFER
56 {
57     unsigned __int64 Frame;
58     unsigned __int64 Rbx;
59     unsigned __int64 Rsp;
60     unsigned __int64 Rbp;
61     unsigned __int64 Rsi;
62     unsigned __int64 Rdi;
63     unsigned __int64 R12;
64     unsigned __int64 R13;
65     unsigned __int64 R14;
66     unsigned __int64 R15;
67     unsigned __int64 Rip;
68     unsigned __int64 Spare;
69     SETJMP_FLOAT128  Xmm6;
70     SETJMP_FLOAT128  Xmm7;
71     SETJMP_FLOAT128  Xmm8;
72     SETJMP_FLOAT128  Xmm9;
73     SETJMP_FLOAT128  Xmm10;
74     SETJMP_FLOAT128  Xmm11;
75     SETJMP_FLOAT128  Xmm12;
76     SETJMP_FLOAT128  Xmm13;
77     SETJMP_FLOAT128  Xmm14;
78     SETJMP_FLOAT128  Xmm15;
79 } _JUMP_BUFFER;
80
81 #define _JBLEN  16
82 typedef SETJMP_FLOAT128 _JBTYPE;
83
84 #elif defined(__arm__)
85
86 typedef struct _JUMP_BUFFER
87 {
88     unsigned long Frame;
89     unsigned long R4;
90     unsigned long R5;
91     unsigned long R6;
92     unsigned long R7;
93     unsigned long R8;
94     unsigned long R9;
95     unsigned long R10;
96     unsigned long R11;
97     unsigned long Sp;
98     unsigned long Pc;
99     unsigned long Fpscr;
100     unsigned long long D[8];
101 } _JUMP_BUFFER;
102
103 #define _JBLEN  28
104 #define _JBTYPE int
105
106 #else
107
108 #define _JBLEN 1
109 #define _JBTYPE int
110
111 #endif
112
113 typedef _JBTYPE jmp_buf[_JBLEN];
114
115 #ifdef __cplusplus
116 extern "C" {
117 #endif
118
119 int __cdecl _setjmp(jmp_buf);
120 void __cdecl longjmp(jmp_buf,int);
121
122 #ifdef __cplusplus
123 }
124 #endif
125
126 #define setjmp _setjmp
127
128 #include <poppack.h>
129
130 #endif /* __WINE_SETJMP_H */