From 0c8ae3d30b985b3ceec0650ae4ebd33d474c60b2 Mon Sep 17 00:00:00 2001 From: Richard Kenner Date: Sun, 21 Nov 1993 15:38:55 -0500 Subject: [PATCH] (__enable_execute_stack): Add DolphinOS version. From-SVN: r6136 --- gcc/libgcc2.c | 34 +++++++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) 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. */ -- 2.30.2