]> code.delx.au - gnu-emacs/blobdiff - src/m/intel386.h
Merge from emacs--rel--22
[gnu-emacs] / src / m / intel386.h
index 7a74479743382e3d19acb9b0e7a88579027d7cdc..810ec6239a8be4936b99c9f71e7a82aebba77eda 100644 (file)
@@ -1,11 +1,12 @@
 /* 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,
@@ -15,23 +16,25 @@ GNU General Public License for more details.
 
 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.
@@ -46,18 +49,10 @@ Prime EXL (-machine=intel386 -opsystem=usg5-3)
   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.  */
@@ -69,11 +64,6 @@ NOTE-END */
 
 /* #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,
@@ -95,16 +85,35 @@ NOTE-END */
 
 #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.  */
 
@@ -116,6 +125,7 @@ NOTE-END */
 #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
@@ -132,62 +142,49 @@ NOTE-END */
 
 /* #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) */