]> git.sur5r.net Git - freertos/blob - FreeRTOS/Source/portable/GCC/ARM_CM33/secure/secure_context.h
Update version number in readiness for V10.3.0 release. Sync SVN with reviewed releas...
[freertos] / FreeRTOS / Source / portable / GCC / ARM_CM33 / secure / secure_context.h
1 /*\r
2  * FreeRTOS Kernel V10.3.0\r
3  * Copyright (C) 2020 Amazon.com, Inc. or its affiliates.  All Rights Reserved.\r
4  *\r
5  * Permission is hereby granted, free of charge, to any person obtaining a copy of\r
6  * this software and associated documentation files (the "Software"), to deal in\r
7  * the Software without restriction, including without limitation the rights to\r
8  * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\r
9  * the Software, and to permit persons to whom the Software is furnished to do so,\r
10  * subject to the following conditions:\r
11  *\r
12  * The above copyright notice and this permission notice shall be included in all\r
13  * copies or substantial portions of the Software.\r
14  *\r
15  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r
16  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\r
17  * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\r
18  * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\r
19  * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\r
20  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r
21  *\r
22  * http://www.FreeRTOS.org\r
23  * http://aws.amazon.com/freertos\r
24  *\r
25  * 1 tab == 4 spaces!\r
26  */\r
27 \r
28 #ifndef __SECURE_CONTEXT_H__\r
29 #define __SECURE_CONTEXT_H__\r
30 \r
31 /* Standard includes. */\r
32 #include <stdint.h>\r
33 \r
34 /* FreeRTOS includes. */\r
35 #include "FreeRTOSConfig.h"\r
36 \r
37 /**\r
38  * @brief PSP value when no task's context is loaded.\r
39  */\r
40 #define securecontextNO_STACK   0x0\r
41 \r
42 /**\r
43  * @brief Opaque handle.\r
44  */\r
45 struct SecureContext;\r
46 typedef struct SecureContext*   SecureContextHandle_t;\r
47 /*-----------------------------------------------------------*/\r
48 \r
49 /**\r
50  * @brief Initializes the secure context management system.\r
51  *\r
52  * PSP is set to NULL and therefore a task must allocate and load a context\r
53  * before calling any secure side function in the thread mode.\r
54  *\r
55  * @note This function must be called in the handler mode. It is no-op if called\r
56  * in the thread mode.\r
57  */\r
58 void SecureContext_Init( void );\r
59 \r
60 /**\r
61  * @brief Allocates a context on the secure side.\r
62  *\r
63  * @note This function must be called in the handler mode. It is no-op if called\r
64  * in the thread mode.\r
65  *\r
66  * @param[in] ulSecureStackSize Size of the stack to allocate on secure side.\r
67  * @param[in] ulIsTaskPrivileged 1 if the calling task is privileged, 0 otherwise.\r
68  *\r
69  * @return Opaque context handle if context is successfully allocated, NULL\r
70  * otherwise.\r
71  */\r
72 #if( configENABLE_MPU == 1 )\r
73         SecureContextHandle_t SecureContext_AllocateContext( uint32_t ulSecureStackSize, uint32_t ulIsTaskPrivileged );\r
74 #else /* configENABLE_MPU */\r
75         SecureContextHandle_t SecureContext_AllocateContext( uint32_t ulSecureStackSize );\r
76 #endif /* configENABLE_MPU */\r
77 \r
78 /**\r
79  * @brief Frees the given context.\r
80  *\r
81  * @note This function must be called in the handler mode. It is no-op if called\r
82  * in the thread mode.\r
83  *\r
84  * @param[in] xSecureContextHandle Context handle corresponding to the\r
85  * context to be freed.\r
86  */\r
87 void SecureContext_FreeContext( SecureContextHandle_t xSecureContextHandle );\r
88 \r
89 /**\r
90  * @brief Loads the given context.\r
91  *\r
92  * @note This function must be called in the handler mode. It is no-op if called\r
93  * in the thread mode.\r
94  *\r
95  * @param[in] xSecureContextHandle Context handle corresponding to the context\r
96  * to be loaded.\r
97  */\r
98 void SecureContext_LoadContext( SecureContextHandle_t xSecureContextHandle );\r
99 \r
100 /**\r
101  * @brief Saves the given context.\r
102  *\r
103  * @note This function must be called in the handler mode. It is no-op if called\r
104  * in the thread mode.\r
105  *\r
106  * @param[in] xSecureContextHandle Context handle corresponding to the context\r
107  * to be saved.\r
108  */\r
109 void SecureContext_SaveContext( SecureContextHandle_t xSecureContextHandle );\r
110 \r
111 #endif /* __SECURE_CONTEXT_H__ */\r