Changeset View
Changeset View
Standalone View
Standalone View
sys/crypto/skein/brg_endian.h
- This file was added.
Property | Old Value | New Value |
---|---|---|
svn:eol-style | null | native \ No newline at end of property |
svn:keywords | null | FreeBSD=%H \ No newline at end of property |
svn:mime-type | null | text/plain \ No newline at end of property |
/* | |||||
--------------------------------------------------------------------------- | |||||
Copyright (c) 2003, Dr Brian Gladman, Worcester, UK. All rights reserved. | |||||
cem: I really don't think we need a second copy of this file. We have endian defines already from… | |||||
allanjudeAuthorUnsubmitted Done Inline Actionsok allanjude: ok | |||||
LICENSE TERMS | |||||
The free distribution and use of this software in both source and binary | |||||
form is allowed (with or without changes) provided that: | |||||
1. distributions of this source code include the above copyright | |||||
notice, this list of conditions and the following disclaimer; | |||||
2. distributions in binary form include the above copyright | |||||
notice, this list of conditions and the following disclaimer | |||||
in the documentation and/or other associated materials; | |||||
3. the copyright holder's name is not used to endorse products | |||||
built using this software without specific written permission. | |||||
ALTERNATIVELY, provided that this notice is retained in full, this product | |||||
may be distributed under the terms of the GNU General Public License (GPL), | |||||
in which case the provisions of the GPL apply INSTEAD OF those given above. | |||||
DISCLAIMER | |||||
This software is provided 'as is' with no explicit or implied warranties | |||||
in respect of its properties, including, but not limited to, correctness | |||||
and/or fitness for purpose. | |||||
--------------------------------------------------------------------------- | |||||
Issue 20/10/2006 | |||||
*/ | |||||
#ifndef BRG_ENDIAN_H | |||||
#define BRG_ENDIAN_H | |||||
#define IS_BIG_ENDIAN 4321 /* byte 0 is most significant (mc68k) */ | |||||
#define IS_LITTLE_ENDIAN 1234 /* byte 0 is least significant (i386) */ | |||||
/* Include files where endian defines and byteswap functions may reside */ | |||||
#if defined( __FreeBSD__ ) || defined( __OpenBSD__ ) || defined( __NetBSD__ ) | |||||
# include <sys/endian.h> | |||||
#elif defined( BSD ) && ( BSD >= 199103 ) || defined( __APPLE__ ) || \ | |||||
defined( __CYGWIN32__ ) || defined( __DJGPP__ ) || defined( __osf__ ) | |||||
# include <machine/endian.h> | |||||
#elif defined( __linux__ ) || defined( __GNUC__ ) || defined( __GNU_LIBRARY__ ) | |||||
# if !defined( __MINGW32__ ) && !defined(AVR) | |||||
# include <endian.h> | |||||
# if !defined( __BEOS__ ) | |||||
# include <byteswap.h> | |||||
# endif | |||||
# endif | |||||
#endif | |||||
/* Now attempt to set the define for platform byte order using any */ | |||||
/* of the four forms SYMBOL, _SYMBOL, __SYMBOL & __SYMBOL__, which */ | |||||
/* seem to encompass most endian symbol definitions */ | |||||
#if defined( BIG_ENDIAN ) && defined( LITTLE_ENDIAN ) | |||||
# if defined( BYTE_ORDER ) && BYTE_ORDER == BIG_ENDIAN | |||||
# define PLATFORM_BYTE_ORDER IS_BIG_ENDIAN | |||||
# elif defined( BYTE_ORDER ) && BYTE_ORDER == LITTLE_ENDIAN | |||||
# define PLATFORM_BYTE_ORDER IS_LITTLE_ENDIAN | |||||
# endif | |||||
#elif defined( BIG_ENDIAN ) | |||||
# define PLATFORM_BYTE_ORDER IS_BIG_ENDIAN | |||||
#elif defined( LITTLE_ENDIAN ) | |||||
# define PLATFORM_BYTE_ORDER IS_LITTLE_ENDIAN | |||||
#endif | |||||
#if defined( _BIG_ENDIAN ) && defined( _LITTLE_ENDIAN ) | |||||
# if defined( _BYTE_ORDER ) && _BYTE_ORDER == _BIG_ENDIAN | |||||
# define PLATFORM_BYTE_ORDER IS_BIG_ENDIAN | |||||
# elif defined( _BYTE_ORDER ) && _BYTE_ORDER == _LITTLE_ENDIAN | |||||
# define PLATFORM_BYTE_ORDER IS_LITTLE_ENDIAN | |||||
# endif | |||||
#elif defined( _BIG_ENDIAN ) | |||||
# define PLATFORM_BYTE_ORDER IS_BIG_ENDIAN | |||||
#elif defined( _LITTLE_ENDIAN ) | |||||
# define PLATFORM_BYTE_ORDER IS_LITTLE_ENDIAN | |||||
#endif | |||||
#if defined( __BIG_ENDIAN ) && defined( __LITTLE_ENDIAN ) | |||||
# if defined( __BYTE_ORDER ) && __BYTE_ORDER == __BIG_ENDIAN | |||||
# define PLATFORM_BYTE_ORDER IS_BIG_ENDIAN | |||||
# elif defined( __BYTE_ORDER ) && __BYTE_ORDER == __LITTLE_ENDIAN | |||||
# define PLATFORM_BYTE_ORDER IS_LITTLE_ENDIAN | |||||
# endif | |||||
#elif defined( __BIG_ENDIAN ) | |||||
# define PLATFORM_BYTE_ORDER IS_BIG_ENDIAN | |||||
#elif defined( __LITTLE_ENDIAN ) | |||||
# define PLATFORM_BYTE_ORDER IS_LITTLE_ENDIAN | |||||
#endif | |||||
#if defined( __BIG_ENDIAN__ ) && defined( __LITTLE_ENDIAN__ ) | |||||
# if defined( __BYTE_ORDER__ ) && __BYTE_ORDER__ == __BIG_ENDIAN__ | |||||
# define PLATFORM_BYTE_ORDER IS_BIG_ENDIAN | |||||
# elif defined( __BYTE_ORDER__ ) && __BYTE_ORDER__ == __LITTLE_ENDIAN__ | |||||
# define PLATFORM_BYTE_ORDER IS_LITTLE_ENDIAN | |||||
# endif | |||||
#elif defined( __BIG_ENDIAN__ ) | |||||
# define PLATFORM_BYTE_ORDER IS_BIG_ENDIAN | |||||
#elif defined( __LITTLE_ENDIAN__ ) | |||||
# define PLATFORM_BYTE_ORDER IS_LITTLE_ENDIAN | |||||
#endif | |||||
/* if the platform byte order could not be determined, then try to */ | |||||
/* set this define using common machine defines */ | |||||
#if !defined(PLATFORM_BYTE_ORDER) | |||||
#if defined( __alpha__ ) || defined( __alpha ) || defined( i386 ) || \ | |||||
defined( __i386__ ) || defined( _M_I86 ) || defined( _M_IX86 ) || \ | |||||
defined( __OS2__ ) || defined( sun386 ) || defined( __TURBOC__ ) || \ | |||||
defined( vax ) || defined( vms ) || defined( VMS ) || \ | |||||
defined( __VMS ) || defined( _M_X64 ) || defined( AVR ) | |||||
# define PLATFORM_BYTE_ORDER IS_LITTLE_ENDIAN | |||||
#elif defined( AMIGA ) || defined( applec ) || defined( __AS400__ ) || \ | |||||
defined( _CRAY ) || defined( __hppa ) || defined( __hp9000 ) || \ | |||||
defined( ibm370 ) || defined( mc68000 ) || defined( m68k ) || \ | |||||
defined( __MRC__ ) || defined( __MVS__ ) || defined( __MWERKS__ ) || \ | |||||
defined( sparc ) || defined( __sparc) || defined( SYMANTEC_C ) || \ | |||||
defined( __VOS__ ) || defined( __TIGCC__ ) || defined( __TANDEM ) || \ | |||||
defined( THINK_C ) || defined( __VMCMS__ ) | |||||
# define PLATFORM_BYTE_ORDER IS_BIG_ENDIAN | |||||
#elif 0 /* **** EDIT HERE IF NECESSARY **** */ | |||||
# define PLATFORM_BYTE_ORDER IS_LITTLE_ENDIAN | |||||
#elif 0 /* **** EDIT HERE IF NECESSARY **** */ | |||||
# define PLATFORM_BYTE_ORDER IS_BIG_ENDIAN | |||||
#else | |||||
# error Please edit lines 126 or 128 in brg_endian.h to set the platform byte order | |||||
#endif | |||||
#endif | |||||
/* special handler for IA64, which may be either endianness (?) */ | |||||
/* here we assume little-endian, but this may need to be changed */ | |||||
#if defined(__ia64) || defined(__ia64__) || defined(_M_IA64) | |||||
# define PLATFORM_MUST_ALIGN (1) | |||||
#ifndef PLATFORM_BYTE_ORDER | |||||
# define PLATFORM_BYTE_ORDER IS_LITTLE_ENDIAN | |||||
#endif | |||||
#endif | |||||
#ifndef PLATFORM_MUST_ALIGN | |||||
# define PLATFORM_MUST_ALIGN (0) | |||||
#endif | |||||
#endif /* ifndef BRG_ENDIAN_H */ |
I really don't think we need a second copy of this file. We have endian defines already from sys/endian.h. For the non-contrib/ directory, IMO simplify to just what is needed for FreeBSD.