From: Richard Stallman Date: Mon, 30 Mar 1992 01:47:51 +0000 (+0000) Subject: entered into RCS X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=0007bde5b532215e685d791edf9b5bd06ba75fdd;p=gcc.git entered into RCS From-SVN: r629 --- diff --git a/gcc/config/vax/vms.h b/gcc/config/vax/vms.h index 8b869742d51..8d463311709 100644 --- a/gcc/config/vax/vms.h +++ b/gcc/config/vax/vms.h @@ -32,6 +32,8 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ #undef TARGET_DEFAULT #undef CALL_USED_REGISTERS #undef MAYBE_VMS_FUNCTION_PROLOGUE +#undef FUNCTION_PROLOGUE +#undef STARTING_FRAME_OFFSET /* Predefine this in CPP because VMS limits the size of command options and GNU CPP is not used on VMS except with GNU C. */ @@ -59,6 +61,26 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ #define CALL_USED_REGISTERS {1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1} +/* We redefine this because there is a hidden variable on the stack + that VAXC$ESTABLISH uses. We just need to add four bytes to whatever + gcc thinks that we need. Similarily, we need to move all local variables + down 4 bytes in the stack. */ + +#define STARTING_FRAME_OFFSET -4 + +#define FUNCTION_PROLOGUE(FILE, SIZE) \ +{ register int regno; \ + register int mask = 0; \ + register int newsize = SIZE + 4; \ + extern char call_used_regs[]; \ + for (regno = 0; regno < FIRST_PSEUDO_REGISTER; regno++) \ + if (regs_ever_live[regno] && !call_used_regs[regno]) \ + mask |= 1 << regno; \ + fprintf (FILE, "\t.word 0x%x\n", mask); \ + MAYBE_VMS_FUNCTION_PROLOGUE(FILE) \ + if (newsize >= 64) fprintf (FILE, "\tmovab %d(sp),sp\n", -newsize);\ + else fprintf (FILE, "\tsubl2 $%d,sp\n", newsize); } + #define __MAIN_NAME " main (" /* * The MAYBE_VMS_FUNCTION_PROLOGUE macro works for both gcc and g++. It