mirror of
https://github.com/reactos/reactos.git
synced 2024-10-15 13:45:58 +00:00
[setjmp.h]
Add mingw_getsp as inline function svn path=/trunk/; revision=48152
This commit is contained in:
parent
0711c75539
commit
d7f170a4ee
|
@ -32,7 +32,9 @@ extern "C" {
|
||||||
unsigned long UnwindFunc;
|
unsigned long UnwindFunc;
|
||||||
unsigned long UnwindData[6];
|
unsigned long UnwindData[6];
|
||||||
} _JUMP_BUFFER;
|
} _JUMP_BUFFER;
|
||||||
|
|
||||||
#elif defined(__ia64__)
|
#elif defined(__ia64__)
|
||||||
|
|
||||||
typedef _CRT_ALIGN(16) struct _SETJMP_FLOAT128 {
|
typedef _CRT_ALIGN(16) struct _SETJMP_FLOAT128 {
|
||||||
__MINGW_EXTENSION __int64 LowPart;
|
__MINGW_EXTENSION __int64 LowPart;
|
||||||
__MINGW_EXTENSION __int64 HighPart;
|
__MINGW_EXTENSION __int64 HighPart;
|
||||||
|
@ -92,7 +94,9 @@ extern "C" {
|
||||||
__MINGW_EXTENSION __int64 Preds;
|
__MINGW_EXTENSION __int64 Preds;
|
||||||
|
|
||||||
} _JUMP_BUFFER;
|
} _JUMP_BUFFER;
|
||||||
|
|
||||||
#elif defined(__x86_64)
|
#elif defined(__x86_64)
|
||||||
|
|
||||||
typedef _CRT_ALIGN(16) struct _SETJMP_FLOAT128 {
|
typedef _CRT_ALIGN(16) struct _SETJMP_FLOAT128 {
|
||||||
__MINGW_EXTENSION unsigned __int64 Part[2];
|
__MINGW_EXTENSION unsigned __int64 Part[2];
|
||||||
} SETJMP_FLOAT128;
|
} SETJMP_FLOAT128;
|
||||||
|
@ -124,13 +128,34 @@ extern "C" {
|
||||||
SETJMP_FLOAT128 Xmm14;
|
SETJMP_FLOAT128 Xmm14;
|
||||||
SETJMP_FLOAT128 Xmm15;
|
SETJMP_FLOAT128 Xmm15;
|
||||||
} _JUMP_BUFFER;
|
} _JUMP_BUFFER;
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef _JMP_BUF_DEFINED
|
#ifndef _JMP_BUF_DEFINED
|
||||||
typedef _JBTYPE jmp_buf[_JBLEN];
|
typedef _JBTYPE jmp_buf[_JBLEN];
|
||||||
#define _JMP_BUF_DEFINED
|
#define _JMP_BUF_DEFINED
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void * __cdecl __MINGW_NOTHROW mingw_getsp(void);
|
static inline __attribute__((always_inline)) void * mingw_getsp(void)
|
||||||
|
{
|
||||||
|
void *value;
|
||||||
|
#if defined(__x86_64)
|
||||||
|
#ifdef _MSC_VER
|
||||||
|
__asm {mov value, rsp}
|
||||||
|
#else
|
||||||
|
__asm__ __volatile__("movq %%rsp, %[value]" : [value] "=r" (value) );
|
||||||
|
#endif
|
||||||
|
#elif defined(_X86_)
|
||||||
|
#ifdef _MSC_VER
|
||||||
|
__asm {mov value, esp}
|
||||||
|
#else
|
||||||
|
__asm__ __volatile__("movql %%esp, %[value]" : [value] "=r" (value) );
|
||||||
|
#endif
|
||||||
|
#else
|
||||||
|
#error mingw_getsp unimplemented
|
||||||
|
#endif
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef USE_MINGW_SETJMP_TWO_ARGS
|
#ifdef USE_MINGW_SETJMP_TWO_ARGS
|
||||||
#ifndef _INC_SETJMPEX
|
#ifndef _INC_SETJMPEX
|
||||||
|
|
Loading…
Reference in a new issue