/* machine description file for AMD x86-64.
- Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
+ Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
+ Free Software Foundation, Inc.
This file is part of GNU Emacs.
-GNU Emacs is free software; you can redistribute it and/or modify
+GNU Emacs is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
+the Free Software Foundation, either version 3 of the License, 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
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, Inc., 51 Franklin Street, Fifth Floor,
-Boston, MA 02110-1301, USA. */
-
+along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
+
+#ifdef i386
+/* Although we're running on an amd64 kernel, we're actually compiling for
+ the x86 architecture. The user should probably have provided an
+ explicit --build to `configure', but if everything else than the kernel
+ is running in i386 mode, then the bug is really ours: we should have
+ guessed better. */
+#include "m/intel386.h"
+#else
/* The following line tells the configuration script what sort of
operating system this machine is likely to run.
#define BITS_PER_LONG 64
#define BITS_PER_EMACS_INT 64
-/* Define WORDS_BIG_ENDIAN iff lowest-numbered byte in a word
+/* Define WORDS_BIG_ENDIAN if lowest-numbered byte in a word
is the most significant byte. */
#undef WORDS_BIG_ENDIAN
#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 */
-
/* 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 */
/* __x86_64 defined automatically. */
-/* Use type int rather than a union, to represent Lisp_Object */
-/* This is desirable for most machines. */
-
-#define NO_UNION_TYPE
-
/* Define the type to use. */
#define EMACS_INT long
#define EMACS_UINT unsigned long
-#define SPECIAL_EMACS_INT
/* 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. */
+ This flag only matters if you use USE_LISP_UNION_TYPE. */
#define EXPLICIT_SIGN_EXTEND
#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 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 PNTR_COMPARISON_TYPE unsigned long
-
/* Define XPNTR to avoid or'ing with DATA_SEG_BITS */
#undef DATA_SEG_BITS
/* LIB_STANDARD and START_FILES set correctly in s/netbsd.h */
-#elif defined(sun)
+#elif defined(SOLARIS2)
#undef START_FILES
#undef LIB_STANDARD
-#else /* !__OpenBSD__ && !__FreeBSD__ && !__NetBSD__ && !sun */
-
-#undef START_FILES
-#ifdef HAVE_X86_64_LIB64_DIR
-#define START_FILES pre-crt0.o /usr/lib64/crt1.o /usr/lib64/crti.o
-#else
-#define START_FILES pre-crt0.o /usr/lib/crt1.o /usr/lib/crti.o
-#endif
-
+#else /* !__OpenBSD__ && !__FreeBSD__ && !__NetBSD__ && !SOLARIS2 */
/* The duplicate -lgcc is intentional in the definition of LIB_STANDARD.
The reason is that some functions in libgcc.a call functions from libc.a,
and some libc.a functions need functions from libgcc.a. Since most
versions of ld are one-pass linkers, we need to mention -lgcc twice,
or else we risk getting unresolved externals. */
+#undef START_FILES
#undef LIB_STANDARD
-#ifdef HAVE_X86_64_LIB64_DIR
+#ifdef HAVE_LIB64_DIR
+#define START_FILES pre-crt0.o /usr/lib64/crt1.o /usr/lib64/crti.o
#define LIB_STANDARD -lgcc -lc -lgcc /usr/lib64/crtn.o
#else
+#define START_FILES pre-crt0.o /usr/lib/crt1.o /usr/lib/crti.o
#define LIB_STANDARD -lgcc -lc -lgcc /usr/lib/crtn.o
#endif
#endif /* __FreeBSD__ */
+#endif /* !i386 */
/* arch-tag: 8a5e001d-e12e-4692-a3a6-0b15ba271c6e
(do not change this comment) */