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