Add tests for Errata management firmware interface.

Add tests to confirm that the em_version, em_features and
em_cpu_erratum_features calls conform to the errata abi spec.

Signed-off-by: Sona Mathew <SonaRebecca.Mathew@arm.com>
Change-Id: I8395026acc004a10d8c2c17ec689f4e0752143d8
diff --git a/lib/errata_abi/errata_abi.c b/lib/errata_abi/errata_abi.c
new file mode 100644
index 0000000..8f2c9e3
--- /dev/null
+++ b/lib/errata_abi/errata_abi.c
@@ -0,0 +1,54 @@
+/*
+ * Copyright (c) 2023, Arm Limited. All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+#include <tftf.h>
+#include <arch_helpers.h>
+#include <debug.h>
+#include <errata_abi.h>
+#include <platform.h>
+#include <tftf_lib.h>
+
+const em_function_t em_functions[TOTAL_ABI_CALLS] = {
+	DEFINE_EM_FUNC(VERSION, true),
+	DEFINE_EM_FUNC(FEATURES, true),
+	DEFINE_EM_FUNC(CPU_ERRATUM_FEATURES, true),
+};
+
+int32_t tftf_em_abi_version(void)
+{
+	smc_args args = { EM_VERSION };
+	smc_ret_values ret_vals;
+
+	ret_vals = tftf_smc(&args);
+	return ret_vals.ret0;
+}
+
+bool tftf_em_abi_feature_implemented(uint32_t id)
+{
+	smc_args args = {
+		EM_FEATURES,
+		id,
+	};
+	smc_ret_values ret_vals;
+
+	ret_vals = tftf_smc(&args);
+	if (ret_vals.ret0 == EM_SUCCESS) {
+		return true;
+	} else {
+		return false;
+	}
+}
+
+smc_ret_values tftf_em_abi_cpu_feature_implemented(uint32_t cpu_erratum,
+						uint32_t forward_flag)
+{
+	smc_args args = {
+		EM_CPU_ERRATUM_FEATURES,
+		cpu_erratum,
+		forward_flag
+	};
+	return tftf_smc(&args);
+}