Mon Jun 24 19:57:01 1996 Roland McGrath <roland@delasyd.gnu.ai.mit.edu>
[kopensolaris-gnu/glibc.git] / sysdeps / mips / __longjmp.c
index 1828714..c54d8a9 100644 (file)
@@ -1,5 +1,5 @@
-/* Copyright (C) 1992 Free Software Foundation, Inc.
-   Contributed by Brendan Kehoe (brendan@cs.widener.edu).
+/* Copyright (C) 1992, 1995 Free Software Foundation, Inc.
+   Contributed by Brendan Kehoe (brendan@zen.org).
 
 The GNU C Library is free software; you can redistribute it and/or
 modify it under the terms of the GNU Library General Public License as
@@ -22,9 +22,12 @@ Cambridge, MA 02139, USA.  */
 
 #undef __longjmp
 
-__NORETURN
+#ifndef        __GNUC__
+  #error This file uses GNU C extensions; you must compile with GCC.
+#endif
+
 void
-DEFUN(__longjmp, (env, val_arg), CONST __jmp_buf env AND int val_arg)
+DEFUN(__longjmp, (env, val_arg), __jmp_buf env AND int val_arg)
 {
   /* gcc 1.39.19 miscompiled the longjmp routine (as it did setjmp before
      the hack around it); force it to use $a1 for the longjmp value.
@@ -66,7 +69,7 @@ DEFUN(__longjmp, (env, val_arg), CONST __jmp_buf env AND int val_arg)
   /* Get the PC.  */
   asm volatile ("lw $31, %0" : : "m" (env[0].__pc));
   
-  /* Give setjmp() 1 if given a 0, or what they gave us if non-zero.  */
+  /* Give setjmp 1 if given a 0, or what they gave us if non-zero.  */
   if (val == 0)
     asm volatile ("li $2, 1");
   else
@@ -74,6 +77,5 @@ DEFUN(__longjmp, (env, val_arg), CONST __jmp_buf env AND int val_arg)
 
   asm volatile ("j $31");
 
-  /* Follow the trend.. */
   abort ();
 }