text: /** @file
    OP-TEE SMC header file.
  
    Copyright (c) 2018, Linaro Ltd. All rights reserved.<BR>
  
    SPDX-License-Identifier: BSD-2-Clause-Patent
  
  **/
  
  #ifndef OPTEE_SMC_H_
  #define OPTEE_SMC_H_
  
  /* Returned in Arg0 only from Trusted OS functions */
  #define OPTEE_SMC_RETURN_OK                     0x0
  
  #define OPTEE_SMC_RETURN_FROM_RPC               0x32000003
  #define OPTEE_SMC_CALL_WITH_ARG                 0x32000004
  #define OPTEE_SMC_GET_SHARED_MEMORY_CONFIG      0xb2000007
  
  #define OPTEE_SMC_SHARED_MEMORY_CACHED          1
  
  #define OPTEE_SMC_RETURN_UNKNOWN_FUNCTION       0xffffffff
  #define OPTEE_SMC_RETURN_RPC_PREFIX_MASK        0xffff0000
  #define OPTEE_SMC_RETURN_RPC_PREFIX             0xffff0000
  #define OPTEE_SMC_RETURN_RPC_FOREIGN_INTERRUPT  0xffff0004
  
  #define OPTEE_MESSAGE_COMMAND_OPEN_SESSION      0
  #define OPTEE_MESSAGE_COMMAND_INVOKE_FUNCTION   1
  #define OPTEE_MESSAGE_COMMAND_CLOSE_SESSION     2
  
  #define OPTEE_MESSAGE_ATTRIBUTE_META            0x100
  
  #define OPTEE_LOGIN_PUBLIC                      0x0
  
  typedef struct {
    UINTN    Base;
    UINTN    Size;
  } OPTEE_SHARED_MEMORY_INFORMATION;
  
  //
  // UUID struct compliant with RFC4122 (network byte order).
  //
  typedef struct {
    UINT32  Data1;
    UINT16  Data2;
    UINT16  Data3;
    UINT8   Data4[8];
  } RFC4122_UUID;
  
  #endif // OPTEE_SMC_H_
  