From: Richard Kenner Date: Sun, 21 Nov 1993 20:38:55 +0000 (-0500) Subject: (__enable_execute_stack): Add DolphinOS version. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=0c8ae3d30b985b3ceec0650ae4ebd33d474c60b2;p=gcc.git (__enable_execute_stack): Add DolphinOS version. From-SVN: r6136 --- diff --git a/gcc/libgcc2.c b/gcc/libgcc2.c index 7331b8930e2..273c03dd50c 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 +#include +#include + +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. */