blob: 0784d26cac970d10cc7f5a79363266d57e74c4c1 [file] [log] [blame]
Kévin Redon69b92d92019-01-24 16:39:20 +01001/*
2 * Copyright (c) 2015-2016 ARM Limited. All rights reserved.
3 *
4 * SPDX-License-Identifier: Apache-2.0
5 *
6 * Licensed under the Apache License, Version 2.0 (the License); you may
7 * not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
9 *
10 * www.apache.org/licenses/LICENSE-2.0
11 *
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an AS IS BASIS, WITHOUT
14 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
17 *
18 * ----------------------------------------------------------------------------
19 *
20 * $Date: 21. September 2016
21 * $Revision: V1.0
22 *
23 * Project: TrustZone for ARMv8-M
24 * Title: Context Management for ARMv8-M TrustZone
25 *
26 * Version 1.0
27 * Initial Release
28 *---------------------------------------------------------------------------*/
29
30#ifndef TZ_CONTEXT_H
31#define TZ_CONTEXT_H
32
33#include <stdint.h>
34
35#ifndef TZ_MODULEID_T
36#define TZ_MODULEID_T
37/// \details Data type that identifies secure software modules called by a process.
38typedef uint32_t TZ_ModuleId_t;
39#endif
40
41/// \details TZ Memory ID identifies an allocated memory slot.
42typedef uint32_t TZ_MemoryId_t;
43
44/// Initialize secure context memory system
45/// \return execution status (1: success, 0: error)
46uint32_t TZ_InitContextSystem_S (void);
47
48/// Allocate context memory for calling secure software modules in TrustZone
49/// \param[in] module identifies software modules called from non-secure mode
50/// \return value != 0 id TrustZone memory slot identifier
51/// \return value 0 no memory available or internal error
52TZ_MemoryId_t TZ_AllocModuleContext_S (TZ_ModuleId_t module);
53
54/// Free context memory that was previously allocated with \ref TZ_AllocModuleContext_S
55/// \param[in] id TrustZone memory slot identifier
56/// \return execution status (1: success, 0: error)
57uint32_t TZ_FreeModuleContext_S (TZ_MemoryId_t id);
58
59/// Load secure context (called on RTOS thread context switch)
60/// \param[in] id TrustZone memory slot identifier
61/// \return execution status (1: success, 0: error)
62uint32_t TZ_LoadContext_S (TZ_MemoryId_t id);
63
64/// Store secure context (called on RTOS thread context switch)
65/// \param[in] id TrustZone memory slot identifier
66/// \return execution status (1: success, 0: error)
67uint32_t TZ_StoreContext_S (TZ_MemoryId_t id);
68
69#endif // TZ_CONTEXT_H