Clone unwind_function for powerpc
authorMichael Meissner <meissner@gcc.gnu.org>
Wed, 1 Mar 1995 20:30:14 +0000 (20:30 +0000)
committerMichael Meissner <meissner@gcc.gnu.org>
Wed, 1 Mar 1995 20:30:14 +0000 (20:30 +0000)
From-SVN: r9103

gcc/libgcc2.c

index b8891da..39598ef 100644 (file)
@@ -2298,7 +2298,25 @@ __unwind_function(void *ptr)
   asm("# br");
   asm("mtctr 3;bctr # b 3");
 }
-#endif
+#endif /* rs6000 */
+
+#if #machine(powerpc)
+__unwind_function(void *ptr)
+{
+  asm("mr 31,1");
+  asm("lwz 1,0(1)");
+  asm("lwz 31,-4(1)");
+  asm("# br");
+
+  asm("mr 31,1");
+  asm("lwz 1,0(1)");
+  /* use 31 as a scratch register to restore the link register. */
+  asm("lwz 31, 8(1);mtlr 31 # l lr,8(1)");
+  asm("lwz 31,-4(1)");
+  asm("# br");
+  asm("mtctr 3;bctr # b 3");
+}
+#endif /* powerpc */
 #endif /* L_eh */
 \f
 #ifdef L_pure