From 75fecb85c09dba73492bee965b261a7c2caee443 Mon Sep 17 00:00:00 2001 From: Frode Solheim Date: Thu, 17 Sep 2015 19:12:20 +0200 Subject: [PATCH] JIT: 64-bit direct memory handler for OS X --- jit/exception_handler.cpp | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/jit/exception_handler.cpp b/jit/exception_handler.cpp index 0bf6c706..f4966c2e 100644 --- a/jit/exception_handler.cpp +++ b/jit/exception_handler.cpp @@ -81,7 +81,21 @@ typedef void *CONTEXT_T; #define CONTEXT_ESI(context) (((struct ucontext *) context)->uc_mcontext.gregs[REG_ESI]) #define CONTEXT_EDI(context) (((struct ucontext *) context)->uc_mcontext.gregs[REG_EDI]) -#elif defined(__DARWIN_UNIX03) && defined(_STRUCT_X86_EXCEPTION_STATE32) +#elif defined(__DARWIN_UNIX03) && defined(CPU_x86_64) + +typedef void *CONTEXT_T; +#define HAVE_CONTEXT_T 1 +#define CONTEXT_RIP(context) (*((unsigned long *) &((ucontext_t *) context)->uc_mcontext->__ss.__rip)) +#define CONTEXT_RAX(context) (((ucontext_t *) context)->uc_mcontext->__ss.__rax) +#define CONTEXT_RCX(context) (((ucontext_t *) context)->uc_mcontext->__ss.__rcx) +#define CONTEXT_RDX(context) (((ucontext_t *) context)->uc_mcontext->__ss.__rdx) +#define CONTEXT_RBX(context) (((ucontext_t *) context)->uc_mcontext->__ss.__rbx) +#define CONTEXT_RSP(context) (*((unsigned long *) &((ucontext_t *) context)->uc_mcontext->__ss.__rsp)) +#define CONTEXT_RBP(context) (((ucontext_t *) context)->uc_mcontext->__ss.__rbp) +#define CONTEXT_RSI(context) (((ucontext_t *) context)->uc_mcontext->__ss.__rsi) +#define CONTEXT_RDI(context) (((ucontext_t *) context)->uc_mcontext->__ss.__rdi) + +#elif defined(__DARWIN_UNIX03) && defined(CPU_i386) typedef void *CONTEXT_T; #define HAVE_CONTEXT_T 1 -- 2.47.3