blob: ae260cc46a1a2d2f4ac99ed7e6691d8a2d1dc66d [file] [log] [blame]
Jean-Baptiste Querucad88442013-02-13 11:20:54 -08001/**
2 * Copyright(c) 2011 Trusted Logic. All rights reserved.
3 *
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions
6 * are met:
7 *
8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above copyright
11 * notice, this list of conditions and the following disclaimer in
12 * the documentation and/or other materials provided with the
13 * distribution.
14 * * Neither the name Trusted Logic nor the names of its
15 * contributors may be used to endorse or promote products derived
16 * from this software without specific prior written permission.
17 *
18 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
20 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
21 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
22 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
23 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
24 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29 */
30
31/**
32 * Definition of the machine-specific integer types
33 **/
34#ifndef __S_TYPE_H__
35#define __S_TYPE_H__
36
37/* C99 integer types */
38#if (!defined(__STDC_VERSION__) || __STDC_VERSION__ < 199901L) &&(!defined(ANDROID))
39
40#include <limits.h>
41
42/* Figure out if a 64-bit integer types is available */
43#if \
44 defined(_MSC_VER) || \
45 defined(__SYMBIAN32__) || \
46 defined(_WIN32_WCE) || \
47 (defined(ULLONG_MAX) && ULLONG_MAX == 0xFFFFFFFFFFFFFFFFULL) || \
48 (defined(ULONG_LONG_MAX) && ULONG_LONG_MAX == 0xFFFFFFFFFFFFFFFFULL)
49typedef unsigned long long uint64_t;
50typedef long long int64_t;
51#else
52#define __S_TYPE_INT64_UNDEFINED
53#endif
54
55#if UINT_MAX == 0xFFFFFFFF
56typedef unsigned int uint32_t;
57typedef int int32_t;
58#elif ULONG_MAX == 0xFFFFFFFF
59typedef unsigned long uint32_t;
60typedef long int32_t;
61#else
62#error This compiler is not supported.
63#endif
64
65#if USHRT_MAX == 0xFFFF
66typedef unsigned short uint16_t;
67typedef short int16_t;
68#else
69#error This compiler is not supported.
70#endif
71
72#if UCHAR_MAX == 0xFF
73typedef unsigned char uint8_t;
74typedef signed char int8_t;
75#else
76#error This compiler is not supported.
77#endif
78
79#if !defined(__cplusplus)
80typedef unsigned char bool;
81#define false ( (bool)0 )
82#define true ( (bool)1 )
83#endif
84
85#else /* !defined(__STDC_VERSION__) || __STDC_VERSION__ < 199901L */
86
87#include <stdbool.h>
88#include <stdint.h>
89
90#endif /* !(!defined(__STDC_VERSION__) || __STDC_VERSION__ < 199901L) */
91
92#include <stddef.h>
93
94#ifndef NULL
95# ifdef __cplusplus
96# define NULL 0
97# else
98# define NULL ((void *)0)
99# endif
100#endif
101
102#define IN
103#define OUT
104
105/*
106 * Definition of other common types
107 */
108
109typedef uint32_t S_RESULT;
110typedef S_RESULT TEEC_Result;
111typedef S_RESULT SM_ERROR;
112
113typedef uint32_t S_HANDLE;
114typedef S_HANDLE SM_HANDLE;
115#define S_HANDLE_NULL ((S_HANDLE)0)
116#define SM_HANDLE_INVALID S_HANDLE_NULL
117
118/** Definition of an UUID (from RFC 4122 http://www.ietf.org/rfc/rfc4122.txt) */
119typedef struct S_UUID
120{
121 uint32_t time_low;
122 uint16_t time_mid;
123 uint16_t time_hi_and_version;
124 uint8_t clock_seq_and_node[8];
125}S_UUID;
126typedef S_UUID TEEC_UUID;
127typedef S_UUID SM_UUID;
128
129/* DLL Import/Export directives */
130
131#if defined(WIN32) || defined(__ARMCC_VERSION) || defined(__WINSCW__) || defined(_WIN32_WCE)
132# define S_DLL_EXPORT __declspec(dllexport)
133# define S_DLL_IMPORT __declspec(dllimport)
134# define S_NO_RETURN __declspec(noreturn)
135#elif defined(__GNUC__)
136# define S_DLL_EXPORT __attribute__ ((visibility ("default")))
137# define S_DLL_IMPORT __attribute__ ((visibility ("default")))
138# define S_NO_RETURN __attribute__ ((noreturn))
139#else
140# define S_DLL_EXPORT
141# define S_DLL_IMPORT
142# define S_NO_RETURN
143#endif
144
145#endif /* __S_TYPE_H__ */
146