summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJim Blandy <jimb@redhat.com>1991-12-13 18:49:49 +0000
committerJim Blandy <jimb@redhat.com>1991-12-13 18:49:49 +0000
commit20c428fd9d239eca0a835e3b0fe2629e789ce562 (patch)
treec9dc47c923acc0f7db3dd699bd7e38e7b20893cc /src
parent20a8832d8461fec6001e0f9d09bbb4731c585a84 (diff)
downloademacs-20c428fd9d239eca0a835e3b0fe2629e789ce562.tar.gz
Initial revision
Diffstat (limited to 'src')
-rw-r--r--src/m/7300.h91
-rw-r--r--src/m/alliant.h147
-rw-r--r--src/m/altos.h77
-rw-r--r--src/m/amdahl.h171
-rw-r--r--src/m/apollo.h101
-rw-r--r--src/m/aviion.h150
-rw-r--r--src/m/celerity.h73
-rw-r--r--src/m/clipper.h117
-rw-r--r--src/m/cnvrgnt.h124
-rw-r--r--src/m/convex.h173
-rw-r--r--src/m/cydra5.h139
-rw-r--r--src/m/delta.h168
-rw-r--r--src/m/dual.h82
-rw-r--r--src/m/elxsi.h153
-rw-r--r--src/m/gec63.h83
-rw-r--r--src/m/gould.h208
-rw-r--r--src/m/hp800.h193
-rw-r--r--src/m/hp9000s300.h224
-rw-r--r--src/m/ibm370aix.h174
-rw-r--r--src/m/ibmps2-aix.h238
-rw-r--r--src/m/intel386.h182
-rw-r--r--src/m/iris4d.h193
-rw-r--r--src/m/irist.h155
-rw-r--r--src/m/isi-ov.h105
-rw-r--r--src/m/masscomp.h150
-rw-r--r--src/m/mega68.h61
-rw-r--r--src/m/mg1.h126
-rw-r--r--src/m/mips.h213
-rw-r--r--src/m/mips4.h33
-rw-r--r--src/m/news.h76
-rw-r--r--src/m/ns16000.h112
-rw-r--r--src/m/ns32000.h121
-rw-r--r--src/m/nu.h84
-rw-r--r--src/m/orion.h84
-rw-r--r--src/m/orion105.h90
-rw-r--r--src/m/plexus.h128
-rw-r--r--src/m/pmax.h22
-rw-r--r--src/m/pyramid.h76
-rw-r--r--src/m/sequent.h188
-rw-r--r--src/m/sparc.h119
-rw-r--r--src/m/sps7.h140
-rw-r--r--src/m/stride.h136
-rw-r--r--src/m/sun1.h88
-rw-r--r--src/m/sun2.h109
-rw-r--r--src/m/tahoe.h92
-rw-r--r--src/m/targon31.h117
-rw-r--r--src/m/tek4300.h98
-rw-r--r--src/m/template.h110
-rw-r--r--src/m/tower32.h134
-rw-r--r--src/m/tower32v3.h139
-rw-r--r--src/m/ustation.h158
-rw-r--r--src/m/vax.h132
-rw-r--r--src/m/wicat.h168
-rw-r--r--src/m/xps100.h118
-rw-r--r--src/s/aix3-1.h232
-rw-r--r--src/s/bsd4-3.h129
-rw-r--r--src/s/hpux.h260
-rw-r--r--src/s/hpux8.h13
-rw-r--r--src/s/iris3-6.h193
-rw-r--r--src/s/isc2-2.h13
-rw-r--r--src/s/rtu.h172
-rw-r--r--src/s/sunos4shr.h30
-rw-r--r--src/s/template.h143
-rw-r--r--src/s/usg5-3.h215
-rw-r--r--src/s/usg5-4.h163
65 files changed, 8506 insertions, 0 deletions
diff --git a/src/m/7300.h b/src/m/7300.h
new file mode 100644
index 00000000000..31606928a67
--- /dev/null
+++ b/src/m/7300.h
@@ -0,0 +1,91 @@
+/* machine description file for AT&T UNIX PC model 7300
+ Copyright (C) 1986 Free Software Foundation, Inc.
+ Modified for this machine by mtxinu!rtech!gonzo!daveb
+
+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)
+any later version.
+
+GNU Emacs is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+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 following line tells the configuration script what sort of
+ operating system this machine is likely to run.
+ USUAL-OPSYS="usg5-2-2" */
+
+/* Supposedly now these machines have flexnames.
+
+/* # define SHORTNAMES */
+
+
+/* The following three symbols give information on
+ the size of various data types. */
+
+#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 BIG_ENDIAN iff lowest-numbered byte in a word
+ is the most significant byte. */
+
+#define BIG_ENDIAN
+
+/* XINT must explicitly sign-extend */
+
+#define EXPLICIT_SIGN_EXTEND
+
+/* 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)
+
+/* Use type int rather than a union, to represent Lisp_Object */
+
+#define NO_UNION_TYPE
+
+/* Now define a symbol for the cpu type, if your compiler
+ does not define it automatically:
+ vax, m68000, ns16000 are the ones defined so far. */
+
+# ifndef mc68k
+# define mc68k
+# endif
+#ifndef m68k
+#define m68k
+#endif
+
+/* Cause crt0.c to define errno. */
+
+#define NEED_ERRNO
+
+/* Data type of load average, as read out of kmem. */
+/* These are commented out since it is not supported by this machine. */
+
+/* #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) */
+
+#define SWITCH_ENUM_BUG
+
+/* These three lines were new in 18.50. They were said to permit
+ a demand-paged executable, but someone else says they don't work.
+ Someone else says they do. They didn't work because errno was an
+ initialized variable in crt0.c, and because of %splimit (also therein),
+ both of which have been fixed now. */
+#define SECTION_ALIGNMENT 0x03ff
+#define SEGMENT_MASK 0xffff
+#define LD_SWITCH_MACHINE -z
diff --git a/src/m/alliant.h b/src/m/alliant.h
new file mode 100644
index 00000000000..17ede6119e8
--- /dev/null
+++ b/src/m/alliant.h
@@ -0,0 +1,147 @@
+/* alliant.h Alliant machine running system version 2 or 3.
+ Copyright (C) 1985, 1986, 1987 Free Software Foundation, Inc.
+ Note that for version 1 of the Alliant system
+ you should use alliant1.h instead of this file.
+ Use alliant4.h for version 4.
+
+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)
+any later version.
+
+GNU Emacs is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+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 following line tells the configuration script what sort of
+ operating system this machine is likely to run.
+ USUAL-OPSYS="bsd4-2" */
+
+/* The following three symbols give information on
+ the size of various data types. */
+
+#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 BIG_ENDIAN iff lowest-numbered byte in a word
+ is the most significant byte. */
+
+#define 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. */
+
+#ifdef ALLIANT_1
+#define NO_ARG_ARRAY
+#endif
+
+/* Define WORD_MACHINE if addresses and such have
+ * to be corrected before they can be used as byte counts. */
+
+#undef 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:
+ vax, m68000, ns16000, pyramid, orion, tahoe and APOLLO
+ are the ones defined so far. */
+
+#define ALLIANT
+
+/* Use type int rather than a union, to represent Lisp_Object */
+/* This is desirable for most machines. */
+
+#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
+ are always unsigned.
+
+ If you use NO_UNION_TYPE, this flag does not matter. */
+/* On Alliants, bitfields are unsigned. */
+
+#define EXPLICIT_SIGN_EXTEND
+
+/* No load average information available for Alliants. */
+
+#undef LOAD_AVE_TYPE
+#undef LOAD_AVE_CVT
+
+/* Define CANNOT_DUMP on machines where unexec does not work.
+ Then the function dump-emacs will not be defined
+ and temacs will do (load "loadup") automatically unless told otherwise. */
+
+#undef CANNOT_DUMP
+
+/* 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.
+
+ Otherwise Emacs assumes that text space precedes data space,
+ numerically. */
+
+#undef 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. */
+
+#undef C_ALLOCA
+#define HAVE_ALLOCA
+
+#ifdef ALLIANT_1
+#define C_ALLOCA
+#undef HAVE_ALLOCA
+#endif /* ALLIANT_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. */
+/* Actually, Alliant CONCENTRIX does paging "right":
+ data pages are copy-on-write, which means that the pure data areas
+ are shared automatically and remapping is not necessary. */
+
+#define NO_REMAP
+
+/* Alliant needs special crt0.o because system version is not reentrant */
+
+#define START_FILES crt0.o
+
+/* Alliant dependent code for dumping executing image.
+ See crt0.c code for alliant. */
+
+#define ADJUST_EXEC_HEADER {\
+extern int _curbrk, _setbrk;\
+_setbrk = _curbrk;\
+hdr.a_bss_addr = bss_start;\
+unexec_text_start = hdr.a_text_addr;}
+
+/* cc screws up on long names. Try making cpp replace them. */
+
+#ifdef ALLIANT_1
+#define Finsert_abbrev_table_description Finsert_abbrev_table_descrip
+#define internal_with_output_to_temp_buffer internal_with_output_to_tem
+#endif
+
+/* "vector" is a typedef in /usr/include/machine/reg.h, so its use as
+ a variable name causes errors when compiling under ANSI C. */
+
+#define vector xxvector
diff --git a/src/m/altos.h b/src/m/altos.h
new file mode 100644
index 00000000000..539f79dfb28
--- /dev/null
+++ b/src/m/altos.h
@@ -0,0 +1,77 @@
+/* altos machine description file Altos 3068 Unix System V Release 2
+ Copyright (C) 1985, 1986 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)
+any later version.
+
+GNU Emacs is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+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 following line tells the configuration script what sort of
+ operating system this machine is likely to run.
+ USUAL-OPSYS="usg5-2" */
+
+/* The following three symbols give information on
+ the size of various data types. */
+
+#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 */
+
+/* Vax is not big-endian: lowest numbered byte is least significant,
+ but 68000's are. */
+
+#define BIG_ENDIAN
+
+/* 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)
+
+#define EXPLICIT_SIGN_EXTEND
+
+/* Use type int rather than a union, to represent Lisp_Object */
+
+#define NO_UNION_TYPE
+
+#define LIB_STANDARD -lc
+
+#ifdef __GNUC__
+#define alloca __builtin_alloca
+#define HAVE_ALLOCA
+#else
+#define C_ALLOCA /* we have -lPW and alloca but it's broken!
+ <vsedev!ron> */
+#endif
+
+#define SWITCH_ENUM_BUG
+
+#define NO_REMAP
+#define STACK_DIRECTION -1
+
+#undef TERMINFO
+
+#undef CANNOT_DUMP
+#undef SHORTNAMES
+#define TERMCAP
+
+#define LIBS_TERMCAP -ltermlib
+#define PURESIZE 220000
+#define ALTOS
+
+#ifdef __GNUC__
+#define COFF_ENCAPSULATE
+#endif
diff --git a/src/m/amdahl.h b/src/m/amdahl.h
new file mode 100644
index 00000000000..261d369c740
--- /dev/null
+++ b/src/m/amdahl.h
@@ -0,0 +1,171 @@
+/* amdahl machine description file
+ Copyright (C) 1987 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)
+any later version.
+
+GNU Emacs is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+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. */
+
+/*
+This file for amdahl_uts created by modifying the template.h
+by Jishnu Mukerji 3/1/87
+
+The following line tells the configuration script what sort of
+operating system this machine is likely to run.
+USUAL-OPSYS="usg5-2-2"
+
+This file works with the Amdahl uts native C compiler. The 5.2u370
+compiler is so brain damaged that it is not even worth trying to use it.
+*/
+
+/* The following three symbols give information on
+ the size of various data types. */
+
+#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 BIG_ENDIAN iff lowest-numbered byte in a word
+ is the most significant byte. */
+
+#define 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. */
+
+#undef NO_ARG_ARRAY
+
+/* Define WORD_MACHINE if addresses and such have
+ * to be corrected before they can be used as byte counts. */
+
+#define WORD_MACHINE /* not actually used anywhere yet! */
+
+/* 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) (((sign_extend_temp=(c)) & 0x80) \
+ ? (sign_extend_temp | 0xFFFFFF00) \
+ : (sign_extend_temp))
+
+/* Now define a symbol for the cpu type, if your compiler
+ does not define it automatically:
+ vax, m68000, ns16000, pyramid, orion, tahoe and APOLLO
+ are the ones defined so far. */
+
+/* uts gets defined automatically */
+/* However for clarity define amdahl_uts */
+#define amdahl_uts
+
+/* Use type int rather than a union, to represent Lisp_Object */
+/* This is desirable for most machines. */
+
+#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
+ 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. */
+
+/* #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)*/
+
+/* Define CANNOT_DUMP on machines where unexec does not work.
+ Then the function dump-emacs will not be defined
+ and temacs will do (load "loadup") automatically unless told otherwise. */
+
+/* #define CANNOT_DUMP
+
+/* 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.
+
+ Otherwise Emacs assumes that text space precedes data space,
+ 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 */
+
+#ifdef HAVE_ALLOCA
+#define LIB_STANDARD -lPW -lc
+#endif
+
+/* 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 TERMINFO
+
+/* The usual definition of XINT, which involves shifting, does not
+ sign-extend properly on this machine. */
+
+#define XINT(i) (((sign_extend_temp=(i)) & 0x00800000) \
+ ? (sign_extend_temp | 0xFF000000) \
+ : (sign_extend_temp & 0x00FFFFFF))
+
+#ifdef emacs /* Don't do this when making xmakefile! */
+extern int sign_extend_temp;
+#endif
+
+/* The following needed to load the proper crt0.o and to get the
+ proper declaration of data_start in the #undef NO_REMAP case */
+
+#ifndef NO_REMAP
+#define START_FILES pre-crt0.o /lib/crt0.o
+#endif
+
+/* Perhaps this means that the optimizer isn't safe to use. */
+
+#define C_OPTIMIZE_SWITCH
+
+/* Put text and data on non-segment boundary; makes image smaller */
+
+#define LD_SWITCH_MACHINE -N
+
+/* When writing the 'xemacs' file, make text segment ro */
+#define EXEC_MAGIC 0410
+
+/* Mask for address bits within a memory segment */
+#define SEGSIZ 0x10000 /* Should this not be defined elsewhere ? */
+#define SEGMENT_MASK (SEGSIZ - 1)
+
+/* Tell alloca.c which direction stack grows. */
+#define STACK_DIRECTION -1
+
+/* Compensate for error in signal.h. */
+#if NSIG==19
+#undef NSIG
+#define NSIG 20
+#endif
diff --git a/src/m/apollo.h b/src/m/apollo.h
new file mode 100644
index 00000000000..7f2ba4c1678
--- /dev/null
+++ b/src/m/apollo.h
@@ -0,0 +1,101 @@
+/* machine description file for Apollo machine.
+ Copyright (C) 1985, 1986 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)
+any later version.
+
+GNU Emacs is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+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 following line tells the configuration script what sort of
+ operating system this machine is likely to run.
+ USUAL-OPSYS="bsd4-2" */
+
+/* The following three symbols give information on
+ the size of various data types. */
+
+#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 */
+
+/* 68000 has lowest-numbered byte as most significant */
+
+#define BIG_ENDIAN
+
+/* 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)
+
+/* Say this machine is a 68000 */
+
+/* #define m68000 */ /* Done by the C compiler */
+
+#define APOLLO
+
+/* Assume we use s-bsd4-3.h for system version 10. */
+
+#ifdef BSD4_3
+#define APOLLO_SR10
+#endif
+
+/* Use type int rather than a union, to represent Lisp_Object */
+
+#define NO_UNION_TYPE
+
+/* Do not define LOAD_AVE_TYPE or LOAD_AVE_CVT
+ since there is no /dev/kmem */
+
+/* Define CANNOT_DUMP because it is impossible to dump. */
+
+#define CANNOT_DUMP
+
+/* Define VIRT_ADDR_VARIES because the virtual addresses of
+ pure and impure space as loaded can vary, and even their
+ relative order cannot be relied on. */
+
+#define VIRT_ADDR_VARIES
+
+/* Define HAVE_ALLOCA because we use the system's version of alloca. */
+
+#define HAVE_ALLOCA
+
+/* DN460 has a 28 bit virtual address space, and 26 bits are often used */
+
+#define VALBITS 26
+#define GCTYPEBITS 5
+
+/* Prevent -lg from being used for debugging. Not needed. */
+
+#define LIBS_DEBUG
+
+/* Must use the system's termcap. It does special things. */
+
+#define LIBS_TERMCAP -ltermcap
+
+/* Must use the system's malloc and alloca. */
+
+#define SYSTEM_MALLOC
+
+/* No crt0 is needed, but control where environ is allocated. */
+
+#define START_FILES pre-crt0.o
+
+/* Apollo's bcopy said to lose on more than 16k bytes in SR9.5. */
+
+#ifndef APOLLO_SR10
+#undef BSTRING
+#endif
diff --git a/src/m/aviion.h b/src/m/aviion.h
new file mode 100644
index 00000000000..fa116db1ff4
--- /dev/null
+++ b/src/m/aviion.h
@@ -0,0 +1,150 @@
+/* machine description file for Data General AViiON.
+ Copyright (C) 1985, 1986, 1991 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)
+any later version.
+
+GNU Emacs is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+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 following three symbols give information on
+ the size of various data types. */
+
+#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 BIG_ENDIAN iff lowest-numbered byte in a word
+ is the most significant byte. */
+
+#define 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 NO_ARG_ARRAY
+
+/* Define WORD_MACHINE if addresses and such have
+ * to be corrected before they can be used as byte counts. */
+
+#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)
+
+/* Define DATA_SEG_BITS if pointers need to be corrected with
+ a segment field. */
+
+#ifdef FIX_ADDRESS
+#define DATA_SEG_BITS 0xef000000
+#endif
+
+/* 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 m88k
+#define m88k
+#endif
+
+/* Use type int rather than a union, to represent Lisp_Object */
+/* This is desirable for most machines. */
+
+#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
+ 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. */
+
+/* #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) */
+
+/* Define CANNOT_DUMP on machines where unexec does not work.
+ Then the function dump-emacs will not be defined
+ and temacs will do (load "loadup") automatically unless told otherwise. */
+
+/* #define CANNOT_DUMP */
+
+/* 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.
+
+ Otherwise Emacs assumes that text space precedes data space,
+ 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
+#define alloca(x) __builtin_alloca(x)
+
+/* 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
+
+/* Use 26 bits instead of 24 for internal pointer values */
+
+#define VALBITS 26
+#define GCTYPEBITS 5
+
+/* Define ADDR_CORRECT(ADDR) to be a macro to correct an int which is
+ the bit pattern of a pointer to a byte into an int which is the
+ number of a byte.
+
+ This macro has a default definition which is usually right.
+ This default definition is a no-op on most machines (where a
+ pointer looks like an int) but not on all machines. */
+
+#define ADDR_CORRECT(ADDR) ((int)ADDR)
+
+/* Cast pointers to this type to compare them. */
+
+#define PNTR_COMPARISON_TYPE void *
+
+/* Some machines that use COFF executables require that each section
+ start on a certain boundary *in the COFF file*. Such machines should
+ define SECTION_ALIGNMENT to a mask of the low-order bits that must be
+ zero on such a boundary. This mask is used to control padding between
+ segments in the COFF file.
+
+ If SECTION_ALIGNMENT is not defined, the segments are written
+ consecutively with no attempt at alignment. This is right for
+ unmodified system V. */
+
+#define SECTION_ALIGNMENT 0x7
+
diff --git a/src/m/celerity.h b/src/m/celerity.h
new file mode 100644
index 00000000000..7dced85d78e
--- /dev/null
+++ b/src/m/celerity.h
@@ -0,0 +1,73 @@
+/* machine description file for Celerity.
+ Copyright (C) 1985, 1986 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)
+any later version.
+
+GNU Emacs is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+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 following line tells the configuration script what sort of
+ operating system this machine is likely to run.
+ USUAL-OPSYS="bsd4-2" */
+
+/* The following three symbols give information on
+ the size of various data types. */
+
+#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 BIG_ENDIAN iff lowest-numbered byte in a word
+ is the most significant byte. */
+
+#define BIG_ENDIAN
+
+/* XINT must explicitly sign extend */
+
+#define EXPLICIT_SIGN_EXTEND
+
+/* 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)
+
+/* celerity preprocessor defines "accel", however the following is clearer */
+#define celerity
+
+/* #define NO_UNION_TYPE would be preferable,
+ but it does not work, and the reason is not yet known. */
+
+#define NO_UNION_TYPE
+
+/* Data type of load average, as read out of kmem. */
+
+#define LOAD_AVE_TYPE double
+
+/* Convert that into an integer that is 100 for a load average of 1.0 */
+
+#define LOAD_AVE_CVT(x) ((int) ((x) * 100.0))
+
+/* A machine-specific loader switch is needed. */
+
+#define LD_SWITCH_MACHINE -k100000
+
+/* alloca is provided by the system. */
+
+#define HAVE_ALLOCA
+
+/* (short) negative-int doesn't sign-extend correctly */
+#define SHORT_CAST_BUG
diff --git a/src/m/clipper.h b/src/m/clipper.h
new file mode 100644
index 00000000000..6614f52890c
--- /dev/null
+++ b/src/m/clipper.h
@@ -0,0 +1,117 @@
+/* machine description file for clipper
+ Copyright (C) 1985, 1986 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)
+any later version.
+
+GNU Emacs is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+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 following three symbols give information on
+ the size of various data types. */
+
+#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 BIG_ENDIAN iff lowest-numbered byte in a word
+ is the most significant byte. */
+
+/* #define 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 NO_ARG_ARRAY
+
+/* Define WORD_MACHINE if addresses and such have
+ * to be corrected before they can be used as byte counts. */
+
+/* #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) ((((int) (c)) << 24) >> 24)
+/* #define SIGN_EXTEND_CHAR(c) (c) */
+
+/* Now define a symbol for the cpu type, if your compiler
+ does not define it automatically */
+
+#define clipper 1
+
+/* Use type int rather than a union, to represent Lisp_Object */
+
+#define NO_UNION_TYPE
+
+/* crt0.c should define a symbol `start' and do .globl with a dot. */
+
+#define DOT_GLOBAL_START
+
+/* Define EXPLICIT_SIGN_EXTEND if XINT must explicitly sign-extend
+ the 24-bit 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 */
+
+/* USG systems I know of running on Vaxes do not actually
+ support the load average, so disable it for them. */
+
+/* Data type of load average, as read out of kmem. */
+
+#define LOAD_AVE_TYPE double
+
+/* Convert that into an integer that is 100 for a load average of 1.0 */
+
+#define LOAD_AVE_CVT(x) ((int) ((x) * 100.0))
+
+/* Define CANNOT_DUMP on machines where unexec does not work.
+ Then the function dump-emacs will not be defined
+ and temacs will do (load "loadup") automatically unless told otherwise. */
+/* #define CANNOT_DUMP */
+
+/* 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.
+
+ Otherwise Emacs assumes that text space precedes data space,
+ numerically. */
+
+/* #define VIRT_ADDR_VARIES */ /* Karl Kleinpaste says this isn't needed. */
+
+/* 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 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 */
+
+#ifdef USG
+#define TEXT_START 0
+#endif /* USG */
+
+#define LD_TEXT_START_ADDR 8000
diff --git a/src/m/cnvrgnt.h b/src/m/cnvrgnt.h
new file mode 100644
index 00000000000..dcbeb3c6d35
--- /dev/null
+++ b/src/m/cnvrgnt.h
@@ -0,0 +1,124 @@
+/* machine description file for convergent S series.
+ Copyright (C) 1989 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)
+any later version.
+
+GNU Emacs is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+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 following three symbols give information on
+ the size of various data types. */
+
+#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 BIG_ENDIAN iff lowest-numbered byte in a word
+ is the most significant byte. */
+
+#define 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 NO_ARG_ARRAY */
+
+/* Define WORD_MACHINE if addresses and such have
+ * to be corrected before they can be used as byte counts. */
+
+/* #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. */
+
+#define m68000
+
+/* Use type int rather than a union, to represent Lisp_Object.
+ This is desirable for most machines. */
+
+#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
+ 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.
+ These are commented out since it is not supported by this machine. */
+
+#define LOAD_AVE_TYPE double
+
+/* Convert that into an integer that is 100 for a load average of 1.0 */
+
+#define LOAD_AVE_CVT(x) ((int) ((x) * 100.0))
+
+/* Define CANNOT_DUMP on machines where unexec does not work.
+ Then the function dump-emacs will not be defined
+ and temacs will do (load "loadup") automatically unless told otherwise. */
+
+/* #define CANNOT_DUMP */
+
+/* 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.
+
+ Otherwise Emacs assumes that text space precedes data space,
+ numerically. */
+
+#undef 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
+#undef HAVE_ALLOCA
+
+/* 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
+
+/* Change some things to avoid bugs in compiler. */
+
+#define SWITCH_ENUM_BUG
+
+/* fork(2) and vfork() are the same here. */
+
+#define HAVE_VFORK
+
+/* grows towards lower addresses. */
+
+#define STACK_DIRECTION -1
+
+/* some errno.h's don't actually allocate the variable itself.
+ Cause crt0.c to define errno. */
+
+#define NEED_ERRNO
diff --git a/src/m/convex.h b/src/m/convex.h
new file mode 100644
index 00000000000..e6bfbecd273
--- /dev/null
+++ b/src/m/convex.h
@@ -0,0 +1,173 @@
+/* machine description file for convex C1.
+ Copyright (C) 1987 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)
+any later version.
+
+GNU Emacs is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+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 following line tells the configuration script what sort of
+ operating system this machine is likely to run.
+ USUAL-OPSYS="bsd4-3" */
+
+/* The following three symbols give information on
+ the size of various data types. */
+
+#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 BIG_ENDIAN iff lowest-numbered byte in a word
+ is the most significant byte. */
+
+#define 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.
+ * Maybe it would be better to simply correct the code. */
+
+#define NO_ARG_ARRAY
+
+/* Define WORD_MACHINE if addresses and such have
+ * to be corrected before they can be used as byte counts. */
+
+/* #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. */
+
+/* convex already defined... */
+
+/* Use type int rather than a union, to represent Lisp_Object */
+/* This is desirable for most machines. */
+
+#define NO_UNION_TYPE
+
+/* crt0.c should use the vax-bsd style of entry, with no dummy args. */
+
+#define CRT0_DUMMIES
+
+/* crt0.c should define a symbol `start' and do .globl with a dot. */
+
+#define DOT_GLOBAL_START
+
+/* Data type of load average, as read out of kmem. */
+
+#define LOAD_AVE_TYPE double
+
+/* Convert that into an integer that is 100 for a load average of 1.0 */
+
+#define LOAD_AVE_CVT(x) (int) ((x) * 100.0)
+
+/* Define CANNOT_DUMP on machines where unexec does not work.
+ Then the function dump-emacs will not be defined
+ and temacs will do (load "loadup") automatically unless told otherwise. */
+
+/* #define CANNOT_DUMP */
+
+/* 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.
+
+ Otherwise Emacs assumes that text space precedes data space,
+ 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
+
+/* 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 */
+
+/* Addresses on the Convex have the high bit set. */
+#define DATA_SEG_BITS (1 << (INTBITS-1))
+
+/* Right shift is logical shift.
+ And the usual way of handling such machines, which involves
+ copying the number into sign_extend_temp, does not work
+ for reasons as yet unknown. */
+
+#define XINT(a) sign_extend_lisp_int (a)
+
+/* Convex uses a special version of unexec. */
+
+#define UNEXEC unexconvex.o
+
+/* you gotta define 'COFF' for post 6.1 unexec. */
+
+#define COFF
+#define TEXT_START 0x80001000
+
+/* Posix stuff for Convex OS 8.1 and up. */
+
+#define C_SWITCH_MACHINE -pcc
+#define LD_SWITCH_MACHINE \
+ -e__start -L /usr/lib \
+ '-A__iob=___ap$$iob' '-A_use_libc_sema=___ap$$use_libc_sema'
+
+/* Use setsid when starting up inferiors. */
+#define HAVE_SETSID
+
+/* Use <dirent.h>. */
+#define SYSV_SYSTEM_DIR
+#define HAVE_CLOSEDIR
+
+#ifdef _POSIX_SOURCE
+
+/* These symbols have been undefined to advance the state of the art. */
+
+#define S_IFMT _S_IFMT
+#define S_IFDIR _S_IFDIR
+
+#define S_IREAD _S_IREAD
+#define S_IWRITE _S_IWRITE
+#define S_IEXEC _S_IEXEC
+
+#endif
+
+/* Ptys may start below ptyp0; call a routine to hunt for where. */
+
+#undef FIRST_PTY_LETTER
+#define FIRST_PTY_LETTER first_pty_letter()
+
+#if 0
+/*
+ * Force a K&R compilation and libraries with the Convex V 4.0 C compiler
+ */
+#define C_SWITCH_MACHINE -pcc
+#define LIB_STANDARD -lc_old
+#define LIBS_MACHINE -lC2_old
+#define LD_SWITCH_MACHINE -X -NL -fn -Enoposix -A__iob=___ap\$$iob \
+ -A_use_libc_sema=___ap\$$use_libc_sema -L /usr/lib
+#endif
diff --git a/src/m/cydra5.h b/src/m/cydra5.h
new file mode 100644
index 00000000000..772e9b6fcb0
--- /dev/null
+++ b/src/m/cydra5.h
@@ -0,0 +1,139 @@
+/* machine description file for Cydrome's CYDRA 5 mini super computer
+ Copyright (C) 1988 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)
+any later version.
+
+GNU Emacs is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+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 following line tells the configuration script what sort of
+ operating system this machine is likely to run.
+ USUAL-OPSYS="usg5-3" */
+
+/* The following three symbols give information on
+ the size of various data types. */
+
+#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 BIG_ENDIAN iff lowest-numbered byte in a word
+ is the most significant byte. */
+
+#define 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. */
+
+#undef NO_ARG_ARRAY
+
+/* Define WORD_MACHINE if addresses and such have
+ * to be corrected before they can be used as byte counts. */
+
+#undef 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,
+ orion, tahoe, APOLLO and many others */
+
+/* Use type int rather than a union, to represent Lisp_Object */
+/* This is desirable for most machines. */
+
+#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
+ 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. */
+
+#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) x
+
+/* Define CANNOT_DUMP on machines where unexec does not work.
+ Then the function dump-emacs will not be defined
+ and temacs will do (load "loadup") automatically unless told otherwise. */
+
+/*#define CANNOT_DUMP*/
+
+/* 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.
+
+ Otherwise Emacs assumes that data space precedes text space,
+ numerically. */
+
+#undef 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
+#undef HAVE_ALLOCA
+
+/* The data segment in this machine always starts at address 0x10000000.
+ An address of data cannot be stored correctly in a Lisp object;
+ we always lose the high bits. We must tell XPNTR to add them back. */
+
+#define DATA_SEG_BITS 0x20000000
+#define DATA_START 0x20000000
+
+/* 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 BROKEN_FIONREAD /* We son't even have it */
+#define LIBS_MACHINE -lsocket -lnsl
+
+/* Stack grows downward in memory. */
+#define STACK_DIRECTION -1
+
+/* The data section in a coff file must be aligned in the file. */
+#define DATA_SECTION_ALIGNMENT 0xFFF
+
+/* Compiler won't allow switch (x) when x is an enum. */
+#define SWITCH_ENUM_BUG
+
+
+/* Explain how pty filenames work. */
+
+#define PTY_ITERATION for (i = 47; i >= 0; i--)
+#define PTY_NAME_SPRINTF sprintf (ptyname, "/dev/pty%03x", i);
+#define PTY_TTY_NAME_SPRINTF sprintf (ptyname, "/dev/ptm%03x", i);
+
+/* We can't do interrupt-driven input, so don't let user try. */
+
+#undef SIGIO
diff --git a/src/m/delta.h b/src/m/delta.h
new file mode 100644
index 00000000000..8dda4fd213d
--- /dev/null
+++ b/src/m/delta.h
@@ -0,0 +1,168 @@
+/* machine description file for the Motorola delta running System V.3.
+ tested on sys1147 (mvme147 - based system).
+ Copyright (C) 1986 Free Software Foundation, Inc.
+
+This file is part of GNU Emacs.
+
+GNU Emacs is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY. No author or distributor
+accepts responsibility to anyone for the consequences of using it
+or for whether it serves any particular purpose or works at all,
+unless he says so in writing. Refer to the GNU Emacs General Public
+License for full details.
+
+Everyone is granted permission to copy, modify and redistribute
+GNU Emacs, but only under the conditions described in the
+GNU Emacs General Public License. A copy of this license is
+supposed to have been given to you along with GNU Emacs so you
+can know your rights and responsibilities. It should be in a
+file named COPYING. Among other things, the copyright notice
+and this notice must be preserved on all copies. */
+
+
+/* The following line tells the configuration script what sort of
+ operating system this machine is likely to run.
+ USUAL-OPSYS="usg5-3" */
+
+/* The following three symbols give information on
+ the size of various data types. */
+
+#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 BIG_ENDIAN iff lowest-numbered byte in a word
+ is the most significant byte. */
+
+#define 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 NO_ARG_ARRAY */
+
+/* Define WORD_MACHINE if addresses and such have
+ * to be corrected before they can be used as byte counts. */
+
+/* #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:
+ vax, m68000, ns16000, pyramid, orion, tahoe and APOLLO
+ are the ones defined so far. */
+#define m68000
+#define NO_REMAP
+
+#define HAVE_SYSVIPC
+
+#define HAVE_PTYS
+#define SYSV_PTYS
+
+/* Use type int rather than a union, to represent Lisp_Object */
+/* This is desirable for most machines. */
+
+#define NO_UNION_TYPE
+#define SWITCH_ENUM_BUG
+/* Define EXPLICIT_SIGN_EXTEND if XINT must explicitly sign-extend
+ the 24-bit 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. */
+
+/* #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) */
+
+/* Define CANNOT_DUMP on machines where unexec does not work.
+ Then the function dump-emacs will not be defined
+ and temacs will do (load "loadup") automatically unless told otherwise. */
+
+/* #define CANNOT_DUMP */
+
+/* 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.
+
+ Otherwise Emacs assumes that data space precedes text space,
+ 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 */
+
+#ifdef __GNUC__
+/* easy. use builtin one. also be sure that no other ones are tried out. */
+# define alloca __builtin_alloca
+# define HAVE_ALLOCA
+# undef C_ALLOCA
+#else
+# ifdef C_ALLOCA
+# define STACK_DIRECTION (-1) /* C_ALLOCA needs to know about stack. */
+# else /* C_ALLOCA */
+# ifndef HAVE_ALLOCA
+# define BAT_ALLOCA /* if not in library, alloca.s needs this. */
+# endif /* HAVE_ALLOCA */
+# endif /* C_ALLOCA */
+#endif /* __GNUC__ */
+
+/* The standard C library is -lcieee, not -lc.
+ Also use the PW library, which contains alloca.
+ DO NOT USE -lPW. That version of alloca is broken, at last until version
+ SVR3V5.1 . -riku@field.fi */
+
+#define LIB_STANDARD -lc
+
+#define LIBS_TERMCAP -lcurses
+
+/* define this if you want to use X11 */
+#undef HAVE_X_WINDOWS
+
+#ifdef HAVE_X_WINDOWS
+/* debug switches enabled because of some difficulties w/X11 */
+# define C_DEBUG_SWITCH -g
+# define OBJECTS_MACHINE -lg
+# define C_OPTIMIZE_SWITCH
+# define CANNOT_DUMP
+/*# define XDEBUG*/
+# define X11
+/* X library implements these. */
+# define BSTRING
+/* X library is in 'nonstandard' location. */
+# define LD_SWITCH_MACHINE -L/usr/lib/X11/
+#else
+/* No sufficient justification for this. */
+/* # define C_DEBUG_SWITCH */
+# define C_OPTIMIZE_SWITCH -O
+#endif /* HAVE_X_WINDOWS */
+
+/* enable batdevice-dependent code to compile. */
+#define BAT68K
+
+#define HAVE_SOCKETS
+
+/* crt0.c should use the vax-bsd style of entry, with no dummy args. */
+
+
+/* emacs's magic number isn't temacs's;
+ temacs is writeable text (the default!). */
diff --git a/src/m/dual.h b/src/m/dual.h
new file mode 100644
index 00000000000..0af8db5940e
--- /dev/null
+++ b/src/m/dual.h
@@ -0,0 +1,82 @@
+/* machine description file for Dual machines using unisoft port.
+ Copyright (C) 1985 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)
+any later version.
+
+GNU Emacs is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+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 following line tells the configuration script what sort of
+ operating system this machine is likely to run.
+ USUAL-OPSYS="note"
+
+NOTE-START
+Dual running System V (-machine=dual -opsystem=usg5-2)
+
+ As of 17.46, this works except for a few changes
+ needed in unexec.c.
+
+Dual running Uniplus (-machine=dual -opsystem=unipl5-2)
+
+ Works, as of 17.51.
+NOTE-END */
+
+
+/* The following three symbols give information on
+ the size of various data types. */
+
+#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 BIG_ENDIAN iff lowest-numbered byte in a word
+ is the most significant byte. */
+
+#define BIG_ENDIAN
+
+/* XINT must explicitly sign-extend */
+
+#define EXPLICIT_SIGN_EXTEND
+
+/* 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)
+
+/* Use type int rather than a union, to represent Lisp_Object */
+
+#define NO_UNION_TYPE
+
+/* Now define a symbol for the cpu type, if your compiler
+ does not define it automatically:
+ vax, m68000, ns16000 are the ones defined so far. */
+
+#ifndef m68000
+#define m68000
+#endif
+
+/* Data type of load average, as read out of kmem. */
+/* These are commented out since it does not really work in uniplus */
+
+/* #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) */
+
+/* Change some things to avoid bugs in compiler */
+
+#define SWITCH_ENUM_BUG 1
diff --git a/src/m/elxsi.h b/src/m/elxsi.h
new file mode 100644
index 00000000000..9f79c7919a6
--- /dev/null
+++ b/src/m/elxsi.h
@@ -0,0 +1,153 @@
+/* machine description file for Elxsi machine (running enix).
+ Copyright (C) 1986 Free Software Foundation, Inc.
+ Adapted by John Salmon
+
+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)
+any later version.
+
+GNU Emacs is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+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 following line tells the configuration script what sort of
+ operating system this machine is likely to run.
+ USUAL-OPSYS="usg5-2" */
+
+/* This file was modified by Matt Crawford <matt@tank.uchicago.edu>
+ to work under Elxsi's 12.0 release of BSD unix. */
+
+/* The following three symbols give information on
+ the size of various data types. */
+
+#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 BIG_ENDIAN iff lowest-numbered byte in a word
+ is the most significant byte. */
+
+/*#define 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 NO_ARG_ARRAY */
+
+/* Define WORD_MACHINE if addresses and such have
+ * to be corrected before they can be used as byte counts. */
+
+/*#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) ((int)c)
+
+/* Now define a symbol for the cpu type, if your compiler
+ does not define it automatically:
+ vax, m68000, ns16000, pyramid, orion, tahoe and APOLLO
+ are the ones defined so far. */
+
+#ifndef elxsi
+#define elxsi
+#endif
+
+/* Use type int rather than a union, to represent Lisp_Object */
+/* This is desirable for most machines. */
+
+#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
+ are always unsigned.
+
+ If you use NO_UNION_TYPE, this flag does not matter. */
+
+#define EXPLICIT_SIGN_EXTEND
+
+
+/* Name of kernel load average variable */
+
+#undef LDAV_SYMBOL
+#define LDAV_SYMBOL "avenrun"
+
+/* Data type of load average, as read out of kmem. */
+
+#define LOAD_AVE_TYPE double
+
+/* Convert that into an integer that is 100 for a load average of 1.0 */
+
+#define LOAD_AVE_CVT(x) (int) ((x) * 100.0)
+
+/* Define CANNOT_DUMP on machines where unexec does not work.
+ Then the function dump-emacs will not be defined
+ and temacs will do (load "loadup") automatically unless told otherwise.
+
+ The Elxsi can in principle dump, but the necessary changes to
+ unexec, which involve byte-swapping, were too ugly to install.
+ If someone submits simple code that supports dumping on the Elxsi,
+ it can be installed and CANNOT_DUMP can be turned off. */
+
+/* #define CANNOT_DUMP */
+
+/* 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.
+
+ Otherwise Emacs assumes that text space precedes data space,
+ 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 */
+
+/* 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 is a guess for an alternate solution to whatever
+ problem motivated defining _sobuf in sysdep,c with extern char *_sobuf. */
+#define _sobuf xsobuf
+
+/* Address of start of text segment as loaded. */
+
+#define TEXT_START 0x800
+
+/* Tell crt0.c not to define environ. */
+
+#define DONT_NEED_ENVIRON
+
+/* The elxsi has no debugger, so might as well optimize instead
+ of trying to make a symbol table. */
+
+#define C_DEBUG_SWITCH -O
+
+/* Elxsi uses COFF under both Sys V and BSD environments */
+
+#define COFF
+
+#define ADJUST_EXEC_HEADER {\
+extern int _init_brk;\
+_init_brk = bss_start;\
+}
diff --git a/src/m/gec63.h b/src/m/gec63.h
new file mode 100644
index 00000000000..4f8fe4a09e0
--- /dev/null
+++ b/src/m/gec63.h
@@ -0,0 +1,83 @@
+/* machine description file for gec63
+ Copyright (C) 1986 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)
+any later version.
+
+GNU Emacs is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+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 following line tells the configuration script what sort of
+ operating system this machine is likely to run.
+ USUAL-OPSYS="usg5-2" */
+
+/* The following three symbols give information on
+ the size of various data types. */
+
+#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 */
+
+/* GEC63 is big-endian: lowest numbered byte is most significant. */
+
+#define BIG_ENDIAN
+
+/* 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)<<24)>>24)
+
+/* Say this machine is a 68000 */
+
+#define gec63
+
+/* Use an int to represent Lisp_Object */
+
+#define NO_UNION_TYPE
+
+/* GEC63 has alloca in the PW/ux63 library. */
+#define LIB_STANDARD -lPW -lc
+#define HAVE_ALLOCA
+
+/* Do not define LOAD_AVE_TYPE or LOAD_AVE_CVT
+ since there is no /dev/kmem */
+
+#undef ADDR_CORRECT(x)
+#define NO_ARG_ARRAY
+
+#undef TERMCAP
+#define TERMINFO
+
+/* Define sizes of portions of a Lisp_Object. */
+#define VALBITS 22
+#define GCTYPEBITS 5
+
+#define VALAMASK (((1<<VALBITS) - 1)| 0xF0000000L)
+
+#define XTYPE(a) ((enum Lisp_Type) (((a) >> VALBITS) & GCTYPEMASK))
+#define XSETTYPE(a, b) ((a) = ((a) & VALAMASK) + ((int)(b) << VALBITS))
+
+#define XPNTR(a) ((a) & VALAMASK)
+#define XSETPNTR(a, b) ((a) = ((a) & ~VALAMASK) + ((b) & VALAMASK))
+
+#define XSET(var, type, ptr) \
+ ((var) = ((int)(type) << VALBITS) + ((int) (ptr) & VALAMASK))
+
+/* Move some garbage-collector flag bits to different bit positions. */
+#define ARRAY_MARK_FLAG (1 << 27)
+#define DONT_COPY_FLAG (1 << 26)
+
+#define NO_REMAP
diff --git a/src/m/gould.h b/src/m/gould.h
new file mode 100644
index 00000000000..a9e675286a4
--- /dev/null
+++ b/src/m/gould.h
@@ -0,0 +1,208 @@
+/* machine description file for Gould PowerNodes with UTX/32 2.0 and 2.1.
+ (See MACHINES for older versions.)
+
+* NOTE: If you are running a pre-release of UTX/32 2.1 you should #define
+* RELEASE2_1 in config.h. This may also be necessary with un-updated
+* official releases of 2.1
+
+ Copyright (C) 1986 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)
+any later version.
+
+GNU Emacs is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+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 following line tells the configuration script what sort of
+ operating system this machine is likely to run.
+ USUAL-OPSYS="note"
+
+NOTE-START
+Gould Power Node (-machine=gould -opsystem=bsd4-2 or bsd4-3)
+(gould.h; s-bsd4-2.h or s-bsd4-3.h)
+
+ 18.36 worked on versions 1.2 and 2.0 of the operating system.
+
+ On UTX/32 2.0, use -opsystem=bsd4-3
+
+ On UTX/32 1.2 and UTX/32S 1.0, use -opsystem=bsd4-2 and note that compiling
+ lib-src/sorted-doc tickles a compiler bug: remove the -g flag to cc in the
+ makefile.
+
+ UTX/32 1.3 has a bug in the bcopy library routine. Fix it by
+ #undef BSTRING in gould.h.
+
+ Version 19 incorporates support for releases 2.1 and later of UTX/32.
+ A site running a pre-release of 2.1 should #define RELEASE2_1 in config.h.
+NOTE-END */
+
+/* The following three symbols give information on
+ the size of various data types. */
+
+#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 BIG_ENDIAN iff lowest-numbered byte in a word
+ is the most significant byte. */
+
+#define 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 NO_ARG_ARRAY
+
+/* Define WORD_MACHINE if addresses and such have
+ * to be corrected before they can be used as byte counts. */
+
+/* #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 */
+
+#ifndef GOULD
+#define GOULD
+#endif
+
+/* sel is an old preprocessor name on gould machines
+ - it is no longer needed and interferes with a variable in xmenu.c */
+#undef sel
+
+/* Use type int rather than a union, to represent Lisp_Object */
+/* This is desirable for most machines. */
+
+#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
+ 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. */
+
+#define LOAD_AVE_TYPE double
+
+/* 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)
+
+/* Define CANNOT_DUMP on machines where unexec does not work.
+ Then the function dump-emacs will not be defined
+ and temacs will do (load "loadup") automatically unless told otherwise. */
+
+/* #define CANNOT_DUMP */
+
+/* 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.
+
+ Otherwise Emacs assumes that text space precedes data space,
+ 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 STACK_DIRECTION -1 /* grows towards lower addresses on Gould UTX/32 */
+
+/* No need to extend the user stack. */
+
+/* If this is a 2.1 system, COFF will be predefined by cpp. If it's */
+/* pre-2.1 COFF won't be defined, which is as it should be. */
+
+#ifdef COFF
+
+#define HEADER_INCL_IN_TEXT
+#define COFF_BSD_SYMBOLS
+
+/* Seems to be necessary with coff */
+#define NO_REMAP
+
+#ifndef GOULD_NP1
+/* gould-np1.h includes this file */
+/* keep the old value - don't skip over the headers */
+#define KEEP_OLD_TEXT_SCNPTR
+#define KEEP_OLD_PADDR
+#ifndef RELEASE2_1
+#define ADJUST_TEXTBASE
+#endif /*RELEASE2_1*/
+#endif /* GOULD_NP1 */
+
+#ifdef IN_UNEXEC
+/* make Gould NP and PN COFF look like USG COFF */
+/* PN COFF */
+#define aouthdr old_exec
+/* PN COFF doesn't have a data_start or a_dtbase field in its */
+/* optional header, so substitute a junk field */
+#define a_dtbase a_ccvers
+/* Gould COFF */
+#define magic a_magic
+#define tsize a_text
+#define dsize a_data
+#define bsize a_bss
+#define entry a_entry
+#define text_start a_txbase
+#define data_start a_dtbase
+#endif /* IN_UNEXEC */
+
+/* Define how to search all pty names.
+ * This is for UTX 2.1 and greater on PN and all NP versions. It is only
+ * accident that this happens to correspond to the same versions of UTX
+ * as COFF does, but we'll take advantage of that here.
+ */
+
+/*#define USE_PTY_PAIR*/
+
+#endif /* COFF */
+
+/* -g is sometimes broken on the Gould. */
+
+#define C_DEBUG_SWITCH
+
+/* Comparing pointers as unsigned ints tickles a bug in older compilers. */
+
+#define PNTR_COMPARISON_TYPE int
+
+/* The GOULD machine counts the a.out file header as part of the text. */
+
+#define A_TEXT_OFFSET(HDR) sizeof (HDR)
+
+/* Machine-dependent action when about to dump an executable file. */
+
+#ifndef COFF
+#define ADJUST_EXEC_HEADER \
+ unexec_text_start = hdr.a_txbase + sizeof (hdr);
+#endif
+
+/* We use the system's crt0.o. Somehow it avoids losing
+ with `environ' the way most standard crt0.o's do. */
+
+#define START_FILES pre-crt0.o /lib/crt0.o
diff --git a/src/m/hp800.h b/src/m/hp800.h
new file mode 100644
index 00000000000..4b068261dcf
--- /dev/null
+++ b/src/m/hp800.h
@@ -0,0 +1,193 @@
+/* machine description file for hp9000 series 800 machines.
+ Copyright (C) 1987 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)
+any later version.
+
+GNU Emacs is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+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 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 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 BIG_ENDIAN iff lowest-numbered byte in a word
+ is the most significant byte. */
+
+#define 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 NO_ARG_ARRAY
+
+/* Define WORD_MACHINE if addresses and such have
+ * to be corrected before they can be used as byte counts. */
+
+#undef 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,
+ orion, tahoe, APOLLO and many others */
+#ifndef hp9000s800
+# define hp9000s800
+#endif
+
+/* Use type int rather than a union, to represent Lisp_Object */
+/* This is desirable for most machines. */
+
+#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
+ 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. */
+
+#define LOAD_AVE_TYPE double
+
+/* Convert that into an integer that is 100 for a load average of 1.0 */
+
+#define LOAD_AVE_CVT(x) ((int) (x * 100.0))
+
+
+/* Define CANNOT_DUMP on machines where unexec does not work.
+ Then the function dump-emacs will not be defined
+ and temacs will do (load "loadup") automatically unless told otherwise. */
+
+#undef CANNOT_DUMP
+
+/* 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.
+
+ Otherwise Emacs assumes that text space precedes data space,
+ 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 */
+
+/* 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. */
+
+#define UNEXEC unexhp9k800.o
+
+#define LIBS_MACHINE
+#define LIBS_DEBUG
+
+/* Define NEED_BSDTTY if you have such. */
+
+#define NEED_BSDTTY
+
+/* 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)
+
+#define XSET(var, type, ptr) \
+ ((var) = ((int)(type) << VALBITS) + (((unsigned) (ptr) << INTBITS-VALBITS) >> INTBITS-VALBITS))
+
+#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))
+
+#if 0 /* Loses when sign bit of type field is set. */
+#define XUNMARK(a) ((a) = (((a) << INTBITS-GCTYPEBITS-VALBITS) >> INTBITS-GCTYPEBITS-VALBITS))
+#endif
+
+/* The symbol in the kernel where the load average is found
+ is named _avenrun. At this time there are two major flavors
+ of hp-ux (there is the s800 and s300 (s200) flavors). The
+ differences are thusly moved to the corresponding machine description file.
+*/
+
+/* no underscore please */
+#define LDAV_SYMBOL "avenrun"
+#define CPTIME_SYMBOL "cp_time"
+#define DKXFER_SYMBOL "dk_xfer"
+
+#if 0 /* Supposedly no longer true. */
+/* In hpux, for unknown reasons, S_IFLNK is defined even though
+ symbolic links do not exist.
+ Make sure our conditionals based on S_IFLNK are not confused.
+
+ Here we assume that stat.h is included before config.h
+ so that we can override it here. */
+
+#undef S_IFLNK
+#endif
+
+/* Define the BSTRING functions in terms of the sysV functions. */
+
+#define bcopy(a,b,s) memcpy (b,a,s)
+#define bzero(a,s) memset (a,0,s)
+#define bcmp memcmp
+
+/* 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
diff --git a/src/m/hp9000s300.h b/src/m/hp9000s300.h
new file mode 100644
index 00000000000..1e6c232096f
--- /dev/null
+++ b/src/m/hp9000s300.h
@@ -0,0 +1,224 @@
+/* machine description file for hp9000 series 200 or 300 on either HPUX or BSD.
+ Copyright (C) 1985 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)
+any later version.
+
+GNU Emacs is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+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 following line tells the configuration script what sort of
+ operating system this machine is likely to run.
+ USUAL-OPSYS="note"
+
+NOTE-START
+HP 9000 series 200 or 300 (-machine=hp9000s300)
+
+ These machines are 68000-series CPUs running HP-UX
+ (a derivative of sysV with some BSD features) or BSD 4.3 ported by Utah.
+
+ If you're running HP-UX, specify `-opsystem=hpux'.
+
+ If you're running Utah's BSD port, don't use this -machine option;
+ instead, specify `-machine=hp300bsd' and `-opsystem=bsd4-3'.
+NOTE-END */
+
+/* Define this symbol if you are running a version of HP-UX
+ which predates version 6.5 */
+
+/* #define NOMULTIPLEJOBS */
+
+/* Define this symbol if you are running a version of HP-UX
+ which predates version 6.01 */
+
+/* #define HPUX_5 */
+
+/* The following three symbols give information on
+ the size of various data types. */
+
+#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 BIG_ENDIAN iff lowest-numbered byte in a word
+ is the most significant byte. */
+
+#define 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 NO_ARG_ARRAY */
+
+/* Define WORD_MACHINE if addresses and such have
+ * to be corrected before they can be used as byte counts. */
+
+/* #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. */
+
+#ifndef hp9000s300
+#define hp9000s300
+#endif
+
+/* Use type int rather than a union, to represent Lisp_Object */
+/* This is desirable for most machines. */
+
+#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
+ are always unsigned.
+
+ If you use NO_UNION_TYPE, this flag does not matter. */
+
+#define EXPLICIT_SIGN_EXTEND
+
+/* Define CANNOT_DUMP on machines where unexec does not work.
+ Then the function dump-emacs will not be defined
+ and temacs will do (load "loadup") automatically unless told otherwise. */
+
+/* #define CANNOT_DUMP */
+
+/* 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.
+
+ Otherwise Emacs assumes that text space precedes data space,
+ numerically. */
+
+/* #define VIRT_ADDR_VARIES */
+
+/* For University of Utah 4.3bsd implemetation on HP300s.
+ The #ifndef __GNUC__ definitions are required for the "standard" cc,
+ a very old, brain-dead version of PCC. */
+
+#ifdef BSD4_3
+/* Tell crt0.c that this is an ordinary 68020. */
+#undef hp9000s300
+#define CRT0_DUMMIES bogus_a6,
+
+#define HAVE_ALLOCA
+
+#ifndef __GNUC__
+#define LIBS_DEBUG /* don't have -lg that works */
+#define C_DEBUG_SWITCH /* don't support -g */
+#endif
+
+#undef LOAD_AVE_TYPE
+#undef LOAD_AVE_CVT
+#define LOAD_AVE_TYPE long
+#define LOAD_AVE_CVT(x) ((int) (((double) (x)) / 2048.0 * 100.0))
+
+#endif /* BSD4_3 */
+
+#ifndef BSD4_3
+/* The following definitions are for HPUX only. */
+
+/* The symbol in the kernel where the load average is found
+ is named _avenrun on this machine. */
+
+#define LDAV_SYMBOL "_avenrun"
+
+/* Data type of load average, as read out of kmem. */
+
+#define LOAD_AVE_TYPE double
+
+/* Convert that into an integer that is 100 for a load average of 1.0 */
+
+#define LOAD_AVE_CVT(x) ((int) ((x) * 100.0))
+
+/* This library is needed with -g, on the 200/300 only. */
+
+#if !defined(__GNUC__) || defined(__HPUX_ASM__)
+#define LIBS_DEBUG /usr/lib/end.o
+#endif
+
+/* The symbol FIONREAD is defined, but the feature does not work
+ on the 200/300. */
+
+#define BROKEN_FIONREAD
+
+/* In older versions of hpux, for unknown reasons, S_IFLNK is defined
+ even though symbolic links do not exist.
+ Make sure our conditionals based on S_IFLNK are not confused.
+
+ Here we assume that stat.h is included before config.h
+ so that we can override it here.
+
+ Version 6 of HP-UX has symbolic links. */
+
+#ifdef HPUX_5
+#undef S_IFLNK
+#endif
+
+/* Define the BSTRING functions in terms of the sysV functions.
+ Version 6 of HP-UX supplies these in the BSD library. */
+
+#ifdef HPUX_5
+#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.
+ Version 6 of HP-UX supplies these in the BSD library. */
+
+#ifdef HPUX_5
+#define index strchr
+#define rindex strrchr
+#endif
+
+/* Define C_SWITCH_MACHINE to be +X if you want the s200/300
+ * Emacs to run on both 68010 and 68020 based hp-ux's.
+ *
+ * Define OLD_HP_ASSEMBLER if you have an ancient assembler
+ *
+ * Define HPUX_68010 if you are using the new assembler but
+ * compiling for a s200 (upgraded) or s310. 68010 based
+ * processor without 68881.
+ */
+
+/* These switches increase the size of some internal C compiler tables.
+ They are required for compiling the X11 interface files. */
+
+#ifndef HPUX_5
+#ifndef __GNUC__
+#define C_SWITCH_MACHINE -Wc,-Nd4000,-Ns3000
+#endif
+#endif
+
+#endif /* not BSD4_3 */
+
+/* Define NEED_BSDTTY if you have such. */
+
+#ifndef NOMULTIPLEJOBS
+#define NEED_BSDTTY
+#endif
+
+#ifndef NOT_C_CODE
+#ifndef NO_SHORTNAMES
+#include <sys/wait.h>
+#define WAITTYPE int
+#endif
+#define WRETCODE(w) (((w) >> 8) & 0377)
+#endif
diff --git a/src/m/ibm370aix.h b/src/m/ibm370aix.h
new file mode 100644
index 00000000000..49f06e5106f
--- /dev/null
+++ b/src/m/ibm370aix.h
@@ -0,0 +1,174 @@
+/* ibm370.h
+ For IBM 3090 type systems running AIX370.
+ Concocted by Scott Schwartz <schwartz@cs.psu.edu>
+ Copyright (C) 1985, 1986 Free Software Foundation, Inc.
+
+This file is part of GNU Emacs.
+
+GNU Emacs is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY. No author or distributor
+accepts responsibility to anyone for the consequences of using it
+or for whether it serves any particular purpose or works at all,
+unless he says so in writing. Refer to the GNU Emacs General Public
+License for full details.
+
+Everyone is granted permission to copy, modify and redistribute
+GNU Emacs, but only under the conditions described in the
+GNU Emacs General Public License. A copy of this license is
+supposed to have been given to you along with GNU Emacs so you
+can know your rights and responsibilities. It should be in a
+file named COPYING. Among other things, the copyright notice
+and this notice must be preserved on all copies. */
+
+
+/* The following three symbols give information on
+ the size of various data types. */
+
+#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 BIG_ENDIAN iff lowest-numbered byte in a word
+ is the most significant byte. */
+
+#define 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 NO_ARG_ARRAY
+
+/* Define WORD_MACHINE if addresses and such have
+ * to be corrected before they can be used as byte counts. */
+
+/* #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) & 0x80) ? ((c) | 0xffffff80) : (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,
+ orion, tahoe, APOLLO and many others */
+/* high-c defines _AIX370 */
+
+/* Use type int rather than a union, to represent Lisp_Object */
+/* This is desirable for most machines. */
+
+#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
+ 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. */
+
+#define LOAD_AVE_TYPE double
+
+/* Convert that into an integer that is 100 for a load average of 1.0 */
+
+/* XXX */
+#define LOAD_AVE_CVT(x) (int)(((double) (x)) * 100.0 / 1.0)
+
+/* Define CANNOT_DUMP on machines where unexec does not work.
+ Then the function dump-emacs will not be defined
+ and temacs will do (load "loadup") automatically unless told otherwise. */
+
+#define CANNOT_DUMP
+#define CANNOT_UNEXEC
+
+/* 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.
+
+ Otherwise Emacs assumes that text space precedes data space,
+ 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
+
+#ifndef NO_SHORTNAMES
+#include <alloca.h>
+#include <setjmp.h>
+#endif
+
+/* 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
+
+/* Don't try to include sioctl.h. */
+#undef NEED_SIOCTL
+/* That probably means we shouldn't try ptem.h either. */
+#undef NEED_PTEM_H
+
+/* Note we do not define IBMAIX, since the `hft' features
+ don't exist on this machine. */
+
+#define LIBS_DEBUG -lg
+#ifndef LD_SWITCH_SYSTEM
+#define LD_SWITCH_SYSTEM
+#endif
+
+#define LIBS_SYSTEM -lbsd
+
+/* The symbol in the kernel where the load average is found
+ is named _avenrun. */
+
+#undef LDAV_SYMBOL
+#define LDAV_SYMBOL "_avenrun"
+
+/* define MAIL_USE_FLOCK if the mailer uses flock
+ to interlock access to /usr/spool/mail/$USER.
+ The alternative is that a lock file named
+ /usr/spool/mail/$USER.lock. */
+#define MAIL_USE_FLOCK
+
+/* Define CLASH_DETECTION if you want lock files to be written
+ so that Emacs can tell instantly when you try to modify
+ a file that someone else has modified in his Emacs. */
+#define CLASH_DETECTION
+
+#define BSTRING
+
+/* First pty name is /dev/ptyp0. */
+#define FIRST_PTY_LETTER 'p'
+
+/*
+ * Define HAVE_TIMEVAL if the system supports the BSD style clock values.
+ * Look in <sys/time.h> for a timeval structure.
+ */
+#define HAVE_TIMEVAL
+
+/*
+ * Define HAVE_SELECT if the system supports the `select' system call.
+ */
+#define HAVE_SELECT
+
+/*
+ * Define HAVE_PTYS if the system supports pty devices.
+ */
+#define HAVE_PTYS
+
+/* Define HAVE_SOCKETS if system supports 4.2-compatible sockets. */
+
+#define HAVE_SOCKETS
diff --git a/src/m/ibmps2-aix.h b/src/m/ibmps2-aix.h
new file mode 100644
index 00000000000..1503d3e3c93
--- /dev/null
+++ b/src/m/ibmps2-aix.h
@@ -0,0 +1,238 @@
+/* machine description file for ibm ps/2 aix386.
+ Copyright (C) 1989 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)
+any later version.
+
+GNU Emacs is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+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 following line tells the configuration script what sort of
+ operating system this machine is likely to run.
+ USUAL-OPSYS="note"
+
+NOTE-START
+ Use -opsystem=usg5-3 on AIX 1.2.
+ -opsystem=usg5-2-2 should work on either AIX 1.1 or 1.2, but may not
+ work with certain new X window managers, and may be suboptimal.
+NOTE-END */
+
+/* The following three symbols give information on
+ the size of various data types. */
+
+#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 */
+
+/* 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 NO_ARG_ARRAY */
+
+/* Define WORD_MACHINE if addresses and such have
+ * to be corrected before they can be used as byte counts. */
+
+/* #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) ((signed char) (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,
+ orion, tahoe, APOLLO and many others */
+
+#define INTEL386
+#define aix386
+#undef SYSTEM_TYPE
+#define SYSTEM_TYPE "ibm-aix-386"
+
+#define IBMAIX
+
+/* Use type int rather than a union, to represent Lisp_Object */
+
+#define NO_UNION_TYPE
+
+/* crt0.c, if it is used, should use the i386-bsd style of entry.
+ with no extra dummy args. On USG and XENIX,
+ NO_REMAP says this isn't used. */
+
+#define CRT0_DUMMIES bogus_fp,
+
+/* crt0.c should define a symbol `start' and do .globl with a dot. */
+
+#define DOT_GLOBAL_START
+
+/* USG systems do not actually support the load average,
+so disable it for them. */
+
+/* Define CANNOT_DUMP on machines where unexec does not work.
+ Then the function dump-emacs will not be defined
+ and temacs will do (load "loadup") automatically unless told otherwise. */
+
+/* #define CANNOT_DUMP */
+
+/* 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.
+
+ Otherwise Emacs assumes that text space precedes data space,
+ numerically. */
+
+/* #define VIRT_ADDR_VARIES */
+
+/* Define addresses, macros, change some setup for dump */
+
+#define NO_REMAP
+#undef static
+ /* Since NO_REMAP, problem with statics doesn't exist */
+
+#ifdef USG5_3
+#define TEXT_START 0x00000000
+#else
+#define TEXT_START 0x00400000
+#define TEXT_END 0
+#define DATA_START 0x00800000
+#define DATA_END 0
+
+/* The data segment in this machine always starts at address 0x00800000.
+ An address of data cannot be stored correctly in a Lisp object;
+ we always lose the high bits. We must tell XPNTR to add them back. */
+
+#define DATA_SEG_BITS 0x00800000
+#endif
+
+#if 0 /* I refuse to promulgate a recommendation that would make
+ users unable to debug - RMS. */
+/* delete the following line to foil optimization, enable debugging */
+#define C_DEBUG_SWITCH -O
+#endif
+
+#define BSTRING
+#define HAVE_DUP2
+#define HAVE_GETTIMEOFDAY
+#define HAVE_SELECT
+#define HAVE_TIMEVAL
+#define HAVE_VFORK
+
+/*
+ * Define SYSV_SYSTEM_DIR to use the V.3 getdents/readir
+ * library functions. Almost, but not quite the same as
+ * the 4.2 functions
+ */
+#define SYSV_SYSTEM_DIR
+
+/*
+ * Define NONSYSTEM_DIR_LIBRARY to make Emacs emulate
+ * The 4.2 opendir, etc., library functions.
+ */
+#undef NONSYSTEM_DIR_LIBRARY
+
+/* But don't use utimes() -- it causes SIGSEGV! Use utime() instead. */
+#define USE_UTIME
+
+/* AIX defines FIONREAD, but it does not work. */
+#define BROKEN_FIONREAD
+
+/* Data type of load average, as read out of kmem. */
+
+#define LOAD_AVE_TYPE long /* For AIX (sysV) */
+
+/* Convert that into an integer that is 100 for a load average of 1.0 */
+
+#define LOAD_AVE_CVT(x) (int) (((double) (x)/65535.0) * 100.0)
+
+/* This page was added in June 1990. It may be incorrect for some versions
+ of aix, so delete it if it causes trouble. */
+
+/* AIX has sigsetmask() */
+#undef sigsetmask
+
+/* AIX386 has BSD4.3 PTYs */
+
+#define HAVE_PTYS
+
+/* AIX has IPC. It also has sockets, and either can be used for client/server.
+ I would suggest the client/server code be changed to use HAVE_SOCKETS rather
+ than BSD as the conditional if sockets provide any advantages. */
+
+#define HAVE_SYSVIPC
+
+/* AIX has sockets */
+
+#define HAVE_SOCKETS
+/* #define SKTPAIR */ /* SKTPAIR works, but what is advantage over pipes? */
+
+/* Specify the font for X to use. */
+
+#define X_DEFAULT_FONT "8x13"
+
+/* AIX has a wait.h. */
+
+#define HAVE_WAIT_HEADER
+
+/* sioctl.h should not be included, says bytheway@cs.utah.edu. */
+#undef NEED_SIOCTL
+/* I'm guessing that that means it doesn't want ptem.h either. */
+#undef NEED_PTEM_H
+
+/* aix has `union wait' */
+#define HAVE_UNION_WAIT
+
+/* Here override various assumptions in ymakefile */
+
+/* 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. */
+
+#ifdef __GNUC__
+#define HAVE_ALLOCA
+#define alloca(n) __builtin_alloca(n)
+#define LIB_STANDARD /usr/local/lib/gcc-gnulib -lbsd -lrts -lc
+/* -g fails to work, so it is omitted. */
+/* tranle says that -fstrength-reduce does not help. */
+#define C_DEBUG_SWITCH -O -fwritable-strings
+#else
+#define C_ALLOCA
+#define STACK_DIRECTION -1 /* tell alloca.c which way it grows */
+#define LIBS_MACHINE -lbsd -lrts
+#endif
+
+#define OBJECTS_MACHINE hftctl.o
+#define LD_SWITCH_MACHINE -T0x00400000 -K -e start
+
+#ifdef USG5_3
+#define XICCC
+#define HAVE_GETWD
+#define HAVE_RENAME
+#undef LD_SWITCH_MACHINE
+#define LD_SWITCH_MACHINE -T0x0 -K -e start
+
+/* Things defined in s-usg5-3.h that need to be overridden. */
+#undef NOMULTIPLEJOBS
+#undef BROKEN_TIOCGETC
+#undef LIBX10_SYSTEM
+#undef LIBX11_SYSTEM
+#endif
diff --git a/src/m/intel386.h b/src/m/intel386.h
new file mode 100644
index 00000000000..de07923f9a0
--- /dev/null
+++ b/src/m/intel386.h
@@ -0,0 +1,182 @@
+/* machine description file for intel 386.
+ Copyright (C) 1987 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)
+any later version.
+
+GNU Emacs is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+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 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)
+
+ The possibilities for -opsystem are: bsd4-2, usg5-2-2, usg5-3,
+ isc2-2, 386-ix, esix, or xenix.
+
+ 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.
+
+ -machine=is386 is used for an Integrated Solutions 386 machine.
+ It may also be correct for Microport systems.
+
+Cubix QBx/386 (-machine=intel386 -opsystem=usg5-3)
+
+ Changes merged in 19.1. Systems before 2/A/0 may fail to compile etags.c
+ due to a compiler bug.
+
+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 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 */
+
+/* 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 NO_ARG_ARRAY */
+
+/* Define WORD_MACHINE if addresses and such have
+ * to be corrected before they can be used as byte counts. */
+
+/* #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,
+ orion, tahoe, APOLLO and many others */
+
+#define INTEL386
+
+/* Use type int rather than a union, to represent Lisp_Object */
+
+#define NO_UNION_TYPE
+
+/* crt0.c, if it is used, should use the i386-bsd style of entry.
+ with no extra dummy args. On USG and XENIX,
+ NO_REMAP says this isn't used. */
+
+#define CRT0_DUMMIES bogus_fp,
+
+/* crt0.c should define a symbol `start' and do .globl with a dot. */
+
+#define DOT_GLOBAL_START
+
+#ifdef XENIX
+/* Data type of load average, as read out of kmem. */
+#define LOAD_AVE_TYPE short
+
+/* 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))
+
+#define FSCALE 256.0 /* determined by experimentation... */
+#endif
+
+#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_TYPE long
+
+/* Convert that into an integer that is 100 for a load average of 1.0 */
+/* This is totally uncalibrated. */
+
+#define LOAD_AVE_CVT(x) ((int) ((double) (x)) * 100.0 / FSCALE)
+#define FSCALE 256.0
+*endif
+
+/* Define CANNOT_DUMP on machines where unexec does not work.
+ Then the function dump-emacs will not be defined
+ and temacs will do (load "loadup") automatically unless told otherwise. */
+
+/* #define CANNOT_DUMP */
+
+/* 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.
+
+ Otherwise Emacs assumes that text space precedes data space,
+ numerically. */
+
+/* #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 */
+
+#ifdef USG
+#define LIB_STANDARD -lPW -lc
+#define HAVE_ALLOCA
+#define NO_REMAP
+#define TEXT_START 0
+#endif /* USG */
+#endif /* not XENIX */
+
+#ifdef BSD
+#define HAVE_ALLOCA
+#endif /* BSD */
+ BSD */
+
+/* If compiling with GCC, let GCC implement alloca. */
+#if defined(__GNUC__) && !defined(alloca)
+#define alloca(n) __builtin_alloca(n)
+#define HAVE_ALLOCA
+#endif
+
+/* Search these directories just in case; I'm told they might be needed. */
+#define C_SWITCH_MACHINE -I/usr/X/include -I/usr/netinclude
diff --git a/src/m/iris4d.h b/src/m/iris4d.h
new file mode 100644
index 00000000000..89d022f765d
--- /dev/null
+++ b/src/m/iris4d.h
@@ -0,0 +1,193 @@
+/* machine description file for Iris-4D machines. Use with s-iris3-6.h
+ Copyright (C) 1987 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)
+any later version.
+
+GNU Emacs is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+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 following line tells the configuration script what sort of
+ operating system this machine is likely to run.
+ USUAL-OPSYS="irix3-3" */
+
+/* The following three symbols give information on
+ the size of various data types. */
+
+#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 BIG_ENDIAN iff lowest-numbered byte in a word
+ is the most significant byte. */
+
+#define 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 NO_ARG_ARRAY
+
+/* Define WORD_MACHINE if addresses and such have
+ * to be corrected before they can be used as byte counts. */
+
+#undef 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) ((signed char)(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,
+ orion, tahoe, APOLLO and many others */
+
+#ifndef mips
+#define mips
+#endif
+
+#ifndef IRIS_4D
+#define IRIS_4D
+#endif
+
+/* Use type int rather than a union, to represent Lisp_Object */
+/* This is desirable for most machines. */
+
+#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
+ 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. */
+
+#define LOAD_AVE_TYPE long /* This doesn't quite work on the 4D */
+
+/* Convert that into an integer that is 100 for a load average of 1.0 */
+
+#define LOAD_AVE_CVT(x) (int)(((double)(x)*100)/1024.0)
+
+/* s-iris3-6.h uses /vmunix */
+
+#undef KERNEL_FILE
+#define KERNEL_FILE "/unix"
+
+/* Define CANNOT_DUMP on machines where unexec does not work.
+ Then the function dump-emacs will not be defined
+ and temacs will do (load "loadup") automatically unless told otherwise. */
+
+#undef CANNOT_DUMP
+
+/* 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.
+
+ Otherwise Emacs assumes that text space precedes data space,
+ 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 */
+
+/* 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. */
+
+#define UNEXEC unexmips.o
+
+#define TEXT_START 0x400000
+
+/*
+ * DATA_SEG_BITS forces that bit to be or'd in with any pointers which
+ * are trying to access pure strings (as gnu-emacs only allows 24 bits
+ * for the value field of a LISP_OBJECT).
+ */
+
+#define DATA_START 0x10000000
+#define DATA_SEG_BITS 0x10000000
+
+#undef LIBS_MACHINE
+/* -lsun in case using Yellow Pages for passwords. */
+#define LIBS_MACHINE -lsun -lmld
+#define LIBS_DEBUG
+
+/* Define this if you have a fairly recent system,
+ in which crt1.o and crt1.n should be used. */
+#define HAVE_CRTN
+
+#ifdef HAVE_CRTN
+/* Must define START-FILES so that the linker can find /usr/lib/crt0.o. */
+#define START_FILES pre-crt0.o /usr/lib/crt1.o
+#define LIB_STANDARD -lbsd -lc /usr/lib/crtn.o
+#else
+#define START_FILES pre-crt0.o /usr/lib/crt0.o
+/* The entry-point label (start of text segment) is `start', not `__start'. */
+#define DEFAULT_ENTRY_ADDRESS start
+#define LIB_STANDARD -lbsd -lc
+#endif
+
+/* Use terminfo instead of termcap. */
+
+#define TERMINFO
+
+/* sioctl.h should be included where appropriate. */
+
+#define NEED_SIOCTL
+
+/* Letter to use in finding device name of first pty,
+ if system supports pty's. 'a' means it is /dev/ptya0 */
+
+#undef FIRST_PTY_LETTER
+#define FIRST_PTY_LETTER 'q'
+
+/* Define STACK_DIRECTION for alloca.c */
+
+#define STACK_DIRECTION -1
+
+/* 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)
+
+#define XSET(var, type, ptr) \
+ ((var) = ((int)(type) << VALBITS) + (((unsigned) (ptr) << INTBITS-VALBITS) >> INTBITS-VALBITS))
+
+#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) = ((a) & ~MARKBIT) | ((b) ? MARKBIT : 0))
+#define XUNMARK(a) ((a) = (((unsigned)(a) << INTBITS-GCTYPEBITS-VALBITS) >> INTBITS-GCTYPEBITS-VALBITS))
diff --git a/src/m/irist.h b/src/m/irist.h
new file mode 100644
index 00000000000..11c58e25417
--- /dev/null
+++ b/src/m/irist.h
@@ -0,0 +1,155 @@
+/* machine description file for Silicon Graphics Iris 2500 Turbos;
+ also possibly for non-turbo Irises with system release 2.5.
+ Copyright (C) 1985, 1986 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)
+any later version.
+
+GNU Emacs is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+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 following line tells the configuration script what sort of
+ operating system this machine is likely to run.
+ USUAL-OPSYS="note"
+NOTE-START
+Version 18 said to work; use -opsystem=irist3-5 for system version 2.5
+and -opsystem=iris3-6 for system versions 3.6 and up.
+NOTE-END */
+
+#if 0
+ Message-Id: <8705050653.AA20004@orville.arpa>
+ Subject: gnu emacs 18.41 on iris [23].5 machines
+ Date: 04 May 87 23:53:11 PDT (Mon)
+ From: raible@orville.arpa
+
+ Aside from the SIGIOT, I know of only one bug, a real strange one:
+ I wrote a utimes interface, which copies elements from timevals
+ to utimbufs. This code is known good. The problem is that in
+ emacs, the utime doesn't seem to take effect (i.e. doesn't change the
+ dates at all) unless I call report_file_error *after* the utime returns!
+
+ if (utime (name, &utb) < 0)
+ return;
+ else
+ /* XXX XXX XXX */
+ /* For some reason, if this is taken out, then the utime above breaks! */
+ /* (i.e. it doesn't set the time. This just makes no sense... */
+ /* Eric - May 4, 1987 */
+ report_file_error ("Worked just find\n", Qnil);
+
+ Without any sort of debugger that works on emacs (I know... but I don't have
+ *time* right now to start with gdb), it was quite time consuming to track
+ it down to this.
+
+ But since this code is only used for an optional 4th argument to one command
+ (copy-file), it would say that it is non-critical...
+#endif /* 0 */
+
+/* The following three symbols give information on
+ the size of various data types. */
+
+#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 BIG_ENDIAN iff lowest-numbered byte in a word
+ is the most significant byte. */
+
+#define 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 NO_ARG_ARRAY */
+
+/* Define WORD_MACHINE if addresses and such have
+ * to be corrected before they can be used as byte counts. */
+
+/* #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,
+ orion, tahoe, APOLLO and many others */
+
+#ifndef m68000
+#define m68000
+#endif
+
+/* Use type int rather than a union, to represent Lisp_Object */
+/* This is desirable for most machines. */
+
+#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
+ 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. */
+
+#define LOAD_AVE_TYPE long
+
+/* Convert that into an integer that is 100 for a load average of 1.0 */
+
+#define FSCALE 1.0
+#define LOAD_AVE_CVT(x) (int) (((double) (x)) * 100.0 / FSCALE)
+
+/* Define CANNOT_DUMP on machines where unexec does not work.
+ Then the function dump-emacs will not be defined
+ and temacs will do (load "loadup") automatically unless told otherwise. */
+
+/* #define CANNOT_DUMP */
+
+/* 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.
+
+ Otherwise Emacs assumes that text space precedes data space,
+ 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
+
+/* 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 */
+
+/* There is an inconsistency between the sgi assembler, linker which barfs
+ on these. */
+
+#define internal_with_output_to_temp_buffer stupid_long_name1
+#define Finsert_abbrev_table_description stupid_long_name2
diff --git a/src/m/isi-ov.h b/src/m/isi-ov.h
new file mode 100644
index 00000000000..2f30f7f2606
--- /dev/null
+++ b/src/m/isi-ov.h
@@ -0,0 +1,105 @@
+/* machine description file for ISI 68000's
+ Copyright (C) 1985, 1986 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)
+any later version.
+
+GNU Emacs is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+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 following line tells the configuration script what sort of
+ operating system this machine is likely to run.
+ USUAL-OPSYS="note"
+
+NOTE-START
+Use `-opsystem=bsd4-2' or `-opsystem=bsd4-3'.
+NOTE-END */
+
+#define ISI68K
+
+/* The following three symbols give information on
+ the size of various data types. */
+
+#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 */
+
+/* 68000 has lowest-numbered byte as most significant */
+
+#define BIG_ENDIAN
+
+/* 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)
+
+/* Say this machine is a 68000 */
+
+#define m68000
+
+/* Use type int rather than a union, to represent Lisp_Object */
+
+#define NO_UNION_TYPE
+
+/* XINT must explicitly sign-extend */
+
+#define EXPLICIT_SIGN_EXTEND
+
+/* Data type of load average, as read out of kmem. */
+
+#ifdef BSD4_3
+#define LOAD_AVE_TYPE long
+#else
+#define LOAD_AVE_TYPE double
+#endif BSD4_3
+
+/* Convert that into an integer that is 100 for a load average of 1.0 */
+
+#ifdef BSD4_3
+#define LOAD_AVE_CVT(x) (int) (((double) (x)) * 100.0 / FSCALE)
+#else
+#define LOAD_AVE_CVT(x) ((int) ((x) * 100.0))
+#endif
+
+/* Mask for address bits within a memory segment */
+
+#define SEGMENT_MASK 0x1ffff
+
+/* use the -20 switch to get the 68020 code */
+/* #define C_SWITCH_MACHINE -20 */
+
+/* Use the version of the library for the 68020
+ because the standard library requires some special hacks in crt0
+ which the GNU crt0 does not have. */
+
+#define LIB_STANDARD -lmc
+
+/* macros to make unexec work right */
+
+#define A_TEXT_OFFSET(HDR) sizeof(HDR)
+#define A_TEXT_SEEK(HDR) sizeof(HDR)
+
+/* A few changes for the newer systems. */
+
+#ifdef BSD4_3
+#define HAVE_ALLOCA
+/* The following line affects crt0.c. */
+#undef m68k
+
+#undef LIB_STANDARD
+#define LIB_STANDARD -lmc -lc
+#define C_DEBUG_SWITCH -20 -O -X23
+#endif
diff --git a/src/m/masscomp.h b/src/m/masscomp.h
new file mode 100644
index 00000000000..f0970ed4a53
--- /dev/null
+++ b/src/m/masscomp.h
@@ -0,0 +1,150 @@
+/* machine description file for Masscomp 5000 series running RTU, ucb universe.
+ Copyright (C) 1986 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)
+any later version.
+
+GNU Emacs is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+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 following line tells the configuration script what sort of
+ operating system this machine is likely to run.
+ USUAL-OPSYS="rtu" */
+
+/* The following three symbols give information on
+ the size of various data types. */
+
+#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 BIG_ENDIAN iff lowest-numbered byte in a word
+ is the most significant byte. */
+
+#define 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. */
+
+#undef NO_ARG_ARRAY
+
+/* Define WORD_MACHINE if addresses and such have
+ * to be corrected before they can be used as byte counts. */
+
+#undef 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:
+ vax, m68000, ns16000, pyramid, orion, tahoe and APOLLO
+ are the ones defined so far. */
+/* Masscomp predefines mc68000. */
+#define m68000 mc68000
+
+/* Use type int rather than a union, to represent Lisp_Object */
+/* This is desirable for most machines. */
+
+#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
+ are always unsigned.
+
+ If you use NO_UNION_TYPE, this flag does not matter. */
+
+#undef EXPLICIT_SIGN_EXTEND
+
+/* Data type of load average, as read out of kmem. */
+
+#define LOAD_AVE_TYPE double
+
+/* Convert that into an integer that is 100 for a load average of 1.0 */
+
+#define LOAD_AVE_CVT(x) ((int) ((x) * 100.0))
+
+/* Define CANNOT_DUMP on machines where unexec does not work.
+ Then the function dump-emacs will not be defined
+ and temacs will do (load "loadup") automatically unless told otherwise. */
+
+#undef CANNOT_DUMP
+
+/* 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.
+
+ Otherwise Emacs assumes that text space precedes data space,
+ numerically. */
+
+#undef 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. */
+
+/* On return from a subroutine, the 68020 compiler restores old contents of
+ register variables relative to sp, so alloca() screws up such routines.
+ The following definitions should work on all Masscomps. On the MC-5500
+ (a 68000) one can #undef C_ALLOCA and #define HAVE_ALLOCA. */
+#ifdef mc500
+#undef C_ALLOCA
+#define HAVE_ALLOCA
+#else
+#define C_ALLOCA
+#undef HAVE_ALLOCA
+#endif
+
+/* 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. */
+
+#undef NO_REMAP
+
+/* crt0.c should use the vax-bsd style of entry, with a dummy arg. */
+
+#define CRT0_DUMMIES bogus_fp,
+
+/* Name of file the to look in
+ for the kernel symbol table (for load average) */
+
+#define KERNEL_FILE "/unix"
+
+/* This triggers some stuff to avoid a compiler bug */
+
+#define MASSC_REGISTER_BUG
+
+/* Prevent -lg from being used for debugging. Not implemented? */
+
+#define LIBS_DEBUG
+
+/*
+ * Define HAVE_TERMIO if the system provides sysV-style ioctls
+ * for terminal control.
+ */
+
+#define HAVE_TERMIO
+
+/* Adjust a header field for the executable file about to be dumped. */
+
+#define ADJUST_EXEC_HEADER \
+ hdr.a_stamp = STAMP13; /* really want the latest stamp, whatever it is */
diff --git a/src/m/mega68.h b/src/m/mega68.h
new file mode 100644
index 00000000000..976f1bf6230
--- /dev/null
+++ b/src/m/mega68.h
@@ -0,0 +1,61 @@
+/* machine description file for Megatest 68000's.
+ Copyright (C) 1985 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)
+any later version.
+
+GNU Emacs is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+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 following line tells the configuration script what sort of
+ operating system this machine is likely to run.
+ USUAL-OPSYS="bsd4-2" */
+
+/* The following three symbols give information on
+ the size of various data types. */
+
+#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 */
+
+/* 68000 has lowest-numbered byte as most significant */
+
+#define BIG_ENDIAN
+
+/* XINT must explicitly sign-extend */
+
+#define EXPLICIT_SIGN_EXTEND
+
+/* 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)
+
+/* Say this machine is a 68000 */
+
+#define m68000
+
+/* Use type int rather than a union, to represent Lisp_Object */
+
+#define NO_UNION_TYPE
+
+/* Data type of load average, as read out of kmem. */
+
+#define LOAD_AVE_TYPE double
+
+/* Convert that into an integer that is 100 for a load average of 1.0 */
+
+#define LOAD_AVE_CVT(x) ((int) ((x) * 100.0))
diff --git a/src/m/mg1.h b/src/m/mg1.h
new file mode 100644
index 00000000000..0ad56aeef38
--- /dev/null
+++ b/src/m/mg1.h
@@ -0,0 +1,126 @@
+/* machine description file for Whitechapel Computer Works MG1 (ns16000 based).
+ Copyright (C) 1985 Free Software Foundation, Inc.
+ MG-1 version by L.M.McLoughlin
+
+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)
+any later version.
+
+GNU Emacs is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+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 following line tells the configuration script what sort of
+ operating system this machine is likely to run.
+ USUAL-OPSYS="note"
+
+NOTE-START
+We are in the dark about what operating system runs on the Whitechapel
+systems. Consult share-lib/MACHINES for information on which
+operating systems Emacs has already been ported to; one of them might
+work. If you find an existing system name that works or write your
+own configuration files, please let the Free Software Foundation in on
+your work; we'd like to distribute this information.
+NOTE-END */
+
+/* The following three symbols give information on
+ the size of various data types. */
+
+#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 BIG_ENDIAN iff lowest-numbered byte in a word
+ is the most significant byte. */
+/* ns16000 is not big-endian: lowest numbered byte is least significant. */
+#undef 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. */
+/* ns16000 call sequence used on mg1 means that &arg = the args as an array */
+#undef NO_ARG_ARRAY
+
+/* Define WORD_MACHINE if addresses and such have
+ * to be corrected before they can be used as byte counts. */
+/* ns16000 addresses are byte addresses */
+#undef 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:
+ vax, m68000, ns16000, pyramid, orion, tahoe and APOLLO
+ are the ones defined so far. */
+/* Say this machine is a 16000 and an mg1, cpp says its a 32000 */
+#define ns16000
+#define mg1
+
+/* Use type int rather than a union, to represent Lisp_Object */
+/* This is desirable for most machines. */
+/* Not sure on mg-1 but this shouldn't hurt! */
+#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
+ 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. */
+/* mg1 its an unsigned long */
+#define LOAD_AVE_TYPE unsigned long
+
+/* Convert that into an integer that is 100 for a load average of 1.0 */
+#define FSCALE 1000.0
+#define LOAD_AVE_CVT(x) (int) (((double) (x)) * 100.0 / FSCALE)
+
+/* Define CANNOT_DUMP on machines where unexec does not work.
+ Then the function dump-emacs will not be defined
+ and temacs will do (load "loadup") automatically unless told otherwise. */
+/* ns16000's have an unexec, so should the mg-1 */
+#undef CANNOT_DUMP
+
+/* 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.
+
+ Otherwise Emacs assumes that text space precedes data space,
+ numerically. */
+/* hmmmm... not sure. copied sequent.h */
+#undef 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. */
+/* hmmmm... again not sure. so copied sequent.h again! */
+#undef C_ALLOCA
+#undef HAVE_ALLOCA
+
+/* 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. */
+/* mapping seems screwy */
+#define NO_REMAP
+
+/* Avoids a compiler bug */
+/* borrowed from sequent.h */
diff --git a/src/m/mips.h b/src/m/mips.h
new file mode 100644
index 00000000000..d797540c4ca
--- /dev/null
+++ b/src/m/mips.h
@@ -0,0 +1,213 @@
+/* machine description file for Mips machines.
+ Copyright (C) 1987, 1990 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)
+any later version.
+
+GNU Emacs is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+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 following line tells the configuration script what sort of
+ operating system this machine is likely to run.
+ USUAL-OPSYS="note"
+
+NOTE-START
+Use -opsystem=usg5-2-2 normally, or -opsystem=bsd4-3 with the BSD
+world.
+NOTE-END */
+
+/* The following three symbols give information on
+ the size of various data types. */
+
+#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 BIG_ENDIAN iff lowest-numbered byte in a word
+ is the most significant byte. */
+
+#define 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 NO_ARG_ARRAY
+
+/* Define WORD_MACHINE if addresses and such have
+ * to be corrected before they can be used as byte counts. */
+
+#undef 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) ((signed char)(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,
+ orion, tahoe, APOLLO and many others */
+#ifndef mips
+# define mips
+#endif
+
+/* Use type int rather than a union, to represent Lisp_Object */
+/* This is desirable for most machines. */
+
+#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
+ 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. */
+
+#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 / 256.0)
+
+/* Define CANNOT_DUMP on machines where unexec does not work.
+ Then the function dump-emacs will not be defined
+ and temacs will do (load "loadup") automatically unless told otherwise. */
+
+#undef CANNOT_DUMP
+
+/* 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.
+
+ Otherwise Emacs assumes that text space precedes data space,
+ 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 */
+
+/* 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. */
+
+#define UNEXEC unexmips.o
+
+/* Describe layout of the address space in an executing process. */
+
+#define TEXT_START 0x400000
+#define DATA_START 0x800000
+
+/* Alter some of the options used when linking. */
+
+#ifdef BSD
+
+/* Supposedly the dec machine doesn't have this library.
+ #define LIBS_MACHINE -lmld */
+
+#define LD_SWITCH_MACHINE -D 800000
+#define LIBS_DEBUG
+
+#else
+
+#define LIBS_MACHINE -lmld
+#define LD_SWITCH_MACHINE -D 800000 -g3
+#define START_FILES pre-crt0.o /usr/lib/crt1.o
+#define LIB_STANDARD -lbsd -lc /usr/lib/crtn.o
+#define LIBS_TERMCAP -lcurses
+
+#define C_SWITCH_SYSTEM -I/usr/include/bsd
+#define C_DEBUG_SWITCH -O -g3
+
+#if defined(HAVE_X_WINDOWS) && defined(HAVE_X11)
+#define HAVE_VFORK /* Graciously provided by libX.a */
+#endif
+#endif
+
+/* 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)
+
+#define XSET(var, type, ptr) \
+ ((var) = ((int)(type) << VALBITS) + (((unsigned) (ptr) << INTBITS-VALBITS) >> INTBITS-VALBITS))
+
+#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 XUNMARK(a) ((a) = (((unsigned)(a) << INTBITS-GCTYPEBITS-VALBITS) >> INTBITS-GCTYPEBITS-VALBITS))
+#ifdef USG
+
+/* Cancel certain parts of standard sysV support. */
+#undef NONSYSTEM_DIR_LIBRARY
+#define SYSV_SYSTEM_DIR
+#undef static
+
+/* Don't try to use SIGIO or FIONREAD even though they are defined. */
+#undef SIGIO
+#define BROKEN_FIONREAD
+
+/* Describe special kernel features. */
+
+#define HAVE_SYSVIPC
+
+#define HAVE_TIMEVAL
+#if defined(emacs)
+#include <bsd/sys/time.h>
+#endif
+
+/* #define HAVE_SELECT
+ The `select' in the system won't work for pipes,
+ so don't use it. */
+
+#define HAVE_DUP2
+#define HAVE_GETWD
+#define HAVE_GETTIMEOFDAY
+
+#define HAVE_PTYS
+#define HAVE_SOCKETS
+
+#undef NOMULTIPLEJOBS
+#define utimes utime /* Someone should check this. */
+
+/* ??? */
+#define IRIS
+
+#endif
+
+#ifdef BSD
+#define COFF
+#define TERMINFO
+#undef MAIL_USE_FLOCK /* Someone should check this. */
+#undef HAVE_UNION_WAIT
+#endif /* BSD */
diff --git a/src/m/mips4.h b/src/m/mips4.h
new file mode 100644
index 00000000000..91cda937841
--- /dev/null
+++ b/src/m/mips4.h
@@ -0,0 +1,33 @@
+/* machine description file for Mips running RISCOS version 4. */
+
+#include "mips.h"
+
+/* The following line tells the configuration script what sort of
+ operating system this machine is likely to run.
+ USUAL-OPSYS="note"
+
+NOTE-START
+Use -opsystem=usg5-2-2 normally, or -opsystem=bsd4-3 with the BSD
+world.
+NOTE-END */
+
+/* Define MIPS2 if you have an R6000 or R4000. */
+/* #define MIPS2 */
+
+#ifdef MIPS2
+#define C_DEBUG_SWITCH -systype bsd43 -O -Olimit 791 -g3 -mips2
+#else
+#define C_DEBUG_SWITCH -systype bsd43 -O -Olimit 791 -g3
+#endif
+
+#ifdef TERMINFO
+#undef TERMINFO
+#endif
+
+#define START_FILES pre-crt0.o /lib/crt1.o
+#define LIB_STANDARD -lmld -lc /lib/crtn.o
+
+
+#define COFF
+#undef LD_SWITCH_MACHINE
+#define LD_SWITCH_MACHINE -systype bsd43 -g3 -D 800000
diff --git a/src/m/news.h b/src/m/news.h
new file mode 100644
index 00000000000..618477c171e
--- /dev/null
+++ b/src/m/news.h
@@ -0,0 +1,76 @@
+/* machine description file for Sony's NEWS workstations, NEWS-OS 3.0.
+ Copyright (C) 1985, 1986, 1989 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)
+any later version.
+
+GNU Emacs is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+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 following line tells the configuration script what sort of
+ operating system this machine is likely to run.
+ USUAL-OPSYS="note"
+
+NOTE-START
+Use -opsystem=bsd4-2, or -opsystem=bsd4-3 for system release 3.
+NOTE-END */
+
+/* Say this machine is a 68000 */
+
+#ifndef m68000
+#define m68000
+#endif
+
+/* The following three symbols give information on
+ the size of various data types. */
+
+#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 */
+
+/* 68000 has lowest-numbered byte as most significant */
+
+#define BIG_ENDIAN
+
+/* One CRT0 Dummy variable */
+
+#define CRT0_DUMMIES one_dummy,
+
+/* 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)
+
+/* Use type int rather than a union, to represent Lisp_Object */
+
+#define NO_UNION_TYPE
+
+/* The News machine has alloca. */
+
+#define HAVE_ALLOCA
+
+/* Data type of load average, as read out of kmem. */
+
+#define LOAD_AVE_TYPE double
+
+/* Convert that into an integer that is 100 for a load average of 1.0 */
+
+#define LOAD_AVE_CVT(x) ((int) ((x) * 100.0))
+
+/* Must use the system's termcap. It does special things. */
+
+#define LIBS_TERMCAP -ltermcap
+
diff --git a/src/m/ns16000.h b/src/m/ns16000.h
new file mode 100644
index 00000000000..3aa798ddad5
--- /dev/null
+++ b/src/m/ns16000.h
@@ -0,0 +1,112 @@
+/* machine description file for ns16000.
+ Copyright (C) 1985 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)
+any later version.
+
+GNU Emacs is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+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 following line tells the configuration script what sort of
+ operating system this machine is likely to run.
+ USUAL-OPSYS="note"
+
+NOTE-START
+For the Encore, use `-opsystem=umax'.
+For a Tektronix 16000 box (a 6130, perhaps?), use `-opsystem=bsd4-2'.
+Use `-machine=ns16000' for both.
+NOTE-END */
+
+/* The following three symbols give information on
+ the size of various data types. */
+
+#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 */
+
+/* 16000 is little-endian (lowest-numbered byte is least significant) */
+
+/* #define BIG_ENDIAN */ /* So don't define this. */
+
+/* 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)
+
+/* Say this machine is a 16000 */
+
+#define ns16000 1
+
+/* Use type int rather than a union, to represent Lisp_Object */
+
+#define NO_UNION_TYPE
+
+/* Data type of load average, as read out of kmem. */
+
+#ifndef USG
+#define LOAD_AVE_TYPE double
+#endif
+
+/* Convert that into an integer that is 100 for a load average of 1.0 */
+
+#ifndef USG
+#define LOAD_AVE_CVT(x) ((int) ((x) * 100.0))
+#endif
+
+#ifdef USG
+
+/* Control assembler syntax used in alloca.s. */
+#define NS5
+
+/* On early NS systems ulimit was buggy. If set emacs uses this value
+ * for the maximum sbrk value instead of getting it from ulimit.
+ */
+#define ULIMIT_BREAK_VALUE 0x7E0000
+
+/* Early NS compilers have this bug. I believe it has been fixed in later
+ * releases.
+ */
+#define SHORT_CAST_BUG
+
+#define SEGMENT_MASK (NBPS - 1)
+
+/* Variables to get crt0.c to come out correctly */
+#define CRT0_DUMMIES bogus_fp,
+#define DOT_GLOBAL_START
+
+/* Control how emacsclient communicates. */
+#define HAVE_SYSVIPC
+
+/* Set this to /bin/mail unless you have a better mail posting program */
+#define MAIL_PROGRAM_NAME "/usr/local/bin/remail"
+
+/* Tell sysdep.c not to define bzero, etc. */
+#undef BSTRING
+#define BSTRING
+
+/* Macro definitions to emulate BSD functions with SysV ones */
+#undef bcopy
+#undef bzero
+#undef bcmp
+
+#define bcopy(a,b,s) memcpy(b,a,s)
+#define bzero(a,s) memset(a,0,s)
+#define bcmp memcmp
+
+/* This avoids problems with uninitialized static variables going in .data. */
+#define static
+
+#endif /* USG */
diff --git a/src/m/ns32000.h b/src/m/ns32000.h
new file mode 100644
index 00000000000..bca1825e406
--- /dev/null
+++ b/src/m/ns32000.h
@@ -0,0 +1,121 @@
+/* machine description file for Netional Semiconductor 32000, running Genix.
+ Copyright (C) 1985, 1986 Free Software Foundation, Inc.
+
+This file is part of GNU Emacs.
+
+GNU Emacs is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY. No author or distributor
+accepts responsibility to anyone for the consequences of using it
+or for whether it serves any particular purpose or works at all,
+unless he says so in writing. Refer to the GNU Emacs General Public
+License for full details.
+
+Everyone is granted permission to copy, modify and redistribute
+GNU Emacs, but only under the conditions described in the
+GNU Emacs General Public License. A copy of this license is
+supposed to have been given to you along with GNU Emacs so you
+can know your rights and responsibilities. It should be in a
+file named COPYING. Among other things, the copyright notice
+and this notice must be preserved on all copies. */
+
+
+/* The following line tells the configuration script what sort of
+ operating system this machine is likely to run.
+ USUAL-OPSYS="usg5-2" */
+
+/* The following three symbols give information on
+ the size of various data types. */
+
+#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 BIG_ENDIAN iff lowest-numbered byte in a word
+ is the most significant byte. */
+
+/* #define 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 NO_ARG_ARRAY */
+
+/* Define WORD_MACHINE if addresses and such have
+ * to be corrected before they can be used as byte counts. */
+
+/* #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,
+ orion, tahoe, APOLLO and many others */
+
+/* Use type int rather than a union, to represent Lisp_Object */
+/* This is desirable for most machines. */
+
+#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
+ 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. */
+
+/* #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) */
+
+/* Define CANNOT_DUMP on machines where unexec does not work.
+ Then the function dump-emacs will not be defined
+ and temacs will do (load "loadup") automatically unless told otherwise. */
+
+/* #define CANNOT_DUMP */
+
+/* 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.
+
+ Otherwise Emacs assumes that text space precedes data space,
+ 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 */
+
+/* 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 TEXT_START 0
+
+#define STACK_DIRECTION -1
+
+#define EXEC_MAGIC 0410
+
+#define PURESIZE 140000
+
+#define START_FILES pre-crt0.o /lib/crt0.o
diff --git a/src/m/nu.h b/src/m/nu.h
new file mode 100644
index 00000000000..ef12ccc2037
--- /dev/null
+++ b/src/m/nu.h
@@ -0,0 +1,84 @@
+/* machine description file for TI Nu machines using system V.
+ Copyright (C) 1986 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)
+any later version.
+
+GNU Emacs is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+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 following line tells the configuration script what sort of
+ operating system this machine is likely to run.
+ USUAL-OPSYS="usg5-2" */
+
+/* The following three symbols give information on
+ the size of various data types. */
+
+#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 BIG_ENDIAN iff lowest-numbered byte in a word
+ is the most significant byte. */
+
+#define BIG_ENDIAN
+
+/* XINT must explicitly sign-extend */
+
+#define EXPLICIT_SIGN_EXTEND
+
+/* 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)
+
+/* Use type int rather than a union, to represent Lisp_Object */
+
+#define NO_UNION_TYPE
+
+/* Now define a symbol for the cpu type, if your compiler
+ does not define it automatically:
+ vax, m68000, ns16000 are the ones defined so far. */
+
+#ifndef m68000
+#define m68000
+#endif
+
+#ifndef NU
+#define NU
+#endif
+
+/* Data type of load average, as read out of kmem. */
+/* These are commented out since it does not really work in uniplus */
+
+/* #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) */
+
+/* Change some things to avoid bugs in compiler */
+
+#define SWITCH_ENUM_BUG 1
+
+/* The NU machine has a compiler that can handle long names. */
+
+#undef SHORTNAMES
+
+/* Specify alignment requirement for start of text and data sections
+ in the executable file. */
+
+#define SECTION_ALIGNMENT pagemask
diff --git a/src/m/orion.h b/src/m/orion.h
new file mode 100644
index 00000000000..fec8a0c2b5e
--- /dev/null
+++ b/src/m/orion.h
@@ -0,0 +1,84 @@
+/* machine description file for HLH Orion.
+ Copyright (C) 1985 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)
+any later version.
+
+GNU Emacs is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+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 following line tells the configuration script what sort of
+ operating system this machine is likely to run.
+ USUAL-OPSYS="bsd4-2" */
+
+/* The following three symbols give information on
+ the size of various data types. */
+
+#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 BIG_ENDIAN iff lowest-numbered byte in a word
+ is the most significant byte. */
+
+#undef BIG_ENDIAN
+
+/* Now define a symbol for the cpu type, if your compiler
+ does not define it automatically. */
+
+#ifndef orion
+#define orion
+#endif
+
+/* 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 NO_ARG_ARRAY
+
+/* Define WORD_MACHINE if addresses and such have
+ * to be corrected before they can be used as byte counts. */
+
+#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) ((((int) (c)) << 24) >> 24)
+
+/* Use type int rather than a union, to represent Lisp_Object */
+/* This is desirable for most machines. */
+
+#define NO_UNION_TYPE
+
+/* Define EXPLICIT_SIGN_EXTEND if XINT must explicitly sign-extend */
+
+#define EXPLICIT_SIGN_EXTEND
+
+/* Data type of load average, as read out of kmem. */
+
+#define LOAD_AVE_TYPE double
+
+/* Convert that into an integer that is 100 for a load average of 1.0 */
+
+#ifndef FSCALE
+#define FSCALE 1.0
+#endif
+#define LOAD_AVE_CVT(x) (int) (((double) (x)) * 100.0 / FSCALE)
+
+/* It is necessary to use the portable imitation of alloca,
+ since a true stack-allocating one is impossible. */
+
+#define C_ALLOCA
diff --git a/src/m/orion105.h b/src/m/orion105.h
new file mode 100644
index 00000000000..9820b6cd3b7
--- /dev/null
+++ b/src/m/orion105.h
@@ -0,0 +1,90 @@
+/* machine description file for HLH Orion 1/05 (Clipper).
+ Copyright (C) 1985 Free Software Foundation, Inc.
+ Lee McLoughlin <lmjm%doc.imperial.ac.uk@nss.cs.ucl.ac.uk>
+
+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)
+any later version.
+
+GNU Emacs is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+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 following line tells the configuration script what sort of
+ operating system this machine is likely to run.
+ USUAL-OPSYS="bsd4-2" */
+
+/* The following three symbols give information on
+ the size of various data types. */
+
+#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 BIG_ENDIAN iff lowest-numbered byte in a word
+ is the most significant byte. */
+
+#undef 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 NO_ARG_ARRAY
+
+/* Define WORD_MACHINE if addresses and such have
+ * to be corrected before they can be used as byte counts. */
+
+#define SIGN_EXTEND_CHAR(c) ((int)(c))
+
+/* Use type int rather than a union, to represent Lisp_Object */
+/* This is desirable for most machines. */
+
+#define NO_UNION_TYPE
+
+/* Data type of load average, as read out of kmem. */
+/* This used to be `double'. */
+
+#define LOAD_AVE_TYPE long
+
+/* Convert that into an integer that is 100 for a load average of 1.0 */
+
+/* This used to be 1.0. */
+#ifndef FSCALE
+#define FSCALE 256
+#endif
+#define LOAD_AVE_CVT(x) (int) (((double) (x)) * 100.0 / FSCALE)
+
+/* HLH have a SIGWINCH defined (but unimplemented) so we need a sigmask */
+#ifndef sigmask
+#define sigmask(m) (1 << ((m) - 1))
+#endif
+
+#define HAVE_ALLOCA
+
+/* Here is where programs actually start running */
+#define TEXT_START 0x8000
+#define LD_TEXT_START_ADDR 8000
+
+/* Arguments to ignore before argc in crt0.c. */
+#define DUMMIES dummy1, dummy2,
+
+/* dbx can't cope so what the heck - currently (July 88) eval.c causes
+ * the compiler to go into an infinite loop - so compile it by hand
+ * cc -c -Demacs eval.c
+ * before running make
+ */
+#define C_DEBUG_SWITCH -O
+
+/* Since not debugging don't add dbx lib */
+#define LIBS_DEBUG
diff --git a/src/m/plexus.h b/src/m/plexus.h
new file mode 100644
index 00000000000..327ff78a1f5
--- /dev/null
+++ b/src/m/plexus.h
@@ -0,0 +1,128 @@
+/* machine description file for the Plexus running System V.2.
+ Copyright (C) 1986 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)
+any later version.
+
+GNU Emacs is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+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 following line tells the configuration script what sort of
+ operating system this machine is likely to run.
+ USUAL-OPSYS="usg5-2" */
+
+/* The following three symbols give information on
+ the size of various data types. */
+
+#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 BIG_ENDIAN iff lowest-numbered byte in a word
+ is the most significant byte. */
+
+#define 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. */
+
+#undef NO_ARG_ARRAY
+
+/* Define WORD_MACHINE if addresses and such have
+ * to be corrected before they can be used as byte counts. */
+
+#undef 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:
+ vax, m68000, ns16000, pyramid, orion, tahoe and APOLLO
+ are the ones defined so far. */
+/* Plexus predefines m68 instead of m68000. */
+#define m68000 m68
+
+/* Use type int rather than a union, to represent Lisp_Object */
+/* This is desirable for most machines. */
+
+#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
+ are always unsigned.
+
+ If you use NO_UNION_TYPE, this flag does not matter. */
+
+#undef EXPLICIT_SIGN_EXTEND
+
+/* Data type of load average, as read out of kmem. */
+
+#undef LOAD_AVE_TYPE
+
+/* Convert that into an integer that is 100 for a load average of 1.0 */
+
+#undef LOAD_AVE_CVT
+
+/* Define CANNOT_DUMP on machines where unexec does not work.
+ Then the function dump-emacs will not be defined
+ and temacs will do (load "loadup") automatically unless told otherwise. */
+
+#undef CANNOT_DUMP
+
+/* 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.
+
+ Otherwise Emacs assumes that text space precedes data space,
+ numerically. */
+
+#undef 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. */
+
+#undef C_ALLOCA
+#define HAVE_ALLOCA
+
+/* 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. */
+
+#undef NO_REMAP
+
+/* Use the following on ld so we can use the gnu crt0
+ The plexus ld looks for start */
+#define LD_SWITCH_MACHINE -e __start
+
+/* Use the PW library, which contains alloca. */
+
+#define LIB_STANDARD -lPW -lc
+
+/* crt0.c should use the vax-bsd style of entry, with no dummy args. */
+
+#define CRT0_DUMMIES zero1, zero2,
+
+/* This triggers some stuff to avoid a compiler bug */
+
+#define TAHOE_REGISTER_BUG
diff --git a/src/m/pmax.h b/src/m/pmax.h
new file mode 100644
index 00000000000..393b7351a67
--- /dev/null
+++ b/src/m/pmax.h
@@ -0,0 +1,22 @@
+#include "mips.h"
+
+/* The following line tells the configuration script what sort of
+ operating system this machine is likely to run.
+ USUAL-OPSYS="bsd4-2" */
+
+#undef BIG_ENDIAN
+#define LIBS_DEBUG
+
+/* This line starts being needed with ultrix 4.0. */
+/* You may need to delete it on version 3.1. */
+#define START_FILES pre-crt0.o /usr/lib/cmplrs/cc/crt0.o
+
+/* Supposedly the following will overcome a kernel bug. */
+#undef LD_SWITCH_MACHINE
+#undef DATA_START
+#define DATA_START 0x10000000
+#define DATA_SEG_BITS 0x10000000
+
+/* In Ultrix 4.1, XvmsAlloc.o in libX11.a seems to insist
+ on defining malloc itself. This should avoid conflicting with it. */
+#define SYSTEM_MALLOC
diff --git a/src/m/pyramid.h b/src/m/pyramid.h
new file mode 100644
index 00000000000..e478eae5add
--- /dev/null
+++ b/src/m/pyramid.h
@@ -0,0 +1,76 @@
+/* machine description file for pyramid.
+ Copyright (C) 1985, 1986 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)
+any later version.
+
+GNU Emacs is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+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 following line tells the configuration script what sort of
+ operating system this machine is likely to run.
+ USUAL-OPSYS="bsd4-2" */
+
+/* The following three symbols give information on
+ the size of various data types. */
+
+#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 BIG_ENDIAN iff lowest-numbered byte in a word
+ is the most significant byte. */
+
+#define 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. */
+
+#ifdef __GNUC__
+#define NO_ARG_ARRAY
+#endif
+
+/* XINT must explicitly sign extend */
+
+#define EXPLICIT_SIGN_EXTEND
+
+/* 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)
+
+/* pyramid preprocessor defines "pyr", however the following is clearer */
+#define pyramid
+
+/* Don't use the union types any more. They were used until Emacs 17.45. */
+
+#define NO_UNION_TYPE
+
+/* Data type of load average, as read out of kmem. */
+
+#define LOAD_AVE_TYPE double
+
+/* Convert that into an integer that is 100 for a load average of 1.0 */
+
+#define LOAD_AVE_CVT(x) ((int) ((x) * 100.0))
+
+/* Don't use the ordinary -g for debugging in cc */
+
+#define C_DEBUG_SWITCH -gx
+
+/* Reenable this #define for old versions of the Pyramid system. */
+
+/* #define PYRAMID_OLD */
diff --git a/src/m/sequent.h b/src/m/sequent.h
new file mode 100644
index 00000000000..e760213abcc
--- /dev/null
+++ b/src/m/sequent.h
@@ -0,0 +1,188 @@
+/* machine description file for SEQUENT BALANCE machines
+ Copyright (C) 1985, 1986 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)
+any later version.
+
+GNU Emacs is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+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 following line tells the configuration script what sort of
+ operating system this machine is likely to run.
+ USUAL-OPSYS="note"
+
+NOTE-START
+Use -opsystem=bsd4-2, or -opsystem=bsd4-3 on newer systems.
+NOTE-END */
+
+/* NOTE: this file works for DYNIX release 2.0
+ (not tested on 1.3) on NS32000's */
+
+/* The following three symbols give information on
+ the size of various data types. */
+
+#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 BIG_ENDIAN iff lowest-numbered byte in a word
+ is the most significant byte. */
+
+/* #define 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 NO_ARG_ARRAY */
+
+/* Define WORD_MACHINE if addresses and such have
+ * to be corrected before they can be used as byte counts. */
+
+/* #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:
+ vax, m68000, ns16000, pyramid, orion, tahoe and APOLLO
+ are the ones defined so far. */
+
+/* BTW: DYNIX defines sequent, ns32000, and ns16000 (GENIX compatibility) */
+#ifndef sequent /* pre DYNIX 2.1 releases */
+# define sequent
+#endif
+
+/* Use type int rather than a union, to represent Lisp_Object */
+/* This is desirable for most machines. */
+
+#define NO_UNION_TYPE
+
+/* crt0.c should use the vax-bsd style of entry, with these dummy args. */
+
+#define CRT0_DUMMIES bogus_fp,
+
+/* crt0.c should define a symbol `start' and do .globl with a dot. */
+
+#define DOT_GLOBAL_START
+
+/* Define EXPLICIT_SIGN_EXTEND if XINT must explicitly sign-extend
+ the 24-bit 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. */
+
+#define LOAD_AVE_TYPE unsigned long
+
+/* Convert that into an integer that is 100 for a load average of 1.0 */
+
+#define FSCALE 1000.0
+#define LOAD_AVE_CVT(x) (int) (((double) (x)) * 100.0 / FSCALE)
+
+/* Define CANNOT_DUMP on machines where unexec does not work.
+ Then the function dump-emacs will not be defined
+ and temacs will do (load "loadup") automatically unless told otherwise. */
+
+/* #define CANNOT_DUMP */
+
+/* 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.
+
+ Otherwise Emacs assumes that text space precedes data space,
+ 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
+
+/* Name of file the to look in
+ for the kernel symbol table (for load average) */
+
+#undef KERNEL_FILE
+#define KERNEL_FILE "/dynix"
+
+/* Avoids a compiler bug */
+
+#define TAHOE_REGISTER_BUG
+
+/* Say that the text segment of a.out includes the header;
+ the header actually occupies the first few bytes of the text segment
+ and is counted in hdr.a_text. Furthermore, the value written
+ in the a_text in the file must have N_ADDRADJ added to it. */
+
+#define A_TEXT_OFFSET(HDR) (sizeof (HDR) + N_ADDRADJ (HDR))
+
+/* This is the offset of the executable's text, from the start of the file. */
+
+#define A_TEXT_SEEK(HDR) (N_TXTOFF (hdr) + sizeof (hdr))
+
+/* (short) negative-int doesn't sign-extend correctly */
+#define SHORT_CAST_BUG
+
+/* Cause compilations to be done in parallel in ymakefile. */
+#define MAKE_PARALLEL &
+
+/* Say that mailer interlocking uses flock. */
+#define MAIL_USE_FLOCK
+
+/* On many 4.2-based systems, there's a rather tricky bug
+ * with the interpretation of the pid/pgrp value given to
+ * the F_SETOWN fcntl() call. It works as documented EXCEPT
+ * when applied to filedescriptors for sockets, in which case
+ * the sign must be reversed. If your emacs subprocesses get
+ * SIGIO's when they shouldn't, while running on a socket
+ * (e.g. under X windows), you should probably define this.
+ */
+
+#define F_SETOWN_SOCK_NEG
+
+/* Some really obscure 4.2-based systems (like Sequent DYNIX)
+ * do not support asynchronous I/O (using SIGIO) on sockets,
+ * even though it works fine on tty's. If you have one of
+ * these systems, define the following, and then use it in
+ * config.h (or elsewhere) to decide when (not) to use SIGIO.
+ */
+
+#define NO_SOCK_SIGIO
+
+/* Define how to search all pty names.
+ This is for Dynix 3.0; delete next 5 definitions for older systems. */
+
+#define PTY_MAJOR "pqrstuvwPQRSTUVW"
+#define PTY_MINOR "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
+#define PTY_ITERATION \
+ register int ma, mi; \
+ for (ma = 0; ma < sizeof(PTY_MAJOR) - 1; ma++) \
+ for (mi = 0; mi < sizeof(PTY_MINOR) - 1; mi++)
+#define PTY_NAME_SPRINTF \
+ sprintf (ptyname, "/dev/pty%c%c", PTY_MAJOR[ma], PTY_MINOR[mi]);
+#define PTY_TTY_NAME_SPRINTF \
+ sprintf (ptyname, "/dev/tty%c%c", PTY_MAJOR[ma], PTY_MINOR[mi]);
diff --git a/src/m/sparc.h b/src/m/sparc.h
new file mode 100644
index 00000000000..b06fa35522c
--- /dev/null
+++ b/src/m/sparc.h
@@ -0,0 +1,119 @@
+/* machine description file for Sun 4 SPARC.
+ Copyright (C) 1987 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)
+any later version.
+
+GNU Emacs is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+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 following line tells the configuration script what sort of
+ operating system this machine is likely to run.
+ USUAL-OPSYS="note"
+
+NOTE-START
+Use -opsystem=sunos4 for operating system version 4, and
+-opsystem=bsd4-2 for earlier versions.
+NOTE-END */
+
+/* The following three symbols give information on
+ the size of various data types. */
+
+#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 */
+
+/* SPARC has lowest-numbered byte as most significant */
+
+#define 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 NO_ARG_ARRAY
+
+/* 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)
+
+/* Say this machine is a sparc */
+
+#ifndef sparc
+#define sparc
+#endif
+
+#ifdef __GNUC__
+# define C_OPTIMIZE_SWITCH -O
+#else
+ /* This level of optimization is reported to work. */
+# define C_OPTIMIZE_SWITCH -O2
+#endif
+
+/* Use type int rather than a union, to represent Lisp_Object */
+
+#define NO_UNION_TYPE
+
+/* XINT must explicitly sign-extend */
+
+#define EXPLICIT_SIGN_EXTEND
+
+/* 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)
+
+/* 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 HAVE_ALLOCA
+#include <alloca.h>
+
+/* Must use the system's termcap. It does special things. */
+
+#define LIBS_TERMCAP -ltermcap
+
+/* Mask for address bits within a memory segment */
+
+#define SEGMENT_MASK (SEGSIZ - 1)
+
+/* Arrange to link with sun windows, if requested. */
+/* For details on emacstool and sunfns, see etc/SUN-SUPPORT */
+/* These programs require Sun UNIX 4.2 Release 3.2 or greater */
+
+#ifdef HAVE_SUN_WINDOWS
+#define OTHER_FILES ${etcdir}emacstool
+#define LIBS_MACHINE -lsuntool -lsunwindow -lpixrect
+#define OBJECTS_MACHINE sunfns.o
+#define SYMS_MACHINE syms_of_sunfns ()
+#define PURESIZE 130000
+#endif
+
+/* Say that the text segment of a.out includes the header;
+ the header actually occupies the first few bytes of the text segment
+ and is counted in hdr.a_text. */
+
+#define A_TEXT_OFFSET(HDR) sizeof (HDR)
+
+/* This is the offset of the executable's text, from the start of the file. */
+
+#define A_TEXT_SEEK(HDR) (N_TXTOFF (hdr) + sizeof (hdr))
diff --git a/src/m/sps7.h b/src/m/sps7.h
new file mode 100644
index 00000000000..e1583f66d7f
--- /dev/null
+++ b/src/m/sps7.h
@@ -0,0 +1,140 @@
+/* machine description file for Bull SPS-7.
+ Copyright (C) 1986 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)
+any later version.
+
+GNU Emacs is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+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 following line tells the configuration script what sort of
+ operating system this machine is likely to run.
+ USUAL-OPSYS="usg5-2" */
+
+/* The following three symbols give information on
+ the size of various data types. */
+
+#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 */
+
+/* 68000 has lowest-numbered byte as most significant */
+
+#define BIG_ENDIAN
+
+/* 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)
+
+/* Say this machine is a 68000 */
+
+#ifndef m68000
+#define m68000
+#endif
+
+#define sps7
+
+/* Use type int rather than a union, to represent Lisp_Object */
+
+#define NO_UNION_TYPE
+
+/* XINT must explicitly sign-extend */
+
+#define EXPLICIT_SIGN_EXTEND
+
+/* Data type of load average, as read out of kmem. */
+/* Suspect there is something wierd about this machine, so turn it off. */
+
+/* #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) */
+
+#define SMX
+#define V3x
+
+/*
+ * Define HAVE_SELECT if the system supports the `select' system call.
+ */
+
+#define HAVE_SELECT
+
+/*
+ * Define HAVE_PTYS if the system supports pty devices.
+ */
+
+#define HAVE_PTYS
+
+/* Define HAVE_SOCKETS if system supports 4.2-compatible sockets. */
+
+#define HAVE_SOCKETS
+
+/* Have the socketpair call
+*/
+
+#define SKTPAIR
+
+/* Define CLASH_DETECTION if you want lock files to be written
+ so that Emacs can tell instantly when you try to modify
+ a file that someone else has modified in his Emacs. */
+
+#define CLASH_DETECTION
+
+/* Use Berkeley style interface to nlist */
+
+#define NLIST_STRUCT
+
+/* Define this to cause -N to be passed to ld. This is needed
+ * in uniplus because of its funny memory space layout.
+ * SMX--If you are using 32 bit (COFF) use "-N", else don't use anything.
+ */
+
+#define LD_SWITCH_MACHINE -N -T32 -e __start
+
+/* If you are compiling for a 68020, then use -lc32 else use -lc */
+
+#define LIB_STANDARD -lc32
+
+/* Fore 16 bit, -linet, for 32 bit -linet32 (be sure you have it!). */
+
+#define LIBS_MACHINE -linet32
+
+/* Use -T32 for 68020, -T16 otherwise */
+
+#define C_SWITCH_MACHINE -T32
+
+/*
+ Here we assume that signal.h is included before config.h
+ so that we can override it here. */
+
+#undef SIGIO
+
+/* Some additional system facilities exist. */
+
+#define HAVE_DUP2
+
+/* Other than 68020 use ld16, as32, or undefine (defaults ld and as). */
+
+#define ASS as32
+
+#ifdef V3x
+#define EXEC_MAGIC 0x10b
+#define SEGMENT_MASK (NBPS-1)
+#define ADJUST_EXEC_HEADER f_hdr.f_magic = SMROMAGIC;\
+ f_ohdr.stsize = 0;
+#endif
diff --git a/src/m/stride.h b/src/m/stride.h
new file mode 100644
index 00000000000..5ea57e3ac07
--- /dev/null
+++ b/src/m/stride.h
@@ -0,0 +1,136 @@
+/* Definitions file for GNU Emacs running on Stride Micro System-V.2.2
+ Copyright (C) 1985, 1986 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)
+any later version.
+
+GNU Emacs is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+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 following line tells the configuration script what sort of
+ operating system this machine is likely to run.
+ USUAL-OPSYS="usg5-2" */
+
+/* The following three symbols give information on
+ the size of various data types. */
+
+#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 */
+
+/* 68000 has lowest-numbered byte as most significant */
+
+#define 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. */
+
+#undef NO_ARG_ARRAY
+
+/* Define WORD_MACHINE if addresses and such have
+ * to be corrected before they can be used as byte counts. */
+
+#undef 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:
+ vax, m68000, ns16000, pyramid, orion, tahoe, APOLLO and STRIDE
+ are the ones defined so far. */
+
+#define m68000 /* because the SGS compiler defines "m68k" */
+#ifndef STRIDE
+#define STRIDE
+#endif
+
+/* Use type int rather than a union, to represent Lisp_Object */
+/* This is desirable for most machines. */
+
+#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
+ 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. */
+
+#define LOAD_AVE_TYPE double
+
+/* Convert that into an integer that is 100 for a load average of 1.0 */
+
+#define LOAD_AVE_CVT(x) ((int) ((x) * 100.0))
+
+/* Define CANNOT_DUMP on machines where unexec does not work.
+ Then the function dump-emacs will not be defined
+ and temacs will do (load "loadup") automatically unless told otherwise. */
+
+#undef CANNOT_DUMP
+
+/* 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.
+
+ Otherwise Emacs assumes that text space precedes data space,
+ numerically. */
+
+#undef VIRT_ADDR_VARIES
+
+/* The STRIDE system is more powerful than standard USG5. */
+
+#define HAVE_PTYS
+#define HAVE_TIMEVAL
+#define HAVE_SELECT
+#define HAVE_GETTIMEOFDAY
+#define BSTRING
+#define SKTPAIR
+#define HAVE_SOCKETS
+
+#define MAIL_USE_FLOCK
+#undef TERMINFO
+#define EXEC_MAGIC 0413
+
+/* USG wins again: Foo! I can't get SIGIO to work properly on the Stride, because I'm
+ running a System V variant, and don't have a reliable way to block SIGIO
+ signals without losing them. So, I've gone back to non-SIGIO mode, so
+ please append this line to the file "stride.h":
+ */
+#undef SIGIO
+
+/* Specify alignment requirement for start of text and data sections
+ in the executable file. */
+
+#define SECTION_ALIGNMENT (getpagesize() - 1)
+
+/*
+ * UniStride has this in /lib/libc.a.
+ */
+#undef NONSYSTEM_DIR_LIBRARY
+
+/* UniStride defines getwd. */
+
+#define HAVE_GETWD
+
+/* Define this macro if system defines a type `union wait'. */
+
+#define HAVE_UNION_WAIT
diff --git a/src/m/sun1.h b/src/m/sun1.h
new file mode 100644
index 00000000000..4edf292adf3
--- /dev/null
+++ b/src/m/sun1.h
@@ -0,0 +1,88 @@
+/* machine description file for Sun 68000's
+ Copyright (C) 1985, 1986 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)
+any later version.
+
+GNU Emacs is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+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 following line tells the configuration script what sort of
+ operating system this machine is likely to run.
+ USUAL-OPSYS="note"
+
+NOTE-START
+Sun 1, 2 and 3 (-machine=sun1, -machine=sun2, -machine=sun3;
+ -opsystem=bsd4-2 or -opsystem=sunos4)
+
+ Whether you should use sun1, sun2 or sun3 depends on the
+ VERSION OF THE OPERATING SYSTEM
+ you have. There are three machine types for different versions of
+ SunOS. All are derived from Berkeley 4.2, meaning that you should
+ use -opsystem=bsd4-2. Emacs 17 has run on all of them. You will
+ need to use sun3 on Sun 2's running SunOS release 3.
+
+ For SunOS release 4 on a Sun 3, use -machine=sun3 and
+ -opsystem=sunos4. See the file share-lib/SUNBUG for how to solve
+ problems caused by bugs in the "export" version of SunOS 4.
+NOTE-END */
+
+/* The following three symbols give information on
+ the size of various data types. */
+
+#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 */
+
+/* 68000 has lowest-numbered byte as most significant */
+
+#define BIG_ENDIAN
+
+/* 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)
+
+/* Say this machine is a 68000 */
+
+#define m68000
+
+/* Use type int rather than a union, to represent Lisp_Object */
+
+#define NO_UNION_TYPE
+
+/* Sun can't write competant compilers */
+#define COMPILER_REGISTER_BUG
+
+/* XINT must explicitly sign-extend */
+
+#define EXPLICIT_SIGN_EXTEND
+
+/* 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)
+
+/* Must use the system's termcap. It does special things. */
+
+#define LIBS_TERMCAP -ltermcap
+
+/* Mask for address bits within a memory segment */
+
+#define SEGMENT_MASK (SEGSIZ - 1)
diff --git a/src/m/sun2.h b/src/m/sun2.h
new file mode 100644
index 00000000000..717e16c27e2
--- /dev/null
+++ b/src/m/sun2.h
@@ -0,0 +1,109 @@
+/* machine description file for Sun 68000's OPERATING SYSTEM version 2.
+ Note that "sun2.h" refers to the operating system version, not the
+ CPU model number. See the MACHINES file for details.
+ Copyright (C) 1985, 1986 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)
+any later version.
+
+GNU Emacs is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+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 following line tells the configuration script what sort of
+ operating system this machine is likely to run.
+ USUAL-OPSYS="note"
+
+NOTE-START
+Sun 1, 2 and 3 (-machine=sun1, -machine=sun2, -machine=sun3;
+ -opsystem=bsd4-2 or -opsystem=sunos4)
+
+ Whether you should use sun1, sun2 or sun3 depends on the
+ VERSION OF THE OPERATING SYSTEM
+ you have. There are three machine types for different versions of
+ SunOS. All are derived from Berkeley 4.2, meaning that you should
+ use -opsystem=bsd4-2. Emacs 17 has run on all of them. You will
+ need to use sun3 on Sun 2's running SunOS release 3.
+
+ For SunOS release 4 on a Sun 3, use -machine=sun3 and
+ -opsystem=sunos4. See the file share-lib/SUNBUG for how to solve
+ problems caused by bugs in the "export" version of SunOS 4.
+NOTE-END */
+
+/* The following three symbols give information on
+ the size of various data types. */
+
+#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 */
+
+/* 68000 has lowest-numbered byte as most significant */
+
+#define BIG_ENDIAN
+
+/* 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)
+
+/* Say this machine is a 68000 */
+
+#ifndef m68000
+#define m68000
+#endif
+
+/* Use type int rather than a union, to represent Lisp_Object */
+
+#define NO_UNION_TYPE
+
+/* Sun can't write competent compilers */
+#define COMPILER_REGISTER_BUG
+
+/* XINT must explicitly sign-extend */
+
+#define EXPLICIT_SIGN_EXTEND
+
+/* 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)
+
+/* Say that this is a Sun 2; must check for and maybe reinitialize
+ the "sky" board. */
+
+#define sun2
+
+/* Must use the system's termcap. It does special things. */
+
+#define LIBS_TERMCAP -ltermcap
+
+/* Mask for address bits within a memory segment */
+
+#define SEGMENT_MASK (SEGSIZ - 1)
+
+/* Arrange to link with sun windows, if requested. */
+/* For details on emacstool and sunfns, see etc/SUN-SUPPORT */
+/* These programs require Sun UNIX 4.2 Release 3.2 or greater */
+
+#ifdef HAVE_SUN_WINDOWS
+#define OTHER_FILES ${etcdir}emacstool
+#define LIBS_MACHINE -lsuntool -lsunwindow -lpixrect
+#define OBJECTS_MACHINE sunfns.o
+#define SYMS_MACHINE syms_of_sunfns ()
+#define PURESIZE 132000
+#endif
diff --git a/src/m/tahoe.h b/src/m/tahoe.h
new file mode 100644
index 00000000000..9c994badba2
--- /dev/null
+++ b/src/m/tahoe.h
@@ -0,0 +1,92 @@
+/* machine description file for tahoe.
+ Copyright (C) 1985 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)
+any later version.
+
+GNU Emacs is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+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 following line tells the configuration script what sort of
+ operating system this machine is likely to run.
+ USUAL-OPSYS="note"
+
+NOTE-START
+Use -opsystem=bsd4-2 or -opsystem=bsd4-3, depending on the version of
+Berkeley you are running.
+NOTE-END */
+
+/* The following three symbols give information on
+ the size of various data types. */
+
+#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 */
+
+/* lowest-numbered byte is most significant */
+
+#define BIG_ENDIAN
+
+/* XINT must explicitly sign-extend */
+
+#define EXPLICIT_SIGN_EXTEND
+
+/* 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)
+
+/* Say this machine is a tahoe */
+
+#ifndef tahoe
+#define tahoe
+#endif /* not tahoe */
+
+/* Use type int rather than a union, to represent Lisp_Object */
+
+#define NO_UNION_TYPE
+
+/* crt0.c should use the vax-bsd style of entry, with no dummy args. */
+
+#define CRT0_DUMMIES
+
+/* crt0.c should define a symbol `start' and do .globl with a dot. */
+
+#define DOT_GLOBAL_START
+
+/* Data type of load average, as read out of kmem. */
+
+#define LOAD_AVE_TYPE double
+
+/* Convert that into an integer that is 100 for a load average of 1.0 */
+
+#define LOAD_AVE_CVT(x) ((int) ((x) * 100.0))
+
+/* This triggers some stuff to avoid a compiler bug */
+
+#define TAHOE_REGISTER_BUG
+
+/* System provides alloca. */
+
+#define HAVE_ALLOCA
+
+/* Control header files used by loadst.c.
+ Some users report machines have dkstat.h while others report dk.h,
+ so it's hard to tell what this should say. */
+
+#ifdef BSD
+#define DKSTAT_HEADER_FILE
+#endif
diff --git a/src/m/targon31.h b/src/m/targon31.h
new file mode 100644
index 00000000000..49d4eb65305
--- /dev/null
+++ b/src/m/targon31.h
@@ -0,0 +1,117 @@
+/* targon31 machine description file
+ Copyright (C) 1985, 1986 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)
+any later version.
+
+GNU Emacs is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+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 following line tells the configuration script what sort of
+ operating system this machine is likely to run.
+ USUAL-OPSYS="usg5-2-2" */
+
+/* The following three symbols give information on
+ the size of various data types. */
+
+#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 BIG_ENDIAN iff lowest-numbered byte in a word
+ is the most significant byte. */
+
+#define 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 NO_ARG_ARRAY */
+
+/* Define WORD_MACHINE if addresses and such have
+ * to be corrected before they can be used as byte counts. */
+
+#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:
+ vax, m68000, ns16000, pyramid, orion, tahoe and APOLLO
+ are the ones defined so far. */
+
+/* #define m68k is defined by the Compiler */
+/* #define m68000 */
+
+/* Use type int rather than a union, to represent Lisp_Object */
+/* This is desirable for most machines. */
+
+#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
+ 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. */
+
+/* #define LOAD_AVE_TYPE double */
+
+/* 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)
+
+/* Define CANNOT_DUMP on machines where unexec does not work.
+ Then the function dump-emacs will not be defined
+ and temacs will do (load "loadup") automatically unless told otherwise. */
+
+/* #define CANNOT_DUMP */
+
+/* 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.
+
+ Otherwise Emacs assumes that text space precedes data space,
+ 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 */
+
+/* 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 */
+/* Supposedly NO_REMAP is not needed with the following change. */
+#define SEGMENT_MASK 0xffff
+
+#define SWITCH_ENUM_BUG 1
diff --git a/src/m/tek4300.h b/src/m/tek4300.h
new file mode 100644
index 00000000000..9164701b0e0
--- /dev/null
+++ b/src/m/tek4300.h
@@ -0,0 +1,98 @@
+/* machine description file for tek4300.
+ Copyright (C) 1988 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)
+any later version.
+
+GNU Emacs is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+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 following line tells the configuration script what sort of
+ operating system this machine is likely to run.
+ USUAL-OPSYS="bsd4-3" */
+
+/* The following three symbols give information on
+ the size of various data types. */
+
+#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 */
+
+/* 68000 has lowest-numbered byte as most significant */
+
+#define 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. */
+
+#undef NO_ARG_ARRAY
+
+/* Define WORD_MACHINE if addresses and such have
+ * to be corrected before they can be used as byte counts. */
+
+#undef 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. */
+
+#define tek4300
+
+/* Use type int rather than a union, to represent Lisp_Object */
+
+#define NO_UNION_TYPE
+
+/* 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) (x)
+
+/* 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 C_ALLOCA if this machine does not support a true alloca
+ and the one written in C should be used instead. */
+
+#define C_ALLOCA
+
+/* setjmp and longjmp can safely replace _setjmp and _longjmp, */
+
+#define _longjmp longjmp
+#define _setjmp setjmp
+
+/* The text segment always starts at a fixed address.
+ This way we don't need to have a label _start defined. */
+
+#define TEXT_START 0
+
+/* The Tektronix exec struct for ZMAGIC files is struct zexec */
+
+#define EXEC_HDR_TYPE struct zexec
+
+/* The entry-point label (start of text segment) is `start', not `__start'. */
+
+#define DEFAULT_ENTRY_ADDRESS start
diff --git a/src/m/template.h b/src/m/template.h
new file mode 100644
index 00000000000..f69e0376c29
--- /dev/null
+++ b/src/m/template.h
@@ -0,0 +1,110 @@
+/* machine description file template.
+ Copyright (C) 1985, 1986 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)
+any later version.
+
+GNU Emacs is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+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 following line tells the configuration script what sort of
+ operating system this machine is likely to run.
+ USUAL-OPSYS="<name of system .h file here, without the s- or .h>" */
+
+/* The following three symbols give information on
+ the size of various data types. */
+
+#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 BIG_ENDIAN iff lowest-numbered byte in a word
+ is the most significant byte. */
+
+#define 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 NO_ARG_ARRAY
+
+/* Define WORD_MACHINE if addresses and such have
+ * to be corrected before they can be used as byte counts. */
+
+#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,
+ orion, tahoe, APOLLO and many others */
+
+/* Use type int rather than a union, to represent Lisp_Object */
+/* This is desirable for most machines. */
+
+#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
+ 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. */
+
+#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)
+
+/* Define CANNOT_DUMP on machines where unexec does not work.
+ Then the function dump-emacs will not be defined
+ and temacs will do (load "loadup") automatically unless told otherwise. */
+
+#define CANNOT_DUMP
+
+/* 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.
+
+ Otherwise Emacs assumes that text space precedes data space,
+ 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
+
+/* 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
diff --git a/src/m/tower32.h b/src/m/tower32.h
new file mode 100644
index 00000000000..8ab0b918607
--- /dev/null
+++ b/src/m/tower32.h
@@ -0,0 +1,134 @@
+/* machine description file for the NCR Tower 32 running System V.2.
+ Copyright (C) 1986 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)
+any later version.
+
+GNU Emacs is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+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 following line tells the configuration script what sort of
+ operating system this machine is likely to run.
+ USUAL-OPSYS="usg5-2-2" */
+
+/* The following three symbols give information on
+ the size of various data types. */
+
+#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 BIG_ENDIAN iff lowest-numbered byte in a word
+ is the most significant byte. */
+
+#define 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 NO_ARG_ARRAY */
+
+/* Define WORD_MACHINE if addresses and such have
+ * to be corrected before they can be used as byte counts. */
+
+/* #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:
+ vax, m68000, ns16000, pyramid, orion, tahoe and APOLLO
+ are the ones defined so far. */
+#define m68000
+
+/* Use type int rather than a union, to represent Lisp_Object */
+/* This is desirable for most machines. */
+
+#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
+ 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. */
+
+/* #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) */
+
+/* Define CANNOT_DUMP on machines where unexec does not work.
+ Then the function dump-emacs will not be defined
+ and temacs will do (load "loadup") automatically unless told otherwise. */
+
+/* #define CANNOT_DUMP */
+
+/* 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.
+
+ Otherwise Emacs assumes that text space precedes data space,
+ 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
+
+/* Change some things to avoid bugs in compiler */
+
+#define SWITCH_ENUM_BUG 1
+
+/* The standard C library is -lcieee, not -lc.
+ Also use the PW library, which contains alloca. */
+
+#define LIB_STANDARD -lPW -lcieee
+
+/* crt0.c should use the vax-bsd style of entry. Beware that if you have
+ OS release 2.00.00 or later, *and* change src/ymakefile so that CFLAGS
+ includes C_OPTIMIZE_SWITCH rather than C_DEBUG_SWITCH, you need to
+ uncomment CRT0_DUMMIES and C_OPTIMIZE_SWITCH below. */
+
+/* With the optimizer OFF */
+
+#define CRT0_DUMMIES zero, bogus_fp,
+
+/* With the optimizer ON */
+
+/* #define CRT0_DUMMIES */
+/* #define C_OPTIMIZE_SWITCH -O2 */
+
+/* emacs's magic number isn't temacs's;
+ temacs is writeable text (the default!). */
+
+#include <asld.h>
+#define EXEC_MAGIC AOUT1MAGIC
+#define EXEC_PAGESIZE DATACLICK
diff --git a/src/m/tower32v3.h b/src/m/tower32v3.h
new file mode 100644
index 00000000000..ca8f2878632
--- /dev/null
+++ b/src/m/tower32v3.h
@@ -0,0 +1,139 @@
+/* machine description file for the NCR Tower 32 running System V.3.
+ Copyright (C) 1986 Free Software Foundation, Inc.
+
+This file is part of GNU Emacs.
+
+GNU Emacs is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY. No author or distributor
+accepts responsibility to anyone for the consequences of using it
+or for whether it serves any particular purpose or works at all,
+unless he says so in writing. Refer to the GNU Emacs General Public
+License for full details.
+
+Everyone is granted permission to copy, modify and redistribute
+GNU Emacs, but only under the conditions described in the
+GNU Emacs General Public License. A copy of this license is
+supposed to have been given to you along with GNU Emacs so you
+can know your rights and responsibilities. It should be in a
+file named COPYING. Among other things, the copyright notice
+and this notice must be preserved on all copies. */
+
+
+/* The following line tells the configuration script what sort of
+ operating system this machine is likely to run.
+ USUAL-OPSYS="usg5-3" */
+
+/* The following three symbols give information on
+ the size of various data types. */
+
+#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 BIG_ENDIAN iff lowest-numbered byte in a word
+ is the most significant byte. */
+
+#define 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 NO_ARG_ARRAY */
+
+/* Define WORD_MACHINE if addresses and such have
+ * to be corrected before they can be used as byte counts. */
+
+/* #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:
+ vax, m68000, ns16000, pyramid, orion, tahoe and APOLLO
+ are the ones defined so far. */
+#define m68000
+
+/* Use type int rather than a union, to represent Lisp_Object */
+/* This is desirable for most machines. */
+
+#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
+ 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. */
+
+/* #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) */
+
+/* Define CANNOT_DUMP on machines where unexec does not work.
+ Then the function dump-emacs will not be defined
+ and temacs will do (load "loadup") automatically unless told otherwise. */
+
+/* #define CANNOT_DUMP */
+
+/* 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.
+
+ Otherwise Emacs assumes that text space precedes data space,
+ 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. */
+
+#ifdef __GNUC__
+#define HAVE_ALLOCA
+#define alloca __builtin_alloca
+#define C_OPTIMIZE_SWITCH -O -fstrength-reduce -fomit-frame-pointer
+#define LIB_STANDARD -lc /lib/crtn.o
+#else
+/* This section is correct if you do *not* change src/ymakefile so that
+ CFLAGS includes C_OPTIMIZE_SWITCH rather than C_DEBUG_SWITCH. */
+#define HAVE_ALLOCA
+#define C_DEBUG_SWITCH -g -O0
+#define LIB_STANDARD -lc -lPW /lib/crtn.o
+/* This section is correct if you do enable C_OPTIMIZE_SWITCH. */
+/* #define C_ALLOCA */
+/* #define STACK_DIRECTION -1 */
+/* #define C_OPTIMIZE_SWITCH -O2 */
+/* #define LIB_STANDARD -lc /lib/crtn.o */
+#endif
+
+/* The OS maps the data section far away from the text section. */
+#define NO_REMAP
+#define TEXT_START 0
+#undef static
+#define START_FILES pre-crt0.o /lib/crt1.o
+
+/* This is needed since many Tower models start the data/bss segment at
+ an address as large as 0x2000000. */
+#define VALBITS 26
+#define GCTYPEBITS 5
+
+/* The OS has an implementation of symlinks that is semantically different
+ from BSD, but for some silly reason it partly has the same syntax. */
+#undef S_IFLNK
+
+/* The OS needs stream.h+ptem.h included in sysdep.c. */
+#define NO_SIOCTL_H
+#define NEED_PTEM_H
diff --git a/src/m/ustation.h b/src/m/ustation.h
new file mode 100644
index 00000000000..a5ecb75fbd1
--- /dev/null
+++ b/src/m/ustation.h
@@ -0,0 +1,158 @@
+/* machine description file for U-station (Nihon Unisys, SS5E; Sumitomo Denkoh, U-Station E30).
+ Copyright (C) 1986 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)
+any later version.
+
+GNU Emacs is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+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 following line tells the configuration script what sort of
+ operating system this machine is likely to run.
+ USUAL-OPSYS="usg5-3" */
+
+/* The following three symbols give information on
+ the size of various data types. */
+
+#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 BIG_ENDIAN iff lowest-numbered byte in a word
+ is the most significant byte. */
+
+#define 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. */
+
+#undef NO_ARG_ARRAY
+
+/* Define WORD_MACHINE if addresses and such have
+ * to be corrected before they can be used as byte counts. */
+
+#undef 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:
+ vax, m68000, ns16000, pyramid, orion, tahoe and APOLLO
+ are the ones defined so far. */
+/* Masscomp predefines mc68000. */
+
+#define m68000 mc68000
+
+/* Use type int rather than a union, to represent Lisp_Object */
+/* This is desirable for most machines. */
+
+#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
+ are always unsigned.
+
+ If you use NO_UNION_TYPE, this flag does not matter. */
+
+#undef EXPLICIT_SIGN_EXTEND
+
+/* Data type of load average, as read out of kmem. */
+
+#define LOAD_AVE_TYPE double
+
+/* Convert that into an integer that is 100 for a load average of 1.0 */
+
+#define LOAD_AVE_CVT(x) ((int) ((x) * 100.0))
+
+/* Define CANNOT_DUMP on machines where unexec does not work.
+ Then the function dump-emacs will not be defined
+ and temacs will do (load "loadup") automatically unless told otherwise. */
+
+#undef CANNOT_DUMP
+
+/* 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.
+
+ Otherwise Emacs assumes that data space precedes text space,
+ numerically. */
+
+#undef 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. */
+
+/* On return from a subroutine, the 68020 compiler restores old contents of
+ register variables relative to sp, so alloca() screws up such routines.
+ The following definitions should work on all Masscomps. On the MC-5500
+ (a 68000) one can #undef C_ALLOCA and #define HAVE_ALLOCA. */
+
+#define C_ALLOCA
+#undef HAVE_ALLOCA
+
+/* 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. */
+
+#undef NO_REMAP
+
+/* Name of file the to look in
+ for the kernel symbol table (for load average) */
+
+#define KERNEL_FILE "/unix"
+
+/* This triggers some stuff to avoid a compiler bug */
+
+#define MASSC_REGISTER_BUG
+
+/* Prevent -lg from being used for debugging. Not implemented? */
+
+#define LIBS_DEBUG
+
+/*
+ * Define HAVE_TERMIO if the system provides sysV-style ioctls
+ * for terminal control.
+ */
+
+#define HAVE_TERMIO
+
+/* -lnet is not standard library */
+
+#undef HAVE_SELECT
+#undef LIBS_SYSTEM
+
+/* Compiler's bug */
+
+#define SWITCH_ENUM_BUG
+
+/* Termcap is available */
+
+#define LIBS_TERMCAP -ltermcap
+
+#define EXEC_PAGESIZE 1024
+#define PURESIZE 130000
+
+#undef SIGIO
+#undef SIGTSTP
+#undef HAVE_TIMEVAL
diff --git a/src/m/vax.h b/src/m/vax.h
new file mode 100644
index 00000000000..488f89aa862
--- /dev/null
+++ b/src/m/vax.h
@@ -0,0 +1,132 @@
+/* machine description file for vax.
+ Copyright (C) 1985, 1986 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)
+any later version.
+
+GNU Emacs is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+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 following line tells the configuration script what sort of
+ operating system this machine is likely to run.
+ USUAL-OPSYS="note"
+
+NOTE-START
+The vax (-machine=vax) runs zillions of different operating systems.
+
+Vax running Berkeley Unix (-opsystem=bsd4-1, -opsystem=bsd4-2 or
+ -opsystem=bsd4-3)
+
+ Works.
+
+Vax running Ultrix (-opsystem=bsd4-2)
+
+ Works. See under Ultrix in share-lib/MACHINES for problems using X
+ windows on Ultrix.
+
+Vax running System V rel 2 (-opsystem=usg5-2)
+
+ 18.27 Works.
+
+Vax running System V rel 0 (-opsystem=usg5-0)
+
+ Works as of 18.36.
+
+Vax running VMS (-opsystem=vms)
+
+ 18.36 believed to work. Addition of features is necessary to make
+ this Emacs version more usable.
+
+NOTE-END */
+
+/* The following three symbols give information on
+ the size of various data types. */
+
+#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 */
+
+/* Vax is not big-endian: lowest numbered byte is least significant. */
+
+/* #undef BIG_ENDIAN */
+
+/* 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)
+
+/* #define vax -- appears to be done automatically */
+
+/* Use type int rather than a union, to represent Lisp_Object */
+
+#define NO_UNION_TYPE
+
+/* crt0.c should use the vax-bsd style of entry, with no dummy args. */
+
+#define CRT0_DUMMIES
+
+/* crt0.c should define a symbol `start' and do .globl with a dot. */
+
+#define DOT_GLOBAL_START
+
+#ifdef BSD
+/* USG systems I know of running on Vaxes do not actually
+ support the load average, so disable it for them. */
+
+/* Data type of load average, as read out of kmem. */
+
+#define LOAD_AVE_TYPE double
+
+/* Convert that into an integer that is 100 for a load average of 1.0 */
+
+#define LOAD_AVE_CVT(x) ((int) ((x) * 100.0))
+
+#endif /* BSD */
+
+#ifdef VMS
+
+/* Data type of load average, as read out of driver. */
+
+#define LOAD_AVE_TYPE float
+
+/* Convert that into an integer that is 100 for a load average of 1.0 */
+
+#define LOAD_AVE_CVT(x) ((int) ((x) * 100.0))
+
+#endif /* VMS */
+
+/* Vax sysV has alloca in the PW library. */
+
+#ifdef USG
+#define LIB_STANDARD -lPW -lc
+#define HAVE_ALLOCA
+
+/* There is some bug in unexec in for usg 5.2 on a vax
+ which nobody who runs such a system has yet tracked down. */
+#ifndef USG5_0
+#define NO_REMAP
+#endif /* USG 5_0 */
+
+#define TEXT_START 0
+#endif /* USG */
+
+#ifdef BSD
+#define HAVE_ALLOCA
+#endif /* BSD */
+
+#ifdef VMS
+#define C_ALLOCA
+#endif
diff --git a/src/m/wicat.h b/src/m/wicat.h
new file mode 100644
index 00000000000..6069714647f
--- /dev/null
+++ b/src/m/wicat.h
@@ -0,0 +1,168 @@
+/* machine description file for WICAT machines.
+ Copyright (C) 1986 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)
+any later version.
+
+GNU Emacs is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+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 following line tells the configuration script what sort of
+ operating system this machine is likely to run.
+ USUAL-OPSYS="usg5-2" */
+
+/* The following three symbols give information on
+ the size of various data types. */
+
+#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 BIG_ENDIAN iff lowest-numbered byte in a word
+ is the most significant byte. */
+
+#define 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. */
+
+#undef NO_ARG_ARRAY
+
+/* Define WORD_MACHINE if addresses and such have
+ * to be corrected before they can be used as byte counts. */
+
+#undef 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:
+ vax, m68000, ns16000 are the ones defined so far. */
+
+#ifndef m68000
+#define m68000
+#endif
+
+/* This flag is used only in alloca.s. */
+#define WICAT
+
+/* Use type int rather than a union, to represent Lisp_Object */
+
+#define NO_UNION_TYPE
+
+/* XINT must explicitly sign-extend */
+
+#define EXPLICIT_SIGN_EXTEND
+
+/* Data type of load average, as read out of kmem. */
+
+#undef LOAD_AVE_TYPE
+
+/* Convert that into an integer that is 100 for a load average of 1.0 */
+
+#undef LOAD_AVE_CVT
+
+/* Define CANNOT_DUMP on machines where unexec does not work.
+ Then the function dump-emacs will not be defined
+ and temacs will do (load "loadup") automatically unless told otherwise. */
+
+#undef CANNOT_DUMP
+
+/* 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.
+
+ Otherwise Emacs assumes that text space precedes data space,
+ numerically. */
+
+#undef 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. */
+
+/* For the Wicat C compiler version 4.2, this can be removed
+ and the alloca in alloca.s used. */
+#define C_ALLOCA
+#define STACK_DIRECTION -1 /* grows towards lower addresses on WICAT */
+
+/* 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. */
+
+#undef NO_REMAP
+
+/* For WICAT, define TAHOE_REGISTER_BUG if you have a pre-4.2 C compiler */
+
+#define TAHOE_REGISTER_BUG
+
+/* pagesize definition */
+
+#define EXEC_PAGESIZE 0x1000
+
+/* Delete this for WICAT sys V releases before 2.0. */
+
+#define LIB_STANDARD -lc-nofp
+
+/* Special magic number */
+
+#define EXEC_MAGIC MC68ROMAGIC
+
+/* Special switches to give to ld. */
+
+#define LD_SWITCH_MACHINE -e __start -N
+
+/* Sigh...cannot define this for WICAT cuz 0 length memcpy blows chunks */
+
+#undef BSTRING
+
+#ifdef BSTRING
+#undef bcopy
+#undef bzero
+#undef bcmp
+
+#define bcopy(a,b,s) memcpy(b,a,s)
+#define bzero(a,s) memset(a,0,s)
+#define bcmp memcmp
+#endif
+
+/*
+ * Define optimflags if you want to optimize.
+ * - Set to null string for pre-4.2 C compiler
+ * - Set to "-O -Wopt,-O-f" for 4.2
+ */
+
+#define C_OPTIMIZE_SWITCH /* -O -Wopt,-O-f */
+
+/* For WICAT version supporting PTYs and select (currently internal only) */
+
+#ifdef HAVE_PTYS
+#undef FIRST_PTY_LETTER
+#define FIRST_PTY_LETTER 'q'
+#endif
+
+/* there is a select() in libcurses.a that causes a conflict so use termlib */
+#ifdef HAVE_SELECT
+#undef TERMINFO
+#define LIBS_TERMCAP select.o -ltermlib
+#endif
diff --git a/src/m/xps100.h b/src/m/xps100.h
new file mode 100644
index 00000000000..4b6fb543233
--- /dev/null
+++ b/src/m/xps100.h
@@ -0,0 +1,118 @@
+/* xps100.h for the Honeywell XPS100 running UNIX System V.2
+ Mark J. Hewitt (mjh@uk.co.kernel)
+
+ Copyright (C) 1985, 1986 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)
+any later version.
+
+GNU Emacs is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+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 following line tells the configuration script what sort of
+ operating system this machine is likely to run.
+ USUAL-OPSYS="usg5-2" */
+
+/* The following three symbols give information on
+ the size of various data types. */
+
+#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 BIG_ENDIAN iff lowest-numbered byte in a word
+ is the most significant byte. */
+
+#define 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 NO_ARG_ARRAY */
+
+/* Define WORD_MACHINE if addresses and such have
+ * to be corrected before they can be used as byte counts. */
+
+/* #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,
+ orion, tahoe, APOLLO and many others */
+
+/* Use type int rather than a union, to represent Lisp_Object */
+/* This is desirable for most machines. */
+
+#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
+ 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. */
+
+/* #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) */
+
+/* Define CANNOT_DUMP on machines where unexec does not work.
+ Then the function dump-emacs will not be defined
+ and temacs will do (load "loadup") automatically unless told otherwise. */
+
+/* #define CANNOT_DUMP */
+
+/* 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.
+
+ Otherwise Emacs assumes that text space precedes data space,
+ 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 */
+
+/* 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
+#define TERMINFO
+#define SWITCH_ENUM_BUG
+#define LIB_STANDARD -lc
+#define LD_SWITCH_MACHINE -X
+#define SECTION_ALIGNMENT (0x3ff)
diff --git a/src/s/aix3-1.h b/src/s/aix3-1.h
new file mode 100644
index 00000000000..366ef832ed9
--- /dev/null
+++ b/src/s/aix3-1.h
@@ -0,0 +1,232 @@
+/* Definitions file for GNU Emacs running on IBM AIX version 3.1
+ Copyright (C) 1985, 1986 Free Software Foundation, Inc.
+
+This file is part of GNU Emacs.
+
+GNU Emacs is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY. No author or distributor
+accepts responsibility to anyone for the consequences of using it
+or for whether it serves any particular purpose or works at all,
+unless he says so in writing. Refer to the GNU Emacs General Public
+License for full details.
+
+Everyone is granted permission to copy, modify and redistribute
+GNU Emacs, but only under the conditions described in the
+GNU Emacs General Public License. A copy of this license is
+supposed to have been given to you along with GNU Emacs so you
+can know your rights and responsibilities. It should be in a
+file named COPYING. Among other things, the copyright notice
+and this notice must be preserved on all copies. */
+
+
+/*
+ * Define symbols to identify the version of Unix this is.
+ * Define all the symbols that apply correctly.
+ */
+
+#define USG /* System III, System V, etc */
+#define USG5
+
+/* Specify IBM AIX version of system */
+
+#ifndef AIX
+#define AIX
+#endif
+
+/* turn off c prototypes */
+#ifndef _NO_PROTO
+#define _NO_PROTO
+#endif
+
+/* This symbol should be defined on AIX Version 3 ??????? */
+#ifndef _AIX
+#define _AIX
+#endif
+
+/* Specify "_BSD" to invoke Berkeley compatibility in header files */
+/*#ifndef _BSD
+#define _BSD
+#endif
+*/
+
+/* SYSTEM_TYPE should indicate the kind of system you are using.
+ It sets the Lisp variable system-type. */
+
+#define SYSTEM_TYPE "aix-v3"
+
+
+/* nomultiplejobs should be defined if your system's shell
+ does not have "job control" (the ability to stop a program,
+ run some other program, then continue the first one). */
+
+/* #define NOMULTIPLEJOBS */
+
+/* Default is to set interrupt_input to 0: don't do input buffering within Emacs */
+
+/* #define INTERRUPT_INPUT */
+
+/* Letter to use in finding device name of first pty,
+ if system supports pty's. 'p' means it is /dev/ptyp0 */
+
+#define FIRST_PTY_LETTER 'p'
+
+/*
+ * Define HAVE_TERMIO if the system provides sysV-style ioctls
+ * for terminal control.
+ */
+
+#define HAVE_TERMIO
+
+/*
+ * Define HAVE_TIMEVAL if the system supports the BSD style clock values.
+ * Look in <sys/time.h> for a timeval structure.
+ */
+
+#define HAVE_TIMEVAL
+
+/*
+ * Define HAVE_SELECT if the system supports the `select' system call.
+ */
+
+#define HAVE_SELECT
+
+/*
+ * Define HAVE_PTYS if the system supports pty devices.
+ */
+
+#define HAVE_PTYS
+
+/* Define HAVE_SOCKETS if system supports 4.2-compatible sockets. */
+
+#define HAVE_SOCKETS
+
+/*
+ * Define NONSYSTEM_DIR_LIBRARY to make Emacs emulate
+ * The 4.2 opendir, etc., library functions.
+ */
+
+/* #define NONSYSTEM_DIR_LIBRARY */
+
+/*
+ * Define SYSV_SYSTEM_DIR to use the V.3 getdents/readir
+ * library functions. Almost, but not quite the same as
+ * the 4.2 functions
+ */
+
+#define SYSV_SYSTEM_DIR
+
+/* Define this symbol if your system has the functions bcopy, etc. */
+
+#define BSTRING
+
+/* subprocesses should be defined if you want to
+ have code for asynchronous subprocesses
+ (as used in M-x compile and M-x shell).
+ This is supposed to work now on system V release 2. */
+
+#define subprocesses
+
+/* If your system uses COFF (Common Object File Format) then define the
+ preprocessor symbol "COFF". */
+
+/* #define COFF */
+
+/* define MAIL_USE_FLOCK if the mailer uses flock
+ to interlock access to /usr/spool/mail/$USER.
+ The alternative is that a lock file named
+ /usr/spool/mail/$USER.lock. */
+
+/* #define MAIL_USE_FLOCK */
+
+/* Define CLASH_DETECTION if you want lock files to be written
+ so that Emacs can tell instantly when you try to modify
+ a file that someone else has modified in his Emacs. */
+
+/* #define CLASH_DETECTION */
+
+/* Define SHORTNAMES if the C compiler can distinguish only
+ short names. It means that the stuff in ../shortnames
+ must be run to convert the long names to short ones. */
+
+/* #define SHORTNAMES */
+
+/* We do NOT use the Berkeley (and usg5.2.2) interface to nlist. */
+
+/* #define NLIST_STRUCT */
+
+/* The file containing the kernel's symbol table is called /unix. */
+
+#define KERNEL_FILE "/unix"
+
+/* The symbol in the kernel where the load average is found
+ is named avenrun. */
+
+#define LDAV_SYMBOL "avenrun"
+
+/* Special itemss needed to make Emacs run on this system. */
+
+/*
+ * Make the sigsetmask function go away. Don't know what the
+ * ramifications of this are, but doesn't seem possible to
+ * emulate it properly anyway at this point.
+ */
+
+#define sigsetmask(mask) /* Null expansion */
+
+/* setjmp and longjmp can safely replace _setjmp and _longjmp,
+ but they will run slower. */
+
+#define _setjmp setjmp
+#define _longjmp longjmp
+
+/* On USG systems the system calls are interruptable by signals
+ that the user program has elected to catch. Thus the system call
+ must be retried in these cases. To handle this without massive
+ changes in the source code, we remap the standard system call names
+ to names for our own functions in sysdep.c that do the system call
+ with retries. */
+
+#define read sys_read
+#define open sys_open
+#define write sys_write
+
+#define INTERRUPTIBLE_OPEN
+#define INTERRUPTIBLE_IO
+
+/* On USG systems these have different names */
+
+#define index strchr
+#define rindex strrchr
+
+/* USG systems tend to put everything declared static
+ into the initialized data area, which becomes pure after dumping Emacs.
+ Foil this. Emacs carefully avoids static vars inside functions. */
+
+#undef static
+
+/* Compiler bug bites on many systems when default ADDR_CORRECT is used. */
+
+/* #define ADDR_CORRECT(x) (x) */
+
+#define LD_CMD cc
+
+/* Prevent -lg from being used for debugging. Not needed. */
+
+#define LIBS_DEBUG
+
+/* No need to specify -lc when linking. */
+
+#define LIB_STANDARD
+
+/* Use terminfo instead of termcap. */
+
+#define TERMINFO
+
+/* The following definition seems to be needed in AIX version 3.1.6.8.
+ It may not have been needed in certain earlier versions. */
+#define HAVE_TCATTR
+
+#define SYSTEM_MALLOC
+
+
+
diff --git a/src/s/bsd4-3.h b/src/s/bsd4-3.h
new file mode 100644
index 00000000000..e9754af045a
--- /dev/null
+++ b/src/s/bsd4-3.h
@@ -0,0 +1,129 @@
+/* Definitions file for GNU Emacs running on bsd 4.3
+ Copyright (C) 1985, 1986 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)
+any later version.
+
+GNU Emacs is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+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. */
+
+
+/*
+ * Define symbols to identify the version of Unix this is.
+ * Define all the symbols that apply correctly.
+ */
+
+#ifndef BSD4_3
+#define BSD 43 /* 4.3 * 10, as cpp doesn't do floats */
+#endif /* BSD4_3 */
+
+#ifndef BSD
+#define BSD4_3 1
+#endif /* BSD */
+
+/* SYSTEM_TYPE should indicate the kind of system you are using.
+ It sets the Lisp variable system-type. */
+
+#define SYSTEM_TYPE "berkeley-unix"
+
+/* nomultiplejobs should be defined if your system's shell
+ does not have "job control" (the ability to stop a program,
+ run some other program, then continue the first one). */
+
+/* #define NOMULTIPLEJOBS */
+
+/* Do not use interrupt_input = 1 by default, because in 4.3
+ we can make noninterrupt input work properly. */
+
+#undef INTERRUPT_INPUT
+
+/* First pty name is /dev/ptyp0. */
+
+#define FIRST_PTY_LETTER 'p'
+
+/*
+ * Define HAVE_TIMEVAL if the system supports the BSD style clock values.
+ * Look in <sys/time.h> for a timeval structure.
+ */
+
+#define HAVE_TIMEVAL
+
+/*
+ * Define HAVE_SELECT if the system supports the `select' system call.
+ */
+
+#define HAVE_SELECT
+
+/*
+ * Define HAVE_PTYS if the system supports pty devices.
+ */
+
+#define HAVE_PTYS
+
+/* Define this macro if system defines a type `union wait'. */
+
+#define HAVE_UNION_WAIT
+
+/* Define HAVE_SOCKETS if system supports 4.2-compatible sockets. */
+
+#define HAVE_SOCKETS
+
+/*
+ * Define NONSYSTEM_DIR_LIBRARY to make Emacs emulate
+ * The 4.2 opendir, etc., library functions.
+ */
+
+/* #define NONSYSTEM_DIR_LIBRARY */
+
+/* Define this symbol if your system has the functions bcopy, etc. */
+
+#define BSTRING
+
+/* subprocesses should be defined if you want to
+ have code for asynchronous subprocesses
+ (as used in M-x compile and M-x shell).
+ This is generally OS dependent, and not supported
+ under most USG systems. */
+
+#define subprocesses
+
+/* If your system uses COFF (Common Object File Format) then define the
+ preprocessor symbol "COFF". */
+
+/* #define COFF */
+
+/* define MAIL_USE_FLOCK if the mailer uses flock
+ to interlock access to /usr/spool/mail/$USER.
+ The alternative is that a lock file named
+ /usr/spool/mail/$USER.lock. */
+
+#define MAIL_USE_FLOCK
+
+/* Define CLASH_DETECTION if you want lock files to be written
+ so that Emacs can tell instantly when you try to modify
+ a file that someone else has modified in his Emacs. */
+
+#define CLASH_DETECTION
+
+/* We use the Berkeley (and usg5.2.2) interface to nlist. */
+
+#define NLIST_STRUCT
+
+/* The file containing the kernel's symbol table is called /vmunix. */
+
+#define KERNEL_FILE "/vmunix"
+
+/* The symbol in the kernel where the load average is found
+ is named _avenrun. */
+
+#define LDAV_SYMBOL "_avenrun"
diff --git a/src/s/hpux.h b/src/s/hpux.h
new file mode 100644
index 00000000000..5920a1c2180
--- /dev/null
+++ b/src/s/hpux.h
@@ -0,0 +1,260 @@
+/* Definitions file for GNU Emacs running on HPUX release 7.0.
+ Based on AT&T System V.2.
+ Copyright (C) 1985, 1986 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)
+any later version.
+
+GNU Emacs is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+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. */
+
+
+/*
+ * Define symbols to identify the version of Unix this is.
+ * Define all the symbols that apply correctly.
+ */
+
+#define USG /* System III, System V, etc */
+
+#define USG5
+
+#define HPUX
+
+/* SYSTEM_TYPE should indicate the kind of system you are using.
+ It sets the Lisp variable system-type. */
+
+#define SYSTEM_TYPE "hpux"
+
+/* `nomultiplejobs' should be defined if your system's shell
+ does not have "job control" (the ability to stop a program,
+ run some other program, then continue the first one).
+
+ On hpux this depends on the precise kind of machine in use,
+ so the m- file defines this symbol if appropriate. */
+
+/* Default is to set interrupt_input to 0: don't do input buffering within Emacs */
+
+/* #define INTERRUPT_INPUT */
+
+/* Letter to use in finding device name of first pty,
+ if system supports pty's. 'p' means it is /dev/ptym/ptyp0 */
+
+#define FIRST_PTY_LETTER 'p'
+
+/*
+ * Define HAVE_TERMIO if the system provides sysV-style ioctls
+ * for terminal control.
+ */
+
+#define HAVE_TERMIO
+
+/* Says to include time.h, and not include sys/time.h. */
+
+#define NEED_TIME_H
+
+/*
+ * Define HAVE_TIMEVAL if the system supports the BSD style clock values.
+ * Look in <sys/time.h> for a timeval structure.
+ */
+
+#define HAVE_TIMEVAL
+
+/* With HAVE_TIMEVAL define, Emacs expects to use `utimes'.
+ But HPUX does not have one. */
+
+#define MISSING_UTIMES
+
+/*
+ * Define HAVE_SELECT if the system supports the `select' system call.
+ */
+
+#define HAVE_SELECT
+
+/*
+ * Define HAVE_PTYS if the system supports pty devices.
+ */
+
+#define HAVE_PTYS
+
+/* Define HAVE_SOCKETS if system supports 4.2-compatible sockets. */
+
+#define HAVE_SOCKETS
+
+/*
+ * Define NONSYSTEM_DIR_LIBRARY to make Emacs emulate
+ * The 4.2 opendir, etc., library functions.
+ */
+
+/* #define NONSYSTEM_DIR_LIBRARY */
+
+/* Define this symbol if your system has the functions bcopy, etc.
+ * s800 and later versions of s300 (s200) kernels have equivilents
+ * of the BSTRING functions of BSD. If your s200 kernel doesn't have
+ * em comment out this section.
+ */
+
+#define BSTRING
+
+/* subprocesses should be defined if you want to
+ have code for asynchronous subprocesses
+ (as used in M-x compile and M-x shell).
+ This is generally OS dependent, and not supported
+ under most USG systems. */
+
+#define subprocesses
+
+/* If your system uses COFF (Common Object File Format) then define the
+ preprocessor symbol "COFF". */
+
+/* #define COFF */
+
+/* define MAIL_USE_FLOCK if the mailer uses flock
+ to interlock access to /usr/spool/mail/$USER.
+ The alternative is that a lock file named
+ /usr/spool/mail/$USER.lock. */
+
+/* #define MAIL_USE_FLOCK */
+
+/* Say we have the SYSV style of interprocess communication. */
+
+#define HAVE_SYSVIPC
+
+/* Define CLASH_DETECTION if you want lock files to be written
+ so that Emacs can tell instantly when you try to modify
+ a file that someone else has modified in his Emacs. */
+
+/* #define CLASH_DETECTION */
+
+/* Define SHORTNAMES if the C compiler can distinguish only
+ short names. It means that the stuff in ../shortnames
+ must be run to convert the long names to short ones.
+
+ Some USG systems support long names.
+ If yours is one, DO NOT change this file!
+ Do #undef SHORTNAMES in the m- file or in config.h. */
+
+/* #define SHORTNAMES */
+
+/* We use the Berkeley (and usg5.2.2) interface to nlist. */
+
+#define NLIST_STRUCT
+
+/* The file containing the kernel's symbol table is called /hp-ux. */
+
+#define KERNEL_FILE "/hp-ux"
+
+/* The symbol in the kernel where the load average is found
+ depends on the cpu type, so we let the m- files define LDAV_SYMBOL. */
+
+/* Special hacks needed to make Emacs run on this system. */
+
+/*
+ * Make the sigsetmask function go away. Don't know what the
+ * ramifications of this are, but doesn't seem possible to
+ * emulate it properly anyway at this point.
+ */
+
+/* HPUX has sigsetmask */
+/* #define sigsetmask(mask) / * Null expansion * / */
+
+/* setjmp and longjmp can safely replace _setjmp and _longjmp,
+ but they will run slower. */
+
+/* HP-UX has _setjmp and _longjmp */
+/*
+#define _setjmp setjmp
+#define _longjmp longjmp
+*/
+
+/* On USG systems the system calls are interruptable by signals
+ that the user program has elected to catch. Thus the system call
+ must be retried in these cases. To handle this without massive
+ changes in the source code, we remap the standard system call names
+ to names for our own functions in sysdep.c that do the system call
+ with retries. */
+
+#define read sys_read
+#define open sys_open
+#define write sys_write
+
+#define INTERRUPTIBLE_OPEN
+#define INTERRUPTIBLE_IO
+
+/* Use the system provided termcap(3) library */
+#define TERMINFO
+
+/* The 48-bit versions are more winning for Emacs. */
+
+#define rand lrand48
+#define srand srand48
+
+/* In hpux, the symbol SIGIO is defined, but the feature
+ does not really exist.
+
+ Here we assume that signal.h is included before config.h
+ so that we can override it here. */
+
+#undef SIGIO
+
+/* USG systems tend to put everything declared static
+ into the initialized data area, which becomes pure after dumping Emacs.
+ Foil this. Emacs carefully avoids static vars inside functions. */
+
+#define static
+
+/* Define extra libraries to load.
+ This should have -lBSD, but that library is said to make
+ `signal' fail to work. */
+
+#ifdef HPUX_NET
+#define LIBS_SYSTEM -ln
+#else
+#define LIBS_SYSTEM
+#endif
+
+/* Some additional system facilities exist. */
+
+#define HAVE_DUP2
+#define HAVE_GETTIMEOFDAY
+#define HAVE_VFORK
+#define HAVE_PERROR /* Delete this line for version 6. */
+
+/* The following maps shared exec file to demand loaded exec.
+ Don't do this as demand loaded exec is broken in hpux. */
+
+#if 0
+
+/* Adjust a header field for the executable file about to be dumped. */
+
+#define ADJUST_EXEC_HEADER \
+ hdr.a_magic = ((ohdr.a_magic.file_type == OLDMAGIC.file_type) ? \
+ NEWMAGIC : ohdr.a_magic);
+
+#endif
+
+/* Baud-rate values in tty status have nonstandard meanings. */
+
+#define BAUD_CONVERT \
+{ 0, 50, 75, 110, 135, 150, 200, 300, 600, 900, 1200, \
+ 1800, 2400, 3600, 4800, 7200, 9600, 19200, 38400 }
+
+/* This is needed for HPUX version 6.2; it may not be needed for 6.2.1. */
+#define SHORT_CAST_BUG
+
+/* This is how to get the device name of the tty end of a pty. */
+#define PTY_TTY_NAME_SPRINTF \
+ sprintf (ptyname, "/dev/pty/tty%c%x", c, i);
+
+/* This is how to get the device name of the control end of a pty. */
+#define PTY_NAME_SPRINTF \
+ sprintf (ptyname, "/dev/ptym/pty%c%x", c, i);
diff --git a/src/s/hpux8.h b/src/s/hpux8.h
new file mode 100644
index 00000000000..ac047147295
--- /dev/null
+++ b/src/s/hpux8.h
@@ -0,0 +1,13 @@
+/* system description file for hpux version 8.
+ This contains changes that were suggested "for the hp700".
+ They were not needed for the 800.
+ Our conjecture that they are needed for hpux version 8,
+ which is what runs on the 700. */
+
+#include "hpux.h"
+
+#define LIB_X11_LIB -L/usr/lib/X11R4 -lX11
+#define C_SWITCH_SYSTEM -I/usr/include/X11R4
+
+/* Don't use shared libraries. unexec doesn't handle them. */
+#define LD_SWITCH_SYSTEM -a archive
diff --git a/src/s/iris3-6.h b/src/s/iris3-6.h
new file mode 100644
index 00000000000..d295fe30cb4
--- /dev/null
+++ b/src/s/iris3-6.h
@@ -0,0 +1,193 @@
+/* Definitions file for GNU Emacs running on Silicon Graphics system 3.6.
+ Copyright (C) 1987 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)
+any later version.
+
+GNU Emacs is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+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. */
+
+
+/*
+ * Define symbols to identify the version of Unix this is.
+ * Define all the symbols that apply correctly.
+ */
+
+#define USG
+#define USG5
+#define IRIS
+
+/* SYSTEM_TYPE should indicate the kind of system you are using.
+ It sets the Lisp variable system-type. */
+
+#define SYSTEM_TYPE "irix"
+
+/* nomultiplejobs should be defined if your system's shell
+ does not have "job control" (the ability to stop a program,
+ run some other program, then continue the first one). */
+
+#define NOMULTIPLEJOBS
+
+/* Default is to set interrupt_input to 0: don't do input buffering within Emacs */
+
+/* #define INTERRUPT_INPUT */
+
+/* Letter to use in finding device name of first pty,
+ if system supports pty's. 'a' means it is /dev/ptya0 */
+
+#define FIRST_PTY_LETTER 'a'
+
+/*
+ * Define HAVE_TERMIO if the system provides sysV-style ioctls
+ * for terminal control.
+ */
+
+#define HAVE_TERMIO
+
+/*
+ * Define HAVE_TIMEVAL if the system supports the BSD style clock values.
+ * Look in <sys/time.h> for a timeval structure.
+ */
+
+#define HAVE_TIMEVAL
+
+/* `utime' system call doesn't understand timevals. */
+
+#define IRIS_UTIME
+
+/*
+ * Define HAVE_SELECT if the system supports the `select' system call.
+ */
+
+#define HAVE_SELECT
+
+/*
+ * Define HAVE_PTYS if the system supports pty devices.
+ */
+
+#define HAVE_PTYS
+
+/* Define HAVE_SOCKETS if system supports 4.2-compatible sockets. */
+
+#define HAVE_SOCKETS
+
+/*
+ * Define NONSYSTEM_DIR_LIBRARY to make Emacs emulate
+ * The 4.2 opendir, etc., library functions.
+ */
+
+/* #define NONSYSTEM_DIR_LIBRARY */
+
+/* Define this symbol if your system has the functions bcopy, etc. */
+
+#define BSTRING
+
+/* subprocesses should be defined if you want to
+ have code for asynchronous subprocesses
+ (as used in M-x compile and M-x shell).
+ This is generally OS dependent, and not supported
+ under most USG systems. */
+
+#define subprocesses
+
+/* If your system uses COFF (Common Object File Format) then define the
+ preprocessor symbol "COFF". */
+
+/* #define COFF */
+
+/* define MAIL_USE_FLOCK if the mailer uses flock
+ to interlock access to /usr/spool/mail/$USER.
+ The alternative is that a lock file named
+ /usr/spool/mail/$USER.lock. */
+
+/* #define MAIL_USE_FLOCK */
+
+/* Define CLASH_DETECTION if you want lock files to be written
+ so that Emacs can tell instantly when you try to modify
+ a file that someone else has modified in his Emacs. */
+
+/* #define CLASH_DETECTION */
+
+/* We use the Berkeley (and usg5.2.2) interface to nlist. */
+
+#define NLIST_STRUCT
+
+/* The file containing the kernel's symbol table is called /vmunix. */
+
+#define KERNEL_FILE "/vmunix"
+
+/* The symbol in the kernel where the load average is found
+ is named _avenrun. */
+
+#define LDAV_SYMBOL "_avenrun"
+
+
+/* Special hacks needed to make Emacs run on this system. */
+
+/*
+ * Make the sigsetmask function go away. Don't know what the
+ * ramifications of this are, but doesn't seem possible to
+ * emulate it properly anyway at this point.
+ */
+
+#define sigsetmask(mask) /* Null expansion */
+#define sigblock(x) x
+
+/* The IRIS defines SIGIO in signal.h, but doesn't implement it. */
+#undef SIGIO
+
+#define LIBS_MACHINE -lbsd -ldbm -lPW
+#define C_SWITCH_MACHINE -I/usr/include/bsd
+
+/* setjmp and longjmp can safely replace _setjmp and _longjmp,
+ but they will run slower. */
+
+#define _setjmp setjmp
+#define _longjmp longjmp
+
+/* On USG systems the system calls are interruptable by signals
+ that the user program has elected to catch. Thus the system call
+ must be retried in these cases. To handle this without massive
+ changes in the source code, we remap the standard system call names
+ to names for our own functions in sysdep.c that do the system call
+ with retries. */
+
+#define read sys_read
+#define open sys_open
+#define write sys_write
+
+#define INTERRUPTIBLE_OPEN
+#define INTERRUPTIBLE_IO
+
+/* On USG systems these have different names */
+
+#define index strchr
+#define rindex strrchr
+
+/* USG systems tend to put everything declared static
+ into the initialized data area, which becomes pure after dumping Emacs.
+ Foil this. Emacs carefully avoids static vars inside functions. */
+
+/* #define static */
+
+/* Compiler bug bites on many systems when default ADDR_CORRECT is used. */
+
+#define ADDR_CORRECT(x) (int)((char *)(x) - (char*)0)
+
+/* some errno.h's don't actually allocate the variable itself */
+
+#define NEED_ERRNO
+
+/* This is how to get the device name of the tty end of a pty. */
+#define PTY_TTY_NAME_SPRINTF \
+ sprintf (ptyname, "/dev/ttyq%d", minor (stb.st_rdev));
diff --git a/src/s/isc2-2.h b/src/s/isc2-2.h
new file mode 100644
index 00000000000..907974abd1f
--- /dev/null
+++ b/src/s/isc2-2.h
@@ -0,0 +1,13 @@
+/* system description file for Interactive (ISC) Unix version 2.2 on
+ the 386. */
+
+#include "usg5-3.h"
+
+#define HAVE_PTYS
+#define HAVE_RENAME
+#define HAVE_CLOSEDIR
+#define MAXNAMLEN 512
+#define LIB_STANDARD -lcposix -lc
+#define O_NDELAY O_NONBLOCK
+#define MEMORY_IN_STRING_H
+#undef SIGTSTP
diff --git a/src/s/rtu.h b/src/s/rtu.h
new file mode 100644
index 00000000000..273db7a3064
--- /dev/null
+++ b/src/s/rtu.h
@@ -0,0 +1,172 @@
+/* Definitions file for GNU Emacs running on RTU 3.0, ucb universe.
+ Copyright (C) 1986 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)
+any later version.
+
+GNU Emacs is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+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. */
+
+
+/*
+ * Define symbols to identify the version of Unix this is.
+ * Define all the symbols that apply correctly.
+ */
+
+#define BSD4_2
+#define BSD
+#define RTU
+
+/* SYSTEM_TYPE should indicate the kind of system you are using.
+ It sets the Lisp variable system-type. */
+
+#define SYSTEM_TYPE "rtu"
+
+/* NOMULTIPLEJOBS should be defined if your system's shell
+ does not have "job control" (the ability to stop a program,
+ run some other program, then continue the first one). */
+
+#define NOMULTIPLEJOBS
+
+/* Emacs can read input using SIGIO and buffering characters itself,
+ or using CBREAK mode and making C-g cause SIGINT.
+ The choice is controlled by the variable interrupt_input.
+ Define INTERRUPT_INPUT to make interrupt_input = 1 the default (use SIGIO)
+
+ SIGIO can be used only on systems that implement it (4.2 and 4.3).
+ CBREAK mode has two disadvatages
+ 1) At least in 4.2, it is impossible to handle the Meta key properly.
+ I hear that in system V this problem does not exist.
+ 2) Control-G causes output to be discarded.
+ I do not know whether this can be fixed in system V.
+
+ Another method of doing input is planned but not implemented.
+ It would have Emacs fork off a separate process
+ to read the input and send it to the true Emacs process
+ through a pipe.
+*/
+
+#undef INTERRUPT_INPUT
+
+/* Letter to use in finding device name of first pty,
+ if system supports pty's. 'a' means it is /dev/ptya0 */
+
+#define FIRST_PTY_LETTER 'z' /* i.e. no PTY_LETTERs */
+
+/*
+ * Define HAVE_TIMEVAL if the system supports the BSD style clock values.
+ * Look in <sys/time.h> for a timeval structure.
+ */
+
+#define HAVE_TIMEVAL
+
+/*
+ * Define HAVE_SELECT if the system supports the `select' system call.
+ */
+
+#define HAVE_SELECT
+
+/*
+ * Define HAVE_PTYS if the system supports pty devices.
+ */
+
+#define HAVE_PTYS
+
+/* Define this macro if system defines a type `union wait'. */
+
+#define HAVE_UNION_WAIT
+
+/* Define HAVE_SOCKETS if system supports 4.2-compatible sockets. */
+
+#define HAVE_SOCKETS
+
+/*
+ * Define NONSYSTEM_DIR_LIBRARY to make Emacs emulate
+ * The 4.2 opendir, etc., library functions.
+ */
+
+#define NONSYSTEM_DIR_LIBRARY
+
+/* Define this symbol if your system has the functions bcopy, etc. */
+/* The system library bcopy() is broken in RTU. For one thing, it expects
+ the length to be less than 64k. */
+#undef BSTRING
+
+/* subprocesses should be defined if you want to
+ have code for asynchronous subprocesses
+ (as used in M-x compile and M-x shell).
+ This is generally OS dependent, and not supported
+ under most USG systems. */
+
+#define subprocesses
+
+/* If your system uses COFF (Common Object File Format) then define the
+ preprocessor symbol "COFF". */
+
+#undef COFF
+
+/* define MAIL_USE_FLOCK if the mailer uses flock
+ to interlock access to /usr/spool/mail/$USER.
+ The alternative is that a lock file named
+ /usr/spool/mail/$USER.lock. */
+
+#undef MAIL_USE_FLOCK
+
+/* Define CLASH_DETECTION if you want lock files to be written
+ so that Emacs can tell instantly when you try to modify
+ a file that someone else has modified in his Emacs. */
+
+#undef CLASH_DETECTION
+
+/* We use the Berkeley (and usg5.2.2) interface to nlist. */
+
+#define NLIST_STRUCT
+
+/* The symbol in the kernel where the load average is found
+ is named _avenrun. */
+
+#define LDAV_SYMBOL "_avenrun"
+
+/* Special hacks needed to make Emacs run on this system. */
+
+/* On RTU systems (like USG) the system calls are interruptable by signals
+ that the user program has elected to catch. Thus the system call
+ must be retried in these cases. To handle this without massive
+ changes in the source code, we remap the standard system call names
+ to names for our own functions in sysdep.c that do the system call
+ with retries. */
+
+#define read sys_read
+#define open sys_open
+#define write sys_write
+
+#define INTERRUPTIBLE_OPEN
+#define INTERRUPTIBLE_IO
+
+/* The "fsync" call on RTU versions 3.0 and 3.1 is badly broken!
+ This hack below isn't the best solution, but without it this
+ program will cause the whole system to hang! !@#$#%$ Masscomp! */
+
+#define fsync(x) 0 /* "Comment out" fsync calls */
+
+/* RTU has IPC instead of Unix-domain sockets. */
+
+#define HAVE_SYSVIPC
+
+/* This is how to get the device name of the tty end of a pty. */
+#define PTY_TTY_NAME_SPRINTF \
+ sprintf (ptyname, "/dev/ttyp%x", i);
+
+/* This is how to get the device name of the control end of a pty. */
+#define PTY_NAME_SPRINTF \
+ sprintf (ptyname, "/dev/pty%x", i);
diff --git a/src/s/sunos4shr.h b/src/s/sunos4shr.h
new file mode 100644
index 00000000000..2b665513b19
--- /dev/null
+++ b/src/s/sunos4shr.h
@@ -0,0 +1,30 @@
+#include "bsd4-2.h"
+
+/* Say that the text segment of a.out includes the header;
+ the header actually occupies the first few bytes of the text segment
+ and is counted in hdr.a_text. */
+
+#define O_NDELAY FNDELAY /* Non-blocking I/O (4.2 style) */
+
+/* In SunOS 4.1, a static function called by tzsetwall reportedly
+ clears the byte just past an eight byte region it mallocs, corrupting
+ GNU malloc's memory pool. But Sun's malloc doesn't seem to mind. */
+
+#define SYSTEM_MALLOC
+
+/* Misleading! Actually gets loaded after crt0.o */
+#define START_FILES pre-crt0.o
+
+/*
+ * Kludge! can't get at symbol "start" in std crt0.o
+ * Who the #$%&* decided to remove the __ characters!
+ * Someone needs to fix this in sysdep.c with an #ifdef BROKEN_START in
+ * sysdep.c. We do not use this address so any value should do really. Still
+ * may need it in the future?
+ */
+#define BROKEN_START
+#define TEXT_START 0x2020
+
+#define UNEXEC unexsunos4.o
+#define RUN_TIME_REMAP
+#define LD_CMD cc
diff --git a/src/s/template.h b/src/s/template.h
new file mode 100644
index 00000000000..6cf4905db3e
--- /dev/null
+++ b/src/s/template.h
@@ -0,0 +1,143 @@
+/* Template for system description header files.
+ This file describes the parameters that system description files
+ should define or not.
+ Copyright (C) 1985, 1986 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)
+any later version.
+
+GNU Emacs is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+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. */
+
+
+/*
+ * Define symbols to identify the version of Unix this is.
+ * Define all the symbols that apply correctly.
+ */
+
+/* #define UNIPLUS */
+/* #define USG5 */
+/* #define USG */
+/* #define HPUX */
+/* #define UMAX */
+/* #define BSD4_1 */
+/* #define BSD4_2 */
+/* #define BSD4_3 */
+/* #define BSD */
+/* #define VMS */
+
+/* SYSTEM_TYPE should indicate the kind of system you are using.
+ It sets the Lisp variable system-type. */
+
+#define SYSTEM_TYPE "berkeley-unix"
+
+/* NOMULTIPLEJOBS should be defined if your system's shell
+ does not have "job control" (the ability to stop a program,
+ run some other program, then continue the first one). */
+
+/* #define NOMULTIPLEJOBS */
+
+/* Emacs can read input using SIGIO and buffering characters itself,
+ or using CBREAK mode and making C-g cause SIGINT.
+ The choice is controlled by the variable interrupt_input.
+ Define INTERRUPT_INPUT to make interrupt_input = 1 the default (use SIGIO)
+
+ SIGIO can be used only on systems that implement it (4.2 and 4.3).
+ CBREAK mode has two disadvatages
+ 1) At least in 4.2, it is impossible to handle the Meta key properly.
+ I hear that in system V this problem does not exist.
+ 2) Control-G causes output to be discarded.
+ I do not know whether this can be fixed in system V.
+
+ Another method of doing input is planned but not implemented.
+ It would have Emacs fork off a separate process
+ to read the input and send it to the true Emacs process
+ through a pipe.
+*/
+
+#define INTERRUPT_INPUT
+
+/* Letter to use in finding device name of first pty,
+ if system supports pty's. 'a' means it is /dev/ptya0 */
+
+#define FIRST_PTY_LETTER 'a'
+
+/*
+ * Define HAVE_TIMEVAL if the system supports the BSD style clock values.
+ * Look in <sys/time.h> for a timeval structure.
+ */
+
+#define HAVE_TIMEVAL
+
+/*
+ * Define HAVE_SELECT if the system supports the `select' system call.
+ */
+
+/* #define HAVE_SELECT */
+
+/*
+ * Define HAVE_PTYS if the system supports pty devices.
+ */
+
+#define HAVE_PTYS
+
+/*
+ * Define NONSYSTEM_DIR_LIBRARY to make Emacs emulate
+ * The 4.2 opendir, etc., library functions.
+ */
+
+#define NONSYSTEM_DIR_LIBRARY
+
+/* Define this symbol if your system has the functions bcopy, etc. */
+
+#define BSTRING
+
+/* subprocesses should be defined if you want to
+ have code for asynchronous subprocesses
+ (as used in M-x compile and M-x shell).
+ This is generally OS dependent, and not supported
+ under most USG systems. */
+
+#define subprocesses
+
+/* If your system uses COFF (Common Object File Format) then define the
+ preprocessor symbol "COFF". */
+
+/* #define COFF */
+
+/* define MAIL_USE_FLOCK if the mailer uses flock
+ to interlock access to /usr/spool/mail/$USER.
+ The alternative is that a lock file named
+ /usr/spool/mail/$USER.lock. */
+
+#define MAIL_USE_FLOCK
+
+/* Define CLASH_DETECTION if you want lock files to be written
+ so that Emacs can tell instantly when you try to modify
+ a file that someone else has modified in his Emacs. */
+
+#define CLASH_DETECTION
+
+/* Here, on a separate page, add any special hacks needed
+ to make Emacs work on this system. For example,
+ you might define certain system call names that don't
+ exist on your system, or that do different things on
+ your system and must be used only through an encapsulation
+ (Which you should place, by convention, in sysdep.c). */
+
+/* Some compilers tend to put everything declared static
+ into the initialized data area, which becomes pure after dumping Emacs.
+ On these systems, you must #define static as nothing to foil this.
+ Note that emacs carefully avoids static vars inside functions. */
+
+/* #define static */
diff --git a/src/s/usg5-3.h b/src/s/usg5-3.h
new file mode 100644
index 00000000000..c54ec479e65
--- /dev/null
+++ b/src/s/usg5-3.h
@@ -0,0 +1,215 @@
+/* Definitions file for GNU Emacs running on AT&T's System V Release 3
+ Copyright (C) 1987 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)
+any later version.
+
+GNU Emacs is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+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. */
+
+
+/*
+ * Define symbols to identify the version of Unix this is.
+ * Define all the symbols that apply correctly.
+ */
+
+#define USG /* System III, System V, etc */
+
+#define USG5
+
+/* SYSTEM_TYPE should indicate the kind of system you are using.
+ It sets the Lisp variable system-type. */
+
+#define SYSTEM_TYPE "usg-unix-v"
+
+/* nomultiplejobs should be defined if your system's shell
+ does not have "job control" (the ability to stop a program,
+ run some other program, then continue the first one). */
+
+#define NOMULTIPLEJOBS
+
+/* Default is to set interrupt_input to 0: don't do input buffering within Emacs */
+
+/* #define INTERRUPT_INPUT */
+
+/* Letter to use in finding device name of first pty,
+ if system supports pty's. 'p' means it is /dev/ptyp0 */
+
+#define FIRST_PTY_LETTER 'p'
+
+/*
+ * Define HAVE_TERMIO if the system provides sysV-style ioctls
+ * for terminal control.
+ */
+
+#define HAVE_TERMIO
+
+/*
+ * Define HAVE_TIMEVAL if the system supports the BSD style clock values.
+ * Look in <sys/time.h> for a timeval structure.
+ */
+
+/* #define HAVE_TIMEVAL */
+
+/*
+ * Define HAVE_SELECT if the system supports the `select' system call.
+ */
+
+/* #define HAVE_SELECT */
+
+/*
+ * Define HAVE_PTYS if the system supports pty devices.
+ */
+
+/* Some versions of V.3 have this, but not all.
+ #define HAVE_PTYS
+ #define SYSV_PTYS */
+
+/* Define HAVE_SOCKETS if system supports 4.2-compatible sockets. */
+
+/* #define HAVE_SOCKETS */
+
+/*
+ * Define NONSYSTEM_DIR_LIBRARY to make Emacs emulate
+ * The 4.2 opendir, etc., library functions.
+ */
+
+/* #define NONSYSTEM_DIR_LIBRARY */
+
+/*
+ * Define SYSV_SYSTEM_DIR to use the V.3 getdents/readir
+ * library functions. Almost, but not quite the same as
+ * the 4.2 functions
+ */
+#define SYSV_SYSTEM_DIR
+
+/* Define this symbol if your system has the functions bcopy, etc. */
+
+/* #define BSTRING */
+
+/* subprocesses should be defined if you want to
+ have code for asynchronous subprocesses
+ (as used in M-x compile and M-x shell).
+ This is supposed to work now on system V release 2. */
+
+#define subprocesses
+
+/* If your system uses COFF (Common Object File Format) then define the
+ preprocessor symbol "COFF". */
+
+#define COFF
+
+/* define MAIL_USE_FLOCK if the mailer uses flock
+ to interlock access to /usr/spool/mail/$USER.
+ The alternative is that a lock file named
+ /usr/spool/mail/$USER.lock. */
+
+/* #define MAIL_USE_FLOCK */
+
+/* Define CLASH_DETECTION if you want lock files to be written
+ so that Emacs can tell instantly when you try to modify
+ a file that someone else has modified in his Emacs. */
+
+/* #define CLASH_DETECTION */
+
+/* Define SHORTNAMES if the C compiler can distinguish only
+ short names. It means that the stuff in ../shortnames
+ must be run to convert the long names to short ones. */
+
+/* #define SHORTNAMES */
+
+/* We use the Berkeley (and usg5.2.2) interface to nlist. */
+
+#define NLIST_STRUCT
+
+/* The file containing the kernel's symbol table is called /unix. */
+
+#define KERNEL_FILE "/unix"
+
+/* The symbol in the kernel where the load average is found
+ is named avenrun. */
+
+#define LDAV_SYMBOL "avenrun"
+
+/* Define this if system V IPC is available. */
+
+#define HAVE_SYSVIPC
+
+/* Special hacks needed to make Emacs run on this system. */
+
+/*
+ * Make the sigsetmask function go away. Don't know what the
+ * ramifications of this are, but doesn't seem possible to
+ * emulate it properly anyway at this point.
+ */
+
+#define sigsetmask(mask) /* Null expansion */
+
+/* setjmp and longjmp can safely replace _setjmp and _longjmp,
+ but they will run slower. */
+
+#define _setjmp setjmp
+#define _longjmp longjmp
+
+/* On USG systems the system calls are interruptable by signals
+ that the user program has elected to catch. Thus the system call
+ must be retried in these cases. To handle this without massive
+ changes in the source code, we remap the standard system call names
+ to names for our own functions in sysdep.c that do the system call
+ with retries. */
+
+#define read sys_read
+#define write sys_write
+#define open sys_open
+#define close sys_close
+
+#define INTERRUPTIBLE_OPEN
+#define INTERRUPTIBLE_CLOSE
+#define INTERRUPTIBLE_IO
+
+/* On USG systems these have different names */
+
+#define index strchr
+#define rindex strrchr
+
+/* USG systems tend to put everything declared static
+ into the initialized data area, which becomes pure after dumping Emacs.
+ Foil this. Emacs carefully avoids static vars inside functions. */
+
+#define static
+
+/* Compiler bug bites on many systems when default ADDR_CORRECT is used. */
+
+#define ADDR_CORRECT(x) (x)
+
+/* Prevent -lg from being used for debugging. Not implemented? */
+
+#define LIBS_DEBUG
+
+/* Use terminfo instead of termcap. */
+
+#define TERMINFO
+
+/* X needs to talk on the network, so search the network library. */
+
+#define LIBX10_SYSTEM -lnsl_s
+#define LIBX11_SYSTEM -lnsl_s
+
+/* Some variants have TIOCGETC, but the structures to go with it
+ are not declared. */
+
+#define BROKEN_TIOCGETC
+
+/* Enable support for shared libraries in unexec. */
+
+#define USG_SHARED_LIBRARIES
diff --git a/src/s/usg5-4.h b/src/s/usg5-4.h
new file mode 100644
index 00000000000..817ff0644a8
--- /dev/null
+++ b/src/s/usg5-4.h
@@ -0,0 +1,163 @@
+/* Definitions file for GNU Emacs running on AT&T's System V Release 4
+ Copyright (C) 1987 Free Software Foundation, Inc.
+
+This file is part of GNU Emacs.
+
+GNU Emacs is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY. No author or distributor
+accepts responsibility to anyone for the consequences of using it
+or for whether it serves any particular purpose or works at all,
+unless he says so in writing. Refer to the GNU Emacs General Public
+License for full details.
+
+Everyone is granted permission to copy, modify and redistribute
+GNU Emacs, but only under the conditions described in the
+GNU Emacs General Public License. A copy of this license is
+supposed to have been given to you along with GNU Emacs so you
+can know your rights and responsibilities. It should be in a
+file named COPYING. Among other things, the copyright notice
+and this notice must be preserved on all copies. */
+
+/* This file written by James Van Artsdalen of Dell Computer Corporation.
+ * james@bigtex.cactus.org.
+ */
+
+/* Use the SysVr3 file for at least base configuration. */
+
+#include "usg5-3.h"
+
+#define USG5_4
+
+/* We do have multiple jobs. Handle ^Z. */
+
+#undef NOMULTIPLEJOBS
+
+/* If compiled by GNU C, we must have gnulib */
+
+#ifdef __GNUC__
+#define GNULIB /usr/local/lib/gcc-gnulib
+#define LIBS_DEBUG
+#else
+#define GNULIB
+#endif
+
+#define START_FILES pre-crt0.o /usr/ccs/lib/crt1.o /usr/ccs/lib/crti.o /usr/ccs/lib/values-Xt.o
+
+#define LIB_STANDARD GNULIB -lsocket -lnsl -lelf -lc /usr/ucblib/libucb.a /usr/ccs/lib/crtn.o
+
+#define DATA_SEG_BITS 0x08000000
+
+/* Use ptem.h to get structures related to windows. */
+
+#define NEED_PTEM_H
+
+/* Undump with ELF */
+
+#undef COFF
+
+#define UNEXEC unexelf.o
+
+/* Get FIONREAD from <sys/filio.h>. Get <sys/ttold.h> to get struct
+ * tchars. But get <termio.h> first to make sure ttold.h doesn't
+ * interfere. And don't try to use SIGIO yet.
+ */
+
+#ifdef emacs
+#include <sys/filio.h>
+#include <termio.h>
+#include <sys/ttold.h>
+#include <signal.h>
+#undef SIGIO
+#endif
+
+/* libc has this stuff, but not utimes. */
+
+#define HAVE_RENAME
+#define HAVE_SELECT
+#define HAVE_TIMEVAL
+#define HAVE_CLOSEDIR
+#define HAVE_GETTIMEOFDAY
+#define HAVE_DUP2
+
+#define USE_UTIME
+
+/* <sys/stat.h> *defines* stat(2) as a static function. If "static"
+ * is blank, then many files will have a public definition for stat(2).
+ */
+
+#undef static
+
+/* We need bss_end from emacs.c for undumping */
+
+#ifndef USG_SHARED_LIBRARIES
+#define USG_SHARED_LIBRARIES
+#endif
+
+/* We can support this */
+
+#define CLASH_DETECTION
+
+#define HAVE_PTYS
+#define HAVE_SETSID
+
+/* It is possible to receive SIGCHLD when there are no children
+ waiting, because a previous waitsys(2) cleaned up the carcass of child
+ without clearing the SIGCHLD pending info. So, use a non-blocking
+ wait3 instead, which maps to waitpid(2) in SysVr4. */
+
+#define HAVE_WAIT_HEADER
+#define WAITTYPE int
+#define wait3(status, options, rusage) \
+ waitpid((pid_t) -1, (status), (options))
+#define WRETCODE(w) (w >> 8)
+
+/* TIOCGPGRP is broken in SysVr4, so we can't send signals to PTY
+ subprocesses the usual way. But TIOCSIGNAL does work for PTYs, and
+ this is all we need. */
+
+#define TIOCSIGSEND TIOCSIGNAL
+
+/* This change means that we don't loop through allocate_pty too many
+ times in the (rare) event of a failure. */
+
+#undef FIRST_PTY_LETTER
+#define FIRST_PTY_LETTER 'z'
+
+/* This sets the name of the master side of the PTY. */
+
+#define PTY_NAME_SPRINTF strcpy (pty_name, "/dev/ptmx");
+
+/* This sets the name of the slave side of the PTY. On SysVr4,
+ grantpt(3) forks a subprocess, so keep sigchld_handler() from
+ intercepting that death. If any child but grantpt's should die
+ within, it should be caught after sigrelse(2). */
+
+#define PTY_TTY_NAME_SPRINTF \
+ { \
+ char *ptsname(), *ptyname; \
+ \
+ sighold(SIGCLD); \
+ if (grantpt(fd) == -1) \
+ fatal("could not grant slave pty"); \
+ sigrelse(SIGCLD); \
+ if (unlockpt(fd) == -1) \
+ fatal("could not unlock slave pty"); \
+ if (!(ptyname = ptsname(fd))) \
+ fatal ("could not enable slave pty"); \
+ strncpy(pty_name, ptyname, sizeof(pty_name)); \
+ pty_name[sizeof(pty_name) - 1] = 0; \
+ }
+
+/* Push various streams modules onto a PTY channel. */
+
+#define SETUP_SLAVE_PTY \
+ if (ioctl (xforkin, I_PUSH, "ptem") == -1) \
+ fatal ("ioctl I_PUSH ptem", errno); \
+ if (ioctl (xforkin, I_PUSH, "ldterm") == -1) \
+ fatal ("ioctl I_PUSH ldterm", errno); \
+ if (ioctl (xforkin, I_PUSH, "ttcompat") == -1) \
+ fatal ("ioctl I_PUSH ttcompat", errno);
+
+/* The definition of this in usg5-3.h is not needed in 5.4. */
+
+#undef LIBX11_SYSTEM