428
+ − 1 /* Machine description file for intel 386.
+ − 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 2, 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 XEmacs; see the file COPYING. If not, write to
+ − 18 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ − 19 Boston, MA 02111-1307, USA. */
+ − 20
+ − 21 /* Synched up with: FSF 19.31. */
+ − 22
+ − 23 /* The following line tells the configuration script what sort of
+ − 24 operating system this machine is likely to run.
+ − 25 USUAL-OPSYS="note"
+ − 26
+ − 27 NOTE-START
+ − 28 Intel 386 (-machine=intel386 or -machine=is386.h)
+ − 29
+ − 30 The possibilities for -opsystem are: bsd4-2, usg5-2-2, usg5-3,
+ − 31 isc2-2, 386-ix, esix, linux, sco3.2v4, and xenix.
+ − 32
+ − 33 18.58 should support a wide variety of operating systems.
+ − 34 Use isc2-2 for Interactive 386/ix version 2.2.
+ − 35 Use 386ix for prior versions.
+ − 36 Use esix for Esix.
+ − 37 Use linux for Linux.
+ − 38 It isn't clear what to do on an SCO system.
+ − 39
+ − 40 -machine=is386 is used for an Integrated Solutions 386 machine.
+ − 41 It may also be correct for Microport systems.
+ − 42
+ − 43 Cubix QBx/386 (-machine=intel386 -opsystem=usg5-3)
+ − 44
+ − 45 Changes merged in 19.1. Systems before 2/A/0 may fail to compile etags.c
+ − 46 due to a compiler bug.
+ − 47
+ − 48 Prime EXL (-machine=intel386 -opsystem=usg5-3)
+ − 49
+ − 50 Minor changes merged in 19.1.
+ − 51 NOTE-END */
+ − 52
+ − 53 /* Now define a symbol for the cpu type, if your compiler
+ − 54 does not define it automatically:
+ − 55 Ones defined so far include vax, m68000, ns16000, pyramid,
+ − 56 orion, tahoe, APOLLO and many others */
+ − 57
+ − 58 #define INTEL386
+ − 59
+ − 60 /* crt0.c, if it is used, should use the i386-bsd style of entry.
+ − 61 with no extra dummy args. On USG and XENIX,
+ − 62 NO_REMAP says this isn't used. */
+ − 63
+ − 64 /* Mly 16-Jan-96 16:38:32: this is part of a prototype -- same bug present in
+ − 65 other m*.h files */
+ − 66 #define CRT0_DUMMIES int bogus_fp,
+ − 67
+ − 68 /* crt0.c should define a symbol `start' and do .globl with a dot. */
+ − 69
+ − 70 #define DOT_GLOBAL_START
+ − 71
+ − 72 #ifdef XENIX
+ − 73 /* Data type of load average, as read out of kmem. */
+ − 74 #define LOAD_AVE_TYPE short
+ − 75
+ − 76 /* Convert that into an integer that is 100 for a load average of 1.0 */
+ − 77 #define LOAD_AVE_CVT(x) (((double) (x)) * 100.0 / FSCALE)
+ − 78
+ − 79 #define FSCALE 256.0 /* determined by experimentation... */
+ − 80 #endif
+ − 81
+ − 82
+ − 83 #ifdef SOLARIS2
+ − 84 /* Data type of load average, as read out of kmem. */
+ − 85 #define LOAD_AVE_TYPE long
+ − 86
+ − 87 /* Convert that into an integer that is 100 for a load average of 1.0 */
+ − 88 /* This is totally uncalibrated. */
+ − 89 #define LOAD_AVE_CVT(x) ((int) (((double) (x)) * 100.0 / FSCALE))
+ − 90
+ − 91 /* configure thinks solaris X86 has gethostname, but it does not work,
+ − 92 so undefine it. */
+ − 93 #undef HAVE_GETHOSTNAME
+ − 94
+ − 95 #else /* not SOLARIS2 */
+ − 96 #ifdef USG5_4 /* Older USG systems do not support the load average. */
+ − 97 /* Data type of load average, as read out of kmem. */
+ − 98
+ − 99 #define LOAD_AVE_TYPE long
+ − 100
+ − 101 /* Convert that into an integer that is 100 for a load average of 1.0 */
+ − 102 /* This is totally uncalibrated. */
+ − 103
+ − 104 #define LOAD_AVE_CVT(x) ((int) (((double) (x)) * 100.0 / FSCALE))
+ − 105 #define FSCALE 256.0
+ − 106 #endif
+ − 107 #endif /* not SOLARIS2 */
+ − 108
+ − 109 #ifdef XENIX
+ − 110
+ − 111 /* Define NO_REMAP if memory segmentation makes it not work well
+ − 112 to change the boundary between the text section and data section
+ − 113 when Emacs is dumped. If you define this, the preloaded Lisp
+ − 114 code will not be sharable; but that's better than failing completely. */
+ − 115
+ − 116 #define NO_REMAP
+ − 117
+ − 118 #define STACK_DIRECTION -1
+ − 119
+ − 120 /* Since cannot purify, use standard Xenix 386 startup code. */
+ − 121
+ − 122 #define START_FILES "/lib/386/Sseg.o pre-crt0.o /lib/386/Scrt0.o"
+ − 123
+ − 124 /* These really use terminfo. */
+ − 125
+ − 126 #define LIBS_TERMCAP "/lib/386/Slibcurses.a /lib/386/Slibtinfo.a /lib/386/Slibx.a"
+ − 127
+ − 128 /* Standard libraries for this machine. Since `-l' doesn't work in `ld'. */
+ − 129 /* '__fltused' is unresolved w/o Slibcfp.a */
+ − 130 #define LIB_STANDARD "/lib/386/Slibcfp.a /lib/386/Slibc.a"
+ − 131 #else /* not XENIX */
+ − 132
+ − 133 #ifdef USG
+ − 134
+ − 135 #define NO_REMAP
+ − 136 #define TEXT_START 0
+ − 137 #endif /* USG */
+ − 138 #endif /* not XENIX */
+ − 139
+ − 140 #ifdef linux
+ − 141 /* libc-linux/sysdeps/linux/i386/ulimit.c says that due to shared library, */
+ − 142 /* we cannot get the maximum address for brk */
+ − 143 #define ULIMIT_BREAK_VALUE (32*1024*1024)
+ − 144
+ − 145 #define SEGMENT_MASK ((SEGMENT_SIZE)-1)
+ − 146 #endif
+ − 147
+ − 148 #ifdef __GNUC__
+ − 149 /* GCC's alloca() is semi-broken. See lisp.h.
+ − 150
+ − 151 This brokenness has been confirmed under both Linux and NetBSD.
+ − 152 It may also exist on non-Intel architectures. */
+ − 153 #define BROKEN_ALLOCA_IN_FUNCTION_CALLS
+ − 154 #endif