OSDN Git Service

* pa64-hpux.h (LDD_SUFFIX, PARSE_LDD_OUTPUT): Define.
[pf3gnuchains/gcc-fork.git] / gcc / config / pa / pa64-linux.h
1 /* Definitions for PA_RISC with ELF format on 64-bit Linux
2    Copyright (C) 1999, 2000, 2002 Free Software Foundation, Inc.
3
4 This file is part of GNU CC.
5
6 GNU CC 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 2, or (at your option)
9 any later version.
10
11 GNU CC 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 GNU CC; see the file COPYING.  If not, write to
18 the Free Software Foundation, 59 Temple Place - Suite 330,
19 Boston, MA 02111-1307, USA.  */
20
21 #if 0 /* needs some work :-( */
22 /* If defined, this macro specifies a table of register pairs used to
23    eliminate unneeded registers that point into the stack frame.  */
24
25 #define ELIMINABLE_REGS                                                 \
26 {                                                                       \
27   {FRAME_POINTER_REGNUM, STACK_POINTER_REGNUM},                         \
28   {ARG_POINTER_REGNUM,   STACK_POINTER_REGNUM},                         \
29   {ARG_POINTER_REGNUM,   FRAME_POINTER_REGNUM},                         \
30 }
31
32 /* A C expression that returns nonzero if the compiler is allowed to try to
33    replace register number FROM with register number TO.  The frame pointer
34    is automatically handled.  */
35
36 #define CAN_ELIMINATE(FROM, TO) 1
37
38 /* This macro is similar to `INITIAL_FRAME_POINTER_OFFSET'.  It
39    specifies the initial difference between the specified pair of
40    registers.  This macro must be defined if `ELIMINABLE_REGS' is
41    defined.  */
42 #define INITIAL_ELIMINATION_OFFSET(FROM, TO, OFFSET) \
43   do                                                            \
44     {                                                           \
45       int fsize;                                                \
46                                                                 \
47       fsize = compute_frame_size (get_frame_size (), 0);        \
48       if ((TO) == FRAME_POINTER_REGNUM                          \
49           && (FROM) == ARG_POINTER_REGNUM)                      \
50         {                                                       \
51           (OFFSET) = -16;                                       \
52           break;                                                \
53         }                                                       \
54                                                                 \
55       if ((TO) != STACK_POINTER_REGNUM)                         \
56         abort ();                                               \
57                                                                 \
58       switch (FROM)                                             \
59         {                                                       \
60         case FRAME_POINTER_REGNUM:                              \
61           (OFFSET) = - fsize;                                   \
62           break;                                                \
63                                                                 \
64         case ARG_POINTER_REGNUM:                                \
65           (OFFSET) = - fsize - 16;                              \
66           break;                                                \
67                                                                 \
68         default:                                                \
69           abort ();                                             \
70         }                                                       \
71     } while (0)
72 #endif