diff options
author | Edward O'Callaghan <eocallaghan@auroraux.org> | 2009-08-05 19:06:50 +0000 |
---|---|---|
committer | Edward O'Callaghan <eocallaghan@auroraux.org> | 2009-08-05 19:06:50 +0000 |
commit | 1fcb40b79d8fbfcc9acb0966d5f9bba09431f832 (patch) | |
tree | fce65563d921b10e2ee3780b17a6b020e61afccf /lib/endianness.h | |
parent | 2bf62728b8ce00e295c7bf0fb328427496cc85aa (diff) |
Next batch of C++ to C comment style changes. Also improve and factor out endianness pre-processor code.
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@78226 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/endianness.h')
-rw-r--r-- | lib/endianness.h | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/lib/endianness.h b/lib/endianness.h new file mode 100644 index 000000000..9e192c102 --- /dev/null +++ b/lib/endianness.h @@ -0,0 +1,65 @@ +/* ===-- endianness.h - configuration header for libgcc replacement --------=== + * + * The LLVM Compiler Infrastructure + * + * This file is distributed under the University of Illinois Open Source + * License. See LICENSE.TXT for details. + * + * ===----------------------------------------------------------------------=== + * + * This file is a configuration header for libgcc replacement. + * This file is not part of the interface of this library. + * + * ===----------------------------------------------------------------------=== + */ + +#ifndef ENDIANNESS_H +#define ENDIANNESS_H + +/* TODO: Improve this to minimal pre-processor hackish'ness. */ +/* config.h build via CMake. */ +/* #include <config.h> */ +/* Solaris header for endian and byte swap */ +/* #if defined HAVE_SYS_BYTEORDER_H */ + +#if defined (__SVR4) && defined (__sun) +#include <sys/byteorder.h> +#if _BYTE_ORDER == _BIG_ENDIAN +#define __BIG_ENDIAN__ 1 +#define __LITTLE_ENDIAN__ 0 +#else /* _BYTE_ORDER == _LITTLE_ENDIAN */ +#define __BIG_ENDIAN__ 0 +#define __LITTLE_ENDIAN__ 1 +#endif /* _BYTE_ORDER */ +#endif /* Solaris and AuroraUX. */ + +#if defined (__FreeBSD__) +#include <sys/endian.h> +#if _BYTE_ORDER == _BIG_ENDIAN +#define __BIG_ENDIAN__ 1 +#define __LITTLE_ENDIAN__ 0 +#else /* _BYTE_ORDER == _LITTLE_ENDIAN */ +#define __BIG_ENDIAN__ 0 +#define __LITTLE_ENDIAN__ 1 +#endif /* _BYTE_ORDER */ +#endif /* FreeBSD */ + +#ifdef __LITTLE_ENDIAN__ +#if __LITTLE_ENDIAN__ +#define _YUGA_LITTLE_ENDIAN 1 +#define _YUGA_BIG_ENDIAN 0 +#endif +#endif + +#ifdef __BIG_ENDIAN__ +#if __BIG_ENDIAN__ +#define _YUGA_LITTLE_ENDIAN 0 +#define _YUGA_BIG_ENDIAN 1 +#endif +#endif + +#if !defined(_YUGA_LITTLE_ENDIAN) || !defined(_YUGA_BIG_ENDIAN) +#error unable to determine endian +#endif + +#endif /* ENDIANNESS_H */ |