Newer
Older
mbed-os / features / FEATURE_EXPERIMENTAL_API / FEATURE_PSA / TARGET_TFM / TARGET_TFM_V1_0 / include / tfm_ns_interface.h
@Charley Chu Charley Chu on 7 Aug 2020 1 KB Add TFM V1.0
/*
 * Copyright (c) 2017-2019, Arm Limited. All rights reserved.
 *
 * SPDX-License-Identifier: BSD-3-Clause
 *
 */
#ifndef __TFM_NS_INTERFACE_H__
#define __TFM_NS_INTERFACE_H__

#ifdef __cplusplus
extern "C" {
#endif

#include <stdint.h>
#include "tfm_api.h"

typedef int32_t (*veneer_fn) (uint32_t arg0, uint32_t arg1,
                              uint32_t arg2, uint32_t arg3);

/**
 * \brief NS interface, veneer function dispatcher
 *
 * \details This function implements the dispatching mechanism for the
 *          desired veneer function, to be called with the parameters
 *          described from arg0 to arg3.
 *
 * \param[in] fn   Function pointer to the veneer function desired
 * \param[in] arg0 Argument 0
 * \param[in] arg1 Argument 1
 * \param[in] arg2 Argument 2
 * \param[in] arg3 Argument 3
 *
 * \return Returns the same return value of the requested veneer function
 */
int32_t tfm_ns_interface_dispatch(veneer_fn fn,
                                  uint32_t arg0, uint32_t arg1,
                                  uint32_t arg2, uint32_t arg3);

/**
 * \brief NS interface, Initialise the NS interface
 *
 * \details This function needs to be called from the NS world to
 *          properly initialise the NS interface towards TF-M. This
 *          function will initialise all the objects required for
 *          runtime dispatching of TF-M requests to services
 *
 * \return  A value according to \ref enum tfm_status_e
 */
enum tfm_status_e tfm_ns_interface_init(void);
#ifdef __cplusplus
}
#endif

#endif /* __TFM_NS_INTERFACE_H__ */