OSDN Git Service

rs6000 exception handling support
authormrs <mrs@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 18 Feb 1995 21:05:17 +0000 (21:05 +0000)
committermrs <mrs@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 18 Feb 1995 21:05:17 +0000 (21:05 +0000)
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@8970 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/libgcc2.c

index 661a799..3f12552 100644 (file)
@@ -2277,6 +2277,24 @@ __unwind_function(void *ptr)
   asm("ret");
 }
 #endif
+
+#if #machine(rs6000)
+__unwind_function(void *ptr)
+{
+  asm("mr 31,1");
+  asm("l 1,0(1)");
+  asm("l 31,-4(1)");
+  asm("# br");
+
+  asm("mr 31,1");
+  asm("l 1,0(1)");
+  /* use 31 as a scratch register to restore the link register. */
+  asm("l 31, 8(1);mtlr 31 # l lr,8(1)");
+  asm("l 31,-4(1)");
+  asm("# br");
+  asm("mtctr 3;bctr # b 3");
+}
+#endif
 #endif /* L_eh */
 \f
 #ifdef L_pure