1 /*
2  * Copyright (c) 2017-2021, Arm Limited. All rights reserved.
3  *
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
11 extern "C" {
12 #endif
13 
14 #include <stdint.h>
15 #include "tfm_api.h"
16 
17 typedef 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  * \note    NSPE shall implement this dispatcher according to NS specific
28  *          implementation and actual usage scenario.
29  *
30  * \param[in] fn   Function pointer to the veneer function desired
31  * \param[in] arg0 Argument 0 of fn
32  * \param[in] arg1 Argument 1 of fn
33  * \param[in] arg2 Argument 2 of fn
34  * \param[in] arg3 Argument 3 of fn
35  *
36  * \return Returns the same return value of the requested veneer function
37  *
38  * \note This API must ensure the return value is from the veneer function.
39  *       Other unrecoverable errors must be considered as fatal error and should
40  *       not return.
41  */
42 int32_t tfm_ns_interface_dispatch(veneer_fn fn,
43                                   uint32_t arg0, uint32_t arg1,
44                                   uint32_t arg2, uint32_t arg3);
45 
46 #ifdef __cplusplus
47 }
48 #endif
49 
50 #endif /* __TFM_NS_INTERFACE_H__ */
51