Index: /trunk/source/lisp-kernel/ppc-exceptions.c
===================================================================
--- /trunk/source/lisp-kernel/ppc-exceptions.c	(revision 8539)
+++ /trunk/source/lisp-kernel/ppc-exceptions.c	(revision 8540)
@@ -808,4 +808,5 @@
    do_hard_stack_overflow,
    do_hard_stack_overflow,
+   do_heap_soft_write
    };
 
@@ -1095,4 +1096,11 @@
 #endif
   return -1;
+}
+
+OSStatus
+do_heap_soft_write(ExceptionInformation *xp, protected_area_ptr area, BytePtr addr)
+{
+  UnProtectMemory((LogicalAddress)(truncate_to_power_of_2(addr, log2_page_size)),page_size);
+  return 0;
 }
 
Index: /trunk/source/lisp-kernel/ppc-exceptions.h
===================================================================
--- /trunk/source/lisp-kernel/ppc-exceptions.h	(revision 8539)
+++ /trunk/source/lisp-kernel/ppc-exceptions.h	(revision 8540)
@@ -408,5 +408,5 @@
 
 #ifdef DARWIN
-#define SIGNAL_FOR_PROCESS_INTERRUPT SIGEMT
+#define SIGNAL_FOR_PROCESS_INTERRUPT SIGUSR1
 #endif
 #ifdef LINUX
Index: /trunk/source/lisp-kernel/x86-exceptions.c
===================================================================
--- /trunk/source/lisp-kernel/x86-exceptions.c	(revision 8539)
+++ /trunk/source/lisp-kernel/x86-exceptions.c	(revision 8540)
@@ -1587,8 +1587,6 @@
 {
   thread_suspend_signal = SIG_SUSPEND_THREAD;
-  thread_resume_signal = SIG_RESUME_THREAD;
 
   install_signal_handler(thread_suspend_signal, (void *)SUSPEND_RESUME_HANDLER);
-  install_signal_handler(thread_resume_signal, (void *)SUSPEND_RESUME_HANDLER);
   install_signal_handler(SIGQUIT, (void *)QUIT_HANDLER);
 }
Index: /trunk/source/lisp-kernel/x86-exceptions.h
===================================================================
--- /trunk/source/lisp-kernel/x86-exceptions.h	(revision 8539)
+++ /trunk/source/lisp-kernel/x86-exceptions.h	(revision 8540)
@@ -77,5 +77,5 @@
 
 #ifdef DARWIN
-#define SIGNAL_FOR_PROCESS_INTERRUPT SIGEMT
+#define SIGNAL_FOR_PROCESS_INTERRUPT SIGUSR1
 #endif
 #ifdef LINUX
