X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fruntime%2Fx86-win32-os.h;h=c7ffeca74015ae0e7080ec24cad0e0f297ec3013;hb=ba39d165a0bb6fabba6d6feb9b6fb88ae4d544ff;hp=e703338a79a351ecd53f6502dde1c102a7d1f4e9;hpb=584bfdc4e1093e43e4eb328a418b012745935a29;p=sbcl.git diff --git a/src/runtime/x86-win32-os.h b/src/runtime/x86-win32-os.h index e703338..c7ffeca 100644 --- a/src/runtime/x86-win32-os.h +++ b/src/runtime/x86-win32-os.h @@ -1,7 +1,13 @@ #ifndef _X86_WIN32_OS_H #define _X86_WIN32_OS_H -typedef CONTEXT os_context_t; +typedef struct os_context_t { + CONTEXT* win32_context; +#if defined(LISP_FEATURE_SB_THREAD) + sigset_t sigmask; +#endif +} os_context_t; + typedef long os_context_register_t; static inline os_context_t *arch_os_get_context(void **void_context) @@ -9,7 +15,15 @@ static inline os_context_t *arch_os_get_context(void **void_context) return (os_context_t *) *void_context; } +static inline DWORD NT_GetLastError() { + DWORD result; + asm("movl %%fs:0x0D,%0":"=r"(result)); + return result; +} + unsigned long os_context_fp_control(os_context_t *context); void os_restore_fp_control(os_context_t *context); +os_context_register_t * os_context_fp_addr(os_context_t *context); + #endif /* _X86_WIN32_OS_H */