• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 #ifndef _XARCH_H_
2 # define _XARCH_H_
3 
4 /*
5  * Copyright 1997 Metro Link Incorporated
6  *
7  *                           All Rights Reserved
8  *
9  * Permission to use, copy, modify, distribute, and sell this software and its
10  * documentation for any purpose is hereby granted without fee, provided that
11  * the above copyright notice appear in all copies and that both that
12  * copyright notice and this permission notice appear in supporting
13  * documentation, and that the names of the above listed copyright holder(s)
14  * not be used in advertising or publicity pertaining to distribution of
15  * the software without specific, written prior permission.  The above listed
16  * copyright holder(s) make(s) no representations about the suitability of
17  * this software for any purpose.  It is provided "as is" without express or
18  * implied warranty.
19  *
20  * THE ABOVE LISTED COPYRIGHT HOLDER(S) DISCLAIM(S) ALL WARRANTIES WITH REGARD
21  * TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
22  * AND FITNESS, IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) BE
23  * LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY
24  * DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER
25  * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
26  * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
27  */
28 
29 
30 /*
31  * Determine the machine's byte order.
32  */
33 
34 /* See if it is set in the imake config first */
35 # ifdef X_BYTE_ORDER
36 
37 #  define X_BIG_ENDIAN 4321
38 #  define X_LITTLE_ENDIAN 1234
39 
40 # else
41 
42 #  if defined(SVR4) || defined(__SVR4)
43 #   include <sys/types.h>
44 #   include <sys/byteorder.h>
45 #  elif defined(CSRG_BASED)
46 #   if defined(__NetBSD__) || defined(__OpenBSD__)
47 #    include <sys/types.h>
48 #   endif
49 #   include <machine/endian.h>
50 #  elif defined(linux)
51 #   if defined __STRICT_ANSI__
52 #    undef __STRICT_ANSI__
53 #    include <endian.h>
54 #    define __STRICT_ANSI__
55 #   else
56 #    include <endian.h>
57 #   endif
58 /* 'endian.h' might have been included before 'Xarch.h' */
59 #   if !defined(LITTLE_ENDIAN) && defined(__LITTLE_ENDIAN)
60 #    define LITTLE_ENDIAN __LITTLE_ENDIAN
61 #   endif
62 #   if !defined(BIG_ENDIAN) && defined(__BIG_ENDIAN)
63 #    define BIG_ENDIAN __BIG_ENDIAN
64 #   endif
65 #   if !defined(PDP_ENDIAN) && defined(__PDP_ENDIAN)
66 #    define PDP_ENDIAN __PDP_ENDIAN
67 #   endif
68 #   if !defined(BYTE_ORDER) && defined(__BYTE_ORDER)
69 #    define BYTE_ORDER __BYTE_ORDER
70 #   endif
71 #  endif
72 
73 #  ifndef BYTE_ORDER
74 #   define LITTLE_ENDIAN 1234
75 #   define BIG_ENDIAN    4321
76 
77 #   if defined(__sun) && defined(__SVR4)
78 #    include <sys/isa_defs.h>
79 #    ifdef _LITTLE_ENDIAN
80 #     define BYTE_ORDER LITTLE_ENDIAN
81 #    endif
82 #    ifdef _BIG_ENDIAN
83 #     define BYTE_ORDER BIG_ENDIAN
84 #    endif
85 #   endif /* sun */
86 #  endif /* BYTE_ORDER */
87 
88 #  define X_BYTE_ORDER BYTE_ORDER
89 #  define X_BIG_ENDIAN BIG_ENDIAN
90 #  define X_LITTLE_ENDIAN LITTLE_ENDIAN
91 
92 # endif /* not in imake config */
93 
94 #endif /* _XARCH_H_ */
95