| /* |
| * Copyright (c) 2017-2021, Arm Limited. All rights reserved. |
| * |
| * SPDX-License-Identifier: BSD-3-Clause |
| * |
| */ |
| #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; |
| } |