+2007-01-25 Andreas Tobler <a.tobler@schweiz.org>
+
+ * darwin_stop_world.c: Move THREAD_FLD defines to ...
+ * include/private/gc_priv.h: ... here.
+ Fix THREAD_STATE definitions for ppc64.
+ * os_dep.c (catch_exception_raise): Use THREAD_FLD for exc_state member
+ access.
+
2007-01-18 Andreas Tobler <a.tobler@schweiz.org>
* os_dep.c (if defined(MPROTECT_VDB) && defined(DARWIN)): Clean up and
# endif
#endif
-/* Try to work out the right way to access thread state structure members.
- The structure has changed its definition in different Darwin versions. */
-/* This now defaults to the (older) names without __, thus hopefully */
-/* not breaking any existing Makefile.direct builds. */
-#if defined (HAS_PPC_THREAD_STATE___R0) || \
- defined (HAS_PPC_THREAD_STATE64___R0) || \
- defined (HAS_X86_THREAD_STATE32___EAX) || \
- defined (HAS_X86_THREAD_STATE64___RAX)
-# define THREAD_FLD(x) __ ## x
-#else
-# define THREAD_FLD(x) x
-#endif
typedef struct StackFrame {
unsigned long savedSP;
# if defined(POWERPC)
# if CPP_WORDSZ == 32
# define GC_THREAD_STATE_T ppc_thread_state_t
+# define GC_MACH_THREAD_STATE PPC_THREAD_STATE
+# define GC_MACH_THREAD_STATE_COUNT PPC_THREAD_STATE_COUNT
# define GC_MACH_HEADER mach_header
# define GC_MACH_SECTION section
# else
# define GC_THREAD_STATE_T ppc_thread_state64_t
+# define GC_MACH_THREAD_STATE PPC_THREAD_STATE64
+# define GC_MACH_THREAD_STATE_COUNT PPC_THREAD_STATE64_COUNT
# define GC_MACH_HEADER mach_header_64
# define GC_MACH_SECTION section_64
# endif
-# define GC_MACH_THREAD_STATE PPC_THREAD_STATE
-# define GC_MACH_THREAD_STATE_COUNT PPC_THREAD_STATE_COUNT
# elif defined(I386) || defined(X86_64)
# if CPP_WORDSZ == 32
# define GC_THREAD_STATE_T x86_thread_state32_t
# define GC_MACH_THREAD_STATE MACHINE_THREAD_STATE
# define GC_MACH_THREAD_STATE_COUNT MACHINE_THREAD_STATE_COUNT
# endif
+/* Try to work out the right way to access thread state structure members.
+ The structure has changed its definition in different Darwin versions.
+ This now defaults to the (older) names without __, thus hopefully,
+ not breaking any existing Makefile.direct builds. */
+# if defined (HAS_PPC_THREAD_STATE___R0) \
+ || defined (HAS_PPC_THREAD_STATE64___R0) \
+ || defined (HAS_X86_THREAD_STATE32___EAX) \
+ || defined (HAS_X86_THREAD_STATE64___RAX)
+# define THREAD_FLD(x) __ ## x
+# else
+# define THREAD_FLD(x) x
+# endif
#endif
/*********************************/
/* This is the address that caused the fault */
# if defined(POWERPC)
- addr = (char*) exc_state.dar;
+ addr = (char*) exc_state. THREAD_FLD(dar);
# elif defined (I386) || defined (X86_64)
- addr = (char*) exc_state.faultvaddr;
+ addr = (char*) exc_state. THREAD_FLD(faultvaddr);
# else
# error FIXME for non POWERPC/I386
# endif