mirror of
https://github.com/reactos/reactos.git
synced 2025-02-23 17:05:46 +00:00
[setjmp.h]
Add mingw_getsp as inline function svn path=/trunk/; revision=48152
This commit is contained in:
parent
0711c75539
commit
d7f170a4ee
1 changed files with 26 additions and 1 deletions
|
@ -32,7 +32,9 @@ extern "C" {
|
|||
unsigned long UnwindFunc;
|
||||
unsigned long UnwindData[6];
|
||||
} _JUMP_BUFFER;
|
||||
|
||||
#elif defined(__ia64__)
|
||||
|
||||
typedef _CRT_ALIGN(16) struct _SETJMP_FLOAT128 {
|
||||
__MINGW_EXTENSION __int64 LowPart;
|
||||
__MINGW_EXTENSION __int64 HighPart;
|
||||
|
@ -92,7 +94,9 @@ extern "C" {
|
|||
__MINGW_EXTENSION __int64 Preds;
|
||||
|
||||
} _JUMP_BUFFER;
|
||||
|
||||
#elif defined(__x86_64)
|
||||
|
||||
typedef _CRT_ALIGN(16) struct _SETJMP_FLOAT128 {
|
||||
__MINGW_EXTENSION unsigned __int64 Part[2];
|
||||
} SETJMP_FLOAT128;
|
||||
|
@ -124,13 +128,34 @@ extern "C" {
|
|||
SETJMP_FLOAT128 Xmm14;
|
||||
SETJMP_FLOAT128 Xmm15;
|
||||
} _JUMP_BUFFER;
|
||||
|
||||
#endif
|
||||
|
||||
#ifndef _JMP_BUF_DEFINED
|
||||
typedef _JBTYPE jmp_buf[_JBLEN];
|
||||
#define _JMP_BUF_DEFINED
|
||||
#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
|
||||
#ifndef _INC_SETJMPEX
|
||||
|
|
Loading…
Reference in a new issue