]> code.delx.au - gnu-emacs/blobdiff - src/m/hp800.h
Move entries for files in ../misc to the ChangeLog there.
[gnu-emacs] / src / m / hp800.h
index 36453c5b0942acc15ea4a62df51f80e8e7777352..83465052478be1bcee451e0a38f495e777b98708 100644 (file)
@@ -1,11 +1,12 @@
 /* machine description file for hp9000 series 800 machines.
-   Copyright (C) 1987 Free Software Foundation, Inc.
+   Copyright (C) 1987, 2001, 2002, 2003, 2004, 2005,
+                 2006, 2007  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 2, 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,21 +16,18 @@ 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="hpux"  */
 
-/* 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 */
+#define 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.  */
@@ -55,21 +53,32 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
 #define NO_UNION_TYPE
 
 /* Define EXPLICIT_SIGN_EXTEND if XINT must explicitly sign-extend
-   the 24-bit bit field into an int.  In other words, if bit fields
+   the bit field into an int.  In other words, if bit fields
    are always unsigned.
 
    If you use NO_UNION_TYPE, this flag does not matter.  */
 
 #define EXPLICIT_SIGN_EXTEND
 
-/* Data type of load average, as read out of kmem.  */
+/* The standard definitions of these macros would work ok,
+   but these are faster because the constants are short. */
 
-#define LOAD_AVE_TYPE double
 
-/* Convert that into an integer that is 100 for a load average of 1.0  */
+#define XUINT(a) (((unsigned)(a) << BITS_PER_INT-VALBITS) >> BITS_PER_INT-VALBITS)
 
-#define LOAD_AVE_CVT(x) ((int) (x * 100.0))
+#define XSET(var, type, ptr) \
+   ((var) = ((int)(type) << VALBITS) + (((unsigned) (ptr) << BITS_PER_INT-VALBITS) >> BITS_PER_INT-VALBITS))
+\f
+/* Common definitions for HPUX and GNU/Linux.  */
 
+#if defined (__hpux) || defined (GNU_LINUX)
+/* 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,
+   orion, tahoe, APOLLO and many others */
+#ifndef hp9000s800
+#     define hp9000s800
+#endif
 
 /* Define CANNOT_DUMP on machines where unexec does not work.
    Then the function dump-emacs will not be defined
@@ -77,6 +86,33 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
 
 #undef CANNOT_DUMP
 
+/* 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
+
+#endif /* __hpux or GNU_LINUX */
+\f
+/* Stuff for just GNU/Linux.  */
+
+#ifdef GNU_LINUX
+
+/* Data type of load average, as read out of kmem.  */
+
+#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) (int) (((double) (x)) * 100.0 / FSCALE)
+
+#endif /* GNU_LINUX */
+\f
+/* Stuff for just HPUX.  */
+
+#ifdef __hpux
+
 /* Define VIRT_ADDR_VARIES if the virtual addresses of
    pure and impure space as loaded can vary, and even their
    relative order cannot be relied on.
@@ -85,36 +121,14 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
    numerically.  */
 
 #define VIRT_ADDR_VARIES
-
-/* Define C_ALLOCA if this machine does not support a true alloca
-   and the one written in C should be used instead.
-   Define HAVE_ALLOCA to say that the system provides a properly
-   working alloca function and it should be used.
-   Define neither one if an assembler-language alloca
-   in the file alloca.s should be used.  */
-
-#define C_ALLOCA
-/* #define HAVE_ALLOCA */
 \f
 /* the data segment on this machine always starts at address 0x40000000. */
 
 #define DATA_SEG_BITS 0x40000000
 
-#define VALBITS    26
-#define GCTYPEBITS 5
-
 #define DATA_START    0x40000000
 #define TEXT_START    0x00000000
 
-#define STACK_DIRECTION 1 
-
-/* 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
-
 /* This machine requires completely different unexec code
    which lives in a separate file.  Specify the file name.  */
 
@@ -123,28 +137,16 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
 #define LIBS_MACHINE
 #define LIBS_DEBUG
 
-/* Define NEED_BSDTTY if you have such. */
-
+/* Include the file bsdtty.h, since this machine has job control.  */
 #define NEED_BSDTTY
-\f
-/* The standard definitions of these macros would work ok,
-   but these are faster because the constants are short. */
-   
 
-#define XUINT(a) (((unsigned)(a) << INTBITS-VALBITS) >> INTBITS-VALBITS)
+/* Data type of load average, as read out of kmem.  */
 
-#define XSET(var, type, ptr) \
-   ((var) = ((int)(type) << VALBITS) + (((unsigned) (ptr) << INTBITS-VALBITS) >> INTBITS-VALBITS))
+#define LOAD_AVE_TYPE double
 
-#define XSETINT(a, b)  XSET(a, XTYPE(a), b)
-#define XSETUINT(a, b) XSET(a, XTYPE(a), b)
-#define XSETPNTR(a, b) XSET(a, XTYPE(a), b)
-#define XMARKBIT(a) ((a) < 0)
-#define XSETMARKBIT(a,b) ((a) = ((b) ? (a)|MARKBIT : (a) & ~MARKBIT))
+/* Convert that into an integer that is 100 for a load average of 1.0  */
 
-#if 0  /* Loses when sign bit of type field is set.  */
-#define XUNMARK(a) ((a) = (((a) << INTBITS-GCTYPEBITS-VALBITS) >> INTBITS-GCTYPEBITS-VALBITS))
-#endif
+#define LOAD_AVE_CVT(x) ((int) (x * 100.0))
 
 /* The symbol in the kernel where the load average is found
    is named _avenrun.  At this time there are two major flavors
@@ -166,20 +168,20 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
 #undef S_IFLNK
 #endif
 
-/* Define the BSTRING functions in terms of the sysV functions. */
-/* On HPUX 8.05, including types.h can include strings.h
-   which declares these as functions.  Hence the #ifndef.  */
-
-#ifndef HAVE_BCOPY
-#define bcopy(a,b,s)   memcpy (b,a,s)
-#define bzero(a,s)     memset (a,0,s)
-#define bcmp           memcmp
-#endif
-
 /* On USG systems these have different names. */
 
 #define index strchr
 #define rindex strrchr
 
-/* Include the file bsdtty.h, since this machine has job control.  */
-#define NEED_BSDTTY
+#endif /* __hpux */
+\f
+/* Systems with GCC don't need to lose. */
+#ifdef __NetBSD__
+# ifdef __GNUC__
+#  define alloca __builtin_alloca
+#  define HAVE_ALLOCA
+# endif /* __GNUC__ */
+#endif /* __NetBSD__ */
+
+/* arch-tag: 809436e6-1645-4b92-b40d-2de5d6e7227c
+   (do not change this comment) */