/* * Copyright (c) 2017-2019, Arm Limited. All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause * */ #include <stdio.h> #include <cmsis_compiler.h> #ifndef __TFM_NS_SVC_H__ #define __TFM_NS_SVC_H__ #ifdef __cplusplus extern "C" { #endif /** * \brief Include all the SVC handler headers */ #include "tfm_nspm_svc_handler.h" /** * \brief Macro to encode an svc instruction * */ #define SVC(code) __ASM volatile("svc %0" : : "I" (code)) /** * \def LIST_SVC_NSPM * * \brief This is an X macro which lists * the SVC interface exposed by TF-M * for the NS OS. * */ #define LIST_SVC_NSPM \ X(SVC_TFM_NSPM_REGISTER_CLIENT_ID, tfm_nspm_svc_register_client_id) \ /** * \brief Numbers associated to each SVC available * * \details Start from 1 as 0 is reserved by RTX */ enum tfm_svc_num { SVC_INVALID = 0, #define X(SVC_ENUM, SVC_HANDLER) SVC_ENUM, /* SVC API for Services */ #ifdef TFM_NS_CLIENT_IDENTIFICATION LIST_SVC_NSPM #endif #undef X /* add all the new entries above this line */ SVC_TFM_MAX, }; /* number of user SVC functions */ #define USER_SVC_COUNT ((uint32_t)SVC_TFM_MAX - 1) #ifdef __cplusplus } #endif #endif /* __TFM_NS_SVC_H__ */