blob: fa0cc31746cf29c6801e8891faa846684da2b8c6 [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 *
David Huf07f3f12021-04-06 18:03:33 +080027 * \note NSPE shall implement this dispatcher according to NS specific
28 * implementation and actual usage scenario.
29 *
Antonio de Angelis05b24192019-07-04 15:28:46 +010030 * \param[in] fn Function pointer to the veneer function desired
David Huf07f3f12021-04-06 18:03:33 +080031 * \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
Antonio de Angelis05b24192019-07-04 15:28:46 +010035 *
36 * \return Returns the same return value of the requested veneer function
Kevin Peng5ec79652021-01-27 10:01:31 +080037 *
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.
Antonio de Angelis05b24192019-07-04 15:28:46 +010041 */
Kevin Pengc86dec02019-07-23 16:15:57 +080042int32_t tfm_ns_interface_dispatch(veneer_fn fn,
43 uint32_t arg0, uint32_t arg1,
44 uint32_t arg2, uint32_t arg3);
Antonio de Angelis05b24192019-07-04 15:28:46 +010045
Antonio de Angelis05b24192019-07-04 15:28:46 +010046#ifdef __cplusplus
47}
48#endif
49
50#endif /* __TFM_NS_INTERFACE_H__ */