|
|
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.