Annotation of embedaddon/sudo/compat/endian.h, revision 1.1
1.1 ! misho 1: /*
! 2: * Copyright (c) 2013 Todd C. Miller <Todd.Miller@courtesan.com>
! 3: *
! 4: * Permission to use, copy, modify, and distribute this software for any
! 5: * purpose with or without fee is hereby granted, provided that the above
! 6: * copyright notice and this permission notice appear in all copies.
! 7: *
! 8: * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
! 9: * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
! 10: * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
! 11: * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
! 12: * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
! 13: * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
! 14: * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
! 15: */
! 16:
! 17: #ifndef _COMPAT_ENDIAN_H
! 18: #define _COMPAT_ENDIAN_H
! 19:
! 20: #ifndef BYTE_ORDER
! 21: # undef LITTLE_ENDIAN
! 22: # define LITTLE_ENDIAN 1234
! 23: # undef BIG_ENDIAN
! 24: # define BIG_ENDIAN 4321
! 25: # undef UNKNOWN_ENDIAN
! 26: # define UNKNOWN_ENDIAN 0
! 27:
! 28: /*
! 29: * Attempt to guess endianness.
! 30: * Solaris may define _LITTLE_ENDIAN and _BIG_ENDIAN to 1
! 31: * HP-UX may define __LITTLE_ENDIAN__ and __BIG_ENDIAN__ to 1
! 32: * Otherwise, check for cpu-specific cpp defines.
! 33: * Note that some CPUs are bi-endian, including: arm, powerpc, alpha,
! 34: * sparc64, mips, hppa, sh4 and ia64.
! 35: * We just check for the most common uses.
! 36: */
! 37:
! 38: # if defined(__BYTE_ORDER)
! 39: # define BYTE_ORDER __BYTE_ORDER
! 40: # elif defined(_BYTE_ORDER)
! 41: # define BYTE_ORDER _BYTE_ORDER
! 42: # elif defined(_LITTLE_ENDIAN) || defined(__LITTLE_ENDIAN__)
! 43: # define BYTE_ORDER LITTLE_ENDIAN
! 44: # elif defined(_BIG_ENDIAN) || defined(__BIG_ENDIAN__)
! 45: # define BYTE_ORDER BIG_ENDIAN
! 46: # elif defined(__alpha__) || defined(__alpha) || defined(__amd64) || \
! 47: defined(BIT_ZERO_ON_RIGHT) || defined(i386) || defined(__i386) || \
! 48: defined(MIPSEL) || defined(_MIPSEL) || defined(ns32000) || \
! 49: defined(__ns3200) || defined(sun386) || defined(vax) || \
! 50: defined(__vax) || defined(__x86__) || \
! 51: (defined(sun) && defined(__powerpc)) || \
! 52: (!defined(__hpux) && defined(__ia64))
! 53: # define BYTE_ORDER LITTLE_ENDIAN
! 54: # elif defined(__68k__) || defined(apollo) || defined(BIT_ZERO_ON_LEFT) || \
! 55: defined(__convex__) || defined(_CRAY) || defined(DGUX) || \
! 56: defined(__hppa) || defined(__hp9000) || defined(__hp9000s300) || \
! 57: defined(__hp9000s700) || defined(__hp3000s900) || \
! 58: defined(ibm032) || defined(ibm370) || defined(_IBMR2) || \
! 59: defined(is68k) || defined(mc68000) || defined(m68k) || \
! 60: defined(__m68k) || defined(m88k) || defined(__m88k) || \
! 61: defined(MIPSEB) || defined(_MIPSEB) || defined(MPE) || \
! 62: defined(pyr) || defined(__powerpc) || defined(__powerpc__) || \
! 63: defined(sel) || defined(__sparc) || defined(__sparc__) || \
! 64: defined(tahoe) || (defined(__hpux) && defined(__ia64)) || \
! 65: (defined(sun) && defined(__powerpc))
! 66: # define BYTE_ORDER BIG_ENDIAN
! 67: # else
! 68: # define BYTE_ORDER UNKNOWN_ENDIAN
! 69: # endif
! 70: #endif /* BYTE_ORDER */
! 71:
! 72: #endif /* _COMPAT_ENDIAN_H */
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>