|
|
1.1 root 1: /* Definitions of target machine for GNU compiler.
2:
3: Citicorp/TTI Unicom PBB version (using GAS with a %-register prefix)
4:
5: Copyright (C) 1987, 1988, 1990 Free Software Foundation, Inc.
6:
7: This file is part of GNU CC.
8:
9: GNU CC is free software; you can redistribute it and/or modify
10: it under the terms of the GNU General Public License as published by
11: the Free Software Foundation; either version 2, or (at your option)
12: any later version.
13:
14: GNU CC is distributed in the hope that it will be useful,
15: but WITHOUT ANY WARRANTY; without even the implied warranty of
16: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17: GNU General Public License for more details.
18:
19: You should have received a copy of the GNU General Public License
20: along with GNU CC; see the file COPYING. If not, write to
21: the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
22:
23: #include "m68k.h"
24:
25: /* Without STRUCTURE_SIZE_BOUNDARY, we can't ensure that structures are
26: aligned such that we can correctly extract bitfields from them.
27: Someone should check whether the usual compiler on this machine
28: provides the equivalent behavior of STRUCTURE_SIZE_BOUNDARY. */
29: /* Alternative solutions are (1) define PCC_BITFIELD_TYPE_MATTERS,
30: if that fits what the usual compiler does,
31: or disable the -m68000 and -mnobitfield options. */
32: #error This doesn't define STRUCTURE_SIZE_BOUNDARY
33:
34: /* See m68k.h. 5 means 68020 without 68881. */
35:
36: #define TARGET_DEFAULT 5
37:
38: /* Define __HAVE_68881__ in preprocessor if -m68881 is specified.
39: This will control the use of inline 68881 insns in certain macros. */
40:
41: #define CPP_SPEC "%{m68881:-D__HAVE_68881__}"
42:
43: /* Names to predefine in the preprocessor for this target machine. */
44:
45: #define CPP_PREDEFINES "-Dm68k -Dunix -DUnicomPBB -Dmc68k -Dmc68020 -Dmc68k32"
46:
47: /* We want DBX format for use with gdb under COFF. */
48:
49: #define DBX_DEBUGGING_INFO
50:
51: /* Generate calls to memcpy, memcmp and memset. */
52:
53: #define TARGET_MEM_FUNCTIONS
54:
55: /* -m68000 requires special flags to the assembler.
56: The -C flag is passed to a modified GNU assembler to cause COFF
57: modules to be produced. Remove it if you're not using this.
58: (See [email protected] or [email protected])
59: - no longer using -C flag... build gas with coff as default! */
60:
61: #define ASM_SPEC \
62: " %{m68000:-mc68010}%{mc68000:-mc68010}"
63:
64: /* we use /lib/libp/lib* when profiling */
65:
66: #define LIB_SPEC "%{!shlib:%{p:-L/lib/libp} %{pg:-L/lib/libp} -lc} \
67: %{shlib:-lc_s crtn.o%s }"
68:
69: /* shared libraries need to use crt1.o */
70:
71: #ifdef USE_GPLUS_IFILE
72: #define STARTFILE_SPEC \
73: "g++.ifile%s %{!shlib:%{pg:mcrt0.o%s}%{!pg:%{p:mcrt0.o%s}%{!p:crt0.o%s}}}\
74: %{shlib:crt1.o%s } "
75: #else
76: #define STARTFILE_SPEC \
77: "%{!shlib:%{pg:mcrt0.o%s}%{!pg:%{p:mcrt0.o%s}%{!p:crt0.o%s}}}\
78: %{shlib:crt1.o%s } "
79: #endif
80:
81: /* cpp has to support a #sccs directive for the /usr/include files */
82:
83: #define SCCS_DIRECTIVE
84:
85: /* GAS register prefix assembly syntax: */
86:
87: /* User labels have no prefix */
88: #undef USER_LABEL_PREFIX
89: #define USER_LABEL_PREFIX ""
90:
91: /* local labels are prefixed with ".L" */
92: #undef LOCAL_LABEL_PREFIX
93: #define LOCAL_LABEL_PREFIX ".L"
94:
95: /* registers are prefixed with "%" */
96: #undef REGISTER_PREFIX
97: #define REGISTER_PREFIX "%"
98:
99: #undef REGISTER_NAMES
100: #define REGISTER_NAMES \
101: {"%d0", "%d1", "%d2", "%d3", "%d4", "%d5", "%d6", "%d7", \
102: "%a0", "%a1", "%a2", "%a3", "%a4", "%a5", "%a6", "%sp", \
103: "%fp0", "%fp1", "%fp2", "%fp3", "%fp4", "%fp5", "%fp6", "%fp7", \
104: "%fpa0", "%fpa1", "%fpa2", "%fpa3", "%fpa4", "%fpa5", "%fpa6", "%fpa7", \
105: "%fpa8", "%fpa9", "%fpa10", "%fpa11", "%fpa12", "%fpa13", "%fpa14", "%fpa15",\
106: "%fpa16","%fpa17", "%fpa18", "%fpa19", "%fpa20", "%fpa21", "%fpa22","%fpa23",\
107: "%fpa24","%fpa25", "%fpa26", "%fpa27", "%fpa28", "%fpa29", "%fpa30","%fpa31",}
108:
109: #undef FUNCTION_FINAL_EXTRA_EPILOGUE
110: #define FUNCTION_FINAL_EXTRA_EPILOGUE(FILE, SIZE) \
111: { extern int current_function_returns_pointer; \
112: if (current_function_returns_pointer) \
113: asm_fprintf (FILE, "\tmovl %Rd0,%Ra0\n"); }
114:
115: #define ASM_RETURN_CASE_JUMP return "jmp %%pc@(2,%0:w)"
116:
117: /* This is how to store into the string LABEL
118: the symbol_ref name of an internal numbered label where
119: PREFIX is the class of label and NUM is the number within the class.
120: This is suitable for output with `assemble_name'. */
121:
122: #undef ASM_GENERATE_INTERNAL_LABEL
123: #define ASM_GENERATE_INTERNAL_LABEL(LABEL,PREFIX,NUM) \
124: sprintf (LABEL, "*.%s%d", PREFIX, NUM)
125:
126: /* Describe how to output filenames for dbx. */
127:
128: /* These look awfully like the default definitions
129: --it's not clear whether these really need to be redefined here. --rms. */
130: #define DBX_OUTPUT_MAIN_SOURCE_FILENAME(FILE, FILENAME) \
131: fprintf (FILE, "\t.stabs \"%s\",%d,0,0,.Ltext\n.Ltext:\n", \
132: FILENAME, N_SO)
133:
134: #define DBX_OUTPUT_SOURCE_FILENAME(FILE, FILENAME) \
135: fprintf (FILE, "\t.stabs \"%s\",%d,0,0,.Ltext\n", \
136: FILENAME, N_SOL)
137:
138: /* g++ stuff: */
139: /* now obsolete, since we no longer need collect with a properly functioning
140: coff loader. */
141: #define NO_UNDERSCORES
142: #define ASM_INT_OP ".long "
143: #define DBX_IN_COFF
144:
145: /*
146: Local variables:
147: version-control: t
148: End:
149: */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.