1/* Copyright (c) 1998,2011,2014 Apple Inc.  All Rights Reserved.
2 *
3 * NOTICE: USE OF THE MATERIALS ACCOMPANYING THIS NOTICE IS SUBJECT
4 * TO THE TERMS OF THE SIGNED "FAST ELLIPTIC ENCRYPTION (FEE) REFERENCE
5 * SOURCE CODE EVALUATION AGREEMENT" BETWEEN APPLE, INC. AND THE
6 * ORIGINAL LICENSEE THAT OBTAINED THESE MATERIALS FROM APPLE,
7 * INC.  ANY USE OF THESE MATERIALS NOT PERMITTED BY SUCH AGREEMENT WILL
8 * EXPOSE YOU TO LIABILITY.
9 ***************************************************************************
10 *
11 * platform.h - platform-dependent C functions
12 *
13 * Revision History
14 * ----------------
15 *  6 Sep 96 at NeXT
16 *	Created.
17 */
18
19#ifndef	_CK_PLATFORM_H_
20#define _CK_PLATFORM_H_
21
22#ifdef __cplusplus
23extern "C" {
24#endif
25
26#include <string.h>
27#include <stdlib.h>
28
29/* many ways to determin macintosh - different for 68k, PPC/OS9, X */
30#if	defined(__POWERPC__) || defined(__CFM68K__) || defined(__APPLE__)
31	#undef	__MAC_BUILD__
32	#define	__MAC_BUILD__	1
33#endif
34
35/*
36 * Make sure endianness is defined...
37 */
38#if defined(__BIG_ENDIAN__) && defined(__LITTLE_ENDIAN__)
39#error Hey! multiply defined  endianness!
40#endif
41#if	!defined(__BIG_ENDIAN__) && !defined(__LITTLE_ENDIAN__)
42    #if	__MAC_BUILD__
43	#define	__BIG_ENDIAN__		1
44    #elif __i386__ || __i486__
45    	#define __LITTLE_ENDIAN__	1
46    #else
47    	#error Platform dependent work needed
48    #endif
49#endif	/* endian */
50
51#ifndef	NeXT
52    #define bcopy(s, d, l)	memmove(d, s, l)
53    #define bzero(s, l)		memset(s, 0, l)
54    #define bcmp(s, d, l)	memcmp(s, d, l)
55#endif
56
57/*
58 * Other platform-dependent functions in platform.c.
59 */
60
61extern void CKRaise(const char *reason);
62
63/*
64 * Come up with some kind of "really" random int with which to seed the
65 * random number generator.
66 */
67extern unsigned createRandomSeed(void);
68
69#ifdef __cplusplus
70}
71#endif
72
73#endif	/*_CK_PLATFORM_H_*/
74