]> gitweb.factorcode.org Git - factor.git/blobdiff - vm/os-macosx-x86.h
Initial import
[factor.git] / vm / os-macosx-x86.h
index 7bf12998bb0cdbc2dc5cab544dbd6896cda335a2..75a1a8cfe01f5c85454f0073279274f96b5dc9c4 100644 (file)
@@ -1,12 +1,19 @@
-#define SIGSEGV_EXC_STATE_TYPE i386_exception_state_t
-#define SIGSEGV_EXC_STATE_FLAVOR i386_EXCEPTION_STATE
-#define SIGSEGV_EXC_STATE_COUNT i386_EXCEPTION_STATE_COUNT
-#define SIGSEGV_EXC_STATE_FAULT(exc_state) (exc_state).faultvaddr
-#define SIGSEGV_THREAD_STATE_TYPE i386_thread_state_t
-#define SIGSEGV_THREAD_STATE_FLAVOR i386_THREAD_STATE
-#define SIGSEGV_THREAD_STATE_COUNT i386_THREAD_STATE_COUNT
-#define SIGSEGV_STACK_POINTER(thr_state) (thr_state).esp
-#define SIGSEGV_PROGRAM_COUNTER(thr_state) (thr_state).eip
+#define MACH_EXC_STATE_TYPE i386_exception_state_t
+#define MACH_EXC_STATE_FLAVOR i386_EXCEPTION_STATE
+#define MACH_EXC_STATE_COUNT i386_EXCEPTION_STATE_COUNT
+#define MACH_THREAD_STATE_TYPE i386_thread_state_t
+#define MACH_THREAD_STATE_FLAVOR i386_THREAD_STATE
+#define MACH_THREAD_STATE_COUNT i386_THREAD_STATE_COUNT
+
+#if __DARWIN_UNIX03
+    #define MACH_EXC_STATE_FAULT(exc_state) (exc_state).__faultvaddr
+    #define MACH_STACK_POINTER(thr_state) (thr_state).__esp
+    #define MACH_PROGRAM_COUNTER(thr_state) (thr_state).__eip
+#else
+    #define MACH_EXC_STATE_FAULT(exc_state) (exc_state).faultvaddr
+    #define MACH_STACK_POINTER(thr_state) (thr_state).esp
+    #define MACH_PROGRAM_COUNTER(thr_state) (thr_state).eip
+#endif
 
 /* Adjust stack pointer so we can push an arg */
 INLINE unsigned long fix_stack_ptr(unsigned long sp)
@@ -14,8 +21,8 @@ INLINE unsigned long fix_stack_ptr(unsigned long sp)
          return sp - (sp & 0xf);
 }
 
-INLINE void pass_arg0(SIGSEGV_THREAD_STATE_TYPE *thr_state, CELL arg)
+INLINE void pass_arg0(MACH_THREAD_STATE_TYPE *thr_state, CELL arg)
 {
-       *(CELL *)thr_state->esp = arg;
-       thr_state->esp -= CELLS;
+       *(CELL *)MACH_STACK_POINTER(*thr_state) = arg;
+       MACH_STACK_POINTER(*thr_state) -= CELLS;
 }