ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

setjmp.h
Go to the documentation of this file.
00001 
00006 #ifndef _INC_SETJMP
00007 #define _INC_SETJMP
00008 
00009 #include <crtdefs.h>
00010 
00011 #pragma pack(push,_CRT_PACKING)
00012 
00013 #ifdef __cplusplus
00014 extern "C" {
00015 #endif
00016 
00017 #if (defined(_X86_) && !defined(__x86_64))
00018 
00019 #define _JBLEN 16
00020 #define _JBTYPE int
00021 
00022   typedef struct __JUMP_BUFFER {
00023     unsigned long Ebp;
00024     unsigned long Ebx;
00025     unsigned long Edi;
00026     unsigned long Esi;
00027     unsigned long Esp;
00028     unsigned long Eip;
00029     unsigned long Registration;
00030     unsigned long TryLevel;
00031     unsigned long Cookie;
00032     unsigned long UnwindFunc;
00033     unsigned long UnwindData[6];
00034   } _JUMP_BUFFER;
00035 
00036 #elif defined(__ia64__)
00037 
00038   typedef _CRT_ALIGN(16) struct _SETJMP_FLOAT128 {
00039     __MINGW_EXTENSION __int64 LowPart;
00040     __MINGW_EXTENSION __int64 HighPart;
00041   } SETJMP_FLOAT128;
00042 
00043 #define _JBLEN 33
00044   typedef SETJMP_FLOAT128 _JBTYPE;
00045 
00046   typedef struct __JUMP_BUFFER {
00047 
00048     unsigned long iAReserved[6];
00049 
00050     unsigned long Registration;
00051     unsigned long TryLevel;
00052     unsigned long Cookie;
00053     unsigned long UnwindFunc;
00054 
00055     unsigned long UnwindData[6];
00056 
00057     SETJMP_FLOAT128 FltS0;
00058     SETJMP_FLOAT128 FltS1;
00059     SETJMP_FLOAT128 FltS2;
00060     SETJMP_FLOAT128 FltS3;
00061     SETJMP_FLOAT128 FltS4;
00062     SETJMP_FLOAT128 FltS5;
00063     SETJMP_FLOAT128 FltS6;
00064     SETJMP_FLOAT128 FltS7;
00065     SETJMP_FLOAT128 FltS8;
00066     SETJMP_FLOAT128 FltS9;
00067     SETJMP_FLOAT128 FltS10;
00068     SETJMP_FLOAT128 FltS11;
00069     SETJMP_FLOAT128 FltS12;
00070     SETJMP_FLOAT128 FltS13;
00071     SETJMP_FLOAT128 FltS14;
00072     SETJMP_FLOAT128 FltS15;
00073     SETJMP_FLOAT128 FltS16;
00074     SETJMP_FLOAT128 FltS17;
00075     SETJMP_FLOAT128 FltS18;
00076     SETJMP_FLOAT128 FltS19;
00077     __MINGW_EXTENSION __int64 FPSR;
00078     __MINGW_EXTENSION __int64 StIIP;
00079     __MINGW_EXTENSION __int64 BrS0;
00080     __MINGW_EXTENSION __int64 BrS1;
00081     __MINGW_EXTENSION __int64 BrS2;
00082     __MINGW_EXTENSION __int64 BrS3;
00083     __MINGW_EXTENSION __int64 BrS4;
00084     __MINGW_EXTENSION __int64 IntS0;
00085     __MINGW_EXTENSION __int64 IntS1;
00086     __MINGW_EXTENSION __int64 IntS2;
00087     __MINGW_EXTENSION __int64 IntS3;
00088     __MINGW_EXTENSION __int64 RsBSP;
00089     __MINGW_EXTENSION __int64 RsPFS;
00090     __MINGW_EXTENSION __int64 ApUNAT;
00091     __MINGW_EXTENSION __int64 ApLC;
00092     __MINGW_EXTENSION __int64 IntSp;
00093     __MINGW_EXTENSION __int64 IntNats;
00094     __MINGW_EXTENSION __int64 Preds;
00095 
00096   } _JUMP_BUFFER;
00097 
00098 #elif defined(__x86_64)
00099 
00100   typedef _CRT_ALIGN(16) struct _SETJMP_FLOAT128 {
00101     __MINGW_EXTENSION unsigned __int64 Part[2];
00102   } SETJMP_FLOAT128;
00103 
00104 #define _JBLEN 16
00105   typedef SETJMP_FLOAT128 _JBTYPE;
00106 
00107   typedef struct _JUMP_BUFFER {
00108     __MINGW_EXTENSION unsigned __int64 Frame;
00109     __MINGW_EXTENSION unsigned __int64 Rbx;
00110     __MINGW_EXTENSION unsigned __int64 Rsp;
00111     __MINGW_EXTENSION unsigned __int64 Rbp;
00112     __MINGW_EXTENSION unsigned __int64 Rsi;
00113     __MINGW_EXTENSION unsigned __int64 Rdi;
00114     __MINGW_EXTENSION unsigned __int64 R12;
00115     __MINGW_EXTENSION unsigned __int64 R13;
00116     __MINGW_EXTENSION unsigned __int64 R14;
00117     __MINGW_EXTENSION unsigned __int64 R15;
00118     __MINGW_EXTENSION unsigned __int64 Rip;
00119     __MINGW_EXTENSION unsigned __int64 Spare;
00120     SETJMP_FLOAT128 Xmm6;
00121     SETJMP_FLOAT128 Xmm7;
00122     SETJMP_FLOAT128 Xmm8;
00123     SETJMP_FLOAT128 Xmm9;
00124     SETJMP_FLOAT128 Xmm10;
00125     SETJMP_FLOAT128 Xmm11;
00126     SETJMP_FLOAT128 Xmm12;
00127     SETJMP_FLOAT128 Xmm13;
00128     SETJMP_FLOAT128 Xmm14;
00129     SETJMP_FLOAT128 Xmm15;
00130   } _JUMP_BUFFER;
00131 
00132 #elif defined(_M_ARM)
00133 
00134 #define _JBLEN  11
00135 #define _JBTYPE int
00136 
00137 #else
00138 
00139 #error Define Setjmp for this architecture!
00140 
00141 #endif
00142 
00143 #ifndef _JMP_BUF_DEFINED
00144   typedef _JBTYPE jmp_buf[_JBLEN];
00145 #define _JMP_BUF_DEFINED
00146 #endif
00147 
00148 #ifdef USE_MINGW_SETJMP_TWO_ARGS
00149 #ifndef _INC_SETJMPEX
00150 #if defined(__x86_64)
00151 # define mingw_getsp() \
00152   ({ void* value; __asm__ __volatile__("movq %%rsp, %[value]" : [value] "=r" (value)); value; })
00153 #elif defined(_X86_)
00154 # define mingw_getsp() \
00155   ({ void* value; __asm__ __volatile__("movl %%esp, %[value]" : [value] "=r" (value)); value; })
00156 #endif
00157 #define setjmp(BUF) _setjmp((BUF),mingw_getsp())
00158   int __MINGW_NOTHROW __cdecl _setjmp(jmp_buf _Buf,void *_Ctx);
00159 #else /* _INC_SETJMPEX */
00160 #undef setjmp
00161 #define setjmp(BUF) _setjmpex((BUF),mingw_getsp())
00162 #define setjmpex(BUF) _setjmpex((BUF),mingw_getsp())
00163   int __MINGW_NOTHROW __cdecl _setjmpex(jmp_buf _Buf,void *_Ctx);
00164 #endif /* _INC_SETJMPEX */
00165 #else /* !USE_MINGW_SETJMP_TWO_ARGS */
00166 #ifndef _INC_SETJMPEX
00167 #define setjmp _setjmp
00168 #endif
00169   int __MINGW_NOTHROW __cdecl setjmp(jmp_buf _Buf);
00170 #endif /* !USE_MINGW_SETJMP_TWO_ARGS */
00171 
00172   __declspec(noreturn) __MINGW_NOTHROW void __cdecl ms_longjmp(jmp_buf _Buf,int _Value)/* throw(...)*/;
00173   __declspec(noreturn) __MINGW_NOTHROW void __cdecl longjmp(jmp_buf _Buf,int _Value);
00174 
00175 #ifdef __cplusplus
00176 }
00177 #endif
00178 
00179 #pragma pack(pop)
00180 #endif

Generated on Sat May 26 2012 04:27:26 for ReactOS by doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.