Home | History | Annotate | Download | only in include
      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