/* Machine description file for intel 386.
- Copyright (C) 1987 Free Software Foundation, Inc.
+ Copyright (C) 1987, 2001, 2002, 2003, 2004, 2005,
+ 2006, 2007, 2008 Free Software Foundation, Inc.
This file is part of GNU Emacs.
GNU Emacs is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 1, or (at your option)
+the Free Software Foundation; either version 3, or (at your option)
any later version.
GNU Emacs is distributed in the hope that it will be useful,
You should have received a copy of the GNU General Public License
along with GNU Emacs; see the file COPYING. If not, write to
-the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
+the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+Boston, MA 02110-1301, USA. */
-/* The following line tells the configuration script what sort of
+/* The following line tells the configuration script what sort of
operating system this machine is likely to run.
USUAL-OPSYS="note"
NOTE-START
-Intel 386 (-machine=intel386 or -machine=is386.h)
+Intel 386 (-machine=intel386)
The possibilities for -opsystem are: bsd4-2, usg5-2-2, usg5-3,
- isc2-2, 386-ix, esix, or xenix.
+ isc2-2, 386-ix, and linux.
18.58 should support a wide variety of operating systems.
Use isc2-2 for Interactive 386/ix version 2.2.
Use 386ix for prior versions.
- Use esix for Esix. It isn't clear what to do on an SCO system.
+ Use linux for Linux.
+ It isn't clear what to do on an SCO system.
-machine=is386 is used for an Integrated Solutions 386 machine.
It may also be correct for Microport systems.
Minor changes merged in 19.1.
NOTE-END */
-/* The following three symbols give information on
- the size of various data types. */
+/* Define WORDS_BIG_ENDIAN if lowest-numbered byte in a word
+ is the most significant byte. */
-#define SHORTBITS 16 /* Number of bits in a short */
-
-#define INTBITS 32 /* Number of bits in an int */
-
-#define LONGBITS 32 /* Number of bits in a long */
-
-/* i386 is not big-endian: lowest numbered byte is least significant. */
-
-/* #undef BIG_ENDIAN */
+#undef WORDS_BIG_ENDIAN
/* Define NO_ARG_ARRAY if you cannot take the address of the first of a
* group of arguments and treat it as an array of the arguments. */
/* #define WORD_MACHINE */
-/* Define how to take a char and sign-extend into an int.
- On machines where char is signed, this is a no-op. */
-
-#define SIGN_EXTEND_CHAR(c) (c)
-
/* Now define a symbol for the cpu type, if your compiler
does not define it automatically:
Ones defined so far include vax, m68000, ns16000, pyramid,
#define DOT_GLOBAL_START
-#ifdef XENIX
+#ifdef SOLARIS2
/* Data type of load average, as read out of kmem. */
-#define LOAD_AVE_TYPE short
+#define LOAD_AVE_TYPE long
/* Convert that into an integer that is 100 for a load average of 1.0 */
-#define LOAD_AVE_CVT(x) (((double) (x)) * 100.0 / FSCALE)
-
-#define FSCALE 256.0 /* determined by experimentation... */
+/* This is totally uncalibrated. */
+#define LOAD_AVE_CVT(x) ((int) (((double) (x)) * 100.0 / FSCALE))
+
+/* J.W.Hawtin@lut.ac.uk say Solaris 2.4 as well as Solaris 2.1 on X86
+ requires -lkvm as well.
+ And handa@etl.gov.jp says that -lkvm needs -llelf, at least on 2.5. */
+#define LIBS_MACHINE -lkvm -lelf
+
+#ifndef SOLARIS2_4
+/* J.W.hawtin@lut.ac.uk says Solaris 2.1 on the X86 has FSCALE defined in a
+ system header. */
+#else /* SOLARIS2_4 */
+#ifndef __GNUC__
+#if 0 /* wisner@gryphon.com says this screws up cpp */
+#define C_SWITCH_MACHINE -Xa
#endif
+#endif /* not __GNUC__ */
+#endif /* SOLARIS2_4 */
+/* configure thinks solaris X86 has gethostname, but it does not work,
+ so undefine it. */
+#undef HAVE_GETHOSTNAME
+
+#else /* not SOLARIS2 */
#ifdef USG5_4 /* Older USG systems do not support the load average. */
/* Data type of load average, as read out of kmem. */
#define LOAD_AVE_CVT(x) ((int) (((double) (x)) * 100.0 / FSCALE))
#define FSCALE 256.0
#endif
+#endif /* not SOLARIS2 */
/* Define CANNOT_DUMP on machines where unexec does not work.
Then the function dump-emacs will not be defined
/* #define VIRT_ADDR_VARIES */
-#ifdef XENIX
-#define VALBITS 26
-#define GCTYPEBITS 5
-
-/* Define NO_REMAP if memory segmentation makes it not work well
- to change the boundary between the text section and data section
- when Emacs is dumped. If you define this, the preloaded Lisp
- code will not be sharable; but that's better than failing completely. */
-
-#define NO_REMAP
-
-#define STACK_DIRECTION -1
-
-/* Since cannot purify, use standard Xenix 386 startup code. */
-
-#define START_FILES /lib/386/Sseg.o pre-crt0.o /lib/386/Scrt0.o
-
-/* These really use terminfo. */
-
-#define LIBS_TERMCAP /lib/386/Slibcurses.a \
- /lib/386/Slibtinfo.a /lib/386/Slibx.a
-
-/* Standard libraries for this machine. Since `-l' doesn't work in `ld'. */
-/* '__fltused' is unresolved w/o Slibcfp.a */
-#define LIB_STANDARD /lib/386/Slibcfp.a /lib/386/Slibc.a
-#else /* not XENIX */
-
+/* this brings in alloca() if we're using cc */
#ifdef USG
#ifndef LIB_STANDARD
+#ifdef USG5_4
+#define LIB_STANDARD -lc
+#else /* not USG5_4 */
#define LIB_STANDARD -lPW -lc
-#endif
-#define HAVE_ALLOCA
-#define NO_REMAP
+#endif /* not USG5_4 */
+#endif /* LIB_STANDARD */
+
+#define NO_REMAP
#define TEXT_START 0
#endif /* USG */
-#endif /* not XENIX */
-
-#ifdef BSD
-#define HAVE_ALLOCA
-#endif /* BSD */
-/* If compiling with GCC, let GCC implement alloca. */
-#if defined(__GNUC__) && !defined(alloca)
-#define alloca(n) __builtin_alloca(n)
-#define HAVE_ALLOCA
+#ifdef USG5_4
+#define DATA_SEG_BITS 0x08000000
#endif
-#ifdef USG
-#ifdef __STDC__
-#ifndef DONT_DEFINE_SIGNAL
-/* Cast the function argument to avoid warnings. */
-#define signal(sig, func) (signal (sig, (void (*) (int)) (func)))
+#ifdef MSDOS
+#define NO_REMAP
#endif
+
+#ifdef WINDOWSNT
+#define VIRT_ADDR_VARIES
+#define DATA_END get_data_end ()
+#define DATA_START get_data_start ()
+#define NO_ARG_ARRAY
#endif
+
+#ifdef linux
+/* libc-linux/sysdeps/linux/i386/ulimit.c says that due to shared library, */
+/* we cannot get the maximum address for brk */
+#define ULIMIT_BREAK_VALUE (32*1024*1024)
+
+#define SEGMENT_MASK ((SEGMENT_SIZE)-1)
#endif
-#ifdef USG5_4
-#define DATA_SEG_BITS 0x08000000
+#if defined (MAC_OSX) || defined (DARWIN)
+#ifdef _LP64
+/* For Intel Mac, with CC='gcc -arch x86_64'. */
+#define NO_ARG_ARRAY
#endif
+#endif
+
+/* arch-tag: 746338f0-cb7b-4f49-a98c-cb50817cf2ec
+ (do not change this comment) */