diff options
| author | Michal Hanus <mikehanus@protonmail.com> | 2025-04-14 22:04:32 +0200 |
|---|---|---|
| committer | Michal Hanus <mikehanus@protonmail.com> | 2025-04-14 22:04:32 +0200 |
| commit | 2e13c372f1419f08dab7797b244681f889dd9bcf (patch) | |
| tree | 995a31c40f13068c4135c213e938e0a2a9ed05a3 /nrfdemo/build/tfm/api_ns/interface/src/os_wrapper | |
| parent | 620dfd94019f3c7e3022fa5a5fb9c9b51491062d (diff) | |
nrfdemo
Diffstat (limited to 'nrfdemo/build/tfm/api_ns/interface/src/os_wrapper')
| -rw-r--r-- | nrfdemo/build/tfm/api_ns/interface/src/os_wrapper/tfm_ns_interface_bare_metal.c | 23 | ||||
| -rw-r--r-- | nrfdemo/build/tfm/api_ns/interface/src/os_wrapper/tfm_ns_interface_rtos.c | 56 |
2 files changed, 79 insertions, 0 deletions
diff --git a/nrfdemo/build/tfm/api_ns/interface/src/os_wrapper/tfm_ns_interface_bare_metal.c b/nrfdemo/build/tfm/api_ns/interface/src/os_wrapper/tfm_ns_interface_bare_metal.c new file mode 100644 index 0000000..01da8b8 --- /dev/null +++ b/nrfdemo/build/tfm/api_ns/interface/src/os_wrapper/tfm_ns_interface_bare_metal.c @@ -0,0 +1,23 @@ +/* + * Copyright (c) 2023 Cypress Semiconductor Corporation (an Infineon company) + * or an affiliate of Cypress Semiconductor Corporation. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + * + */ + +/* This file provides implementation of TF-M NS os wrapper functions for the + * bare metal use case. + * + * \note This implementation does not provide multithread safety, so it + * shouldn't be used in RTOS environment. + */ + +#include "tfm_ns_interface.h" + +int32_t tfm_ns_interface_dispatch(veneer_fn fn, + uint32_t arg0, uint32_t arg1, + uint32_t arg2, uint32_t arg3) +{ + return fn(arg0, arg1, arg2, arg3); +} diff --git a/nrfdemo/build/tfm/api_ns/interface/src/os_wrapper/tfm_ns_interface_rtos.c b/nrfdemo/build/tfm/api_ns/interface/src/os_wrapper/tfm_ns_interface_rtos.c new file mode 100644 index 0000000..a1f7727 --- /dev/null +++ b/nrfdemo/build/tfm/api_ns/interface/src/os_wrapper/tfm_ns_interface_rtos.c @@ -0,0 +1,56 @@ +/* + * Copyright (c) 2017-2021, Arm Limited. All rights reserved. + * Copyright (c) 2023 Cypress Semiconductor Corporation (an Infineon company) + * or an affiliate of Cypress Semiconductor Corporation. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + * + */ + +/* This file provides implementation of TF-M NS os wrapper functions for the + * RTOS use case. This implementation provides multithread safety, so it + * can be used in RTOS environment. + */ + +#include <stdint.h> + +#include "os_wrapper/mutex.h" + +#include "tfm_ns_interface.h" + +/** + * \brief the ns_lock ID + */ +static void *ns_lock_handle = NULL; + +int32_t tfm_ns_interface_dispatch(veneer_fn fn, + uint32_t arg0, uint32_t arg1, + uint32_t arg2, uint32_t arg3) +{ + int32_t result; + + /* TFM request protected by NS lock */ + while (os_wrapper_mutex_acquire(ns_lock_handle, OS_WRAPPER_WAIT_FOREVER) + != OS_WRAPPER_SUCCESS) { + } + + result = fn(arg0, arg1, arg2, arg3); + + while (os_wrapper_mutex_release(ns_lock_handle) != OS_WRAPPER_SUCCESS) { + } + + return result; +} + +uint32_t tfm_ns_interface_init(void) +{ + void *handle; + + handle = os_wrapper_mutex_create(); + if (!handle) { + return OS_WRAPPER_ERROR; + } + + ns_lock_handle = handle; + return OS_WRAPPER_SUCCESS; +} |
