1/**
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#ifndef __S_ERROR_H__
31#define __S_ERROR_H__
32
33#define S_SUCCESS                      ((S_RESULT)0x00000000)
34#define SM_SUCCESS                     S_SUCCESS
35#define TEEC_SUCCESS                   S_SUCCESS
36#define SST_SUCCESS                    S_SUCCESS
37
38/**
39 * Generic error code : Generic error
40 **/
41#define S_ERROR_GENERIC                ((S_RESULT)0xFFFF0000)
42#define SM_ERROR_GENERIC               S_ERROR_GENERIC
43#define TEEC_ERROR_GENERIC             S_ERROR_GENERIC
44#define SST_ERROR_GENERIC              S_ERROR_GENERIC
45
46/**
47 * Generic error code : The underlying security system denies the access to the
48 * object
49 **/
50#define S_ERROR_ACCESS_DENIED          ((S_RESULT)0xFFFF0001)
51#define SM_ERROR_ACCESS_DENIED         S_ERROR_ACCESS_DENIED
52#define TEEC_ERROR_ACCESS_DENIED       S_ERROR_ACCESS_DENIED
53#define SST_ERROR_ACCESS_DENIED        S_ERROR_ACCESS_DENIED
54
55/**
56 * Generic error code : The pending operation is cancelled.
57 **/
58#define S_ERROR_CANCEL                 ((S_RESULT)0xFFFF0002)
59#define SM_ERROR_CANCEL                S_ERROR_CANCEL
60#define TEEC_ERROR_CANCEL              S_ERROR_CANCEL
61
62/**
63 * Generic error code : The underlying system detects a conflict
64 **/
65#define S_ERROR_ACCESS_CONFLICT        ((S_RESULT)0xFFFF0003)
66#define SM_ERROR_EXCLUSIVE_ACCESS      S_ERROR_ACCESS_CONFLICT
67#define TEEC_ERROR_ACCESS_CONFLICT     S_ERROR_ACCESS_CONFLICT
68#define SST_ERROR_ACCESS_CONFLICT      S_ERROR_ACCESS_CONFLICT
69
70/**
71 * Generic error code : Too much data for the operation or some data remain
72 * unprocessed by the operation.
73 **/
74#define S_ERROR_EXCESS_DATA            ((S_RESULT)0xFFFF0004)
75#define SM_ERROR_EXCESS_DATA           S_ERROR_EXCESS_DATA
76#define TEEC_ERROR_EXCESS_DATA         S_ERROR_EXCESS_DATA
77
78
79/**
80 * Generic error code : Error of data format
81 **/
82#define S_ERROR_BAD_FORMAT             ((S_RESULT)0xFFFF0005)
83#define SM_ERROR_FORMAT                S_ERROR_BAD_FORMAT
84#define TEEC_ERROR_BAD_FORMAT          S_ERROR_BAD_FORMAT
85
86/**
87 * Generic error code : The specified parameters are invalid
88 **/
89#define S_ERROR_BAD_PARAMETERS         ((S_RESULT)0xFFFF0006)
90#define SM_ERROR_ILLEGAL_ARGUMENT      S_ERROR_BAD_PARAMETERS
91#define TEEC_ERROR_BAD_PARAMETERS      S_ERROR_BAD_PARAMETERS
92#define SST_ERROR_BAD_PARAMETERS       S_ERROR_BAD_PARAMETERS
93
94
95/**
96 * Generic error code : Illegal state for the operation.
97 **/
98#define S_ERROR_BAD_STATE              ((S_RESULT)0xFFFF0007)
99#define SM_ERROR_ILLEGAL_STATE         S_ERROR_BAD_STATE
100#define TEEC_ERROR_BAD_STATE           S_ERROR_BAD_STATE
101
102/**
103 * Generic error code : The item is not found
104 **/
105#define S_ERROR_ITEM_NOT_FOUND         ((S_RESULT)0xFFFF0008)
106#define SM_ERROR_ITEM_NOT_FOUND        S_ERROR_ITEM_NOT_FOUND
107#define TEEC_ERROR_ITEM_NOT_FOUND      S_ERROR_ITEM_NOT_FOUND
108#define SST_ERROR_ITEM_NOT_FOUND       S_ERROR_ITEM_NOT_FOUND
109
110/**
111 * Generic error code : The specified operation is not implemented
112 **/
113#define S_ERROR_NOT_IMPLEMENTED        ((S_RESULT)0xFFFF0009)
114#define SM_ERROR_NOT_IMPLEMENTED       S_ERROR_NOT_IMPLEMENTED
115#define TEEC_ERROR_NOT_IMPLEMENTED     S_ERROR_NOT_IMPLEMENTED
116
117/**
118 * Generic error code : The specified operation is not supported
119 **/
120#define S_ERROR_NOT_SUPPORTED          ((S_RESULT)0xFFFF000A)
121#define SM_ERROR_NOT_SUPPORTED         S_ERROR_NOT_SUPPORTED
122#define TEEC_ERROR_NOT_SUPPORTED       S_ERROR_NOT_SUPPORTED
123
124/**
125 * Generic error code : Insufficient data is available for the operation.
126 **/
127#define S_ERROR_NO_DATA                ((S_RESULT)0xFFFF000B)
128#define SM_ERROR_NO_DATA               S_ERROR_NO_DATA
129#define TEEC_ERROR_NO_DATA             S_ERROR_NO_DATA
130
131/**
132 * Generic error code : Not enough memory to perform the operation
133 **/
134#define S_ERROR_OUT_OF_MEMORY          ((S_RESULT)0xFFFF000C)
135#define SM_ERROR_OUT_OF_MEMORY         S_ERROR_OUT_OF_MEMORY
136#define TEEC_ERROR_OUT_OF_MEMORY       S_ERROR_OUT_OF_MEMORY
137#define SST_ERROR_OUT_OF_MEMORY        S_ERROR_OUT_OF_MEMORY
138
139/**
140 * Generic error code : The service is currently unable to handle the request;
141 * try later
142 **/
143#define S_ERROR_BUSY                   ((S_RESULT)0xFFFF000D)
144#define SM_ERROR_BUSY                  S_ERROR_BUSY
145#define TEEC_ERROR_BUSY                S_ERROR_BUSY
146
147/**
148 * Generic error code : security violation
149 **/
150#define S_ERROR_SECURITY               ((S_RESULT)0xFFFF000F)
151#define SM_ERROR_SECURITY              S_ERROR_SECURITY
152#define TEEC_ERROR_SECURITY            S_ERROR_SECURITY
153
154/**
155 * Generic error code : the buffer is too short
156 **/
157#define S_ERROR_SHORT_BUFFER           ((S_RESULT)0xFFFF0010)
158#define SM_ERROR_SHORT_BUFFER          S_ERROR_SHORT_BUFFER
159#define TEEC_ERROR_SHORT_BUFFER        S_ERROR_SHORT_BUFFER
160
161
162/**
163 * Generic error code : SControl Asynchronous Operations are not supported.
164 */
165#define S_ERROR_ASYNC_OPERATIONS_NOT_SUPPORTED ((S_RESULT)0xFFFF0011)
166#define SM_ERROR_ASYNC_OPERATIONS_NOT_SUPPORTED  S_ERROR_ASYNC_OPERATIONS_NOT_SUPPORTED
167
168/**
169 * Generic error code : the number of handles currently created
170 * for a specific resource has reached the maximum amount.
171 **/
172#define S_ERROR_NO_MORE_HANDLES           ((S_RESULT)0xFFFF0013)
173
174/**
175 * Generic error code : the monotonic counter is corrupted
176 **/
177#define S_ERROR_CORRUPTED           ((S_RESULT)0xFFFF0014)
178
179/**
180 * Generic error code : the operation is not terminated
181 **/
182#define S_PENDING                      ((S_RESULT)0xFFFF2000)
183
184/**
185 * Generic error code : A timeout occurred
186 **/
187#define S_ERROR_TIMEOUT                ((S_RESULT)0xFFFF3001)
188
189/**
190 * Error code: Error of the underlying OS.
191 **/
192#define S_ERROR_UNDERLYING_OS          ((S_RESULT)0xFFFF3002)
193#define TEEC_ERROR_OS                  S_ERROR_UNDERLYING_OS
194
195
196/**
197 * Error code: The operation is cancelled by a signal.
198 **/
199#define S_ERROR_CANCELLED_BY_SIGNAL    ((S_RESULT)0xFFFF3003)
200
201/**
202 * Generic error code : Overflow
203 **/
204#define S_ERROR_OVERFLOW               ((S_RESULT)0xFFFF300F)
205#define SST_ERROR_OVERFLOW             S_ERROR_OVERFLOW
206
207/**
208 * Generic error code : The item already exists
209 **/
210#define S_ERROR_ITEM_EXISTS            ((S_RESULT)0xFFFF3012)
211
212/**
213 * Generic error code : The application reported an error.  The code of the
214 * applicative error is encoded in the message data.
215 */
216#define S_ERROR_SERVICE                ((S_RESULT)0xFFFF1000)
217#define SM_ERROR_SERVICE               S_ERROR_SERVICE
218
219#define S_PENDING                      ((S_RESULT)0xFFFF2000)
220#define SM_PENDING                     S_PENDING
221
222/**
223 * Generic error code : Critical error causing the platform to shutdown.
224 */
225#define S_ERROR_CRITICAL                ((S_RESULT)0xFFFF3010)
226
227/**
228 * Generic error code : the underlying peripheral is unreachable.
229 */
230#define S_ERROR_UNREACHABLE             ((S_RESULT)0xFFFF3013)
231
232/*------------------------------------------------------------------------------
233   Communication Error Codes
234------------------------------------------------------------------------------*/
235/**
236 * Generic communication error
237 **/
238#define S_ERROR_COMMUNICATION          ((S_RESULT)0xFFFF000E)
239#define SM_ERROR_COMMUNICATION         S_ERROR_COMMUNICATION
240#define TEEC_ERROR_COMMUNICATION       S_ERROR_COMMUNICATION
241
242/**
243 * Error of communication : Error of protocol
244 **/
245#define S_ERROR_CONNECTION_PROTOCOL    ((S_RESULT)0xFFFF3020)
246
247/**
248 * Error of communication : The connection is broken.
249 **/
250#define S_ERROR_CONNECTION_BROKEN      ((S_RESULT)0xFFFF3021)
251
252/**
253 * Error of communication : Error during the connection setup.
254 **/
255#define S_ERROR_CONNECTION_SETUP       ((S_RESULT)0xFFFF3022)
256
257/**
258 * Error of communication : The connection is refused by the distant target.
259 **/
260#define S_ERROR_CONNECTION_REFUSED     ((S_RESULT)0xFFFF3023)
261
262/**
263 * Error of communication: The target of the connection is dead
264 **/
265#define S_ERROR_TARGET_DEAD            ((S_RESULT)0xFFFF3024)
266#define SM_ERROR_TARGET_DEAD           S_ERROR_TARGET_DEAD
267#define TEEC_ERROR_TARGET_DEAD         S_ERROR_TARGET_DEAD
268
269
270/*------------------------------------------------------------------------------
271   Storage Error Codes
272------------------------------------------------------------------------------*/
273
274/** File system error code: not enough space to complete the operation. */
275#define S_ERROR_STORAGE_NO_SPACE       ((S_RESULT)0xFFFF3041)
276#define SST_ERROR_NO_SPACE          0xFFFF3041
277
278/**
279 * File system error code: The file system is corrupted.
280 */
281#define S_ERROR_STORAGE_CORRUPTED      ((S_RESULT)0xFFFF3045)
282#define SST_ERROR_CORRUPTED            S_ERROR_STORAGE_CORRUPTED
283
284/**
285 * File system error code: The file system is unreachable.
286 */
287#define S_ERROR_STORAGE_UNREACHABLE    ((S_RESULT)0xFFFF3046)
288
289/*------------------------------------------------------------------------------
290   Authentication / X509 error codes
291------------------------------------------------------------------------------*/
292#define S_ERROR_AUTHENTICATION_FAILED  ((S_RESULT)0xFFFF3060)
293#define S_ERROR_WRONG_SIGNATURE        ((S_RESULT)0xFFFF3061)
294#define S_ERROR_BAD_CERTIFICATE        ((S_RESULT)0xFFFF3062)
295#define S_ERROR_WRONG_ISSUER           ((S_RESULT)0xFFFF3063)
296#define S_ERROR_CERTIFICATE_EXPIRED    ((S_RESULT)0xFFFF3064)
297
298/*------------------------------------------------------------------------------
299   Crypto error codes
300------------------------------------------------------------------------------*/
301#define S_ERROR_BAD_KEY                ((S_RESULT)0xFFFF3070)
302
303/*------------------------------------------------------------------------------
304   Indicates the physical memory is in TCM
305------------------------------------------------------------------------------*/
306#define S_ERROR_ARM_MEMORY_IS_TCM      ((S_RESULT)0xFFFF3100)
307
308/*------------------------------------------------------------------------------
309   VM-specific Error Codes
310------------------------------------------------------------------------------*/
311#define S_ERROR_UNCAUGHT_EXCEPTION     ((S_RESULT)0xFFFF3080)
312#define S_ERROR_TRUSTED_INTERPRETER    ((S_RESULT)0xFFFF3081)
313
314
315/*------------------------------------------------------------------------------
316   Range [0xFFFF3200:0xFFFF35FF] is reserved for internal use
317------------------------------------------------------------------------------*/
318
319#endif /* __S_ERROR_H__ */
320
321
322