xref: /netbsd-src/external/gpl3/gcc.old/dist/gcc/config/pa/pa64-linux.h (revision e7ac2a8b5bd66fa2e050809de09a075c36a7014d)
1 /* Definitions for PA_RISC with ELF format on 64-bit Linux
2    Copyright (C) 1999-2018 Free Software Foundation, Inc.
3 
4 This file is part of GCC.
5 
6 GCC is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 3, or (at your option)
9 any later version.
10 
11 GCC is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14 GNU General Public License for more details.
15 
16 You should have received a copy of the GNU General Public License
17 along with GCC; see the file COPYING3.  If not see
18 <http://www.gnu.org/licenses/>.  */
19 
20 #if 0 /* needs some work :-( */
21 /* If defined, this macro specifies a table of register pairs used to
22    eliminate unneeded registers that point into the stack frame.  */
23 
24 #define ELIMINABLE_REGS							\
25 {									\
26   {FRAME_POINTER_REGNUM, STACK_POINTER_REGNUM},				\
27   {ARG_POINTER_REGNUM,	 STACK_POINTER_REGNUM},				\
28   {ARG_POINTER_REGNUM,	 FRAME_POINTER_REGNUM},				\
29 }
30 
31 /* This macro returns the initial difference between the specified pair
32    of registers.  */
33 #define INITIAL_ELIMINATION_OFFSET(FROM, TO, OFFSET) \
34   do								\
35     {								\
36       int fsize;						\
37 								\
38       fsize = pa_compute_frame_size (get_frame_size (), 0);	\
39       if ((TO) == FRAME_POINTER_REGNUM				\
40 	  && (FROM) == ARG_POINTER_REGNUM)			\
41 	{							\
42 	  (OFFSET) = -16;					\
43 	  break;						\
44 	}							\
45 								\
46       gcc_assert ((TO) == STACK_POINTER_REGNUM);		\
47 								\
48       switch (FROM)						\
49 	{							\
50 	case FRAME_POINTER_REGNUM:				\
51 	  (OFFSET) = - fsize;					\
52 	  break;						\
53 								\
54 	case ARG_POINTER_REGNUM:				\
55 	  (OFFSET) = - fsize - 16;				\
56 	  break;						\
57 								\
58 	default:						\
59 	  gcc_unreachable ();					\
60 	}							\
61     } while (0)
62 #endif
63