diff --git a/app/tfm_ns_interface.c b/app/tfm_ns_interface.c
new file mode 100644
index 0000000..3bd401b
--- /dev/null
+++ b/app/tfm_ns_interface.c
@@ -0,0 +1,46 @@
+/*
+ * 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;
+}
