diff options
author | Richard Kenner <kenner@gcc.gnu.org> | 1993-11-21 15:38:55 -0500 |
---|---|---|
committer | Richard Kenner <kenner@gcc.gnu.org> | 1993-11-21 15:38:55 -0500 |
commit | 0c8ae3d30b985b3ceec0650ae4ebd33d474c60b2 (patch) | |
tree | 6aea90fa6e398667ad4e38a45e07219ccf0975f5 | |
parent | 26d52b3e2ca167db17f4a364fe20200ebeeb4122 (diff) | |
download | gcc-0c8ae3d30b985b3ceec0650ae4ebd33d474c60b2.zip gcc-0c8ae3d30b985b3ceec0650ae4ebd33d474c60b2.tar.gz gcc-0c8ae3d30b985b3ceec0650ae4ebd33d474c60b2.tar.bz2 |
(__enable_execute_stack): Add DolphinOS version.
From-SVN: r6136
-rw-r--r-- | gcc/libgcc2.c | 34 |
1 files changed, 33 insertions, 1 deletions
diff --git a/gcc/libgcc2.c b/gcc/libgcc2.c index 7331b89..273c03d 100644 --- a/gcc/libgcc2.c +++ b/gcc/libgcc2.c @@ -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. */ |