diff options
| author | Paul Eggert | 2012-05-22 09:20:27 -0700 |
|---|---|---|
| committer | Paul Eggert | 2012-05-22 09:20:27 -0700 |
| commit | 34374650303af0e59ab406b516b91f13d7eb28d3 (patch) | |
| tree | 85bf43c2209e27f9692b261c6cfbf109eb978378 /src | |
| parent | a86e87a6ae7341c7b2581e84df8bdd51867b98a3 (diff) | |
| download | emacs-34374650303af0e59ab406b516b91f13d7eb28d3.tar.gz emacs-34374650303af0e59ab406b516b91f13d7eb28d3.zip | |
Remove src/m/*.
* configure.in: Remove all mention of src/m/*.
(machine, machfile, M_FILE, config_machfile, and_machfile): Remove.
All uses removed.
(BITS_PER_CHAR, BITS_PER_SHORT, BITS_PER_INT, BITS_PER_LONG)
(BITS_PER_LONG_LONG): Move to src/lisp.h.
* lib/makefile.w32-in: Remove dependencies on
$(EMACS_ROOT)/src/m/intel386.h.
* make-dist: Don't make links to src/m.
* admin/CPP-DEFINES: Do not mention src/m/*.h.
(BITS_PER_EMACS_INT, BITS_PER_LONG, BITS_PER_CHAR)
(BITS_PER_SHORT, BITS_PER_INT): Remove.
* admin/MAINTAINERS: Remove src/m/.
* lib-src/makefile.w32-in: Remove dependencies on
$(EMACS_ROOT)/src/m/intel386.h.
* msdos/mainmake.v2 (TAGS tags): Don't look at $(CURDIR)/src/m/intel386.h.
* nt/config.nt: Do not include "m/intel386.h"; file was removed.
(BITS_PER_CHAR, BITS_PER_SHORT, BITS_PER_INT, BITS_PER_LONG):
Move to src/lisp.h.
(EMACS_INT_MAX): New macro.
This directory predates autoconf and is no longer needed nowadays.
Move its few remaining bits of functionality to where they're needed.
* src/m/README, src/m/alpha.h, src/m/amdx86-64.h, src/m/ia64.h, src/m/ibmrs6000.h:
* src/m/ibms390x.h, src/m/intel386.h, src/m/m68k.h, src/m/macppc.h:
* src/m/sparc.h, src/m/template.h: Remove.
* src/Makefile.in (M_FILE): Remove. All uses removed.
* src/alloc.c (POINTERS_MIGHT_HIDE_IN_OBJECTS):
* src/lisp.h (USE_LSB_TAG):
* src/mem-limits.h (EXCEEDS_LISP_PTR):
Use VAL_MAX, not VALBITS, in #if.
* src/lisp.h (EMACS_INT_MAX): New macro, useful in #if.
(EMACS_UINT): Define unconditionally now.
(BITS_PER_CHAR, BITS_PER_SHORT, BITS_PER_INT, BITS_PER_LONG)
(BITS_PER_EMACS_INT): New constants, replacing
what used to be in config.h, but not useful in #if.
(GCTYPEBITS, VALBITS): Define unconditionally, since m/* files don't
define them any more.
(VAL_MAX): New macro.
(VALMASK): Use it.
* src/puresize.h (PURESIZE_RATIO): Use EMACS_INT_MAX, not
BITS_PER_EMACS_INT, in #if.
* src/s/aix4-2.h (BROKEN_FIONREAD, BROKEN_SIGAIO, BROKEN_SIGPTY)
(BROKEN_SIGPOLL): Move here from m/ibmrs6000.h, which was removed.
* src/s/gnu-linux.h (ULIMIT_BREAK_VALUE) [__i386__]:
* src/s/ms-w32.h (DATA_START):
Move here from removed file m/intel386.h.
* src/s/gnu.h (NLIST_STRUCT): Remove undef; 'configure' does this.
* src/s/irix6-5.h (_LP64): Remove; lisp.h no longer needs this.
Diffstat (limited to 'src')
| -rw-r--r-- | src/ChangeLog | 32 | ||||
| -rw-r--r-- | src/Makefile.in | 7 | ||||
| -rw-r--r-- | src/alloc.c | 4 | ||||
| -rw-r--r-- | src/lisp.h | 45 | ||||
| -rw-r--r-- | src/m/README | 7 | ||||
| -rw-r--r-- | src/m/alpha.h | 53 | ||||
| -rw-r--r-- | src/m/amdx86-64.h | 35 | ||||
| -rw-r--r-- | src/m/ia64.h | 32 | ||||
| -rw-r--r-- | src/m/ibmrs6000.h | 46 | ||||
| -rw-r--r-- | src/m/ibms390x.h | 32 | ||||
| -rw-r--r-- | src/m/intel386.h | 29 | ||||
| -rw-r--r-- | src/m/m68k.h | 32 | ||||
| -rw-r--r-- | src/m/macppc.h | 24 | ||||
| -rw-r--r-- | src/m/sparc.h | 30 | ||||
| -rw-r--r-- | src/m/template.h | 34 | ||||
| -rw-r--r-- | src/mem-limits.h | 2 | ||||
| -rw-r--r-- | src/puresize.h | 2 | ||||
| -rw-r--r-- | src/s/aix4-2.h | 11 | ||||
| -rw-r--r-- | src/s/gnu-linux.h | 6 | ||||
| -rw-r--r-- | src/s/gnu.h | 2 | ||||
| -rw-r--r-- | src/s/irix6-5.h | 4 | ||||
| -rw-r--r-- | src/s/ms-w32.h | 2 |
22 files changed, 86 insertions, 385 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index 3054f4a284f..784544bae6d 100644 --- a/src/ChangeLog +++ b/src/ChangeLog | |||
| @@ -1,3 +1,35 @@ | |||
| 1 | 2012-05-22 Paul Eggert <eggert@cs.ucla.edu> | ||
| 2 | |||
| 3 | Remove src/m/*. | ||
| 4 | This directory predates autoconf and is no longer needed nowadays. | ||
| 5 | Move its few remaining bits of functionality to where they're needed. | ||
| 6 | * m/README, m/alpha.h, m/amdx86-64.h, m/ia64.h, m/ibmrs6000.h: | ||
| 7 | * m/ibms390x.h, m/intel386.h, m/m68k.h, m/macppc.h, m/sparc.h: | ||
| 8 | * m/template.h: Remove. | ||
| 9 | * Makefile.in (M_FILE): Remove. All uses removed. | ||
| 10 | * alloc.c (POINTERS_MIGHT_HIDE_IN_OBJECTS): | ||
| 11 | * lisp.h (USE_LSB_TAG): | ||
| 12 | * mem-limits.h (EXCEEDS_LISP_PTR): | ||
| 13 | Use VAL_MAX, not VALBITS, in #if. | ||
| 14 | * lisp.h (EMACS_INT_MAX): New macro, useful in #if. | ||
| 15 | (EMACS_UINT): Define unconditionally now. | ||
| 16 | (BITS_PER_CHAR, BITS_PER_SHORT, BITS_PER_INT, BITS_PER_LONG) | ||
| 17 | (BITS_PER_EMACS_INT): New constants, replacing | ||
| 18 | what used to be in config.h, but not useful in #if. | ||
| 19 | (GCTYPEBITS, VALBITS): Define unconditionally, since m/* files don't | ||
| 20 | define them any more. | ||
| 21 | (VAL_MAX): New macro. | ||
| 22 | (VALMASK): Use it. | ||
| 23 | * puresize.h (PURESIZE_RATIO): Use EMACS_INT_MAX, not | ||
| 24 | BITS_PER_EMACS_INT, in #if. | ||
| 25 | * s/aix4-2.h (BROKEN_FIONREAD, BROKEN_SIGAIO, BROKEN_SIGPTY) | ||
| 26 | (BROKEN_SIGPOLL): Move here from m/ibmrs6000.h, which was removed. | ||
| 27 | * s/gnu-linux.h (ULIMIT_BREAK_VALUE) [__i386__]: | ||
| 28 | * s/ms-w32.h (DATA_START): | ||
| 29 | Move here from removed file m/intel386.h. | ||
| 30 | * s/gnu.h (NLIST_STRUCT): Remove undef; 'configure' does this. | ||
| 31 | * s/irix6-5.h (_LP64): Remove; lisp.h no longer needs this. | ||
| 32 | |||
| 1 | 2012-05-21 Paul Eggert <eggert@cs.ucla.edu> | 33 | 2012-05-21 Paul Eggert <eggert@cs.ucla.edu> |
| 2 | 34 | ||
| 3 | Assume C89 or later. | 35 | Assume C89 or later. |
diff --git a/src/Makefile.in b/src/Makefile.in index dd667ea60a3..27199578fc0 100644 --- a/src/Makefile.in +++ b/src/Makefile.in | |||
| @@ -56,9 +56,8 @@ lwlibdir = ../lwlib | |||
| 56 | lispdir = ../lisp | 56 | lispdir = ../lisp |
| 57 | 57 | ||
| 58 | # Configuration files for .o files to depend on. | 58 | # Configuration files for .o files to depend on. |
| 59 | M_FILE = @M_FILE@ | ||
| 60 | S_FILE = @S_FILE@ | 59 | S_FILE = @S_FILE@ |
| 61 | config_h = config.h $(M_FILE) $(S_FILE) | 60 | config_h = config.h $(S_FILE) |
| 62 | 61 | ||
| 63 | bootstrap_exe = $(abs_builddir)/bootstrap-emacs$(EXEEXT) | 62 | bootstrap_exe = $(abs_builddir)/bootstrap-emacs$(EXEEXT) |
| 64 | 63 | ||
| @@ -534,10 +533,10 @@ extraclean: distclean | |||
| 534 | ctagsfiles1 = [xyzXYZ]*.[hcm] | 533 | ctagsfiles1 = [xyzXYZ]*.[hcm] |
| 535 | ctagsfiles2 = [a-wA-W]*.[hcm] | 534 | ctagsfiles2 = [a-wA-W]*.[hcm] |
| 536 | 535 | ||
| 537 | TAGS: $(srcdir)/$(ctagsfiles1) $(srcdir)/$(ctagsfiles2) $(M_FILE) $(S_FILE) | 536 | TAGS: $(srcdir)/$(ctagsfiles1) $(srcdir)/$(ctagsfiles2) $(S_FILE) |
| 538 | ../lib-src/etags --include=TAGS-LISP --include=$(lwlibdir)/TAGS \ | 537 | ../lib-src/etags --include=TAGS-LISP --include=$(lwlibdir)/TAGS \ |
| 539 | --regex='/[ ]*DEFVAR_[A-Z_ (]+"\([^"]+\)"/' \ | 538 | --regex='/[ ]*DEFVAR_[A-Z_ (]+"\([^"]+\)"/' \ |
| 540 | $(srcdir)/$(ctagsfiles1) $(srcdir)/$(ctagsfiles2) $(M_FILE) $(S_FILE) | 539 | $(srcdir)/$(ctagsfiles1) $(srcdir)/$(ctagsfiles2) $(S_FILE) |
| 541 | frc: | 540 | frc: |
| 542 | TAGS-LISP: frc | 541 | TAGS-LISP: frc |
| 543 | $(MAKE) -f $(lispdir)/Makefile TAGS-LISP ETAGS=../lib-src/etags | 542 | $(MAKE) -f $(lispdir)/Makefile TAGS-LISP ETAGS=../lib-src/etags |
diff --git a/src/alloc.c b/src/alloc.c index 3601c256c41..1f422a6d3b0 100644 --- a/src/alloc.c +++ b/src/alloc.c | |||
| @@ -4297,8 +4297,8 @@ mark_maybe_pointer (void *p) | |||
| 4297 | wider than a pointer might allocate a Lisp_Object in non-adjacent halves. | 4297 | wider than a pointer might allocate a Lisp_Object in non-adjacent halves. |
| 4298 | If USE_LSB_TAG, the bottom half is not a valid pointer, but it should | 4298 | If USE_LSB_TAG, the bottom half is not a valid pointer, but it should |
| 4299 | suffice to widen it to to a Lisp_Object and check it that way. */ | 4299 | suffice to widen it to to a Lisp_Object and check it that way. */ |
| 4300 | #if defined USE_LSB_TAG || UINTPTR_MAX >> VALBITS != 0 | 4300 | #if defined USE_LSB_TAG || VAL_MAX < UINTPTR_MAX |
| 4301 | # if !defined USE_LSB_TAG && UINTPTR_MAX >> VALBITS >> GCTYPEBITS != 0 | 4301 | # if !defined USE_LSB_TAG && VAL_MAX < UINTPTR_MAX >> GCTYPEBITS |
| 4302 | /* If tag bits straddle pointer-word boundaries, neither mark_maybe_pointer | 4302 | /* If tag bits straddle pointer-word boundaries, neither mark_maybe_pointer |
| 4303 | nor mark_maybe_object can follow the pointers. This should not occur on | 4303 | nor mark_maybe_object can follow the pointers. This should not occur on |
| 4304 | any practical porting target. */ | 4304 | any practical porting target. */ |
diff --git a/src/lisp.h b/src/lisp.h index fd5219adf4c..bb9e6ed3825 100644 --- a/src/lisp.h +++ b/src/lisp.h | |||
| @@ -41,25 +41,36 @@ extern void check_cons_list (void); | |||
| 41 | Build with CFLAGS='-DWIDE_EMACS_INT' to try them out. */ | 41 | Build with CFLAGS='-DWIDE_EMACS_INT' to try them out. */ |
| 42 | /* #undef WIDE_EMACS_INT */ | 42 | /* #undef WIDE_EMACS_INT */ |
| 43 | 43 | ||
| 44 | /* These are default choices for the types to use. */ | 44 | /* EMACS_INT - signed integer wide enough to hold an Emacs value |
| 45 | EMACS_INT_MAX - maximum value of EMACS_INT; can be used in #if | ||
| 46 | pI - printf length modifier for EMACS_INT | ||
| 47 | EMACS_UINT - unsigned variant of EMACS_INT */ | ||
| 45 | #ifndef EMACS_INT | 48 | #ifndef EMACS_INT |
| 46 | # if BITS_PER_LONG < BITS_PER_LONG_LONG && defined WIDE_EMACS_INT | 49 | # if LONG_MAX < LLONG_MAX && defined WIDE_EMACS_INT |
| 47 | # define EMACS_INT long long | 50 | # define EMACS_INT long long |
| 48 | # define BITS_PER_EMACS_INT BITS_PER_LONG_LONG | 51 | # define EMACS_INT_MAX LLONG_MAX |
| 49 | # define pI "ll" | 52 | # define pI "ll" |
| 50 | # elif BITS_PER_INT < BITS_PER_LONG | 53 | # elif INT_MAX < LONG_MAX |
| 51 | # define EMACS_INT long | 54 | # define EMACS_INT long |
| 52 | # define BITS_PER_EMACS_INT BITS_PER_LONG | 55 | # define EMACS_INT_MAX LONG_MAX |
| 53 | # define pI "l" | 56 | # define pI "l" |
| 54 | # else | 57 | # else |
| 55 | # define EMACS_INT int | 58 | # define EMACS_INT int |
| 56 | # define BITS_PER_EMACS_INT BITS_PER_INT | 59 | # define EMACS_INT_MAX INT_MAX |
| 57 | # define pI "" | 60 | # define pI "" |
| 58 | # endif | 61 | # endif |
| 59 | #endif | 62 | #endif |
| 60 | #ifndef EMACS_UINT | 63 | #define EMACS_UINT unsigned EMACS_INT |
| 61 | # define EMACS_UINT unsigned EMACS_INT | 64 | |
| 62 | #endif | 65 | /* Number of bits in some machine integer types. */ |
| 66 | enum | ||
| 67 | { | ||
| 68 | BITS_PER_CHAR = CHAR_BIT, | ||
| 69 | BITS_PER_SHORT = CHAR_BIT * sizeof (short), | ||
| 70 | BITS_PER_INT = CHAR_BIT * sizeof (int), | ||
| 71 | BITS_PER_LONG = CHAR_BIT * sizeof (long int), | ||
| 72 | BITS_PER_EMACS_INT = CHAR_BIT * sizeof (EMACS_INT) | ||
| 73 | }; | ||
| 63 | 74 | ||
| 64 | /* printmax_t and uprintmax_t are types for printing large integers. | 75 | /* printmax_t and uprintmax_t are types for printing large integers. |
| 65 | These are the widest integers that are supported for printing. | 76 | These are the widest integers that are supported for printing. |
| @@ -164,13 +175,13 @@ extern int suppress_checking EXTERNALLY_VISIBLE; | |||
| 164 | variable VAR of type TYPE with the added requirement that it be | 175 | variable VAR of type TYPE with the added requirement that it be |
| 165 | TYPEBITS-aligned. */ | 176 | TYPEBITS-aligned. */ |
| 166 | 177 | ||
| 167 | #ifndef GCTYPEBITS | ||
| 168 | #define GCTYPEBITS 3 | 178 | #define GCTYPEBITS 3 |
| 169 | #endif | ||
| 170 | |||
| 171 | #ifndef VALBITS | ||
| 172 | #define VALBITS (BITS_PER_EMACS_INT - GCTYPEBITS) | 179 | #define VALBITS (BITS_PER_EMACS_INT - GCTYPEBITS) |
| 173 | #endif | 180 | |
| 181 | /* The maximum value that can be stored in a EMACS_INT, assuming all | ||
| 182 | bits other than the type bits contribute to a nonnegative signed value. | ||
| 183 | This can be used in #if, e.g., '#if VAL_MAX < UINTPTR_MAX' below. */ | ||
| 184 | #define VAL_MAX (EMACS_INT_MAX >> (GCTYPEBITS - 1)) | ||
| 174 | 185 | ||
| 175 | #ifndef NO_DECL_ALIGN | 186 | #ifndef NO_DECL_ALIGN |
| 176 | # ifndef DECL_ALIGN | 187 | # ifndef DECL_ALIGN |
| @@ -195,12 +206,12 @@ extern int suppress_checking EXTERNALLY_VISIBLE; | |||
| 195 | || defined DARWIN_OS || defined __sun) | 206 | || defined DARWIN_OS || defined __sun) |
| 196 | /* We also need to be able to specify mult-of-8 alignment on static vars. */ | 207 | /* We also need to be able to specify mult-of-8 alignment on static vars. */ |
| 197 | # if defined DECL_ALIGN | 208 | # if defined DECL_ALIGN |
| 198 | /* On hosts where VALBITS is greater than the pointer width in bits, | 209 | /* On hosts where pointers-as-ints do not exceed VAL_MAX, |
| 199 | USE_LSB_TAG is: | 210 | USE_LSB_TAG is: |
| 200 | a. unnecessary, because the top bits of an EMACS_INT are unused, and | 211 | a. unnecessary, because the top bits of an EMACS_INT are unused, and |
| 201 | b. slower, because it typically requires extra masking. | 212 | b. slower, because it typically requires extra masking. |
| 202 | So, define USE_LSB_TAG only on hosts where it might be useful. */ | 213 | So, define USE_LSB_TAG only on hosts where it might be useful. */ |
| 203 | # if UINTPTR_MAX >> VALBITS != 0 | 214 | # if VAL_MAX < UINTPTR_MAX |
| 204 | # define USE_LSB_TAG | 215 | # define USE_LSB_TAG |
| 205 | # endif | 216 | # endif |
| 206 | # endif | 217 | # endif |
| @@ -479,7 +490,7 @@ enum pvec_type | |||
| 479 | 490 | ||
| 480 | #else /* not USE_LSB_TAG */ | 491 | #else /* not USE_LSB_TAG */ |
| 481 | 492 | ||
| 482 | #define VALMASK ((((EMACS_INT) 1) << VALBITS) - 1) | 493 | #define VALMASK VAL_MAX |
| 483 | 494 | ||
| 484 | /* One need to override this if there must be high bits set in data space | 495 | /* One need to override this if there must be high bits set in data space |
| 485 | (doing the result of the below & ((1 << (GCTYPE + 1)) - 1) would work | 496 | (doing the result of the below & ((1 << (GCTYPE + 1)) - 1) would work |
diff --git a/src/m/README b/src/m/README deleted file mode 100644 index ad91167648e..00000000000 --- a/src/m/README +++ /dev/null | |||
| @@ -1,7 +0,0 @@ | |||
| 1 | This directory contains C header files containing machine-specific | ||
| 2 | definitions. Each file describes a particular machine. The emacs | ||
| 3 | configuration script edits ../config.h to include the appropriate one of | ||
| 4 | these files, and then each emacs source file includes config.h. | ||
| 5 | |||
| 6 | template.h is a generic template for machine descriptions; it | ||
| 7 | describes the parameters a machine file can specify. | ||
diff --git a/src/m/alpha.h b/src/m/alpha.h deleted file mode 100644 index 2a97a3d5b0c..00000000000 --- a/src/m/alpha.h +++ /dev/null | |||
| @@ -1,53 +0,0 @@ | |||
| 1 | /* Machine description file for the alpha chip. | ||
| 2 | |||
| 3 | Copyright (C) 1994, 1997, 1999, 2001-2012 Free Software Foundation, Inc. | ||
| 4 | |||
| 5 | Author: Rainer Schoepf | ||
| 6 | (according to authors.el) | ||
| 7 | |||
| 8 | This file is part of GNU Emacs. | ||
| 9 | |||
| 10 | GNU Emacs is free software: you can redistribute it and/or modify | ||
| 11 | it under the terms of the GNU General Public License as published by | ||
| 12 | the Free Software Foundation, either version 3 of the License, or | ||
| 13 | (at your option) any later version. | ||
| 14 | |||
| 15 | GNU Emacs is distributed in the hope that it will be useful, | ||
| 16 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 17 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 18 | GNU General Public License for more details. | ||
| 19 | |||
| 20 | You should have received a copy of the GNU General Public License | ||
| 21 | along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ | ||
| 22 | |||
| 23 | #ifndef _LP64 | ||
| 24 | #define _LP64 /* This doesn't appear to be necessary on OSF 4/5 -- fx. */ | ||
| 25 | #endif | ||
| 26 | |||
| 27 | /* Now define a symbol for the cpu type, if your compiler | ||
| 28 | does not define it automatically. */ | ||
| 29 | /* __alpha defined automatically */ | ||
| 30 | |||
| 31 | |||
| 32 | #ifdef __ELF__ | ||
| 33 | |||
| 34 | #if !defined (GNU_LINUX) && !defined (__NetBSD__) | ||
| 35 | #define DATA_START 0x140000000 | ||
| 36 | #endif | ||
| 37 | |||
| 38 | #else /* not __ELF__ */ | ||
| 39 | |||
| 40 | /* Describe layout of the address space in an executing process. */ | ||
| 41 | #define DATA_START 0x140000000 | ||
| 42 | |||
| 43 | #endif /* __ELF__ */ | ||
| 44 | |||
| 45 | /* On the Alpha it's best to avoid including TERMIO since struct | ||
| 46 | termio and struct termios are mutually incompatible. */ | ||
| 47 | #define NO_TERMIO | ||
| 48 | |||
| 49 | /* Many Alpha implementations (e.g. gas 2.8) can't handle DBL_MIN: | ||
| 50 | they generate code that uses a signaling NaN instead of DBL_MIN. | ||
| 51 | Define DBL_MIN_REPLACEMENT to be the next value larger than DBL_MIN: | ||
| 52 | this avoids the assembler bug. */ | ||
| 53 | #define DBL_MIN_REPLACEMENT 2.2250738585072019e-308 | ||
diff --git a/src/m/amdx86-64.h b/src/m/amdx86-64.h deleted file mode 100644 index f0482c733f9..00000000000 --- a/src/m/amdx86-64.h +++ /dev/null | |||
| @@ -1,35 +0,0 @@ | |||
| 1 | /* machine description file for AMD x86-64. | ||
| 2 | |||
| 3 | Copyright (C) 2002-2012 Free Software Foundation, Inc. | ||
| 4 | |||
| 5 | This file is part of GNU Emacs. | ||
| 6 | |||
| 7 | GNU Emacs is free software: you can redistribute it and/or modify | ||
| 8 | it under the terms of the GNU General Public License as published by | ||
| 9 | the Free Software Foundation, either version 3 of the License, or | ||
| 10 | (at your option) any later version. | ||
| 11 | |||
| 12 | GNU Emacs is distributed in the hope that it will be useful, | ||
| 13 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 14 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 15 | GNU General Public License for more details. | ||
| 16 | |||
| 17 | You should have received a copy of the GNU General Public License | ||
| 18 | along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ | ||
| 19 | |||
| 20 | #define BITS_PER_LONG 64 | ||
| 21 | #define BITS_PER_EMACS_INT 64 | ||
| 22 | |||
| 23 | /* Now define a symbol for the cpu type, if your compiler | ||
| 24 | does not define it automatically: | ||
| 25 | Ones defined so far include vax, m68000, ns16000, pyramid, | ||
| 26 | orion, tahoe, APOLLO and many others */ | ||
| 27 | /* __x86_64 defined automatically. */ | ||
| 28 | |||
| 29 | /* Define the type to use. */ | ||
| 30 | #define EMACS_INT long | ||
| 31 | #define pI "l" | ||
| 32 | #define EMACS_UINT unsigned long | ||
| 33 | |||
| 34 | /* Define XPNTR to avoid or'ing with DATA_SEG_BITS */ | ||
| 35 | #undef DATA_SEG_BITS | ||
diff --git a/src/m/ia64.h b/src/m/ia64.h deleted file mode 100644 index 47df94cedd0..00000000000 --- a/src/m/ia64.h +++ /dev/null | |||
| @@ -1,32 +0,0 @@ | |||
| 1 | /* machine description file for the IA-64 architecture. | ||
| 2 | |||
| 3 | Copyright (C) 2000-2012 Free Software Foundation, Inc. | ||
| 4 | |||
| 5 | Contributed by David Mosberger <davidm@hpl.hp.com> | ||
| 6 | |||
| 7 | This file is part of GNU Emacs. | ||
| 8 | |||
| 9 | GNU Emacs is free software: you can redistribute it and/or modify | ||
| 10 | it under the terms of the GNU General Public License as published by | ||
| 11 | the Free Software Foundation, either version 3 of the License, or | ||
| 12 | (at your option) any later version. | ||
| 13 | |||
| 14 | GNU Emacs is distributed in the hope that it will be useful, | ||
| 15 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 16 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 17 | GNU General Public License for more details. | ||
| 18 | |||
| 19 | You should have received a copy of the GNU General Public License | ||
| 20 | along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ | ||
| 21 | |||
| 22 | #define BITS_PER_LONG 64 | ||
| 23 | #define BITS_PER_EMACS_INT 64 | ||
| 24 | |||
| 25 | /* Now define a symbol for the cpu type, if your compiler | ||
| 26 | does not define it automatically. */ | ||
| 27 | /* __ia64__ defined automatically */ | ||
| 28 | |||
| 29 | /* Define the type to use. */ | ||
| 30 | #define EMACS_INT long | ||
| 31 | #define pI "l" | ||
| 32 | #define EMACS_UINT unsigned long | ||
diff --git a/src/m/ibmrs6000.h b/src/m/ibmrs6000.h deleted file mode 100644 index 9798ad2d3d7..00000000000 --- a/src/m/ibmrs6000.h +++ /dev/null | |||
| @@ -1,46 +0,0 @@ | |||
| 1 | /* R2 AIX machine/system dependent defines | ||
| 2 | |||
| 3 | Copyright (C) 1988, 2001-2012 Free Software Foundation, Inc. | ||
| 4 | |||
| 5 | This file is part of GNU Emacs. | ||
| 6 | |||
| 7 | GNU Emacs is free software: you can redistribute it and/or modify | ||
| 8 | it under the terms of the GNU General Public License as published by | ||
| 9 | the Free Software Foundation, either version 3 of the License, or | ||
| 10 | (at your option) any later version. | ||
| 11 | |||
| 12 | GNU Emacs is distributed in the hope that it will be useful, | ||
| 13 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 14 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 15 | GNU General Public License for more details. | ||
| 16 | |||
| 17 | You should have received a copy of the GNU General Public License | ||
| 18 | along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ | ||
| 19 | |||
| 20 | |||
| 21 | /* The data segment in this machine always starts at address 0x20000000. | ||
| 22 | An address of data cannot be stored correctly in a Lisp object; | ||
| 23 | we always lose the high bits. We must tell XPNTR to add them back. */ | ||
| 24 | #define DATA_START 0x20000000 | ||
| 25 | #define DATA_SEG_BITS 0x20000000 | ||
| 26 | |||
| 27 | #ifndef NLIST_STRUCT | ||
| 28 | /* AIX supposedly doesn't use this interface, but on the RS/6000 | ||
| 29 | it apparently does. */ | ||
| 30 | #define NLIST_STRUCT | ||
| 31 | #endif | ||
| 32 | |||
| 33 | #undef ADDR_CORRECT | ||
| 34 | #define ADDR_CORRECT(x) ((int)(x)) | ||
| 35 | |||
| 36 | /*** BUILD 9008 - FIONREAD problem still exists in X-Windows. ***/ | ||
| 37 | #define BROKEN_FIONREAD | ||
| 38 | /* As we define BROKEN_FIONREAD, SIGIO will be undefined in systty.h. | ||
| 39 | But, on AIX, SIGAIO, SIGPTY, and SIGPOLL are defined as SIGIO, | ||
| 40 | which causes compilation error at init_signals in sysdep.c. So, we | ||
| 41 | define these macros so that syssignal.h detects them and undefine | ||
| 42 | SIGAIO, SIGPTY and SIGPOLL. */ | ||
| 43 | #define BROKEN_SIGAIO | ||
| 44 | #define BROKEN_SIGPTY | ||
| 45 | #define BROKEN_SIGPOLL | ||
| 46 | |||
diff --git a/src/m/ibms390x.h b/src/m/ibms390x.h deleted file mode 100644 index aa652a8206a..00000000000 --- a/src/m/ibms390x.h +++ /dev/null | |||
| @@ -1,32 +0,0 @@ | |||
| 1 | /* Machine description file for IBM S390 in 64-bit mode | ||
| 2 | |||
| 3 | Copyright (C) 2002-2012 Free Software Foundation, Inc. | ||
| 4 | |||
| 5 | This file is part of GNU Emacs. | ||
| 6 | |||
| 7 | GNU Emacs is free software: you can redistribute it and/or modify | ||
| 8 | it under the terms of the GNU General Public License as published by | ||
| 9 | the Free Software Foundation, either version 3 of the License, or | ||
| 10 | (at your option) any later version. | ||
| 11 | |||
| 12 | GNU Emacs is distributed in the hope that it will be useful, | ||
| 13 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 14 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 15 | GNU General Public License for more details. | ||
| 16 | |||
| 17 | You should have received a copy of the GNU General Public License | ||
| 18 | along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ | ||
| 19 | |||
| 20 | #define BITS_PER_LONG 64 | ||
| 21 | #define BITS_PER_EMACS_INT 64 | ||
| 22 | |||
| 23 | /* Define the type to use. */ | ||
| 24 | #define EMACS_INT long | ||
| 25 | #define pI "l" | ||
| 26 | #define EMACS_UINT unsigned long | ||
| 27 | |||
| 28 | /* On the 64 bit architecture, we can use 60 bits for addresses */ | ||
| 29 | #define VALBITS 60 | ||
| 30 | |||
| 31 | /* Define XPNTR to avoid or'ing with DATA_SEG_BITS */ | ||
| 32 | #define XPNTR(a) XUINT (a) | ||
diff --git a/src/m/intel386.h b/src/m/intel386.h deleted file mode 100644 index 78a43e92c21..00000000000 --- a/src/m/intel386.h +++ /dev/null | |||
| @@ -1,29 +0,0 @@ | |||
| 1 | /* Machine description file for intel 386. | ||
| 2 | |||
| 3 | Copyright (C) 1987, 2001-2012 Free Software Foundation, Inc. | ||
| 4 | |||
| 5 | This file is part of GNU Emacs. | ||
| 6 | |||
| 7 | GNU Emacs is free software: you can redistribute it and/or modify | ||
| 8 | it under the terms of the GNU General Public License as published by | ||
| 9 | the Free Software Foundation, either version 3 of the License, or | ||
| 10 | (at your option) any later version. | ||
| 11 | |||
| 12 | GNU Emacs is distributed in the hope that it will be useful, | ||
| 13 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 14 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 15 | GNU General Public License for more details. | ||
| 16 | |||
| 17 | You should have received a copy of the GNU General Public License | ||
| 18 | along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ | ||
| 19 | |||
| 20 | |||
| 21 | #ifdef WINDOWSNT | ||
| 22 | #define DATA_START get_data_start () | ||
| 23 | #endif | ||
| 24 | |||
| 25 | #ifdef GNU_LINUX | ||
| 26 | /* libc-linux/sysdeps/linux/i386/ulimit.c says that due to shared library, */ | ||
| 27 | /* we cannot get the maximum address for brk */ | ||
| 28 | #define ULIMIT_BREAK_VALUE (32*1024*1024) | ||
| 29 | #endif | ||
diff --git a/src/m/m68k.h b/src/m/m68k.h deleted file mode 100644 index 120a2bad293..00000000000 --- a/src/m/m68k.h +++ /dev/null | |||
| @@ -1,32 +0,0 @@ | |||
| 1 | /* Machine description file for generic Motorola 68k. | ||
| 2 | |||
| 3 | Copyright (C) 1985, 1995, 2001-2012 Free Software Foundation, Inc. | ||
| 4 | |||
| 5 | This file is part of GNU Emacs. | ||
| 6 | |||
| 7 | GNU Emacs is free software: you can redistribute it and/or modify | ||
| 8 | it under the terms of the GNU General Public License as published by | ||
| 9 | the Free Software Foundation, either version 3 of the License, or | ||
| 10 | (at your option) any later version. | ||
| 11 | |||
| 12 | GNU Emacs is distributed in the hope that it will be useful, | ||
| 13 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 14 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 15 | GNU General Public License for more details. | ||
| 16 | |||
| 17 | You should have received a copy of the GNU General Public License | ||
| 18 | along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ | ||
| 19 | |||
| 20 | /* Now define a symbol for the cpu type, if your compiler | ||
| 21 | does not define it automatically. */ | ||
| 22 | #ifndef m68k | ||
| 23 | #define m68k | ||
| 24 | #endif | ||
| 25 | |||
| 26 | #ifdef GNU_LINUX | ||
| 27 | #ifdef __ELF__ | ||
| 28 | #define DATA_SEG_BITS 0x80000000 | ||
| 29 | #endif | ||
| 30 | |||
| 31 | #endif | ||
| 32 | |||
diff --git a/src/m/macppc.h b/src/m/macppc.h deleted file mode 100644 index 0303ead25d6..00000000000 --- a/src/m/macppc.h +++ /dev/null | |||
| @@ -1,24 +0,0 @@ | |||
| 1 | /* machine description file For the powerpc Macintosh. | ||
| 2 | |||
| 3 | Copyright (C) 1994, 2001-2012 Free Software Foundation, Inc. | ||
| 4 | |||
| 5 | This file is part of GNU Emacs. | ||
| 6 | |||
| 7 | GNU Emacs is free software: you can redistribute it and/or modify | ||
| 8 | it under the terms of the GNU General Public License as published by | ||
| 9 | the Free Software Foundation, either version 3 of the License, or | ||
| 10 | (at your option) any later version. | ||
| 11 | |||
| 12 | GNU Emacs is distributed in the hope that it will be useful, | ||
| 13 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 14 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 15 | GNU General Public License for more details. | ||
| 16 | |||
| 17 | You should have received a copy of the GNU General Public License | ||
| 18 | along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ | ||
| 19 | |||
| 20 | #ifdef _ARCH_PPC64 | ||
| 21 | #ifndef _LP64 | ||
| 22 | #define _LP64 | ||
| 23 | #endif | ||
| 24 | #endif | ||
diff --git a/src/m/sparc.h b/src/m/sparc.h deleted file mode 100644 index 27b6070ba87..00000000000 --- a/src/m/sparc.h +++ /dev/null | |||
| @@ -1,30 +0,0 @@ | |||
| 1 | /* machine description file for Sun 4 SPARC. | ||
| 2 | |||
| 3 | Copyright (C) 1987, 2001-2012 Free Software Foundation, Inc. | ||
| 4 | |||
| 5 | This file is part of GNU Emacs. | ||
| 6 | |||
| 7 | GNU Emacs is free software: you can redistribute it and/or modify | ||
| 8 | it under the terms of the GNU General Public License as published by | ||
| 9 | the Free Software Foundation, either version 3 of the License, or | ||
| 10 | (at your option) any later version. | ||
| 11 | |||
| 12 | GNU Emacs is distributed in the hope that it will be useful, | ||
| 13 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 14 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 15 | GNU General Public License for more details. | ||
| 16 | |||
| 17 | You should have received a copy of the GNU General Public License | ||
| 18 | along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ | ||
| 19 | |||
| 20 | /* __sparc__ is defined by the compiler by default. */ | ||
| 21 | |||
| 22 | #ifdef __arch64__ /* GCC, 64-bit ABI. */ | ||
| 23 | |||
| 24 | #define BITS_PER_LONG 64 | ||
| 25 | |||
| 26 | #ifndef _LP64 | ||
| 27 | #define _LP64 /* Done on Alpha -- not sure if it should be here. -- fx */ | ||
| 28 | #endif | ||
| 29 | |||
| 30 | #endif /* __arch64__ */ | ||
diff --git a/src/m/template.h b/src/m/template.h deleted file mode 100644 index 5f1a46c86e1..00000000000 --- a/src/m/template.h +++ /dev/null | |||
| @@ -1,34 +0,0 @@ | |||
| 1 | /* machine description file template. | ||
| 2 | |||
| 3 | Copyright (C) 1985-1986, 2001-2012 Free Software Foundation, Inc. | ||
| 4 | |||
| 5 | This file is part of GNU Emacs. | ||
| 6 | |||
| 7 | GNU Emacs is free software: you can redistribute it and/or modify | ||
| 8 | it under the terms of the GNU General Public License as published by | ||
| 9 | the Free Software Foundation, either version 3 of the License, or | ||
| 10 | (at your option) any later version. | ||
| 11 | |||
| 12 | GNU Emacs is distributed in the hope that it will be useful, | ||
| 13 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 14 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 15 | GNU General Public License for more details. | ||
| 16 | |||
| 17 | You should have received a copy of the GNU General Public License | ||
| 18 | along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ | ||
| 19 | |||
| 20 | /* Now define a symbol for the cpu type, if your compiler | ||
| 21 | does not define it automatically. | ||
| 22 | Ones defined so far include m68k and many others */ | ||
| 23 | |||
| 24 | /* After adding support for a new machine, modify the large case | ||
| 25 | statement in configure.in to recognize reasonable | ||
| 26 | configuration names, and add a description of the system to | ||
| 27 | `etc/MACHINES'. | ||
| 28 | |||
| 29 | Check for any tests of $machine in configure.in, and add an entry | ||
| 30 | for the new machine if needed. | ||
| 31 | |||
| 32 | If you've just fixed a problem in an existing configuration file, | ||
| 33 | you should also check `etc/MACHINES' to make sure its descriptions | ||
| 34 | of known problems in that configuration should be updated. */ | ||
diff --git a/src/mem-limits.h b/src/mem-limits.h index 244592a9768..1fd53b472f3 100644 --- a/src/mem-limits.h +++ b/src/mem-limits.h | |||
| @@ -34,7 +34,7 @@ extern int etext; | |||
| 34 | #endif | 34 | #endif |
| 35 | 35 | ||
| 36 | extern char *start_of_data (void); | 36 | extern char *start_of_data (void); |
| 37 | #if defined USE_LSB_TAG || UINTPTR_MAX >> VALBITS == 0 | 37 | #if defined USE_LSB_TAG || UINTPTR_MAX <= VAL_MAX |
| 38 | #define EXCEEDS_LISP_PTR(ptr) 0 | 38 | #define EXCEEDS_LISP_PTR(ptr) 0 |
| 39 | #elif defined DATA_SEG_BITS | 39 | #elif defined DATA_SEG_BITS |
| 40 | #define EXCEEDS_LISP_PTR(ptr) \ | 40 | #define EXCEEDS_LISP_PTR(ptr) \ |
diff --git a/src/puresize.h b/src/puresize.h index e854dc585e8..185d2a76ae0 100644 --- a/src/puresize.h +++ b/src/puresize.h | |||
| @@ -45,7 +45,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ | |||
| 45 | 45 | ||
| 46 | /* Increase BASE_PURESIZE by a ratio depending on the machine's word size. */ | 46 | /* Increase BASE_PURESIZE by a ratio depending on the machine's word size. */ |
| 47 | #ifndef PURESIZE_RATIO | 47 | #ifndef PURESIZE_RATIO |
| 48 | #if BITS_PER_EMACS_INT > 32 | 48 | #if EMACS_INT_MAX >> 31 != 0 |
| 49 | #define PURESIZE_RATIO 10/6 /* Don't surround with `()'. */ | 49 | #define PURESIZE_RATIO 10/6 /* Don't surround with `()'. */ |
| 50 | #else | 50 | #else |
| 51 | #define PURESIZE_RATIO 1 | 51 | #define PURESIZE_RATIO 1 |
diff --git a/src/s/aix4-2.h b/src/s/aix4-2.h index 354ffda0988..cacfdc7ed63 100644 --- a/src/s/aix4-2.h +++ b/src/s/aix4-2.h | |||
| @@ -76,6 +76,17 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ | |||
| 76 | to avoid a crash just use the Emacs implementation for that function. */ | 76 | to avoid a crash just use the Emacs implementation for that function. */ |
| 77 | #define BROKEN_GET_CURRENT_DIR_NAME 1 | 77 | #define BROKEN_GET_CURRENT_DIR_NAME 1 |
| 78 | 78 | ||
| 79 | /*** BUILD 9008 - FIONREAD problem still exists in X-Windows. ***/ | ||
| 80 | #define BROKEN_FIONREAD | ||
| 81 | /* As we define BROKEN_FIONREAD, SIGIO will be undefined in systty.h. | ||
| 82 | But, on AIX, SIGAIO, SIGPTY, and SIGPOLL are defined as SIGIO, | ||
| 83 | which causes compilation error at init_signals in sysdep.c. So, we | ||
| 84 | define these macros so that syssignal.h detects them and undefine | ||
| 85 | SIGAIO, SIGPTY and SIGPOLL. */ | ||
| 86 | #define BROKEN_SIGAIO | ||
| 87 | #define BROKEN_SIGPTY | ||
| 88 | #define BROKEN_SIGPOLL | ||
| 89 | |||
| 79 | /* Conservative garbage collection has not been tested, so for now | 90 | /* Conservative garbage collection has not been tested, so for now |
| 80 | play it safe and stick with the old-fashioned way of marking. */ | 91 | play it safe and stick with the old-fashioned way of marking. */ |
| 81 | #define GC_MARK_STACK GC_USE_GCPROS_AS_BEFORE | 92 | #define GC_MARK_STACK GC_USE_GCPROS_AS_BEFORE |
diff --git a/src/s/gnu-linux.h b/src/s/gnu-linux.h index d04ea33068a..409d0205520 100644 --- a/src/s/gnu-linux.h +++ b/src/s/gnu-linux.h | |||
| @@ -157,3 +157,9 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ | |||
| 157 | #else | 157 | #else |
| 158 | #define GC_MARK_STACK GC_USE_GCPROS_AS_BEFORE | 158 | #define GC_MARK_STACK GC_USE_GCPROS_AS_BEFORE |
| 159 | #endif | 159 | #endif |
| 160 | |||
| 161 | #ifdef __i386__ | ||
| 162 | /* libc-linux/sysdeps/linux/i386/ulimit.c says that due to shared library, */ | ||
| 163 | /* we cannot get the maximum address for brk */ | ||
| 164 | # define ULIMIT_BREAK_VALUE (32*1024*1024) | ||
| 165 | #endif | ||
diff --git a/src/s/gnu.h b/src/s/gnu.h index a09e0e824c9..cd72164a520 100644 --- a/src/s/gnu.h +++ b/src/s/gnu.h | |||
| @@ -24,8 +24,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ | |||
| 24 | #undef SYSTEM_TYPE | 24 | #undef SYSTEM_TYPE |
| 25 | #define SYSTEM_TYPE "gnu" | 25 | #define SYSTEM_TYPE "gnu" |
| 26 | 26 | ||
| 27 | #undef NLIST_STRUCT | ||
| 28 | |||
| 29 | #define SIGNALS_VIA_CHARACTERS | 27 | #define SIGNALS_VIA_CHARACTERS |
| 30 | 28 | ||
| 31 | /* libc defines data_start. */ | 29 | /* libc defines data_start. */ |
diff --git a/src/s/irix6-5.h b/src/s/irix6-5.h index e5d90c1bd5d..e5479c3b8d3 100644 --- a/src/s/irix6-5.h +++ b/src/s/irix6-5.h | |||
| @@ -85,10 +85,6 @@ char *_getpty(); | |||
| 85 | 85 | ||
| 86 | #define NARROWPROTO 1 | 86 | #define NARROWPROTO 1 |
| 87 | 87 | ||
| 88 | #if _MIPS_SZLONG == 64 /* -mabi=64 (gcc) or -64 (MIPSpro) */ | ||
| 89 | #define _LP64 /* lisp.h takes care of the rest */ | ||
| 90 | #endif /* _MIPS_SZLONG */ | ||
| 91 | |||
| 92 | #undef SA_RESTART | 88 | #undef SA_RESTART |
| 93 | 89 | ||
| 94 | #undef TIOCSIGSEND /* defined in usg5-4-common.h */ | 90 | #undef TIOCSIGSEND /* defined in usg5-4-common.h */ |
diff --git a/src/s/ms-w32.h b/src/s/ms-w32.h index 63fc2f1f62b..f88128b27aa 100644 --- a/src/s/ms-w32.h +++ b/src/s/ms-w32.h | |||
| @@ -381,6 +381,8 @@ extern int getloadavg (double *, int); | |||
| 381 | /* We need a little extra space, see ../../lisp/loadup.el. */ | 381 | /* We need a little extra space, see ../../lisp/loadup.el. */ |
| 382 | #define SYSTEM_PURESIZE_EXTRA 50000 | 382 | #define SYSTEM_PURESIZE_EXTRA 50000 |
| 383 | 383 | ||
| 384 | #define DATA_START get_data_start () | ||
| 385 | |||
| 384 | /* For unexec to work on Alpha systems, we need to put Emacs' | 386 | /* For unexec to work on Alpha systems, we need to put Emacs' |
| 385 | initialized data into a separate section from the CRT initialized | 387 | initialized data into a separate section from the CRT initialized |
| 386 | data (because the Alpha linker freely reorders data variables, even | 388 | data (because the Alpha linker freely reorders data variables, even |