69 lines
1.3 KiB
C
69 lines
1.3 KiB
C
/*
|
|
* 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__ */
|