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