7 #ifndef __TFM_ARCH_V8M_H__
8 #define __TFM_ARCH_V8M_H__
13 #include "cmsis_compiler.h"
17 #define EXC_RETURN_INDICATOR (0xFF << 24)
18 #define EXC_RETURN_RES1 (0x1FFFF << 7)
19 #define EXC_RETURN_SECURE_STACK (1 << 6)
20 #define EXC_RETURN_STACK_RULE (1 << 5)
21 #define EXC_RETURN_FPU_FRAME_BASIC (1 << 4)
22 #define EXC_RETURN_MODE_THREAD (1 << 3)
23 #define EXC_RETURN_STACK_PROCESS (1 << 2)
24 #define EXC_RETURN_RES0 (0 << 1)
25 #define EXC_RETURN_EXC_SECURE (1)
28 #define EXC_RETURN_THREAD_S_PSP \
29 EXC_RETURN_INDICATOR | EXC_RETURN_RES1 | \
30 EXC_RETURN_SECURE_STACK | EXC_RETURN_STACK_RULE | \
31 EXC_RETURN_FPU_FRAME_BASIC | EXC_RETURN_MODE_THREAD | \
32 EXC_RETURN_STACK_PROCESS | EXC_RETURN_RES0 | \
35 #if defined(__ARM_ARCH_8_1M_MAIN__) || defined(__ARM_ARCH_8M_MAIN__)
50 #elif defined(__ARM_ARCH_8M_BASE__)
68 #define TFM_NS_EXC_DISABLE() __TZ_set_PRIMASK_NS(1)
70 #define TFM_NS_EXC_ENABLE() __TZ_set_PRIMASK_NS(0)
109 __set_PSPLIM(psplim);
139 __set_PSP(p_actx->
sp);
140 __set_PSPLIM(p_actx->sp_limit);
153 uint32_t mstk_adr = __get_MSP();
167 __set_MSPLIM(msplim);
__STATIC_INLINE bool is_stack_alloc_fp_space(uint32_t lr)
Check whether the stack frame for this exception has space allocated for Floating Point(FP) state inf...
__STATIC_INLINE uintptr_t tfm_arch_seal_thread_stack(uintptr_t stk)
Seal the thread stack.
#define TFM_STACK_SEALED_SIZE
__STATIC_INLINE void tfm_arch_update_ctx(struct tfm_arch_ctx_t *p_actx)
Update architecture context value into hardware.
#define EXC_RETURN_FPU_FRAME_BASIC
__STATIC_INLINE void tfm_arch_init_secure_msp(uint32_t msplim)
Set MSPLIM register and seal the MSP.
#define TFM_CORE_ASSERT(cond)
__STATIC_INLINE bool is_return_secure_stack(uint32_t lr)
Check whether Secure or Non-secure stack is used to restore stack frame on exception return...
#define TFM_STACK_SEAL_VALUE
__STATIC_INLINE void tfm_arch_set_psplim(uint32_t psplim)
Set PSPLIM register.
#define EXC_RETURN_SECURE_STACK