Introduce libc independent assert fail handler

Introduce assert_fail_handler function definition as a libc independent
interface for handling assert failures.

Signed-off-by: Imre Kis <imre.kis@arm.com>
Change-Id: I80207b0158e44e697c8a0b8366c56dfbdc9b7c37
diff --git a/environments/opteesp/sp_assert.c b/environments/opteesp/sp_assert.c
new file mode 100644
index 0000000..8f336e7
--- /dev/null
+++ b/environments/opteesp/sp_assert.c
@@ -0,0 +1,22 @@
+// SPDX-License-Identifier: BSD-3-Clause
+/*
+ * Copyright (c) 2021-2022, Arm Limited and Contributors. All rights reserved.
+ */
+
+#include "assert_fail_handler.h"
+#include "compiler.h"
+#include "trace.h"
+
+/*
+ * The generic trace function called on assert fail.
+ */
+void __noreturn assert_fail_handler(const char *file, int line,
+				    const char *func, const char *failedexpr)
+{
+#if TRACE_LEVEL >= TRACE_LEVEL_ERROR
+	trace_printf(func, line, TRACE_LEVEL_ERROR, "assertion %s failed", failedexpr);
+#endif /* TRACE_LEVEL */
+
+	while (1)
+		;
+}