|
|
1.1 root 1: /* m- file for Mips machines.
2: Copyright (C) 1987 Free Software Foundation, Inc.
3:
4: This file is part of GNU Emacs.
5:
6: GNU Emacs 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 1, or (at your option)
9: any later version.
10:
11: GNU Emacs 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 Emacs; see the file COPYING. If not, write to
18: the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
19:
20:
21: /* The following three symbols give information on
22: the size of various data types. */
23:
24: #define SHORTBITS 16 /* Number of bits in a short */
25:
26: #define INTBITS 32 /* Number of bits in an int */
27:
28: #define LONGBITS 32 /* Number of bits in a long */
29:
30: /* Define BIG_ENDIAN iff lowest-numbered byte in a word
31: is the most significant byte. */
32:
33: #define BIG_ENDIAN
34:
35: /* Define NO_ARG_ARRAY if you cannot take the address of the first of a
36: * group of arguments and treat it as an array of the arguments. */
37:
38: #define NO_ARG_ARRAY
39:
40: /* Define WORD_MACHINE if addresses and such have
41: * to be corrected before they can be used as byte counts. */
42:
43: #undef WORD_MACHINE
44:
45: /* Define how to take a char and sign-extend into an int.
46: On machines where char is signed, this is a no-op. */
47:
48: #define SIGN_EXTEND_CHAR(c) ((signed char)(c))
49:
50: /* Now define a symbol for the cpu type, if your compiler
51: does not define it automatically:
52: Ones defined so far include vax, m68000, ns16000, pyramid,
53: orion, tahoe, APOLLO and many others */
54: #ifndef mips
55: # define mips
56: #endif
57:
58: /* Use type int rather than a union, to represent Lisp_Object */
59: /* This is desirable for most machines. */
60:
61: #define NO_UNION_TYPE
62:
63: /* Define EXPLICIT_SIGN_EXTEND if XINT must explicitly sign-extend
64: the 24-bit bit field into an int. In other words, if bit fields
65: are always unsigned.
66:
67: If you use NO_UNION_TYPE, this flag does not matter. */
68:
69: #define EXPLICIT_SIGN_EXTEND
70:
71: /* Data type of load average, as read out of kmem. */
72:
73: #define LOAD_AVE_TYPE long
74:
75: /* Convert that into an integer that is 100 for a load average of 1.0 */
76:
77: #define LOAD_AVE_CVT(x) (int) (((double) (x)) * 100.0 / 256.0)
78:
79: /* Define CANNOT_DUMP on machines where unexec does not work.
80: Then the function dump-emacs will not be defined
81: and temacs will do (load "loadup") automatically unless told otherwise. */
82:
83: #undef CANNOT_DUMP
84:
85: /* Define VIRT_ADDR_VARIES if the virtual addresses of
86: pure and impure space as loaded can vary, and even their
87: relative order cannot be relied on.
88:
89: Otherwise Emacs assumes that text space precedes data space,
90: numerically. */
91:
92: /* #define VIRT_ADDR_VARIES */
93:
94: /* Define C_ALLOCA if this machine does not support a true alloca
95: and the one written in C should be used instead.
96: Define HAVE_ALLOCA to say that the system provides a properly
97: working alloca function and it should be used.
98: Define neither one if an assembler-language alloca
99: in the file alloca.s should be used. */
100:
101: #ifdef __GNUC__
102: #define HAVE_ALLOCA
103: #else
104: #define C_ALLOCA
105: #endif
106:
107: /* Define NO_REMAP if memory segmentation makes it not work well
108: to change the boundary between the text section and data section
109: when Emacs is dumped. If you define this, the preloaded Lisp
110: code will not be sharable; but that's better than failing completely. */
111:
112: #define NO_REMAP
113:
114: /* This machine requires completely different unexec code
115: which lives in a separate file. Specify the file name. */
116:
117: #define UNEXEC unexmips.o
118:
119: /* Describe layout of the address space in an executing process. */
120:
121: #define TEXT_START 0x400000
122: #define DATA_START 0x800000
123:
124: /* Alter some of the options used when linking. */
125:
126: #ifdef BSD
127:
128: /* Supposedly the dec machine doesn't have this library.
129: #define LIBS_MACHINE -lmld */
130:
131: #define LD_SWITCH_MACHINE -D 800000
132: #define LIBS_DEBUG
133:
134: #define LINKER /bsd43/bin/ld
135:
136: #else /* not BSD */
137: #ifdef NEWSOS5
138:
139: #define LIBS_MACHINE -lmld
140: #define START_FILES pre-crt0.o /usr/ccs/lib/crt1.o
141: #define LIB_STANDARD -lsocket -lnsl -lc /usr/ccs/lib/crtn.o /usr/ccs/lib/values-Xt.o
142:
143: #ifdef __GNUC__
144: #define C_DEBUG_SWITCH -g
145: #define C_OPTIMIZE_SWITCH -g -O
146: #define LD_SWITCH_MACHINE -g -Xlinker -D -Xlinker 800000
147: #else
148: #define C_DEBUG_SWITCH -g3
149: #define C_OPTIMIZE_SWITCH -g3
150: #define LD_SWITCH_MACHINE -g3 -D 800000
151: #endif
152:
153: #else /* not NEWSOS5 */
154:
155: #define LIBS_MACHINE -lmld
156: #define LD_SWITCH_MACHINE -D 800000 -g3
157: #define START_FILES pre-crt0.o /usr/lib/crt1.o
158: #define LIB_STANDARD -lbsd -lc /usr/lib/crtn.o
159: #define LIBS_TERMCAP -lcurses
160:
161: #define C_SWITCH_MACHINE -I/usr/include/bsd
162: #define C_DEBUG_SWITCH -O -g3
163:
164: #if defined(HAVE_X_WINDOWS) && defined(HAVE_X11)
165: #define HAVE_VFORK /* Graciously provided by libX.a */
166: #endif
167:
168: #endif /* not NEWSOS5 */
169: #endif /* not BSD */
170:
171: /* The standard definitions of these macros would work ok,
172: but these are faster because the constants are short. */
173:
174: #define XUINT(a) (((unsigned)(a) << (INTBITS-VALBITS)) >> (INTBITS-VALBITS))
175:
176: #define XSET(var, type, ptr) \
177: ((var) = \
178: ((int)(type) << VALBITS) \
179: + (((unsigned) (ptr) << (INTBITS-VALBITS)) >> (INTBITS-VALBITS)))
180:
181: #define XSETINT(a, b) XSET(a, XTYPE(a), b)
182: #define XSETUINT(a, b) XSET(a, XTYPE(a), b)
183: #define XSETPNTR(a, b) XSET(a, XTYPE(a), b)
184:
185: #define XUNMARK(a) \
186: ((a) = \
187: (((unsigned)(a) << (INTBITS-GCTYPEBITS-VALBITS)) \
188: >> (INTBITS-GCTYPEBITS-VALBITS)))
189:
190: #ifndef NEWSOS5
191: #ifdef USG
192:
193: /* Cancel certain parts of standard sysV support. */
194: #undef NONSYSTEM_DIR_LIBRARY
195: #define SYSV_SYSTEM_DIR
196: #undef static
197:
198: /* Don't try to use SIGIO or FIONREAD even though they are defined. */
199: #undef SIGIO
200: #define BROKEN_FIONREAD
201:
202: /* Describe special kernel features. */
203:
204: #define HAVE_SYSVIPC
205:
206: #define HAVE_TIMEVAL
207: #if defined(emacs) && !defined(INHIBIT_BSD_TIME)
208: #include <bsd/sys/time.h>
209: #endif
210:
211: /* #define HAVE_SELECT
212: The `select' in the system won't work for pipes,
213: so don't use it. */
214:
215: #define HAVE_DUP2
216: #define HAVE_GETWD
217: #define HAVE_GETTIMEOFDAY
218:
219: #define HAVE_PTYS
220: #define HAVE_SOCKETS
221:
222: #undef NOMULTIPLEJOBS
223: #define utimes utime /* Someone should check this. */
224:
225: /* ??? */
226: #define IRIS
227:
228: #endif /* USG */
229:
230: #ifdef BSD
231: #define COFF
232: #define TERMINFO
233: #undef MAIL_USE_FLOCK /* Someone should check this. */
234: #undef HAVE_UNION_WAIT
235: #endif /* BSD */
236:
237: #endif /* not NEWSOS5 */
238:
239: /* Load average requires special crocks. Version 19 has them.
240: For now, this avoids a bug. */
241: #undef LOAD_AVE_TYPE
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.