blob: 4e4d7319b19b0b09f0dc3c056d01c11d2c660662 [file] [log] [blame]
Ashutosh Singhf4d88672017-11-29 13:35:43 +00001/*
Jamie Fox5592db02017-12-18 16:48:29 +00002 * Copyright (c) 2017-2018, Arm Limited. All rights reserved.
Ashutosh Singhf4d88672017-11-29 13:35:43 +00003 *
4 * SPDX-License-Identifier: BSD-3-Clause
5 *
6 */
7
8#include <stdio.h>
9#include <cmsis_compiler.h>
10
11#ifndef __TFM_NS_SVC_H__
12#define __TFM_NS_SVC_H__
13
14#ifdef __cplusplus
15extern "C" {
16#endif
17
18/**
Antonio de Angelisd9cd66e2018-03-27 11:19:59 +010019 * \brief Include all the SVC handler headers
20 */
21#include "tfm_sst_svc_handler.h"
22#include "svc_core_test_ns.h"
23#include "sst_test_service_svc.h"
24
25/**
Ashutosh Singhf4d88672017-11-29 13:35:43 +000026 * \brief Macro to encode an svc instruction
27 *
28 */
29#define SVC(code) __ASM("svc %0" : : "I" (code))
30
31/**
Antonio de Angelisd9cd66e2018-03-27 11:19:59 +010032 * \def LIST_SVC_DISPATCHERS
33 *
34 * \brief This is an X macro which lists
35 * the SVC interface exposed by the
36 * available secure services. The
37 * enumerator and corresponding
38 * SVC handler function need to be
39 * registered.
40 *
41 */
42#define LIST_SVC_DISPATCHERS \
43 X(SVC_TFM_SST_GET_HANDLE, tfm_sst_svc_get_handle) \
44 X(SVC_TFM_SST_CREATE, tfm_sst_svc_create) \
45 X(SVC_TFM_SST_GET_ATTRIBUTES, tfm_sst_svc_get_attributes) \
46 X(SVC_TFM_SST_READ, tfm_sst_svc_read) \
47 X(SVC_TFM_SST_WRITE, tfm_sst_svc_write) \
48 X(SVC_TFM_SST_DELETE, tfm_sst_svc_delete)
49
50/**
51 * \def LIST_SVC_CORE_TEST_INTERACTIVE
52 *
53 * \brief This is an X macro which lists
54 * the SVC interface available for
55 * the CORE_TEST_INTERACTIVE. The
56 * enumerator and corresponding
57 * SVC handler function need to be
58 * registered.
59 *
60 */
61#define LIST_SVC_CORE_TEST_INTERACTIVE \
62 X(SVC_SECURE_DECREMENT_NS_LOCK_1, svc_secure_decrement_ns_lock_1) \
63 X(SVC_SECURE_DECREMENT_NS_LOCK_2, svc_secure_decrement_ns_lock_2)
64
65/**
66 * \def LIST_SVC_TFM_PARTITION_TEST_CORE
67 *
68 * \brief This is an X macro which lists
69 * the SVC interface available for
70 * the TEST_CORE partition. The
71 * enumerator and corresponding
72 * SVC handler function need to be
73 * registered.
74 *
75 */
76#define LIST_SVC_TFM_PARTITION_TEST_CORE \
77 X(SVC_TFM_CORE_TEST, svc_tfm_core_test) \
78 X(SVC_TFM_CORE_TEST_MULTIPLE_CALLS, svc_tfm_core_test_multiple_calls)
79
80/**
81 * \def LIST_SVC_TFM_PARTITION_TEST_SST
82 *
83 * \brief This is an X macro which lists
84 * the SVC interface available for
85 * TEST_SST partition. The
86 * enumerator and corresponding
87 * SVC handler function need to be
88 * registered.
89 *
90 */
91#define LIST_SVC_TFM_PARTITION_TEST_SST \
92 X(SVC_SST_TEST_SERVICE_SETUP, sst_test_service_svc_setup) \
93 X(SVC_SST_TEST_SERVICE_DUMMY_ENCRYPT, sst_test_service_svc_dummy_encrypt) \
94 X(SVC_SST_TEST_SERVICE_DUMMY_DECRYPT, sst_test_service_svc_dummy_decrypt) \
95 X(SVC_SST_TEST_SERVICE_CLEAN, sst_test_service_svc_clean)
96
97/**
Ashutosh Singhf4d88672017-11-29 13:35:43 +000098 * \brief Numbers associated to each SVC available
99 *
100 * \details Start from 1 as 0 is reserved by RTX
101 */
102enum tfm_svc_num {
103 SVC_INVALID = 0,
104
Antonio de Angelisd9cd66e2018-03-27 11:19:59 +0100105#define X(SVC_ENUM, SVC_HANDLER) SVC_ENUM,
106 /* SVC API for Services */
107 LIST_SVC_DISPATCHERS
Ashutosh Singhf4d88672017-11-29 13:35:43 +0000108
109#if defined(CORE_TEST_INTERACTIVE)
Antonio de Angelisd9cd66e2018-03-27 11:19:59 +0100110 LIST_SVC_CORE_TEST_INTERACTIVE
Ashutosh Singhf4d88672017-11-29 13:35:43 +0000111#endif /* CORE_TEST_INTERACTIVE */
112
Mate Toth-Pal349714a2018-02-23 15:30:24 +0100113#if defined(TFM_PARTITION_TEST_CORE)
Antonio de Angelisd9cd66e2018-03-27 11:19:59 +0100114 LIST_SVC_TFM_PARTITION_TEST_CORE
Mate Toth-Pal349714a2018-02-23 15:30:24 +0100115#endif /* TFM_PARTITION_TEST_CORE */
Ashutosh Singhf4d88672017-11-29 13:35:43 +0000116
Mate Toth-Pal349714a2018-02-23 15:30:24 +0100117#if defined(TFM_PARTITION_TEST_SST)
Antonio de Angelisd9cd66e2018-03-27 11:19:59 +0100118 LIST_SVC_TFM_PARTITION_TEST_SST
Mate Toth-Pal349714a2018-02-23 15:30:24 +0100119#endif /* TFM_PARTITION_TEST_SST */
Jamie Fox5592db02017-12-18 16:48:29 +0000120
Antonio de Angelisd9cd66e2018-03-27 11:19:59 +0100121#undef X
122
Ashutosh Singhf4d88672017-11-29 13:35:43 +0000123 /* add all the new entries above this line */
124 SVC_TFM_MAX,
125};
126
127/* number of user SVC functions */
128#define USER_SVC_COUNT (SVC_TFM_MAX - 1)
129
130#ifdef __cplusplus
131}
132#endif
133
134#endif /* __TFM_NS_SVC_H__ */