1 /*
2 * Copyright (c) 2021-2023, Arm Limited. All rights reserved.
3 * Copyright (c) 2023 Cypress Semiconductor Corporation (an Infineon
4 * company) or an affiliate of Cypress Semiconductor Corporation. All rights
5 * reserved.
6 *
7 * SPDX-License-Identifier: BSD-3-Clause
8 *
9 */
10 #include <stdint.h>
11
12 #include "compiler_ext_defs.h"
13 #include "security_defs.h"
14 #include "tfm_arch.h"
15 #include "tfm_hal_platform.h"
16
ns_agent_tz_main(uint32_t c_entry)17 __naked void ns_agent_tz_main(uint32_t c_entry)
18 {
19 __ASM volatile(
20 SYNTAX_UNIFIED
21 " ldr r2, [sp] \n"
22 " ldr r3, ="M2S(STACK_SEAL_PATTERN)" \n" /* SEAL double-check */
23 " cmp r2, r3 \n"
24 " bne ns_agent_nspe_jump_panic \n"
25 " movs r2, #1 \n" /* For NS execution */
26 " bics r0, r2 \n"
27 " mov r1, r0 \n"
28 #if (CONFIG_TFM_FLOAT_ABI >= 1)
29 " vmov d0, r0, r1 \n"
30 " vmov d1, r0, r1 \n"
31 " vmov d2, r0, r1 \n"
32 " vmov d3, r0, r1 \n"
33 " vmov d4, r0, r1 \n"
34 " vmov d5, r0, r1 \n"
35 " vmov d6, r0, r1 \n"
36 " vmov d7, r0, r1 \n"
37 " mrs r2, control \n"
38 " bic r2, r2, #4 \n"
39 " msr control, r2 \n"
40 " isb \n"
41 #endif
42 " mov r2, r0 \n"
43 " mov r3, r0 \n"
44 " mov r4, r0 \n"
45 " mov r5, r0 \n"
46 " mov r6, r0 \n"
47 " mov r7, r0 \n"
48 " mov r8, r0 \n"
49 " mov r9, r0 \n"
50 " mov r10, r0 \n"
51 " mov r11, r0 \n"
52 " mov r12, r0 \n"
53 " mov r14, r0 \n"
54 " bxns r0 \n"
55 "ns_agent_nspe_jump_panic: \n"
56 " b . \n"
57 );
58 }
59