xref: /openbsd/gnu/gcc/gcc/config/pdp11/2bsd.h (revision 404b540a)
1*404b540aSrobert /* Definitions of target machine for GNU compiler, for a PDP with 2BSD
2*404b540aSrobert    Copyright (C) 1995, 1996, 1999, 2000 Free Software Foundation, Inc.
3*404b540aSrobert    Contributed by Michael K. Gschwind (mike@vlsivie.tuwien.ac.at).
4*404b540aSrobert 
5*404b540aSrobert This file is part of GCC.
6*404b540aSrobert 
7*404b540aSrobert GCC is free software; you can redistribute it and/or modify
8*404b540aSrobert it under the terms of the GNU General Public License as published by
9*404b540aSrobert the Free Software Foundation; either version 2, or (at your option)
10*404b540aSrobert any later version.
11*404b540aSrobert 
12*404b540aSrobert GCC is distributed in the hope that it will be useful,
13*404b540aSrobert but WITHOUT ANY WARRANTY; without even the implied warranty of
14*404b540aSrobert MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15*404b540aSrobert GNU General Public License for more details.
16*404b540aSrobert 
17*404b540aSrobert You should have received a copy of the GNU General Public License
18*404b540aSrobert along with GCC; see the file COPYING.  If not, write to
19*404b540aSrobert the Free Software Foundation, 51 Franklin Street, Fifth Floor,
20*404b540aSrobert Boston, MA 02110-1301, USA.  */
21*404b540aSrobert 
22*404b540aSrobert #define TWO_BSD
23*404b540aSrobert 
24*404b540aSrobert /* EXIT_IGNORE_STACK should be nonzero if, when returning from a function,
25*404b540aSrobert    the stack pointer does not matter.  The value is tested only in
26*404b540aSrobert    functions that have frame pointers.
27*404b540aSrobert    No definition is equivalent to always zero.  */
28*404b540aSrobert 
29*404b540aSrobert #undef EXIT_IGNORE_STACK
30*404b540aSrobert #define EXIT_IGNORE_STACK	1
31*404b540aSrobert 
32*404b540aSrobert #undef INITIAL_FRAME_POINTER_OFFSET
33*404b540aSrobert #define INITIAL_FRAME_POINTER_OFFSET(DEPTH_VAR)	\
34*404b540aSrobert {								\
35*404b540aSrobert   int offset;		      				\
36*404b540aSrobert   offset = get_frame_size();					\
37*404b540aSrobert   offset = (offset <= 2)? 0: (offset -2);			\
38*404b540aSrobert   (DEPTH_VAR) = offset+10;						\
39*404b540aSrobert }
40*404b540aSrobert 
41*404b540aSrobert /* Value should be nonzero if functions must have frame pointers.
42*404b540aSrobert    Zero means the frame pointer need not be set up (and parms
43*404b540aSrobert    may be accessed via the stack pointer) in functions that seem suitable.
44*404b540aSrobert    This is computed in `reload', in reload1.c.
45*404b540aSrobert   */
46*404b540aSrobert 
47*404b540aSrobert #undef FRAME_POINTER_REQUIRED
48*404b540aSrobert #define FRAME_POINTER_REQUIRED 1
49*404b540aSrobert 
50*404b540aSrobert /* Offset within stack frame to start allocating local variables at.
51*404b540aSrobert    If FRAME_GROWS_DOWNWARD, this is the offset to the END of the
52*404b540aSrobert    first local allocated.  Otherwise, it is the offset to the BEGINNING
53*404b540aSrobert    of the first local allocated.  */
54*404b540aSrobert #undef STARTING_FRAME_OFFSET
55*404b540aSrobert #define STARTING_FRAME_OFFSET -8
56*404b540aSrobert 
57*404b540aSrobert 
58*404b540aSrobert #undef ASM_DECLARE_FUNCTION_NAME
59*404b540aSrobert #define ASM_DECLARE_FUNCTION_NAME(STREAM, NAME, DECL)	\
60*404b540aSrobert do {							\
61*404b540aSrobert ASM_OUTPUT_LABEL (STREAM, NAME);			\
62*404b540aSrobert fprintf (STREAM, "~~%s:\n", NAME); 			\
63*404b540aSrobert } while (0)
64*404b540aSrobert 
65*404b540aSrobert #undef TARGET_UNIX_ASM_DEFAULT
66*404b540aSrobert #define TARGET_UNIX_ASM_DEFAULT MASK_UNIX_ASM
67