summaryrefslogtreecommitdiff
path: root/boehm-gc/os_dep.c
diff options
context:
space:
mode:
authorSandro Tolaini <tolaini@libero.it>2006-09-22 01:47:30 +0200
committerTom Tromey <tromey@gcc.gnu.org>2006-09-21 23:47:30 +0000
commitde7a014db379cbfc0c7cf8f6d2bddc9e19f688e5 (patch)
treea59b18d3ecba84a151dd5bfc21322ecb5bb4fd21 /boehm-gc/os_dep.c
parentb76d34e959674bb91653ca0fc86cdf9a4dabf075 (diff)
downloadgcc-de7a014db379cbfc0c7cf8f6d2bddc9e19f688e5.tar.gz
os_dep.c: Port to Darwin/i386
2006-09-21 Sandro Tolaini <tolaini@libero.it> * os_dep.c: Port to Darwin/i386 * darwin_stop_world.c: Likewise * include/private/gcconfig.h: Likewise From-SVN: r117126
Diffstat (limited to 'boehm-gc/os_dep.c')
-rw-r--r--boehm-gc/os_dep.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/boehm-gc/os_dep.c b/boehm-gc/os_dep.c
index 13692d9bcd6..98ab6be5356 100644
--- a/boehm-gc/os_dep.c
+++ b/boehm-gc/os_dep.c
@@ -3802,6 +3802,10 @@ catch_exception_raise(
mach_msg_type_number_t exc_state_count = PPC_EXCEPTION_STATE64_COUNT;
ppc_exception_state64_t exc_state;
# endif
+# elif defined(I386)
+ thread_state_flavor_t flavor = i386_EXCEPTION_STATE;
+ mach_msg_type_number_t exc_state_count = i386_EXCEPTION_STATE_COUNT;
+ i386_exception_state_t exc_state;
# else
# error FIXME for non-ppc darwin
# endif
@@ -3833,7 +3837,13 @@ catch_exception_raise(
}
/* This is the address that caused the fault */
+#if defined(POWERPC)
addr = (char*) exc_state.dar;
+#elif defined (I386)
+ addr = (char*) exc_state.faultvaddr;
+#else
+# error FIXME for non POWERPC/I386
+#endif
if((HDR(addr)) == 0) {
/* Ugh... just like the SIGBUS problem above, it seems we get a bogus