diff --git a/src/code/ppc32.c b/src/code/ppc32.c
index 86949e1746909b7e33f9f27addf293cc8938ba00..d9482d95b46117f67eb560d8660668b42a65d75a 100644
--- a/src/code/ppc32.c
+++ b/src/code/ppc32.c
@@ -1,5 +1,5 @@
 /*
- * $Id: ppc32.c,v 1.11 2001/08/16 21:35:41 marcus Exp $
+ * $Id: ppc32.c,v 1.12 2001/09/19 22:30:40 marcus Exp $
  *
  * Machine code generator for 32 bit PowerPC
  *
@@ -338,6 +338,15 @@ void ppc32_mark(void)
   INCR_MARK_SP_REG(sizeof(struct svalue *));
 }
 
+static void ppc32_escape_catch(void)
+{
+  extern void *do_escape_catch_label;
+  void *pc;
+  __asm__("\tmflr %0" : "=r" (pc));
+  Pike_fp->pc = pc;
+  goto *do_escape_catch_label;
+}
+
 void ins_f_byte(unsigned int b)
 {
   void *addr;
@@ -400,6 +409,10 @@ void ins_f_byte(unsigned int b)
     SET_REG(PPC_REG_ARG1, 2);
     addr = (void *)f_add;
     break;
+
+  case F_ESCAPE_CATCH - F_OFFSET:
+    addr = (void *)ppc32_escape_catch;
+    break;
   }
 #endif