blob: 1dd06925718253811ea33fd86393d64c63d06f23 [file] [log] [blame]
Antonio de Angelis05b24192019-07-04 15:28:46 +01001/*
Kevin Peng5ec79652021-01-27 10:01:31 +08002 * Copyright (c) 2017-2021, Arm Limited. All rights reserved.
Antonio de Angelis05b24192019-07-04 15:28:46 +01003 *
4 * SPDX-License-Identifier: BSD-3-Clause
5 *
6 */
7#ifndef __TFM_NS_INTERFACE_H__
8#define __TFM_NS_INTERFACE_H__
9
10#ifdef __cplusplus
11extern "C" {
12#endif
13
14#include <stdint.h>
15#include "tfm_api.h"
16
17typedef int32_t (*veneer_fn) (uint32_t arg0, uint32_t arg1,
18 uint32_t arg2, uint32_t arg3);
19
20/**
21 * \brief NS interface, veneer function dispatcher
22 *
23 * \details This function implements the dispatching mechanism for the
24 * desired veneer function, to be called with the parameters
25 * described from arg0 to arg3.
26 *
27 * \param[in] fn Function pointer to the veneer function desired
28 * \param[in] arg0 Argument 0
29 * \param[in] arg1 Argument 1
30 * \param[in] arg2 Argument 2
31 * \param[in] arg3 Argument 3
32 *
33 * \return Returns the same return value of the requested veneer function
Kevin Peng5ec79652021-01-27 10:01:31 +080034 *
35 * \note This API must ensure the return value is from the veneer function.
36 * Other unrecoverable errors must be considered as fatal error and should
37 * not return.
Antonio de Angelis05b24192019-07-04 15:28:46 +010038 */
Kevin Pengc86dec02019-07-23 16:15:57 +080039int32_t tfm_ns_interface_dispatch(veneer_fn fn,
40 uint32_t arg0, uint32_t arg1,
41 uint32_t arg2, uint32_t arg3);
Antonio de Angelis05b24192019-07-04 15:28:46 +010042
43/**
44 * \brief NS interface, Initialise the NS interface
45 *
46 * \details This function needs to be called from the NS world to
47 * properly initialise the NS interface towards TF-M. This
48 * function will initialise all the objects required for
49 * runtime dispatching of TF-M requests to services
50 *
51 * \return A value according to \ref enum tfm_status_e
52 */
Kevin Pengc86dec02019-07-23 16:15:57 +080053enum tfm_status_e tfm_ns_interface_init(void);
Antonio de Angelis05b24192019-07-04 15:28:46 +010054#ifdef __cplusplus
55}
56#endif
57
58#endif /* __TFM_NS_INTERFACE_H__ */