(__enable_execute_stack): Add DolphinOS version.
authorRichard Kenner <kenner@gcc.gnu.org>
Sun, 21 Nov 1993 20:38:55 +0000 (15:38 -0500)
committerRichard Kenner <kenner@gcc.gnu.org>
Sun, 21 Nov 1993 20:38:55 +0000 (15:38 -0500)
From-SVN: r6136

gcc/libgcc2.c

index 7331b8930e2f55018a6e834fae370aafcb1304f7..273c03dd50c177e3b77c1be8f3683b34ddc55362 100644 (file)
@@ -1,6 +1,6 @@
 /* More subroutines needed by GCC output code on some machines.  */
 /* Compile this one with gcc.  */
-/* Copyright (C) 1989, 1992 Free Software Foundation, Inc.
+/* Copyright (C) 1989, 1992, 1993 Free Software Foundation, Inc.
 
 This file is part of GNU CC.
 
@@ -1843,6 +1843,38 @@ __enable_execute_stack ()
 }
 #endif /* __convex__ */
 
+#ifdef __DOLPHIN__
+
+/* Modified from the convex -code above. */
+
+#include <sys/param.h>
+#include <errno.h>
+#include <sys/m88kbcs.h>
+
+void
+__enable_execute_stack ()
+{
+  int save_errno;
+  static unsigned long lowest = USRSTACK;
+  unsigned long current = (unsigned long) &save_errno & -NBPC;
+  
+  /* Ignore errno being set. memctl sets errno to EINVAL whenever the
+     address is seen as 'negative'. That is the case with the stack.   */
+
+  save_errno=errno;
+  if (lowest > current)
+    {
+      unsigned len=lowest-current;
+      memctl(current,len,MCT_TEXT);
+      lowest = current;
+    }
+  else
+    memctl(current,NBPC,MCT_TEXT);
+  errno=save_errno;
+}
+
+#endif /* __DOLPHIN__ */
+
 #ifdef __pyr__
 
 #undef NULL /* Avoid errors if stdio.h and our stddef.h mismatch.  */