|
|
1.1 root 1: /*
2: * dpx2.h - Bull DPX/2 200 and 300 systems (m68k, SysVr3)
3: *
4: * $Id: dpx2.h,v 1.3 1992/05/21 08:04:22 rms Exp $
5: */
6:
7: #include "m68k.h"
8: #undef SELECT_RTX_SECTION
9: #include "svr3.h"
10:
11: /* See m68k.h. 7 means 68020 with 68881.
12: * We really have 68030, but this will get us going.
13: */
14: #ifndef TARGET_DEFAULT
15: #define TARGET_DEFAULT 7
16: #endif
17:
18: #define OBJECT_FORMAT_COFF
19: #define NO_SYS_SIGLIST
20:
21: #ifdef CPP_PREDEFINES
22: #undef CPP_PREDEFINES
23: #endif
24: /*
25: * define all the things the compiler should
26: */
27: #ifdef ncl_mr
28: # define CPP_PREDEFINES "-Dunix -Dbull -DDPX2 -DSVR3 -Dmc68000 -Dmc68020 -Dncl_mr=1"
29: #else
30: # ifdef ncl_el
31: # define CPP_PREDEFINES "-Dunix -Dbull -DDPX2 -DSVR3 -Dmc68000 -Dmc68020 -Dncl_el"
32: # else
33: # define CPP_PREDEFINES "-Dunix -Dbull -DDPX2 -DSVR3 -Dmc68000 -Dmc68020"
34: # endif
35: #endif
36:
37: #undef CPP_SPEC
38: /*
39: * use -ansi to imply POSIX and XOPEN and BULL source
40: * no -ansi implies _SYSV
41: */
42: # define CPP_SPEC "%{ansi:-D_POSIX_SOURCE -D_XOPEN_SOURCE -D_BULL_SOURCE}\
43: %{!ansi:-D_SYSV}"
44:
45: #undef ASM_LONG
46: #define ASM_LONG "\t.long"
47:
48: #define HAVE_ATEXIT
49: #undef DO_GLOBAL_CTORS_BODY /* don't use svr3.h version */
50: #undef DO_GLOBAL_DTORS_BODY
51:
52: #if 0 /* def DEBUG */
53: /*
54: * find out where cc1 aborts
55: */
56: #define abort() do { fprintf(stderr, "%s: aborting at line %d\n", \
57: __FILE__, __LINE__); \
58: kill(getpid(), 6); } while (0)
59: #endif
60:
61: /*
62: * svr3.h says to use BSS_SECTION_FUNCTION
63: * but no one appears to, and there is
64: * no definition for m68k.
65: */
66: #ifndef BSS_SECTION_FUNCTION
67: # undef EXTRA_SECTION_FUNCTIONS
68: # define EXTRA_SECTION_FUNCTIONS \
69: CONST_SECTION_FUNCTION \
70: INIT_SECTION_FUNCTION \
71: FINI_SECTION_FUNCTION
72: #endif
73:
74: #ifndef USE_GAS
75: /*
76: * handle the native assembler.
77: * this does NOT yet work, there is much left to do.
78: * use GAS for now...
79: */
80: #undef ASM_OUTPUT_SOURCE_FILENAME
81: #define ASM_OUTPUT_SOURCE_FILENAME(FILE, NA) \
82: do { fprintf ((FILE), "\t.file\t'%s'\n", (NA)); } while (0)
83:
84: /*
85: * we don't seem to support any of:
86: * .globl
87: * .even
88: * .align
89: * .ascii
90: */
91: #undef ASM_GLOBALIZE_LABEL
92: #define ASM_GLOBALIZE_LABEL(FILE,NAME) while (0)
93: #undef ASM_OUTPUT_ALIGN
94: #define ASM_OUTPUT_ALIGN(asm_out_file, align) while (0)
95: #define STRING_LIMIT (0)
96: #undef ASM_APP_ON
97: #define ASM_APP_ON ""
98: #undef ASM_APP_OFF
99: #define ASM_APP_OFF ""
100: /*
101: * dc.b 'hello, world!'
102: * dc.b 10,0
103: * is how we have to output "hello, world!\n"
104: */
105: #undef ASM_OUTPUT_ASCII
106: #define ASM_OUTPUT_ASCII(asm_out_file, p, thissize) \
107: do { register int i, c, f=0; \
108: for (i = 0; i < thissize; i++) { \
109: c = p[i]; \
110: if (c == '\'' || c < ' ' || c > 127) { \
111: switch(f) { \
112: case 0: /* need to output dc.b etc */ \
113: fprintf(asm_out_file, "\tdc.b %d", c); \
114: f=1; \
115: break; \
116: case 1: \
117: fprintf(asm_out_file, ",%d", c); \
118: break; \
119: default: \
120: /* close a string */ \
121: fprintf(asm_out_file, "'\n\tdc.b %d", c); \
122: f=1; \
123: break; \
124: } \
125: } else { \
126: switch(f) { \
127: case 0: \
128: fprintf(asm_out_file, "\tdc.b '%c", c); \
129: f=2; \
130: break; \
131: case 2: \
132: fprintf(asm_out_file, "%c", c); \
133: break; \
134: default: \
135: fprintf(asm_out_file, "\n\tdc.b '%c", c); \
136: f=2; \
137: break; \
138: } \
139: } \
140: } \
141: if (f==2) \
142: putc('\'', asm_out_file); \
143: putc('\n', asm_out_file); } while (0)
144:
145: /* This is how to output an insn to push a register on the stack.
146: It need not be very fast code. */
147:
148: #undef ASM_OUTPUT_REG_PUSH
149: #define ASM_OUTPUT_REG_PUSH(FILE,REGNO) \
150: fprintf (FILE, "\tmove.l %s,-(sp)\n", reg_names[REGNO])
151:
152: /* This is how to output an insn to pop a register from the stack.
153: It need not be very fast code. */
154:
155: #undef ASM_OUTPUT_REG_POP
156: #define ASM_OUTPUT_REG_POP(FILE,REGNO) \
157: fprintf (FILE, "\tmove.l (sp)+,%s\n", reg_names[REGNO])
158:
159: #endif /* ! use gas */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.