X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fruntime%2Fx86-darwin-os.h;h=f3b7311f7627a1d768e3400b72bc31506b0a4b10;hb=bf40ae88bc289fd765a33861cc4bc0853ed483ba;hp=8ee0e386b8107fca3b17a7bc63cb797a7a573a4d;hpb=3d2165e67f9ad1443f6e7d8ad24810000b0436e8;p=sbcl.git diff --git a/src/runtime/x86-darwin-os.h b/src/runtime/x86-darwin-os.h index 8ee0e38..f3b7311 100644 --- a/src/runtime/x86-darwin-os.h +++ b/src/runtime/x86-darwin-os.h @@ -1,11 +1,72 @@ #ifndef _X86_DARWIN_OS_H #define _X86_DARWIN_OS_H -static inline os_context_t *arch_os_get_context(void **void_context) { +#include +#include + +#include "darwin-os.h" + +typedef int os_context_register_t; + +static inline os_context_t *arch_os_get_context(void **void_context) +{ return (os_context_t *) *void_context; } +void set_data_desc_size(data_desc_t* desc, unsigned long size); +void set_data_desc_addr(data_desc_t* desc, void* addr); + +/* On OS X 10.5, the field names for the thread state have changed and + * now are prepended with __. Use some #define hackery to deal with + * this. + */ +#if __DARWIN_UNIX03 + +#define CONTEXT_ADDR_FROM_STEM(stem) &context->uc_mcontext->__ss.__##stem +#define EIP __eip +#define ESP __esp +#define EBP __ebp +#define EAX __eax +#define EBX __ebx +#define ECX __ecx +#define EDX __edx +#define ESI __esi +#define EDI __edi +#define EFLAGS __eflags +#define CS __cs +#define DS __ds +#define ES __es +#define FS __fs +#define SS __ss +#define GS __gs + +#define FPU_FCW __fpu_fcw + +#else + #define CONTEXT_ADDR_FROM_STEM(stem) &context->uc_mcontext->ss.stem -#define DARWIN_FIX_CONTEXT(context) +#define EIP eip +#define ESP esp +#define EBP ebp +#define EAX eax +#define EBX ebx +#define ECX ecx +#define EDX edx +#define ESI esi +#define EDI edi +#define EFLAGS eflags +#define CS cs +#define DS ds +#define ES es +#define FS fs +#define SS ss +#define GS gs + +#define FPU_FCW fpu_fcw + +#endif /* __DARWIN_UNIX03 */ + +#define RESTORE_FP_CONTROL_FROM_CONTEXT +void os_restore_fp_control(os_context_t *context); #endif /* _X86_DARWIN_OS_H */