1 /*
2  * Copyright (c) 2021-2024, Arm Limited. All rights reserved.
3  * Copyright (C) 2024-2025 Analog Devices, Inc.
4  *
5  * SPDX-License-Identifier: BSD-3-Clause
6  *
7  */
8 
9 #include "target_cfg.h"
10 #include "tfm_hal_platform.h"
11 #include "tfm_plat_defs.h"
12 
13 extern const struct memory_region_limits memory_regions;
14 
tfm_hal_platform_init(void)15 FIH_RET_TYPE(enum tfm_hal_status_t) tfm_hal_platform_init(void)
16 {
17     enum tfm_plat_err_t plat_err = TFM_PLAT_ERR_SYSTEM_ERR;
18 
19     plat_err = system_reset_cfg();
20     if (plat_err != TFM_PLAT_ERR_SUCCESS) {
21         FIH_RET(fih_int_encode(TFM_HAL_ERROR_GENERIC));
22     }
23 
24     __enable_irq();
25 #if defined(TFM_SPM_LOG_RAW_ENABLED) &&  \
26     !defined(TFM_NS_REG_TEST) && \
27     !defined(TFM_S_REG_TEST)
28     stdio_init();
29 #endif
30 
31     plat_err = nvic_interrupt_target_state_cfg();
32     if (plat_err != TFM_PLAT_ERR_SUCCESS) {
33         FIH_RET(fih_int_encode(TFM_HAL_ERROR_GENERIC));
34     }
35 
36     FIH_RET(fih_int_encode(TFM_HAL_SUCCESS));
37 }
38 
tfm_hal_get_ns_VTOR(void)39 uint32_t tfm_hal_get_ns_VTOR(void)
40 {
41     return memory_regions.non_secure_code_start;
42 }
43 
tfm_hal_get_ns_MSP(void)44 uint32_t tfm_hal_get_ns_MSP(void)
45 {
46     return *((uint32_t *)memory_regions.non_secure_code_start);
47 }
48 
tfm_hal_get_ns_entry_point(void)49 uint32_t tfm_hal_get_ns_entry_point(void)
50 {
51     return *((uint32_t *)(memory_regions.non_secure_code_start + 4));
52 }
53