X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fruntime%2Fx86-darwin-os.h;h=edc3a6ca848de83ee107637f001a86778b41dbc8;hb=c2ac5ba3964165ee2d21ccd4c6bf8bdc48e1a165;hp=36581d33aec7892200de4106649c4dd66437c507;hpb=ba70061023f0e124aa1149f3203ec67c0fac155d;p=sbcl.git diff --git a/src/runtime/x86-darwin-os.h b/src/runtime/x86-darwin-os.h index 36581d3..edc3a6c 100644 --- a/src/runtime/x86-darwin-os.h +++ b/src/runtime/x86-darwin-os.h @@ -8,14 +8,61 @@ typedef int os_context_register_t; -static inline os_context_t *arch_os_get_context(void **void_context) { +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); +/* As of XCode 3.0, the field names for the thread state have changed + * and now are prepended with __. Use some #define hackery to deal + * with this. MAC_OS_X_VERSION_10_5 seems to be a good test to see if + * we need the new style field names. + */ +#if MAC_OS_X_VERSION_10_5 + +#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 + +#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 + +#endif /* MAC_OS_X_VERSION_10_5 */ + + #endif /* _X86_DARWIN_OS_H */