Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > Doxygensetjmp.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
1.7.6.1
|