Index: /trunk/source/lisp-kernel/arm-exceptions.c
===================================================================
--- /trunk/source/lisp-kernel/arm-exceptions.c	(revision 14329)
+++ /trunk/source/lisp-kernel/arm-exceptions.c	(revision 14330)
@@ -1958,4 +1958,5 @@
   fprintf(dbgout, "doing pseudo_sigreturn for 0x%x\n",tcr);
 #endif
+  tcr->last_lisp_frame = *((natural *)(tcr->last_lisp_frame));
   xp = tcr->pending_exception_context;
   if (xp) {
@@ -2052,5 +2053,5 @@
   ExceptionInformation *pseudosigcontext;
   int old_valence = tcr->valence;
-  natural stackp;
+  natural stackp, *pstackp;
 
 #ifdef DEBUG_MACH_EXCEPTIONS
@@ -2058,6 +2059,11 @@
 #endif
   pseudosigcontext = create_thread_context_frame(thread, &stackp);
+  pstackp = (natural *)stackp;
+  *--pstackp = tcr->last_lisp_frame;
+  stackp = (natural)pstackp;
+  tcr->last_lisp_frame = stackp;
   pseudosigcontext->uc_onstack = 0;
   pseudosigcontext->uc_sigmask = (sigset_t) 0;
+  pseudosigcontext->uc_mcsize = ARM_MCONTEXT_SIZE;
   tcr->pending_exception_context = pseudosigcontext;
   tcr->valence = TCR_STATE_EXCEPTION_WAIT;
