1995-08-09 08:06:35 -07:00
|
|
|
/***********************************************************************/
|
|
|
|
/* */
|
2011-07-27 07:17:02 -07:00
|
|
|
/* OCaml */
|
1995-08-09 08:06:35 -07:00
|
|
|
/* */
|
|
|
|
/* Xavier Leroy, projet Cristal, INRIA Rocquencourt */
|
|
|
|
/* */
|
1996-04-30 07:53:58 -07:00
|
|
|
/* Copyright 1996 Institut National de Recherche en Informatique et */
|
1999-11-17 10:59:06 -08:00
|
|
|
/* en Automatique. All rights reserved. This file is distributed */
|
2001-12-07 05:41:02 -08:00
|
|
|
/* under the terms of the GNU Library General Public License, with */
|
|
|
|
/* the special exception on linking described in file ../LICENSE. */
|
1995-08-09 08:06:35 -07:00
|
|
|
/* */
|
|
|
|
/***********************************************************************/
|
|
|
|
|
|
|
|
/* $Id$ */
|
|
|
|
|
1995-08-09 07:52:04 -07:00
|
|
|
/* Processor dependencies */
|
|
|
|
|
1996-07-01 05:43:28 -07:00
|
|
|
#define ARCH_SIXTYFOUR
|
1996-02-13 08:29:09 -08:00
|
|
|
|
1996-07-01 05:43:28 -07:00
|
|
|
/* Define ARCH_SIXTYFOUR if the processor has a natural word size of 64 bits.
|
2005-09-22 07:21:50 -07:00
|
|
|
That is, sizeof(char *) = 8.
|
|
|
|
Otherwise, leave ARCH_SIXTYFOUR undefined.
|
|
|
|
This assumes sizeof(char *) = 4. */
|
1996-02-13 08:29:09 -08:00
|
|
|
|
1996-07-01 05:43:28 -07:00
|
|
|
#define ARCH_BIG_ENDIAN
|
1995-08-09 07:52:04 -07:00
|
|
|
|
1996-07-01 05:43:28 -07:00
|
|
|
/* Define ARCH_BIG_ENDIAN if the processor is big endian (the most
|
|
|
|
significant byte of an integer stored in memory comes first).
|
|
|
|
Leave ARCH_BIG_ENDIAN undefined if the processor is little-endian
|
|
|
|
(the least significant byte comes first).
|
1995-08-09 07:52:04 -07:00
|
|
|
*/
|
|
|
|
|
1996-07-01 05:43:28 -07:00
|
|
|
#define ARCH_ALIGN_DOUBLE
|
1995-08-09 07:52:04 -07:00
|
|
|
|
1996-07-01 05:43:28 -07:00
|
|
|
/* Define ARCH_ALIGN_DOUBLE if the processor requires doubles to be
|
|
|
|
doubleword-aligned. Leave ARCH_ALIGN_DOUBLE undefined if the processor
|
|
|
|
supports word-aligned doubles. */
|
1996-02-13 08:29:09 -08:00
|
|
|
|
1997-04-28 08:51:29 -07:00
|
|
|
#undef ARCH_CODE32
|
|
|
|
|
|
|
|
/* Define ARCH_CODE32 if, on a 64-bit machine, code pointers fit in 32 bits,
|
|
|
|
i.e. the code segment resides in the low 4G of the addressing space.
|
|
|
|
ARCH_CODE32 is ignored on 32-bit machines. */
|
1998-06-23 06:39:54 -07:00
|
|
|
|
|
|
|
#define SIZEOF_INT 4
|
|
|
|
#define SIZEOF_LONG 4
|
2005-09-22 07:21:50 -07:00
|
|
|
#define SIZEOF_PTR 4
|
1998-06-23 06:39:54 -07:00
|
|
|
#define SIZEOF_SHORT 2
|
|
|
|
|
2005-09-22 07:21:50 -07:00
|
|
|
/* Define SIZEOF_INT, SIZEOF_LONG, SIZEOF_PTR and SIZEOF_SHORT
|
|
|
|
to the sizes in bytes of the C types "int", "long", "char *" and "short",
|
|
|
|
respectively. */
|
2000-02-11 04:03:31 -08:00
|
|
|
|
2000-02-11 07:47:09 -08:00
|
|
|
#define ARCH_INT64_TYPE long long
|
|
|
|
#define ARCH_UINT64_TYPE unsigned long long
|
2000-02-11 04:03:31 -08:00
|
|
|
|
2000-02-11 07:47:09 -08:00
|
|
|
/* Define ARCH_INT64_TYPE and ARCH_UINT64_TYPE to 64-bit integer types,
|
|
|
|
typically "long long" and "unsigned long long" on 32-bit platforms,
|
|
|
|
and "long" and "unsigned long" on 64-bit platforms.
|
|
|
|
If the C compiler doesn't support any 64-bit integer type,
|
|
|
|
leave both ARCH_INT64_TYPE and ARCH_UINT64_TYPE undefined. */
|
|
|
|
|
|
|
|
#define ARCH_INT64_PRINTF_FORMAT "ll"
|
|
|
|
|
|
|
|
/* Define ARCH_INT64_PRINTF_FORMAT to the printf format used for formatting
|
|
|
|
values of type ARCH_INT64_TYPE. This is usually "ll" on 32-bit
|
|
|
|
platforms and "l" on 64-bit platforms.
|
|
|
|
Leave undefined if ARCH_INT64_TYPE is undefined. */
|
2000-03-10 09:36:31 -08:00
|
|
|
|
|
|
|
#define ARCH_ALIGN_INT64
|
|
|
|
|
|
|
|
/* Define ARCH_ALIGN_INT64 if the processor requires 64-bit integers to be
|
|
|
|
doubleword-aligned. Leave ARCH_ALIGN_INT64 undefined if the processor
|
|
|
|
supports word-aligned 64-bit integers. Leave undefined if
|
|
|
|
64-bit integers are not supported. */
|
|
|
|
|
2001-11-27 02:17:36 -08:00
|
|
|
#undef NONSTANDARD_DIV_MOD
|
|
|
|
|
|
|
|
/* Leave NONSTANDARD_DIV_MOD undefined if the C operators / and % implement
|
|
|
|
round-towards-zero semantics, as specified by ISO C 9x and implemented
|
|
|
|
by most contemporary processors. Otherwise, or if you don't know,
|
|
|
|
define NONSTANDARD_DIV_MOD: this will select a slower but correct
|
|
|
|
software emulation of division and modulus. */
|